Skip to content

Commit b776bb3

Browse files
committed
Move POFA earlier instead of running twice (For >01)
1 parent e94b2b9 commit b776bb3

File tree

2 files changed

+13
-12
lines changed

2 files changed

+13
-12
lines changed

llvm/lib/Passes/PassBuilderPipelines.cpp

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1830,8 +1830,8 @@ PassBuilder::buildLTODefaultPipeline(OptimizationLevel Level,
18301830

18311831
// Promoting by-reference arguments to by-value exposes more constants to
18321832
// IPSCCP.
1833-
MPM.addPass(createModuleToPostOrderCGSCCPassAdaptor(
1834-
PostOrderFunctionAttrsPass(/*SkipNonRecursive*/ true)));
1833+
MPM.addPass(
1834+
createModuleToPostOrderCGSCCPassAdaptor(PostOrderFunctionAttrsPass()));
18351835
MPM.addPass(
18361836
createModuleToPostOrderCGSCCPassAdaptor(ArgumentPromotionPass()));
18371837
MPM.addPass(
@@ -1849,9 +1849,12 @@ PassBuilder::buildLTODefaultPipeline(OptimizationLevel Level,
18491849
MPM.addPass(CalledValuePropagationPass());
18501850
}
18511851

1852-
// Now deduce any function attributes based in the current code.
1853-
MPM.addPass(
1854-
createModuleToPostOrderCGSCCPassAdaptor(PostOrderFunctionAttrsPass()));
1852+
// For higher optimization levels this Pass has just run, so don't repeat it.
1853+
if (Level.getSpeedupLevel() == 1) {
1854+
// Now deduce any function attributes based on the current code.
1855+
MPM.addPass(
1856+
createModuleToPostOrderCGSCCPassAdaptor(PostOrderFunctionAttrsPass()));
1857+
}
18551858

18561859
// Do RPO function attribute inference across the module to forward-propagate
18571860
// attributes where applicable.

llvm/test/Other/new-pm-lto-defaults.ll

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,21 +46,19 @@
4646
; CHECK-O1-NEXT: Running analysis: TargetLibraryAnalysis
4747
; CHECK-O-NEXT: Running analysis: FunctionAnalysisManagerCGSCCProxy
4848
; CHECK-O-NEXT: Running analysis: OuterAnalysisManagerProxy<{{.*}}LazyCallGraph{{.*}}>
49-
; CHECK-O23SZ-NEXT: Running pass: PostOrderFunctionAttrsPass
50-
; CHECK-O23SZ-NEXT: Running pass: ArgumentPromotionPass
51-
; CHECK-O23SZ-NEXT: Running pass: SROAPass
52-
; CHECK-O23SZ-NEXT: Running analysis: AssumptionAnalysis on foo
53-
; CHECK-O23SZ-NEXT: Running pass: IPSCCPPass
54-
; CHECK-O23SZ-NEXT: Running pass: CalledValuePropagationPass
5549
; CHECK-O-NEXT: Running pass: PostOrderFunctionAttrsPass
5650
; CHECK-O-NEXT: Running analysis: AAManager
5751
; CHECK-O-NEXT: Running analysis: BasicAA
58-
; CHECK-O1-NEXT: Running analysis: AssumptionAnalysis on foo
52+
; CHECK-O: Running analysis: AssumptionAnalysis on foo
5953
; CHECK-O1-NEXT: Running analysis: TargetIRAnalysis
6054
; CHECK-O1-NEXT: Running analysis: DominatorTreeAnalysis
6155
; CHECK-O-NEXT: Running analysis: ScopedNoAliasAA
6256
; CHECK-O-NEXT: Running analysis: TypeBasedAA
6357
; CHECK-O-NEXT: Running analysis: OuterAnalysisManagerProxy
58+
; CHECK-O23SZ-NEXT: Running pass: ArgumentPromotionPass
59+
; CHECK-O23SZ-NEXT: Running pass: SROAPass
60+
; CHECK-O23SZ-NEXT: Running pass: IPSCCPPass
61+
; CHECK-O23SZ-NEXT: Running pass: CalledValuePropagationPass
6462
; CHECK-O-NEXT: Running pass: ReversePostOrderFunctionAttrsPass
6563
; CHECK-O-NEXT: Running pass: GlobalSplitPass
6664
; CHECK-O-NEXT: Running pass: WholeProgramDevirtPass

0 commit comments

Comments
 (0)