summaryrefslogtreecommitdiff
path: root/lib/Transforms/IPO
diff options
context:
space:
mode:
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>2014-04-18 01:05:15 +0000
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>2014-04-18 01:05:15 +0000
commitbf1d0f417eebbd25b85b4dac2e7d7a4cc7f45b7b (patch)
treefcba3458ee8a2e44ab498ce9690ab01fbc0d5fe2 /lib/Transforms/IPO
parentcfe02c46dc7b97adb3c76ce46bc24aff3266df34 (diff)
downloadllvm-bf1d0f417eebbd25b85b4dac2e7d7a4cc7f45b7b.tar.gz
llvm-bf1d0f417eebbd25b85b4dac2e7d7a4cc7f45b7b.tar.bz2
llvm-bf1d0f417eebbd25b85b4dac2e7d7a4cc7f45b7b.tar.xz
PMBuilder: Expose an option to disable tail calls
Adds API to allow frontends to disable tail calls in PassManagerBuilder. <rdar://problem/16050591> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206542 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/IPO')
-rw-r--r--lib/Transforms/IPO/PassManagerBuilder.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/Transforms/IPO/PassManagerBuilder.cpp b/lib/Transforms/IPO/PassManagerBuilder.cpp
index 76f7c1098b..052d24f58a 100644
--- a/lib/Transforms/IPO/PassManagerBuilder.cpp
+++ b/lib/Transforms/IPO/PassManagerBuilder.cpp
@@ -58,6 +58,7 @@ PassManagerBuilder::PassManagerBuilder() {
SizeLevel = 0;
LibraryInfo = 0;
Inliner = 0;
+ DisableTailCalls = false;
DisableUnitAtATime = false;
DisableUnrollLoops = false;
BBVectorize = RunBBVectorization;
@@ -183,7 +184,8 @@ void PassManagerBuilder::populateModulePassManager(PassManagerBase &MPM) {
MPM.add(createCFGSimplificationPass()); // Merge & remove BBs
MPM.add(createInstructionCombiningPass()); // Combine silly seq's
- MPM.add(createTailCallEliminationPass()); // Eliminate tail calls
+ if (!DisableTailCalls)
+ MPM.add(createTailCallEliminationPass()); // Eliminate tail calls
MPM.add(createCFGSimplificationPass()); // Merge & remove BBs
MPM.add(createReassociatePass()); // Reassociate expressions
MPM.add(createLoopRotatePass()); // Rotate Loop