[llvm] r206542 - PMBuilder: Expose an option to disable tail calls
Duncan P. N. Exon Smith
dexonsmith at apple.com
Thu Apr 17 18:05:15 PDT 2014
Author: dexonsmith
Date: Thu Apr 17 20:05:15 2014
New Revision: 206542
URL: http://llvm.org/viewvc/llvm-project?rev=206542&view=rev
Log:
PMBuilder: Expose an option to disable tail calls
Adds API to allow frontends to disable tail calls in PassManagerBuilder.
<rdar://problem/16050591>
Modified:
llvm/trunk/include/llvm/Transforms/IPO/PassManagerBuilder.h
llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp
Modified: llvm/trunk/include/llvm/Transforms/IPO/PassManagerBuilder.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/IPO/PassManagerBuilder.h?rev=206542&r1=206541&r2=206542&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Transforms/IPO/PassManagerBuilder.h (original)
+++ llvm/trunk/include/llvm/Transforms/IPO/PassManagerBuilder.h Thu Apr 17 20:05:15 2014
@@ -106,6 +106,7 @@ public:
/// added to the per-module passes.
Pass *Inliner;
+ bool DisableTailCalls;
bool DisableUnitAtATime;
bool DisableUnrollLoops;
bool BBVectorize;
Modified: llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp?rev=206542&r1=206541&r2=206542&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp (original)
+++ llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp Thu Apr 17 20:05:15 2014
@@ -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::populateModuleP
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
More information about the llvm-commits
mailing list