[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