40 lines
1.3 KiB
C++
40 lines
1.3 KiB
C++
//===- LoopPassManager.cpp - Loop pass management -------------------------===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "llvm/Analysis/LoopPassManager.h"
|
|
#include "llvm/Analysis/BasicAliasAnalysis.h"
|
|
#include "llvm/Analysis/GlobalsModRef.h"
|
|
#include "llvm/Analysis/LoopInfo.h"
|
|
#include "llvm/Analysis/ScalarEvolution.h"
|
|
#include "llvm/Analysis/ScalarEvolutionAliasAnalysis.h"
|
|
#include "llvm/IR/Dominators.h"
|
|
|
|
using namespace llvm;
|
|
|
|
// Explicit instantiations for core typedef'ed templates.
|
|
namespace llvm {
|
|
template class PassManager<Loop>;
|
|
template class AnalysisManager<Loop>;
|
|
template class InnerAnalysisManagerProxy<LoopAnalysisManager, Function>;
|
|
template class OuterAnalysisManagerProxy<FunctionAnalysisManager, Loop>;
|
|
}
|
|
|
|
PreservedAnalyses llvm::getLoopPassPreservedAnalyses() {
|
|
PreservedAnalyses PA;
|
|
PA.preserve<DominatorTreeAnalysis>();
|
|
PA.preserve<LoopAnalysis>();
|
|
PA.preserve<ScalarEvolutionAnalysis>();
|
|
// TODO: What we really want to do here is preserve an AA category, but that
|
|
// concept doesn't exist yet.
|
|
PA.preserve<BasicAA>();
|
|
PA.preserve<GlobalsAA>();
|
|
PA.preserve<SCEVAA>();
|
|
return PA;
|
|
}
|