diff options
author | Chandler Carruth <chandlerc@gmail.com> | 2017-02-12 05:34:04 +0000 |
---|---|---|
committer | Chandler Carruth <chandlerc@gmail.com> | 2017-02-12 05:34:04 +0000 |
commit | e87fc8cb7181005776e5de14c5426a335ae8c72f (patch) | |
tree | 9f9dcc1bcd77340abb68777456538a6d4d24ece0 | |
parent | a164f470e627803c06432874692e163f96c687a2 (diff) | |
download | bcm5719-llvm-e87fc8cb7181005776e5de14c5426a335ae8c72f.tar.gz bcm5719-llvm-e87fc8cb7181005776e5de14c5426a335ae8c72f.zip |
[PM] Enable GlobalsAA in the new PM's pipeline by default.
All the invalidation issues and bugs in this seem to be fixed, it has
survived a full build of the test suite plus SPEC with asserts and ASan
enabled on the Clang binary used.
Differential Revision: https://reviews.llvm.org/D29815
llvm-svn: 294887
-rw-r--r-- | llvm/lib/Passes/PassBuilder.cpp | 20 | ||||
-rw-r--r-- | llvm/test/Other/new-pm-defaults.ll | 5 |
2 files changed, 10 insertions, 15 deletions
diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp index 06190682f32..9264cf11e50 100644 --- a/llvm/lib/Passes/PassBuilder.cpp +++ b/llvm/lib/Passes/PassBuilder.cpp @@ -431,10 +431,9 @@ PassBuilder::buildPerModuleDefaultPipeline(OptimizationLevel Level, GlobalCleanupPM.addPass(SimplifyCFGPass()); MPM.addPass(createModuleToFunctionPassAdaptor(std::move(GlobalCleanupPM))); - // FIXME: Enable this when cross-IR-unit analysis invalidation is working. -#if 0 - MPM.addPass(RequireAnalysisPass<GlobalsAA>()); -#endif + // Require the GlobalsAA analysis for the module so we can query it within + // the CGSCC pipeline. + MPM.addPass(RequireAnalysisPass<GlobalsAA, Module>()); // Now begin the main postorder CGSCC pipeline. // FIXME: The current CGSCC pipeline has its origins in the legacy pass @@ -482,17 +481,14 @@ PassBuilder::buildPerModuleDefaultPipeline(OptimizationLevel Level, // FIXME: Is this really an optimization rather than a canonicalization? MPM.addPass(ReversePostOrderFunctionAttrsPass()); - // Recompute GloblasAA here prior to function passes. This is particularly + // Re-require GloblasAA here prior to function passes. This is particularly // useful as the above will have inlined, DCE'ed, and function-attr // propagated everything. We should at this point have a reasonably minimal // and richly annotated call graph. By computing aliasing and mod/ref // information for all local globals here, the late loop passes and notably // the vectorizer will be able to use them to help recognize vectorizable // memory operations. - // FIXME: Enable this once analysis invalidation is fully supported. -#if 0 - MPM.addPass(Require<GlobalsAA>()); -#endif + MPM.addPass(RequireAnalysisPass<GlobalsAA, Module>()); FunctionPassManager OptimizePM(DebugLogging); OptimizePM.addPass(Float2IntPass()); @@ -766,12 +762,8 @@ AAManager PassBuilder::buildDefaultAAPipeline() { // Add support for querying global aliasing information when available. // Because the `AAManager` is a function analysis and `GlobalsAA` is a module // analysis, all that the `AAManager` can do is query for any *cached* - // results from `GlobalsAA` through a readonly proxy.. -#if 0 - // FIXME: Enable once the invalidation logic supports this. Currently, the - // `AAManager` will hold stale references to the module analyses. + // results from `GlobalsAA` through a readonly proxy. AA.registerModuleAnalysis<GlobalsAA>(); -#endif return AA; } diff --git a/llvm/test/Other/new-pm-defaults.ll b/llvm/test/Other/new-pm-defaults.ll index 74f29ff10b1..59a1877617c 100644 --- a/llvm/test/Other/new-pm-defaults.ll +++ b/llvm/test/Other/new-pm-defaults.ll @@ -57,6 +57,9 @@ ; CHECK-O-NEXT: Running pass: InstCombinePass ; CHECK-O-NEXT: Running pass: SimplifyCFGPass ; CHECK-O-NEXT: Finished llvm::Function pass manager run. +; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}GlobalsAA +; CHECK-O-NEXT: Running analysis: GlobalsAA +; CHECK-O-NEXT: Running analysis: CallGraphAnalysis ; CHECK-O-NEXT: Running pass: ModuleToPostOrderCGSCCPassAdaptor<{{.*}}LazyCallGraph{{.*}}> ; CHECK-O-NEXT: Running analysis: InnerAnalysisManagerProxy ; CHECK-O-NEXT: Running analysis: LazyCallGraphAnalysis @@ -127,7 +130,7 @@ ; CHECK-O-NEXT: Finished CGSCC pass manager run. ; CHECK-O-NEXT: Running pass: EliminateAvailableExternallyPass ; CHECK-O-NEXT: Running pass: ReversePostOrderFunctionAttrsPass -; CHECK-O-NEXT: Running analysis: CallGraphAnalysis +; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}GlobalsAA ; CHECK-O-NEXT: Running pass: ModuleToFunctionPassAdaptor<{{.*}}PassManager{{.*}}> ; CHECK-O-NEXT: Starting llvm::Function pass manager run. ; CHECK-O-NEXT: Running pass: Float2IntPass |