aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm/Transforms/FunctionInlining.h
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2001-06-30 04:34:07 +0000
committerChris Lattner <sabre@nondot.org>2001-06-30 04:34:07 +0000
commit50d0b7ec3f58d13ea5613dde60a15b07532de56e (patch)
treec5dea80de4b30c86b776e25f11da2e07e433c6dc /include/llvm/Transforms/FunctionInlining.h
parent2b05880476693393ebebba777c70ca3cbb043fc3 (diff)
downloadexternal_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.h40
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