diff options
author | Chris Lattner <sabre@nondot.org> | 2003-09-20 05:14:13 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2003-09-20 05:14:13 +0000 |
commit | 3fc6ef1bb96d9a3194cef667a2d3cbc94e3fb189 (patch) | |
tree | 61640c2b812fc2940b3ada3f459c1de597772210 | |
parent | 2240d2b3f7b9f5835868c83ce78d125d1b65212b (diff) | |
download | external_llvm-3fc6ef1bb96d9a3194cef667a2d3cbc94e3fb189.zip external_llvm-3fc6ef1bb96d9a3194cef667a2d3cbc94e3fb189.tar.gz external_llvm-3fc6ef1bb96d9a3194cef667a2d3cbc94e3fb189.tar.bz2 |
Expose the TCE pass
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8619 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/Transforms/Scalar.h | 7 | ||||
-rw-r--r-- | lib/Transforms/Scalar/TailRecursionElimination.cpp | 3 |
2 files changed, 10 insertions, 0 deletions
diff --git a/include/llvm/Transforms/Scalar.h b/include/llvm/Transforms/Scalar.h index b240f58..796d57b 100644 --- a/include/llvm/Transforms/Scalar.h +++ b/include/llvm/Transforms/Scalar.h @@ -241,6 +241,13 @@ void SplitCriticalEdge(TerminatorInst *TI, unsigned SuccNum, Pass *P = 0); Pass *createLoopPreheaderInsertionPass(); extern const PassInfo *LoopPreheadersID; +//===----------------------------------------------------------------------===// +// +// This pass eliminates call instructions to the current function which occur +// immediately before return instructions. +// +FunctionPass *createTailCallEliminationPass(); + //===----------------------------------------------------------------------===// // This pass convert malloc and free instructions to %malloc & %free function diff --git a/lib/Transforms/Scalar/TailRecursionElimination.cpp b/lib/Transforms/Scalar/TailRecursionElimination.cpp index f0c5ba7..3945af3 100644 --- a/lib/Transforms/Scalar/TailRecursionElimination.cpp +++ b/lib/Transforms/Scalar/TailRecursionElimination.cpp @@ -19,6 +19,7 @@ // //===----------------------------------------------------------------------===// +#include "llvm/Transforms/Scalar.h" #include "llvm/DerivedTypes.h" #include "llvm/Function.h" #include "llvm/Instructions.h" @@ -34,6 +35,8 @@ namespace { RegisterOpt<TailCallElim> X("tailcallelim", "Tail Call Elimination"); } +FunctionPass *createTailCallEliminationPass() { return new TailCallElim(); } + bool TailCallElim::runOnFunction(Function &F) { // If this function is a varargs function, we won't be able to PHI the args |