aboutsummaryrefslogtreecommitdiff
path: root/include/llvm/PassManager.h
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2006-11-07 22:03:15 +0000
committerDevang Patel <dpatel@apple.com>2006-11-07 22:03:15 +0000
commit92c45eebf77de5d6ee84a3f18f560b83cb68e720 (patch)
tree642064f82713256a5f88ae2c7555fc900e2801b3 /include/llvm/PassManager.h
parent4d0c1a04bca539e1c6dd5541c25880e7fe7b69c3 (diff)
Add ModulePassManager_New.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31517 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/PassManager.h')
-rw-r--r--include/llvm/PassManager.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/include/llvm/PassManager.h b/include/llvm/PassManager.h
index 53dfa6bab0..c75bc21a03 100644
--- a/include/llvm/PassManager.h
+++ b/include/llvm/PassManager.h
@@ -143,6 +143,29 @@ private:
BasicBlockPassManager_New *activeBBPassManager;
};
+/// FunctionPassManager_New manages FunctionPasses.
+/// It batches all Module passes passes and function pass managers together and
+/// sequence them to process one module.
+class ModulePassManager_New: public Pass {
+
+public:
+ ModulePassManager_New() { activeFunctionPassManager = NULL; }
+
+ /// Add a pass into a passmanager queue.
+ bool addPass(Pass *p);
+
+ /// run - Execute all of the passes scheduled for execution. Keep track of
+ /// whether any of the passes modifies the module, and if so, return true.
+ bool runOnModule(Module &M);
+
+private:
+ // Collection of pass that are not yet scheduled
+ std::vector<Pass *> PassVector;
+
+ // Active Pass Manager
+ FunctionPassManager_New *activeFunctionPassManager;
+};
+
} // End llvm namespace
#endif