diff options
| author | Robert Lougher <rob.lougher@gmail.com> | 2019-03-19 20:24:28 +0000 |
|---|---|---|
| committer | Robert Lougher <rob.lougher@gmail.com> | 2019-03-19 20:24:28 +0000 |
| commit | de548ccab9f1dfdefff338754fbc151f4b5cee46 (patch) | |
| tree | 581194c9a51c9647c9d84473a60795218bf1991a /llvm/lib | |
| parent | 70537abe525cd6499feae5f34e5ae3d107a0f940 (diff) | |
| download | bcm5719-llvm-de548ccab9f1dfdefff338754fbc151f4b5cee46.tar.gz bcm5719-llvm-de548ccab9f1dfdefff338754fbc151f4b5cee46.zip | |
[TailCallElim] Add tailcall elimination pass to LTO pipelines
LTO provides additional opportunities for tailcall elimination due to
link-time inlining and visibility of nocapture attribute. Testing showed
negligible impact on compilation times.
Differential Revision: https://reviews.llvm.org/D58391
llvm-svn: 356511
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Passes/PassBuilder.cpp | 4 | ||||
| -rw-r--r-- | llvm/lib/Transforms/IPO/PassManagerBuilder.cpp | 4 |
2 files changed, 8 insertions, 0 deletions
diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp index 2baff899010..ba0d6c2bd68 100644 --- a/llvm/lib/Passes/PassBuilder.cpp +++ b/llvm/lib/Passes/PassBuilder.cpp @@ -1185,6 +1185,10 @@ PassBuilder::buildLTODefaultPipeline(OptimizationLevel Level, bool DebugLogging, // Break up allocas FPM.addPass(SROA()); + // LTO provides additional opportunities for tailcall elimination due to + // link-time inlining, and visibility of nocapture attribute. + FPM.addPass(TailCallElimPass()); + // Run a few AA driver optimizations here and now to cleanup the code. MPM.addPass(createModuleToFunctionPassAdaptor(std::move(FPM))); diff --git a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp index 0505135673b..9e241aa335a 100644 --- a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp +++ b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp @@ -896,6 +896,10 @@ void PassManagerBuilder::addLTOOptimizationPasses(legacy::PassManagerBase &PM) { // Break up allocas PM.add(createSROAPass()); + // LTO provides additional opportunities for tailcall elimination due to + // link-time inlining, and visibility of nocapture attribute. + PM.add(createTailCallEliminationPass()); + // Run a few AA driven optimizations here and now, to cleanup the code. PM.add(createPostOrderFunctionAttrsLegacyPass()); // Add nocapture. PM.add(createGlobalsAAWrapperPass()); // IP alias analysis. |

