diff options
author | Chris Lattner <sabre@nondot.org> | 2001-06-30 04:34:07 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2001-06-30 04:34:07 +0000 |
commit | 50d0b7ec3f58d13ea5613dde60a15b07532de56e (patch) | |
tree | c5dea80de4b30c86b776e25f11da2e07e433c6dc /include/llvm/Transforms/FunctionInlining.h | |
parent | 2b05880476693393ebebba777c70ca3cbb043fc3 (diff) | |
download | external_llvm-50d0b7ec3f58d13ea5613dde60a15b07532de56e.tar.gz external_llvm-50d0b7ec3f58d13ea5613dde60a15b07532de56e.tar.bz2 external_llvm-50d0b7ec3f58d13ea5613dde60a15b07532de56e.zip |
Split AllOpts.h into lots of little .h files.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Transforms/FunctionInlining.h')
-rw-r--r-- | include/llvm/Transforms/FunctionInlining.h | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/include/llvm/Transforms/FunctionInlining.h b/include/llvm/Transforms/FunctionInlining.h new file mode 100644 index 0000000000..b314b97bed --- /dev/null +++ b/include/llvm/Transforms/FunctionInlining.h @@ -0,0 +1,40 @@ +//===-- MethodInlining.h - Functions that perform Inlining -------*- C++ -*--=// +// +// This family of functions is useful for performing method inlining. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_OPT_METHOD_INLINING_H +#define LLVM_OPT_METHOD_INLINING_H + +#include "llvm/Module.h" +#include "llvm/BasicBlock.h" +class CallInst; + +namespace opt { + +// DoMethodInlining - Use a heuristic based approach to inline methods that seem +// to look good. +// +bool DoMethodInlining(Method *M); + +static inline bool DoMethodInlining(Module *M) { + return M->reduceApply(DoMethodInlining); +} + +// InlineMethod - This function forcibly inlines the called method into the +// basic block of the caller. This returns true if it is not possible to inline +// this call. The program is still in a well defined state if this occurs +// though. +// +// Note that this only does one level of inlining. For example, if the +// instruction 'call B' is inlined, and 'B' calls 'C', then the call to 'C' now +// exists in the instruction stream. Similiarly this will inline a recursive +// method by one level. +// +bool InlineMethod(CallInst *C); +bool InlineMethod(BasicBlock::iterator CI); // *CI must be CallInst + +} // end namespace opt + +#endif |