summaryrefslogtreecommitdiff
path: root/include/llvm/Transforms/Utils/BasicInliner.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/llvm/Transforms/Utils/BasicInliner.h')
-rw-r--r--include/llvm/Transforms/Utils/BasicInliner.h55
1 files changed, 55 insertions, 0 deletions
diff --git a/include/llvm/Transforms/Utils/BasicInliner.h b/include/llvm/Transforms/Utils/BasicInliner.h
new file mode 100644
index 000000000000..6a570552d640
--- /dev/null
+++ b/include/llvm/Transforms/Utils/BasicInliner.h
@@ -0,0 +1,55 @@
+//===- BasicInliner.h - Basic function level inliner ------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file defines a simple function based inliner that does not use
+// call graph information.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef BASICINLINER_H
+#define BASICINLINER_H
+
+#include "llvm/Transforms/Utils/InlineCost.h"
+
+namespace llvm {
+
+ class Function;
+ class TargetData;
+ struct BasicInlinerImpl;
+
+ /// BasicInliner - BasicInliner provides function level inlining interface.
+ /// Clients provide list of functions which are inline without using
+ /// module level call graph information. Note that the BasicInliner is
+ /// free to delete a function if it is inlined into all call sites.
+ class BasicInliner {
+ public:
+
+ explicit BasicInliner(TargetData *T = NULL);
+ ~BasicInliner();
+
+ /// addFunction - Add function into the list of functions to process.
+ /// All functions must be inserted using this interface before invoking
+ /// inlineFunctions().
+ void addFunction(Function *F);
+
+ /// neverInlineFunction - Sometimes a function is never to be inlined
+ /// because of one or other reason.
+ void neverInlineFunction(Function *F);
+
+ /// inlineFuctions - Walk all call sites in all functions supplied by
+ /// client. Inline as many call sites as possible. Delete completely
+ /// inlined functions.
+ void inlineFunctions();
+
+ private:
+ BasicInlinerImpl *Impl;
+ };
+}
+
+#endif