aboutsummaryrefslogtreecommitdiff
path: root/lib/VMCore/PassManager.cpp
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2006-11-07 22:23:34 +0000
committerDevang Patel <dpatel@apple.com>2006-11-07 22:23:34 +0000
commitb30803bc17a5be655b7c4ef356e75ae5524b0931 (patch)
tree6f8a5c92aabf48544ddbb1ebdf29fa599b986b44 /lib/VMCore/PassManager.cpp
parent4d23a2fa10a38962133adb30c978042e07a594b5 (diff)
Add PassManager_New.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31521 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/VMCore/PassManager.cpp')
-rw-r--r--lib/VMCore/PassManager.cpp41
1 files changed, 41 insertions, 0 deletions
diff --git a/lib/VMCore/PassManager.cpp b/lib/VMCore/PassManager.cpp
index 31849a0ac0..c87d33305a 100644
--- a/lib/VMCore/PassManager.cpp
+++ b/lib/VMCore/PassManager.cpp
@@ -163,3 +163,44 @@ ModulePassManager_New::runOnModule(Module &M) {
return Changed;
}
+/// Schedule all passes from the queue by adding them in their
+/// respective manager's queue.
+void
+PassManager_New::schedulePasses() {
+ /* TODO */
+}
+
+/// Add pass P to the queue of passes to run.
+void
+PassManager_New::add(Pass *P) {
+ /* TODO */
+}
+
+// PassManager_New implementation
+/// Add P into active pass manager or use new module pass manager to
+/// manage it.
+bool
+PassManager_New::addPass (Pass *P) {
+
+ if (!activeManager) {
+ activeManager = new ModulePassManager_New();
+ PassManagers.push_back(activeManager);
+ }
+
+ return activeManager->addPass(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
+PassManager_New::run(Module &M) {
+
+ schedulePasses();
+ bool Changed = false;
+ for (std::vector<ModulePassManager_New *>::iterator itr = PassManagers.begin(),
+ e = PassManagers.end(); itr != e; ++itr) {
+ ModulePassManager_New *pm = *itr;
+ Changed |= pm->runOnModule(M);
+ }
+ return Changed;
+}