Skip to content

Commit 2df3426

Browse files
committed
[NewPM] Invalidate AAManager after populating GlobalsAA
GlobalsAA is only created at the beginning of the inliner pipeline. If an AAManager is cached from previous passes, it won't get rebuilt to include the newly created GlobalsAA. Reviewed By: mtrofin Differential Revision: https://reviews.llvm.org/D101379
1 parent 1828312 commit 2df3426

10 files changed

+29
-5
lines changed

clang/test/Driver/debug-pass-structure.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
// NEWPM-NEXT: RequireAnalysisPass<{{.*}}> on [module]
2121
// NEWPM-NEXT: GlobalsAA analysis on [module]
2222
// NEWPM-NEXT: CallGraphAnalysis analysis on [module]
23+
// NEWPM-NEXT: ModuleToFunctionPassAdaptor on [module]
2324
// NEWPM-NEXT: RequireAnalysisPass<{{.*}}> on [module]
2425
// NEWPM-NEXT: ProfileSummaryAnalysis analysis on [module]
2526
// NEWPM-NEXT: ModuleToPostOrderCGSCCPassAdaptor on [module]

llvm/include/llvm/Transforms/IPO/Inliner.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -131,9 +131,9 @@ class ModuleInlinerWrapperPass
131131
/// before run is called, as part of pass pipeline building.
132132
CGSCCPassManager &getPM() { return PM; }
133133

134-
/// Allow adding module-level analyses benefiting the contained CGSCC passes.
135-
template <class T> void addRequiredModuleAnalysis() {
136-
MPM.addPass(RequireAnalysisPass<T, Module>());
134+
/// Allow adding module-level passes benefiting the contained CGSCC passes.
135+
template <class T> void addModulePass(T Pass) {
136+
MPM.addPass(std::move(Pass));
137137
}
138138

139139
private:

llvm/lib/Passes/PassBuilder.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -977,11 +977,15 @@ PassBuilder::buildInlinerPipeline(OptimizationLevel Level,
977977

978978
// Require the GlobalsAA analysis for the module so we can query it within
979979
// the CGSCC pipeline.
980-
MIWP.addRequiredModuleAnalysis<GlobalsAA>();
980+
MIWP.addModulePass(RequireAnalysisPass<GlobalsAA, Module>());
981+
// Invalidate AAManager so it can be recreated and pick up the newly available
982+
// GlobalsAA.
983+
MIWP.addModulePass(
984+
createModuleToFunctionPassAdaptor(InvalidateAnalysisPass<AAManager>()));
981985

982986
// Require the ProfileSummaryAnalysis for the module so we can query it within
983987
// the inliner pass.
984-
MIWP.addRequiredModuleAnalysis<ProfileSummaryAnalysis>();
988+
MIWP.addModulePass(RequireAnalysisPass<ProfileSummaryAnalysis, Module>());
985989

986990
// Now begin the main postorder CGSCC pipeline.
987991
// FIXME: The current CGSCC pipeline has its origins in the legacy pass

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,8 @@
114114
; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}GlobalsAA
115115
; CHECK-O-NEXT: Running analysis: GlobalsAA
116116
; CHECK-O-NEXT: Running analysis: CallGraphAnalysis
117+
; CHECK-O-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}AAManager
118+
; CHECK-O-NEXT: Invalidating analysis: AAManager
117119
; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}ProfileSummaryAnalysis
118120
; CHECK-O-NEXT: Running analysis: ProfileSummaryAnalysis
119121
; CHECK-O-NEXT: Running analysis: InnerAnalysisManagerProxy
@@ -125,6 +127,7 @@
125127
; CHECK-O-NEXT: Running pass: InlinerPass
126128
; CHECK-O-NEXT: Running pass: InlinerPass
127129
; CHECK-O-NEXT: Running pass: PostOrderFunctionAttrsPass
130+
; CHECK-O-NEXT: Running analysis: AAManager
128131
; CHECK-O3-NEXT: Running pass: ArgumentPromotionPass
129132
; CHECK-O2-NEXT: Running pass: OpenMPOptCGSCCPass on (foo)
130133
; CHECK-O3-NEXT: Running pass: OpenMPOptCGSCCPass on (foo)

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,8 @@
9898
; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}GlobalsAA
9999
; CHECK-O-NEXT: Running analysis: GlobalsAA
100100
; CHECK-O-NEXT: Running analysis: CallGraphAnalysis
101+
; CHECK-O-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}AAManager
102+
; CHECK-O-NEXT: Invalidating analysis: AAManager
101103
; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}ProfileSummaryAnalysis
102104
; CHECK-PRELINK-O-NEXT: Running analysis: ProfileSummaryAnalysis
103105
; CHECK-O-NEXT: Running analysis: InnerAnalysisManagerProxy
@@ -109,6 +111,7 @@
109111
; CHECK-O-NEXT: Running pass: InlinerPass
110112
; CHECK-O-NEXT: Running pass: InlinerPass
111113
; CHECK-O-NEXT: Running pass: PostOrderFunctionAttrsPass
114+
; CHECK-O-NEXT: Running analysis: AAManager
112115
; CHECK-O3-NEXT: Running pass: ArgumentPromotionPass
113116
; CHECK-O2-NEXT: Running pass: OpenMPOptCGSCCPass on (foo)
114117
; CHECK-O3-NEXT: Running pass: OpenMPOptCGSCCPass on (foo)

