[LoopFlatten] Enable it by default
LoopFlatten has been in the code base off by default for years, but this enables it to run by default. Downstream this has been running for years, so it has been exposed to quite some code. Then around the time we switched to the NPM, several fixes went in related to updating the MemorySSA state and we moved it to a loop pass manager, which both helped preventing rerunning certain analysis passes, and thus helped a bit with compile-times. About compile-times, adding a pass isn't free, but this should see only very minor increases. The pass is relatively simple and there shouldn't be anything algorithmically expensive because all it does is looking at inner/outer loops and it checks assumptions on loop increments and indices. If we see increases, I expect this to mainly come from invalidation of analysis info, and perhaps subsequent passes to trigger and do more. Despite its simplicity/restrictions, it triggers in most code-bases, which makes it worth to enable this by default. Differential Revision: https://reviews.llvm.org/D109958
This commit is contained in:
parent
d3b10150b6
commit
233659c7ae
|
@ -12,6 +12,7 @@ LLVM |release| Release Notes
|
|||
Release notes for previous releases can be found on
|
||||
`the Download Page <https://releases.llvm.org/download.html>`_.
|
||||
|
||||
* The LoopFlatten pass is now enabled by default.
|
||||
|
||||
Introduction
|
||||
============
|
||||
|
|
|
@ -83,7 +83,7 @@ cl::opt<bool> EnableUnrollAndJam("enable-unroll-and-jam", cl::init(false),
|
|||
cl::Hidden,
|
||||
cl::desc("Enable Unroll And Jam Pass"));
|
||||
|
||||
cl::opt<bool> EnableLoopFlatten("enable-loop-flatten", cl::init(false),
|
||||
cl::opt<bool> EnableLoopFlatten("enable-loop-flatten", cl::init(true),
|
||||
cl::Hidden,
|
||||
cl::desc("Enable the LoopFlatten Pass"));
|
||||
|
||||
|
|
|
@ -762,6 +762,7 @@ static bool DoFlattenLoopPair(FlattenInfo &FI, DominatorTree *DT, LoopInfo *LI,
|
|||
// deleted, and any information that have about the outer loop invalidated.
|
||||
SE->forgetLoop(FI.OuterLoop);
|
||||
SE->forgetLoop(FI.InnerLoop);
|
||||
SE->forgetLoopDispositions();
|
||||
if (U)
|
||||
U->markLoopAsDeleted(*FI.InnerLoop, FI.InnerLoop->getName());
|
||||
LI->erase(FI.InnerLoop);
|
||||
|
|
|
@ -174,6 +174,7 @@
|
|||
; CHECK-O-NEXT: Running pass: LICM
|
||||
; CHECK-O-NEXT: Running pass: SimpleLoopUnswitchPass
|
||||
; CHECK-O-NEXT: Running analysis: OuterAnalysisManagerProxy
|
||||
; CHECK-O-NEXT: Running pass: LoopFlattenPass
|
||||
; CHECK-O-NEXT: Running pass: SimplifyCFGPass
|
||||
; CHECK-O-NEXT: Running pass: InstCombinePass
|
||||
; CHECK-O-NEXT: Running pass: LoopSimplifyPass
|
||||
|
|
|
@ -116,6 +116,7 @@
|
|||
; CHECK-O23SZ-NEXT: Running pass: MergedLoadStoreMotionPass on foo
|
||||
; CHECK-O23SZ-NEXT: Running pass: LoopSimplifyPass on foo
|
||||
; CHECK-O23SZ-NEXT: Running pass: LCSSAPass on foo
|
||||
; CHECK-O23SZ-NEXT: Running pass: LoopFlattenPass on loop
|
||||
; CHECK-O23SZ-NEXT: Running pass: IndVarSimplifyPass on loop
|
||||
; CHECK-O23SZ-NEXT: Running pass: LoopDeletionPass on loop
|
||||
; CHECK-O23SZ-NEXT: Running pass: LoopFullUnrollPass on loop
|
||||
|
|
|
@ -149,6 +149,7 @@
|
|||
; CHECK-O-NEXT: Running pass: LICM
|
||||
; CHECK-O-NEXT: Running pass: SimpleLoopUnswitchPass
|
||||
; CHECK-O-NEXT: Running analysis: OuterAnalysisManagerProxy
|
||||
; CHECK-O-NEXT: Running pass: LoopFlattenPass
|
||||
; CHECK-O-NEXT: Running pass: SimplifyCFGPass
|
||||
; CHECK-O-NEXT: Running pass: InstCombinePass
|
||||
; CHECK-O-NEXT: Running pass: LoopSimplifyPass
|
||||
|
|
|
@ -110,6 +110,7 @@
|
|||
; CHECK-O-NEXT: Running pass: LICM
|
||||
; CHECK-O-NEXT: Running pass: SimpleLoopUnswitchPass
|
||||
; CHECK-O-NEXT: Running analysis: OuterAnalysisManagerProxy
|
||||
; CHECK-O-NEXT: Running pass: LoopFlattenPass
|
||||
; CHECK-O-NEXT: Running pass: SimplifyCFGPass
|
||||
; CHECK-O-NEXT: Running pass: InstCombinePass
|
||||
; CHECK-O-NEXT: Running pass: LoopSimplifyPass
|
||||
|
|
|
@ -119,6 +119,7 @@
|
|||
; CHECK-O-NEXT: Running pass: LICM
|
||||
; CHECK-O-NEXT: Running pass: SimpleLoopUnswitchPass
|
||||
; CHECK-O-NEXT: Running analysis: OuterAnalysisManagerProxy
|
||||
; CHECK-O-NEXT: Running pass: LoopFlattenPass
|
||||
; CHECK-O-NEXT: Running pass: SimplifyCFGPass
|
||||
; CHECK-O-NEXT: Running pass: InstCombinePass
|
||||
; CHECK-O-NEXT: Running pass: LoopSimplifyPass
|
||||
|
|
|
@ -148,6 +148,7 @@
|
|||
; CHECK-O-NEXT: Running pass: LICM
|
||||
; CHECK-O-NEXT: Running pass: SimpleLoopUnswitchPass
|
||||
; CHECK-O-NEXT: Running analysis: OuterAnalysisManagerProxy
|
||||
; CHECK-O-NEXT: Running pass: LoopFlattenPass
|
||||
; CHECK-O-NEXT: Running pass: SimplifyCFGPass
|
||||
; CHECK-O-NEXT: Running pass: InstCombinePass
|
||||
; CHECK-O-NEXT: Running pass: LoopSimplifyPass
|
||||
|
|
|
@ -114,6 +114,7 @@
|
|||
; CHECK-O-NEXT: Running pass: LICM
|
||||
; CHECK-O-NEXT: Running pass: SimpleLoopUnswitchPass
|
||||
; CHECK-O-NEXT: Running analysis: OuterAnalysisManagerProxy
|
||||
; CHECK-O-NEXT: Running pass: LoopFlattenPass
|
||||
; CHECK-O-NEXT: Running pass: SimplifyCFGPass
|
||||
; CHECK-O-NEXT: Running pass: InstCombinePass
|
||||
; CHECK-O-NEXT: Running pass: LoopSimplifyPass
|
||||
|
|
Loading…
Reference in New Issue