[llvm] e96d6f4 - Revert "[LoopNest][LoopFlatten] Change LoopFlattenPass to LoopNest pass"
Philip Reames via llvm-commits
llvm-commits at lists.llvm.org
Fri May 28 08:17:50 PDT 2021
Reminder: When you revert something, you should explain why.
Philip
On 5/28/21 1:06 AM, via llvm-commits wrote:
> Author: eopXD
> Date: 2021-05-28T07:58:06Z
> New Revision: e96d6f4821bf3fa11760da7950055571117ab25e
>
> URL: https://github.com/llvm/llvm-project/commit/e96d6f4821bf3fa11760da7950055571117ab25e
> DIFF: https://github.com/llvm/llvm-project/commit/e96d6f4821bf3fa11760da7950055571117ab25e.diff
>
> LOG: Revert "[LoopNest][LoopFlatten] Change LoopFlattenPass to LoopNest pass"
>
> This reverts commit 7952ddb21fb7e086d5a6f97767f235d2f6ae2176.
>
> Differential Revision: https://reviews.llvm.org/D103302
>
> Added:
>
>
> Modified:
> llvm/include/llvm/Transforms/Scalar/LoopFlatten.h
> llvm/lib/Passes/PassBuilder.cpp
> llvm/lib/Passes/PassRegistry.def
> llvm/lib/Transforms/Scalar/LoopFlatten.cpp
>
> Removed:
>
>
>
> ################################################################################
> diff --git a/llvm/include/llvm/Transforms/Scalar/LoopFlatten.h b/llvm/include/llvm/Transforms/Scalar/LoopFlatten.h
> index 3d259bdbe986..41f91f090013 100644
> --- a/llvm/include/llvm/Transforms/Scalar/LoopFlatten.h
> +++ b/llvm/include/llvm/Transforms/Scalar/LoopFlatten.h
> @@ -24,8 +24,7 @@ class LoopFlattenPass : public PassInfoMixin<LoopFlattenPass> {
> public:
> LoopFlattenPass() = default;
>
> - PreservedAnalyses run(LoopNest &LN, LoopAnalysisManager &LAM,
> - LoopStandardAnalysisResults &AR, LPMUpdater &U);
> + PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
> };
>
> } // end namespace llvm
>
> diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp
> index b39481dbbdcb..eb94d284961b 100644
> --- a/llvm/lib/Passes/PassBuilder.cpp
> +++ b/llvm/lib/Passes/PassBuilder.cpp
> @@ -616,7 +616,7 @@ PassBuilder::buildO1FunctionSimplificationPipeline(OptimizationLevel Level,
> FPM.addPass(SimplifyCFGPass());
> FPM.addPass(InstCombinePass());
> if (EnableLoopFlatten)
> - FPM.addPass(createFunctionToLoopPassAdaptor(LoopFlattenPass()));
> + FPM.addPass(LoopFlattenPass());
> // The loop passes in LPM2 (LoopFullUnrollPass) do not preserve MemorySSA.
> // *All* loop passes must preserve it, in order to be able to use it.
> FPM.addPass(createFunctionToLoopPassAdaptor(std::move(LPM2),
> @@ -791,7 +791,7 @@ PassBuilder::buildFunctionSimplificationPipeline(OptimizationLevel Level,
> FPM.addPass(SimplifyCFGPass());
> FPM.addPass(InstCombinePass());
> if (EnableLoopFlatten)
> - FPM.addPass(createFunctionToLoopPassAdaptor(LoopFlattenPass()));
> + FPM.addPass(LoopFlattenPass());
> // The loop passes in LPM2 (LoopIdiomRecognizePass, IndVarSimplifyPass,
> // LoopDeletionPass and LoopFullUnrollPass) do not preserve MemorySSA.
> // *All* loop passes must preserve it, in order to be able to use it.
> @@ -1841,7 +1841,7 @@ PassBuilder::buildLTODefaultPipeline(OptimizationLevel Level,
>
> // More loops are countable; try to optimize them.
> if (EnableLoopFlatten && Level.getSpeedupLevel() > 1)
> - MainFPM.addPass(createFunctionToLoopPassAdaptor(LoopFlattenPass()));
> + MainFPM.addPass(LoopFlattenPass());
>
> if (EnableConstraintElimination)
> MainFPM.addPass(ConstraintEliminationPass());
>
> diff --git a/llvm/lib/Passes/PassRegistry.def b/llvm/lib/Passes/PassRegistry.def
> index a66c8149a968..128c9f3bc635 100644
> --- a/llvm/lib/Passes/PassRegistry.def
> +++ b/llvm/lib/Passes/PassRegistry.def
> @@ -247,7 +247,7 @@ FUNCTION_PASS("guard-widening", GuardWideningPass())
> FUNCTION_PASS("load-store-vectorizer", LoadStoreVectorizerPass())
> FUNCTION_PASS("loop-simplify", LoopSimplifyPass())
> FUNCTION_PASS("loop-sink", LoopSinkPass())
> -FUNCTION_PASS("loop-unroll-and-jam", LoopUnrollAndJamPass())
> +FUNCTION_PASS("loop-flatten", LoopFlattenPass())
> FUNCTION_PASS("lowerinvoke", LowerInvokePass())
> FUNCTION_PASS("lowerswitch", LowerSwitchPass())
> FUNCTION_PASS("mem2reg", PromotePass())
> @@ -388,7 +388,6 @@ LOOP_PASS("canon-freeze", CanonicalizeFreezeInLoopsPass())
> LOOP_PASS("dot-ddg", DDGDotPrinterPass())
> LOOP_PASS("invalidate<all>", InvalidateAllAnalysesPass())
> LOOP_PASS("licm", LICMPass())
> -LOOP_PASS("loop-flatten", LoopFlattenPass())
> LOOP_PASS("loop-idiom", LoopIdiomRecognizePass())
> LOOP_PASS("loop-instsimplify", LoopInstSimplifyPass())
> LOOP_PASS("loop-interchange", LoopInterchangePass())
>
> diff --git a/llvm/lib/Transforms/Scalar/LoopFlatten.cpp b/llvm/lib/Transforms/Scalar/LoopFlatten.cpp
> index 37bfff4ba67f..4c5ffdcae33a 100644
> --- a/llvm/lib/Transforms/Scalar/LoopFlatten.cpp
> +++ b/llvm/lib/Transforms/Scalar/LoopFlatten.cpp
> @@ -658,10 +658,10 @@ static bool FlattenLoopPair(FlattenInfo &FI, DominatorTree *DT, LoopInfo *LI,
> return DoFlattenLoopPair(FI, DT, LI, SE, AC, TTI);
> }
>
> -bool Flatten(LoopNest &LN, DominatorTree *DT, LoopInfo *LI, ScalarEvolution *SE,
> +bool Flatten(DominatorTree *DT, LoopInfo *LI, ScalarEvolution *SE,
> AssumptionCache *AC, TargetTransformInfo *TTI) {
> bool Changed = false;
> - for (Loop *InnerLoop : LN.getLoops()) {
> + for (auto *InnerLoop : LI->getLoopsInPreorder()) {
> auto *OuterLoop = InnerLoop->getParentLoop();
> if (!OuterLoop)
> continue;
> @@ -671,9 +671,13 @@ bool Flatten(LoopNest &LN, DominatorTree *DT, LoopInfo *LI, ScalarEvolution *SE,
> return Changed;
> }
>
> -PreservedAnalyses LoopFlattenPass::run(LoopNest &LN, LoopAnalysisManager &LAM,
> - LoopStandardAnalysisResults &AR,
> - LPMUpdater &U) {
> +PreservedAnalyses LoopFlattenPass::run(Function &F,
> + FunctionAnalysisManager &AM) {
> + auto *DT = &AM.getResult<DominatorTreeAnalysis>(F);
> + auto *LI = &AM.getResult<LoopAnalysis>(F);
> + auto *SE = &AM.getResult<ScalarEvolutionAnalysis>(F);
> + auto *AC = &AM.getResult<AssumptionAnalysis>(F);
> + auto *TTI = &AM.getResult<TargetIRAnalysis>(F);
>
> bool Changed = false;
>
> @@ -681,7 +685,15 @@ PreservedAnalyses LoopFlattenPass::run(LoopNest &LN, LoopAnalysisManager &LAM,
> // in simplified form, and also needs LCSSA. Running
> // this pass will simplify all loops that contain inner loops,
> // regardless of whether anything ends up being flattened.
> - Changed |= Flatten(LN, &AR.DT, &AR.LI, &AR.SE, &AR.AC, &AR.TTI);
> + for (const auto &L : *LI) {
> + if (L->isInnermost())
> + continue;
> + Changed |=
> + simplifyLoop(L, DT, LI, SE, AC, nullptr, false /* PreserveLCSSA */);
> + Changed |= formLCSSARecursively(*L, *DT, LI, SE);
> + }
> +
> + Changed |= Flatten(DT, LI, SE, AC, TTI);
>
> if (!Changed)
> return PreservedAnalyses::all();
> @@ -728,10 +740,5 @@ bool LoopFlattenLegacyPass::runOnFunction(Function &F) {
> auto &TTIP = getAnalysis<TargetTransformInfoWrapperPass>();
> auto *TTI = &TTIP.getTTI(F);
> auto *AC = &getAnalysis<AssumptionCacheTracker>().getAssumptionCache(F);
> - bool Changed = false;
> - for (Loop *L : *LI) {
> - auto LN = LoopNest::getLoopNest(*L, *SE);
> - Changed |= Flatten(*LN, DT, LI, SE, AC, TTI);
> - }
> - return Changed;
> + return Flatten(DT, LI, SE, AC, TTI);
> }
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list