llvm/test/Other/new-pm-thinlto-postlink-pgo-defaults.ll

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@
7373
; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}GlobalsAA
7474
; CHECK-O-NEXT: Running analysis: GlobalsAA
7575
; CHECK-O-NEXT: Running analysis: CallGraphAnalysis
76+
; CHECK-O-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}AAManager
77+
; CHECK-O-NEXT: Invalidating analysis: AAManager
7678
; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}ProfileSummaryAnalysis
7779
; CHECK-O-NEXT: Running analysis: InnerAnalysisManagerProxy
7880
; CHECK-O-NEXT: Running analysis: LazyCallGraphAnalysis
@@ -83,6 +85,7 @@
8385
; CHECK-O-NEXT: Running pass: InlinerPass
8486
; CHECK-O-NEXT: Running pass: InlinerPass
8587
; CHECK-O-NEXT: Running pass: PostOrderFunctionAttrsPass
88+
; CHECK-O-NEXT: Running analysis: AAManager
8689
; CHECK-O3-NEXT: Running pass: ArgumentPromotionPass
8790
; CHECK-O2-NEXT: Running pass: OpenMPOptCGSCCPass
8891
; CHECK-O3-NEXT: Running pass: OpenMPOptCGSCCPass

llvm/test/Other/new-pm-thinlto-postlink-samplepgo-defaults.ll

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@
8282
; CHECK-O-NEXT: Starting {{.*}}Module pass manager run.
8383
; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}GlobalsAA
8484
; CHECK-O-NEXT: Running analysis: GlobalsAA
85+
; CHECK-O-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}AAManager
86+
; CHECK-O-NEXT: Invalidating analysis: AAManager
8587
; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}ProfileSummaryAnalysis
8688
; CHECK-O-NEXT: Running analysis: InnerAnalysisManagerProxy
8789
; CHECK-O-NEXT: Running analysis: LazyCallGraphAnalysis
@@ -92,6 +94,7 @@
9294
; CHECK-O-NEXT: Running pass: InlinerPass
9395
; CHECK-O-NEXT: Running pass: InlinerPass
9496
; CHECK-O-NEXT: Running pass: PostOrderFunctionAttrsPass
97+
; CHECK-O-NEXT: Running analysis: AAManager
9598
; CHECK-O3-NEXT: Running pass: ArgumentPromotionPass
9699
; CHECK-O2-NEXT: Running pass: OpenMPOptCGSCCPass
97100
; CHECK-O3-NEXT: Running pass: OpenMPOptCGSCCPass

llvm/test/Other/new-pm-thinlto-prelink-pgo-defaults.ll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@
9898
; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}GlobalsAA
9999
; CHECK-O-NEXT: Running analysis: GlobalsAA
100100
; CHECK-O-NEXT: Running analysis: CallGraphAnalysis
101+
; CHECK-O-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}AAManager
101102
; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}ProfileSummaryAnalysis
102103
; CHECK-O-NEXT: Running analysis: InnerAnalysisManagerProxy
103104
; CHECK-O-NEXT: Running analysis: LazyCallGraphAnalysis

llvm/test/Other/new-pm-thinlto-prelink-samplepgo-defaults.ll

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@
7777
; CHECK-O-NEXT: Starting {{.*}}Module pass manager run.
7878
; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}GlobalsAA
7979
; CHECK-O-NEXT: Running analysis: GlobalsAA
80+
; CHECK-O-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}AAManager
81+
; CHECK-O-NEXT: Invalidating analysis: AAManager
8082
; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}ProfileSummaryAnalysis
8183
; CHECK-O-NEXT: Running analysis: InnerAnalysisManagerProxy
8284
; CHECK-O-NEXT: Running analysis: LazyCallGraphAnalysis
@@ -87,6 +89,7 @@
8789
; CHECK-O-NEXT: Running pass: InlinerPass
8890
; CHECK-O-NEXT: Running pass: InlinerPass
8991
; CHECK-O-NEXT: Running pass: PostOrderFunctionAttrsPass
92+
; CHECK-O-NEXT: Running analysis: AAManager
9093
; CHECK-O3-NEXT: Running pass: ArgumentPromotionPass
9194
; CHECK-O2-NEXT: Running pass: OpenMPOptCGSCCPass
9295
; CHECK-O3-NEXT: Running pass: OpenMPOptCGSCCPass

llvm/test/Other/opt-O3-pipeline.ll

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -380,6 +380,8 @@
380380
; NEWPM-NEXT: RequireAnalysisPass<{{.*}}> on [module]
381381
; NEWPM-NEXT: GlobalsAA analysis on [module]
382382
; NEWPM-NEXT: CallGraphAnalysis analysis on [module]
383+
; NEWPM-NEXT: ModuleToFunctionPassAdaptor on [module]
384+
; NEWPM-NEXT: InvalidateAnalysisPass<{{.*}}> on f
383385
; NEWPM-NEXT: RequireAnalysisPass<{{.*}}> on [module]
384386
; NEWPM-NEXT: ProfileSummaryAnalysis analysis on [module]
385387
; NEWPM-NEXT: ModuleToPostOrderCGSCCPassAdaptor on [module]
@@ -392,6 +394,7 @@
392394
; NEWPM-NEXT: InlinerPass on (f)
393395
; NEWPM-NEXT: InlinerPass on (f)
394396
; NEWPM-NEXT: PostOrderFunctionAttrsPass on (f)
397+
; NEWPM-NEXT: AAManager analysis on f
395398
; NEWPM-NEXT: ArgumentPromotionPass on (f)
396399
; NEWPM-NEXT: OpenMPOptCGSCCPass on (f)
397400
; NEWPM-NEXT: CGSCCToFunctionPassAdaptor on (f)

0 commit comments

Comments
 (0)