forked from OSchip/llvm-project
Revert "[NPM][CGSCC] FunctionAnalysisManagerCGSCCProxy: do not clear immutable function passes"
This reverts commit 5eaeb0fa67
.
It appears there are analyses that assume clearing - example:
https://lab.llvm.org/buildbot#builders/36/builds/5964
This commit is contained in:
parent
3d039f6501
commit
11b70b9e3a
|
@ -12,7 +12,7 @@
|
|||
; RUN: %clang -target x86_64-grtev4-linux-gnu \
|
||||
; RUN: -O2 -fexperimental-new-pass-manager -Xclang -fdebug-pass-manager \
|
||||
; RUN: -c -fthinlto-index=%t.o.thinlto.bc \
|
||||
; RUN: -o %t.native.o -x ir %t.o 2>&1 | FileCheck -check-prefix=CHECK-O %s --dump-input=fail
|
||||
; RUN: -o %t.native.o -x ir %t.o 2>&1 | FileCheck -check-prefixes=CHECK-O,CHECK-O2 %s --dump-input=fail
|
||||
|
||||
; RUN: %clang -target x86_64-grtev4-linux-gnu \
|
||||
; RUN: -O3 -fexperimental-new-pass-manager -Xclang -fdebug-pass-manager \
|
||||
|
@ -70,19 +70,24 @@
|
|||
; CHECK-O: Starting CGSCC pass manager run.
|
||||
; CHECK-O: Running pass: InlinerPass on (main)
|
||||
; CHECK-O: Running pass: PostOrderFunctionAttrsPass on (main)
|
||||
; CHECK-O: Invalidating analysis: DominatorTreeAnalysis on main
|
||||
; CHECK-O: Invalidating analysis: BasicAA on main
|
||||
; CHECK-O: Invalidating analysis: AAManager on main
|
||||
; CHECK-O: Clearing all analysis results for: main
|
||||
; CHECK-O3: Running pass: ArgumentPromotionPass on (main)
|
||||
; CHECK-O3: Running analysis: TargetIRAnalysis on main
|
||||
; CHECK-O: Starting {{.*}}Function pass manager run.
|
||||
; CHECK-O: Running pass: SROA on main
|
||||
; These next two can appear in any order since they are accessed as parameters
|
||||
; on the same call to SROA::runImpl
|
||||
; CHECK-O-DAG: Running analysis: DominatorTreeAnalysis on main
|
||||
; CHECK-O-DAG: Running analysis: AssumptionAnalysis on main
|
||||
; CHECK-O: Running pass: EarlyCSEPass on main
|
||||
; CHECK-O: Running analysis: TargetLibraryAnalysis on main
|
||||
; CHECK-O2: Running analysis: TargetIRAnalysis on main
|
||||
; CHECK-O: Running analysis: MemorySSAAnalysis on main
|
||||
; CHECK-O: Running analysis: AAManager on main
|
||||
; CHECK-O: Running analysis: BasicAA on main
|
||||
; CHECK-O: Running analysis: ScopedNoAliasAA on main
|
||||
; CHECK-O: Running analysis: TypeBasedAA on main
|
||||
; CHECK-O: Running analysis: OuterAnalysisManagerProxy
|
||||
; CHECK-O: Running pass: SpeculativeExecutionPass on main
|
||||
; CHECK-O: Running pass: JumpThreadingPass on main
|
||||
; CHECK-O: Running analysis: LazyValueAnalysis on main
|
||||
|
@ -91,6 +96,7 @@
|
|||
; CHECK-O: Running pass: SimplifyCFGPass on main
|
||||
; CHECK-O3: Running pass: AggressiveInstCombinePass on main
|
||||
; CHECK-O: Running pass: InstCombinePass on main
|
||||
; CHECK-O: Running analysis: OptimizationRemarkEmitterAnalysis on main
|
||||
; CHECK-O: Running pass: LibCallsShrinkWrapPass on main
|
||||
; CHECK-O: Running pass: TailCallElimPass on main
|
||||
; CHECK-O: Running pass: SimplifyCFGPass on main
|
||||
|
|
|
@ -720,7 +720,7 @@ bool FunctionAnalysisManagerCGSCCProxy::Result::invalidate(
|
|||
auto PAC = PA.getChecker<FunctionAnalysisManagerCGSCCProxy>();
|
||||
if (!PAC.preserved() && !PAC.preservedSet<AllAnalysesOn<LazyCallGraph::SCC>>()) {
|
||||
for (LazyCallGraph::Node &N : C)
|
||||
FAM->invalidate(N.getFunction(), PA);
|
||||
FAM->clear(N.getFunction(), N.getFunction().getName());
|
||||
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -1942,30 +1942,5 @@ TEST_F(CGSCCPassManagerTest, TestInsertionOfNewNonTrivialCallEdge) {
|
|||
ASSERT_TRUE(Ran);
|
||||
}
|
||||
|
||||
TEST_F(CGSCCPassManagerTest, TestFunctionPassesAreQueriedForInvalidation) {
|
||||
std::unique_ptr<Module> M = parseIR("define void @f() { ret void }");
|
||||
CGSCCPassManager CGPM;
|
||||
bool SCCCalled = false;
|
||||
FunctionPassManager FPM;
|
||||
int ImmRuns = 0;
|
||||
FAM.registerPass([&] { return TestImmutableFunctionAnalysis(ImmRuns); });
|
||||
FPM.addPass(RequireAnalysisPass<TestImmutableFunctionAnalysis, Function>());
|
||||
CGPM.addPass(
|
||||
LambdaSCCPass([&](LazyCallGraph::SCC &C, CGSCCAnalysisManager &AM,
|
||||
LazyCallGraph &CG, CGSCCUpdateResult &UR) {
|
||||
SCCCalled = true;
|
||||
return PreservedAnalyses::none();
|
||||
}));
|
||||
CGPM.addPass(createCGSCCToFunctionPassAdaptor(
|
||||
RequireAnalysisPass<TestImmutableFunctionAnalysis, Function>()));
|
||||
ModulePassManager MPM;
|
||||
|
||||
MPM.addPass(createModuleToFunctionPassAdaptor(std::move(FPM)));
|
||||
MPM.addPass(createModuleToPostOrderCGSCCPassAdaptor(std::move(CGPM)));
|
||||
MPM.run(*M, MAM);
|
||||
ASSERT_EQ(ImmRuns, 1);
|
||||
ASSERT_TRUE(SCCCalled);
|
||||
}
|
||||
|
||||
#endif
|
||||
} // namespace
|
||||
|
|
Loading…
Reference in New Issue