diff options
author | Xinliang David Li <davidxl@google.com> | 2016-06-08 20:15:37 +0000 |
---|---|---|
committer | Xinliang David Li <davidxl@google.com> | 2016-06-08 20:15:37 +0000 |
commit | 572135f7179a5d5d3171b8b443416a1aba14fb4f (patch) | |
tree | 6f0d30b79d0fb876b660204c705b9cfb5c1f14f5 /llvm/lib/Analysis/LoopAccessAnalysis.cpp | |
parent | 10a2c38d8382d33c2022ecf66e3cfa4a1de3000b (diff) | |
download | bcm5719-llvm-572135f7179a5d5d3171b8b443416a1aba14fb4f.tar.gz bcm5719-llvm-572135f7179a5d5d3171b8b443416a1aba14fb4f.zip |
[PM] Refector LoopAccessInfo analysis code
This is the preparation patch to port the analysis to new PM
Differential Revision: http://reviews.llvm.org/D20560
llvm-svn: 272194
Diffstat (limited to 'llvm/lib/Analysis/LoopAccessAnalysis.cpp')
-rw-r--r-- | llvm/lib/Analysis/LoopAccessAnalysis.cpp | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/llvm/lib/Analysis/LoopAccessAnalysis.cpp b/llvm/lib/Analysis/LoopAccessAnalysis.cpp index ff5bc595da5..23e913a07bb 100644 --- a/llvm/lib/Analysis/LoopAccessAnalysis.cpp +++ b/llvm/lib/Analysis/LoopAccessAnalysis.cpp @@ -1932,7 +1932,7 @@ void LoopAccessInfo::print(raw_ostream &OS, unsigned Depth) const { } const LoopAccessInfo & -LoopAccessAnalysis::getInfo(Loop *L, const ValueToValueMap &Strides) { +LoopAccessAnalysisResult::getInfo(Loop *L, const ValueToValueMap &Strides) { auto &LAI = LoopAccessInfoMap[L]; #ifndef NDEBUG @@ -1942,8 +1942,8 @@ LoopAccessAnalysis::getInfo(Loop *L, const ValueToValueMap &Strides) { if (!LAI) { const DataLayout &DL = L->getHeader()->getModule()->getDataLayout(); - LAI = - llvm::make_unique<LoopAccessInfo>(L, SE, DL, TLI, AA, DT, LI, Strides); + LAI = llvm::make_unique<LoopAccessInfo>(L, SCEV, DL, TLI, AA, DT, LI, + Strides); #ifndef NDEBUG LAI->NumSymbolicStrides = Strides.size(); #endif @@ -1951,26 +1951,25 @@ LoopAccessAnalysis::getInfo(Loop *L, const ValueToValueMap &Strides) { return *LAI.get(); } -void LoopAccessAnalysis::print(raw_ostream &OS, const Module *M) const { - LoopAccessAnalysis &LAA = *const_cast<LoopAccessAnalysis *>(this); - +void LoopAccessAnalysisResult::print(raw_ostream &OS, const Module *M) const { ValueToValueMap NoSymbolicStrides; for (Loop *TopLevelLoop : *LI) for (Loop *L : depth_first(TopLevelLoop)) { OS.indent(2) << L->getHeader()->getName() << ":\n"; - auto &LAI = LAA.getInfo(L, NoSymbolicStrides); + auto &LAI = const_cast<LoopAccessAnalysisResult *>(this)->getInfo( + L, NoSymbolicStrides); LAI.print(OS, 4); } } bool LoopAccessAnalysis::runOnFunction(Function &F) { - SE = &getAnalysis<ScalarEvolutionWrapperPass>().getSE(); auto *TLIP = getAnalysisIfAvailable<TargetLibraryInfoWrapperPass>(); - TLI = TLIP ? &TLIP->getTLI() : nullptr; - AA = &getAnalysis<AAResultsWrapperPass>().getAAResults(); - DT = &getAnalysis<DominatorTreeWrapperPass>().getDomTree(); - LI = &getAnalysis<LoopInfoWrapperPass>().getLoopInfo(); + LAAR.setDepAnalyses(&getAnalysis<AAResultsWrapperPass>().getAAResults(), + &getAnalysis<DominatorTreeWrapperPass>().getDomTree(), + &getAnalysis<LoopInfoWrapperPass>().getLoopInfo(), + &getAnalysis<ScalarEvolutionWrapperPass>().getSE(), + TLIP ? &TLIP->getTLI() : nullptr); return false; } |