summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Passes/PassBuilder.cpp
diff options
context:
space:
mode:
authorRobert Lougher <rob.lougher@gmail.com>2019-03-19 20:24:28 +0000
committerRobert Lougher <rob.lougher@gmail.com>2019-03-19 20:24:28 +0000
commitde548ccab9f1dfdefff338754fbc151f4b5cee46 (patch)
tree581194c9a51c9647c9d84473a60795218bf1991a /llvm/lib/Passes/PassBuilder.cpp
parent70537abe525cd6499feae5f34e5ae3d107a0f940 (diff)
downloadbcm5719-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/Passes/PassBuilder.cpp')
-rw-r--r--llvm/lib/Passes/PassBuilder.cpp4
1 files changed, 4 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)));
OpenPOWER on IntegriCloud