Skip to content

Commit 11b70b9

Browse files
committed
Revert "[NPM][CGSCC] FunctionAnalysisManagerCGSCCProxy: do not clear immutable function passes"
This reverts commit 5eaeb0f. It appears there are analyses that assume clearing - example: https://lab.llvm.org/buildbot#builders/36/builds/5964
1 parent 3d039f6 commit 11b70b9

File tree

3 files changed

+11
-30
lines changed

3 files changed

+11
-30
lines changed

clang/test/CodeGen/thinlto-distributed-newpm.ll

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
; RUN: %clang -target x86_64-grtev4-linux-gnu \
1313
; RUN: -O2 -fexperimental-new-pass-manager -Xclang -fdebug-pass-manager \
1414
; RUN: -c -fthinlto-index=%t.o.thinlto.bc \
15-
; RUN: -o %t.native.o -x ir %t.o 2>&1 | FileCheck -check-prefix=CHECK-O %s --dump-input=fail
15+
; RUN: -o %t.native.o -x ir %t.o 2>&1 | FileCheck -check-prefixes=CHECK-O,CHECK-O2 %s --dump-input=fail
1616

1717
; RUN: %clang -target x86_64-grtev4-linux-gnu \
1818
; RUN: -O3 -fexperimental-new-pass-manager -Xclang -fdebug-pass-manager \
@@ -70,19 +70,24 @@
7070
; CHECK-O: Starting CGSCC pass manager run.
7171
; CHECK-O: Running pass: InlinerPass on (main)
7272
; CHECK-O: Running pass: PostOrderFunctionAttrsPass on (main)
73-
; CHECK-O: Invalidating analysis: DominatorTreeAnalysis on main
74-
; CHECK-O: Invalidating analysis: BasicAA on main
75-
; CHECK-O: Invalidating analysis: AAManager on main
73+
; CHECK-O: Clearing all analysis results for: main
7674
; CHECK-O3: Running pass: ArgumentPromotionPass on (main)
75+
; CHECK-O3: Running analysis: TargetIRAnalysis on main
7776
; CHECK-O: Starting {{.*}}Function pass manager run.
7877
; CHECK-O: Running pass: SROA on main
7978
; These next two can appear in any order since they are accessed as parameters
8079
; on the same call to SROA::runImpl
8180
; CHECK-O-DAG: Running analysis: DominatorTreeAnalysis on main
81+
; CHECK-O-DAG: Running analysis: AssumptionAnalysis on main
8282
; CHECK-O: Running pass: EarlyCSEPass on main
83+
; CHECK-O: Running analysis: TargetLibraryAnalysis on main
84+
; CHECK-O2: Running analysis: TargetIRAnalysis on main
8385
; CHECK-O: Running analysis: MemorySSAAnalysis on main
8486
; CHECK-O: Running analysis: AAManager on main
8587
; CHECK-O: Running analysis: BasicAA on main
88+
; CHECK-O: Running analysis: ScopedNoAliasAA on main
89+
; CHECK-O: Running analysis: TypeBasedAA on main
90+
; CHECK-O: Running analysis: OuterAnalysisManagerProxy
8691
; CHECK-O: Running pass: SpeculativeExecutionPass on main
8792
; CHECK-O: Running pass: JumpThreadingPass on main
8893
; CHECK-O: Running analysis: LazyValueAnalysis on main
@@ -91,6 +96,7 @@
9196
; CHECK-O: Running pass: SimplifyCFGPass on main
9297
; CHECK-O3: Running pass: AggressiveInstCombinePass on main
9398
; CHECK-O: Running pass: InstCombinePass on main
99+
; CHECK-O: Running analysis: OptimizationRemarkEmitterAnalysis on main
94100
; CHECK-O: Running pass: LibCallsShrinkWrapPass on main
95101
; CHECK-O: Running pass: TailCallElimPass on main
96102
; CHECK-O: Running pass: SimplifyCFGPass on main

llvm/lib/Analysis/CGSCCPassManager.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -720,7 +720,7 @@ bool FunctionAnalysisManagerCGSCCProxy::Result::invalidate(
720720
auto PAC = PA.getChecker<FunctionAnalysisManagerCGSCCProxy>();
721721
if (!PAC.preserved() && !PAC.preservedSet<AllAnalysesOn<LazyCallGraph::SCC>>()) {
722722
for (LazyCallGraph::Node &N : C)
723-
FAM->invalidate(N.getFunction(), PA);
723+
FAM->clear(N.getFunction(), N.getFunction().getName());
724724

725725
return false;
726726
}

llvm/unittests/Analysis/CGSCCPassManagerTest.cpp

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1942,30 +1942,5 @@ TEST_F(CGSCCPassManagerTest, TestInsertionOfNewNonTrivialCallEdge) {
19421942
ASSERT_TRUE(Ran);
19431943
}
19441944

1945-
TEST_F(CGSCCPassManagerTest, TestFunctionPassesAreQueriedForInvalidation) {
1946-
std::unique_ptr<Module> M = parseIR("define void @f() { ret void }");
1947-
CGSCCPassManager CGPM;
1948-
bool SCCCalled = false;
1949-
FunctionPassManager FPM;
1950-
int ImmRuns = 0;
1951-
FAM.registerPass([&] { return TestImmutableFunctionAnalysis(ImmRuns); });
1952-
FPM.addPass(RequireAnalysisPass<TestImmutableFunctionAnalysis, Function>());
1953-
CGPM.addPass(
1954-
LambdaSCCPass([&](LazyCallGraph::SCC &C, CGSCCAnalysisManager &AM,
1955-
LazyCallGraph &CG, CGSCCUpdateResult &UR) {
1956-
SCCCalled = true;
1957-
return PreservedAnalyses::none();
1958-
}));
1959-
CGPM.addPass(createCGSCCToFunctionPassAdaptor(
1960-
RequireAnalysisPass<TestImmutableFunctionAnalysis, Function>()));
1961-
ModulePassManager MPM;
1962-
1963-
MPM.addPass(createModuleToFunctionPassAdaptor(std::move(FPM)));
1964-
MPM.addPass(createModuleToPostOrderCGSCCPassAdaptor(std::move(CGPM)));
1965-
MPM.run(*M, MAM);
1966-
ASSERT_EQ(ImmRuns, 1);
1967-
ASSERT_TRUE(SCCCalled);
1968-
}
1969-
19701945
#endif
19711946
} // namespace

0 commit comments

Comments
 (0)