blob: 8bac19a58217286a9087496cc6a800ee3999eff6 [file] [log] [blame]
Justin Bognereecc3c82016-02-25 07:23:08 +00001//===- LoopPassManager.cpp - Loop pass management -------------------------===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#include "llvm/Analysis/LoopPassManager.h"
Justin Bognere839c3e2016-05-03 21:35:08 +000011#include "llvm/Analysis/BasicAliasAnalysis.h"
12#include "llvm/Analysis/GlobalsModRef.h"
13#include "llvm/Analysis/LoopInfo.h"
14#include "llvm/Analysis/ScalarEvolution.h"
15#include "llvm/Analysis/ScalarEvolutionAliasAnalysis.h"
16#include "llvm/IR/Dominators.h"
Justin Bognereecc3c82016-02-25 07:23:08 +000017
18using namespace llvm;
19
Chandler Carruth2a540942016-02-27 10:38:10 +000020// Explicit instantiations for core typedef'ed templates.
21namespace llvm {
Chandler Carruthafcec4c2016-02-27 10:45:35 +000022template class PassManager<Loop>;
23template class AnalysisManager<Loop>;
Chandler Carruth2a540942016-02-27 10:38:10 +000024template class InnerAnalysisManagerProxy<LoopAnalysisManager, Function>;
25template class OuterAnalysisManagerProxy<FunctionAnalysisManager, Loop>;
Justin Bognereecc3c82016-02-25 07:23:08 +000026}
Justin Bognere839c3e2016-05-03 21:35:08 +000027
28PreservedAnalyses llvm::getLoopPassPreservedAnalyses() {
29 PreservedAnalyses PA;
30 PA.preserve<DominatorTreeAnalysis>();
31 PA.preserve<LoopAnalysis>();
32 PA.preserve<ScalarEvolutionAnalysis>();
33 // TODO: What we really want to do here is preserve an AA category, but that
34 // concept doesn't exist yet.
35 PA.preserve<BasicAA>();
36 PA.preserve<GlobalsAA>();
37 PA.preserve<SCEVAA>();
38 return PA;
39}