Skip to content

Commit 7e06cf8

Browse files
author
eopXD
committed
Revert "[LoopNest][LoopFlatten] Change LoopFlattenPass to LoopNest pass"
This reverts commit ffc4d3e.
1 parent e493abc commit 7e06cf8

File tree

4 files changed

+19
-24
lines changed

4 files changed

+19
-24
lines changed

llvm/include/llvm/Transforms/Scalar/LoopFlatten.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ class LoopFlattenPass : public PassInfoMixin<LoopFlattenPass> {
2424
public:
2525
LoopFlattenPass() = default;
2626

27-
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
27+
PreservedAnalyses run(LoopNest &LN, LoopAnalysisManager &LAM,
28+
LoopStandardAnalysisResults &AR, LPMUpdater &U);
2829
};
2930

3031
} // end namespace llvm

llvm/lib/Passes/PassBuilder.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -616,7 +616,7 @@ PassBuilder::buildO1FunctionSimplificationPipeline(OptimizationLevel Level,
616616
FPM.addPass(SimplifyCFGPass());
617617
FPM.addPass(InstCombinePass());
618618
if (EnableLoopFlatten)
619-
FPM.addPass(LoopFlattenPass());
619+
FPM.addPass(createFunctionToLoopPassAdaptor(LoopFlattenPass()));
620620
// The loop passes in LPM2 (LoopFullUnrollPass) do not preserve MemorySSA.
621621
// *All* loop passes must preserve it, in order to be able to use it.
622622
FPM.addPass(createFunctionToLoopPassAdaptor(std::move(LPM2),
@@ -791,7 +791,7 @@ PassBuilder::buildFunctionSimplificationPipeline(OptimizationLevel Level,
791791
FPM.addPass(SimplifyCFGPass());
792792
FPM.addPass(InstCombinePass());
793793
if (EnableLoopFlatten)
794-
FPM.addPass(LoopFlattenPass());
794+
FPM.addPass(createFunctionToLoopPassAdaptor(LoopFlattenPass()));
795795
// The loop passes in LPM2 (LoopIdiomRecognizePass, IndVarSimplifyPass,
796796
// LoopDeletionPass and LoopFullUnrollPass) do not preserve MemorySSA.
797797
// *All* loop passes must preserve it, in order to be able to use it.
@@ -1841,7 +1841,7 @@ PassBuilder::buildLTODefaultPipeline(OptimizationLevel Level,
18411841

18421842
// More loops are countable; try to optimize them.
18431843
if (EnableLoopFlatten && Level.getSpeedupLevel() > 1)
1844-
MainFPM.addPass(LoopFlattenPass());
1844+
MainFPM.addPass(createFunctionToLoopPassAdaptor(LoopFlattenPass()));
18451845

18461846
if (EnableConstraintElimination)
18471847
MainFPM.addPass(ConstraintEliminationPass());

llvm/lib/Passes/PassRegistry.def

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ FUNCTION_PASS("guard-widening", GuardWideningPass())
247247
FUNCTION_PASS("load-store-vectorizer", LoadStoreVectorizerPass())
248248
FUNCTION_PASS("loop-simplify", LoopSimplifyPass())
249249
FUNCTION_PASS("loop-sink", LoopSinkPass())
250-
FUNCTION_PASS("loop-flatten", LoopFlattenPass())
250+
FUNCTION_PASS("loop-unroll-and-jam", LoopUnrollAndJamPass())
251251
FUNCTION_PASS("lowerinvoke", LowerInvokePass())
252252
FUNCTION_PASS("lowerswitch", LowerSwitchPass())
253253
FUNCTION_PASS("mem2reg", PromotePass())
@@ -388,6 +388,7 @@ LOOP_PASS("canon-freeze", CanonicalizeFreezeInLoopsPass())
388388
LOOP_PASS("dot-ddg", DDGDotPrinterPass())
389389
LOOP_PASS("invalidate<all>", InvalidateAllAnalysesPass())
390390
LOOP_PASS("licm", LICMPass())
391+
LOOP_PASS("loop-flatten", LoopFlattenPass())
391392
LOOP_PASS("loop-idiom", LoopIdiomRecognizePass())
392393
LOOP_PASS("loop-instsimplify", LoopInstSimplifyPass())
393394
LOOP_PASS("loop-interchange", LoopInterchangePass())

llvm/lib/Transforms/Scalar/LoopFlatten.cpp

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -658,10 +658,10 @@ static bool FlattenLoopPair(FlattenInfo &FI, DominatorTree *DT, LoopInfo *LI,
658658
return DoFlattenLoopPair(FI, DT, LI, SE, AC, TTI);
659659
}
660660

661-
bool Flatten(DominatorTree *DT, LoopInfo *LI, ScalarEvolution *SE,
661+
bool Flatten(LoopNest &LN, DominatorTree *DT, LoopInfo *LI, ScalarEvolution *SE,
662662
AssumptionCache *AC, TargetTransformInfo *TTI) {
663663
bool Changed = false;
664-
for (auto *InnerLoop : LI->getLoopsInPreorder()) {
664+
for (Loop *InnerLoop : LN.getLoops()) {
665665
auto *OuterLoop = InnerLoop->getParentLoop();
666666
if (!OuterLoop)
667667
continue;
@@ -671,29 +671,17 @@ bool Flatten(DominatorTree *DT, LoopInfo *LI, ScalarEvolution *SE,
671671
return Changed;
672672
}
673673

674-
PreservedAnalyses LoopFlattenPass::run(Function &F,
675-
FunctionAnalysisManager &AM) {
676-
auto *DT = &AM.getResult<DominatorTreeAnalysis>(F);
677-
auto *LI = &AM.getResult<LoopAnalysis>(F);
678-
auto *SE = &AM.getResult<ScalarEvolutionAnalysis>(F);
679-
auto *AC = &AM.getResult<AssumptionAnalysis>(F);
680-
auto *TTI = &AM.getResult<TargetIRAnalysis>(F);
674+
PreservedAnalyses LoopFlattenPass::run(LoopNest &LN, LoopAnalysisManager &LAM,
675+
LoopStandardAnalysisResults &AR,
676+
LPMUpdater &U) {
681677

682678
bool Changed = false;
683679

684680
// The loop flattening pass requires loops to be
685681
// in simplified form, and also needs LCSSA. Running
686682
// this pass will simplify all loops that contain inner loops,
687683
// regardless of whether anything ends up being flattened.
688-
for (const auto &L : *LI) {
689-
if (L->isInnermost())
690-
continue;
691-
Changed |=
692-
simplifyLoop(L, DT, LI, SE, AC, nullptr, false /* PreserveLCSSA */);
693-
Changed |= formLCSSARecursively(*L, *DT, LI, SE);
694-
}
695-
696-
Changed |= Flatten(DT, LI, SE, AC, TTI);
684+
Changed |= Flatten(LN, &AR.DT, &AR.LI, &AR.SE, &AR.AC, &AR.TTI);
697685

698686
if (!Changed)
699687
return PreservedAnalyses::all();
@@ -740,5 +728,10 @@ bool LoopFlattenLegacyPass::runOnFunction(Function &F) {
740728
auto &TTIP = getAnalysis<TargetTransformInfoWrapperPass>();
741729
auto *TTI = &TTIP.getTTI(F);
742730
auto *AC = &getAnalysis<AssumptionCacheTracker>().getAssumptionCache(F);
743-
return Flatten(DT, LI, SE, AC, TTI);
731+
bool Changed = false;
732+
for (Loop *L : *LI) {
733+
auto LN = LoopNest::getLoopNest(*L, *SE);
734+
Changed |= Flatten(*LN, DT, LI, SE, AC, TTI);
735+
}
736+
return Changed;
744737
}

0 commit comments

Comments
 (0)