diff options
author | Florian Hahn <flo@fhahn.com> | 2022-10-04 11:51:22 +0100 |
---|---|---|
committer | Florian Hahn <flo@fhahn.com> | 2022-10-04 11:51:25 +0100 |
commit | 825e16969eb7036873b6137cfb0ebc37b1f64798 (patch) | |
tree | 86df2aa3f04e60ff227727bfb9940b8c6eacf097 /llvm/lib/Transforms/Utils/LoopVersioning.cpp | |
parent | 75b18ba14d07d38f7031f282f0d216fa6153fd81 (diff) | |
download | llvm-825e16969eb7036873b6137cfb0ebc37b1f64798.zip llvm-825e16969eb7036873b6137cfb0ebc37b1f64798.tar.gz llvm-825e16969eb7036873b6137cfb0ebc37b1f64798.tar.bz2 |
[LAA] Pass LoopAccessInfoManager instead of GetLAA function.
Use LoopAccessInfoManager directly instead of various GetLAA lambdas.
Depends on D134608.
Reviewed By: aeubanks
Differential Revision: https://reviews.llvm.org/D134609
Diffstat (limited to 'llvm/lib/Transforms/Utils/LoopVersioning.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/LoopVersioning.cpp | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/llvm/lib/Transforms/Utils/LoopVersioning.cpp b/llvm/lib/Transforms/Utils/LoopVersioning.cpp index c798f0a..212876f 100644 --- a/llvm/lib/Transforms/Utils/LoopVersioning.cpp +++ b/llvm/lib/Transforms/Utils/LoopVersioning.cpp @@ -256,8 +256,8 @@ void LoopVersioning::annotateInstWithNoAlias(Instruction *VersionedInst, } namespace { -bool runImpl(LoopInfo *LI, function_ref<const LoopAccessInfo &(Loop &)> GetLAA, - DominatorTree *DT, ScalarEvolution *SE) { +bool runImpl(LoopInfo *LI, LoopAccessInfoManager &LAIs, DominatorTree *DT, + ScalarEvolution *SE) { // Build up a worklist of inner-loops to version. This is necessary as the // act of versioning a loop creates new loops and can invalidate iterators // across the loops. @@ -275,7 +275,7 @@ bool runImpl(LoopInfo *LI, function_ref<const LoopAccessInfo &(Loop &)> GetLAA, if (!L->isLoopSimplifyForm() || !L->isRotatedForm() || !L->getExitingBlock()) continue; - const LoopAccessInfo &LAI = GetLAA(*L); + const LoopAccessInfo &LAI = LAIs.getInfo(*L); if (!LAI.hasConvergentOp() && (LAI.getNumRuntimePointerChecks() || !LAI.getPSE().getPredicate().isAlwaysTrue())) { @@ -301,14 +301,11 @@ public: bool runOnFunction(Function &F) override { auto *LI = &getAnalysis<LoopInfoWrapperPass>().getLoopInfo(); - auto GetLAA = [&](Loop &L) -> const LoopAccessInfo & { - return getAnalysis<LoopAccessLegacyAnalysis>().getInfo(&L); - }; - + auto &LAIs = getAnalysis<LoopAccessLegacyAnalysis>().getLAIs(); auto *DT = &getAnalysis<DominatorTreeWrapperPass>().getDomTree(); auto *SE = &getAnalysis<ScalarEvolutionWrapperPass>().getSE(); - return runImpl(LI, GetLAA, DT, SE); + return runImpl(LI, LAIs, DT, SE); } void getAnalysisUsage(AnalysisUsage &AU) const override { @@ -348,14 +345,10 @@ PreservedAnalyses LoopVersioningPass::run(Function &F, FunctionAnalysisManager &AM) { auto &SE = AM.getResult<ScalarEvolutionAnalysis>(F); auto &LI = AM.getResult<LoopAnalysis>(F); - auto &DT = AM.getResult<DominatorTreeAnalysis>(F); - LoopAccessInfoManager &LAIs = AM.getResult<LoopAccessAnalysis>(F); - auto GetLAA = [&](Loop &L) -> const LoopAccessInfo & { - return LAIs.getInfo(L); - }; + auto &DT = AM.getResult<DominatorTreeAnalysis>(F); - if (runImpl(&LI, GetLAA, &DT, &SE)) + if (runImpl(&LI, LAIs, &DT, &SE)) return PreservedAnalyses::none(); return PreservedAnalyses::all(); } |