[llvm-commits] CVS: llvm/lib/VMCore/PassManager.cpp

Devang Patel dpatel at apple.com
Wed Nov 8 02:05:55 PST 2006



Changes in directory llvm/lib/VMCore:

PassManager.cpp updated: 1.7 -> 1.8
---
Log message:

Move BasicBlockPassManager_New, FunctionPassManager_New and
ModulePassManager_New class declarations from PassManager.h
to PassManager.cpp



---
Diffs of the changes:  (+86 -1)

 PassManager.cpp |   87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 86 insertions(+), 1 deletion(-)


Index: llvm/lib/VMCore/PassManager.cpp
diff -u llvm/lib/VMCore/PassManager.cpp:1.7 llvm/lib/VMCore/PassManager.cpp:1.8
--- llvm/lib/VMCore/PassManager.cpp:1.7	Tue Nov  7 19:31:28 2006
+++ llvm/lib/VMCore/PassManager.cpp	Wed Nov  8 04:05:38 2006
@@ -2,7 +2,7 @@
 //
 //                     The LLVM Compiler Infrastructure
 //
-// This file was developed by Devang Patel  and is distributed under
+// This file was developed by Devang Patel and is distributed under
 // the University of Illinois Open Source License. See LICENSE.TXT for details.
 //
 //===----------------------------------------------------------------------===//
@@ -17,6 +17,91 @@
 
 using namespace llvm;
 
+namespace llvm {
+
+/// BasicBlockPassManager_New manages BasicBlockPass. It batches all the
+/// pass together and sequence them to process one basic block before
+/// processing next basic block.
+class BasicBlockPassManager_New : public Pass,
+                                  public PassManagerAnalysisHelper {
+
+public:
+  BasicBlockPassManager_New() { }
+
+  /// Add a pass into a passmanager queue. 
+  bool addPass(Pass *p);
+  
+  /// Execute all of the passes scheduled for execution.  Keep track of
+  /// whether any of the passes modifies the function, and if so, return true.
+  bool runOnFunction(Function &F);
+
+private:
+  // Collection of pass that are managed by this manager
+  std::vector<Pass *> PassVector;
+};
+
+/// FunctionPassManager_New manages FunctionPasses and BasicBlockPassManagers.
+/// It batches all function passes and basic block pass managers together and
+/// sequence them to process one function at a time before processing next
+/// function.
+class FunctionPassManager_New : public Pass,
+                                public PassManagerAnalysisHelper {
+public:
+  FunctionPassManager_New(ModuleProvider *P) { /* TODO */ }
+  FunctionPassManager_New() { 
+    activeBBPassManager = NULL;
+  }
+  ~FunctionPassManager_New() { /* TODO */ };
+ 
+  /// add - Add a pass to the queue of passes to run.  This passes
+  /// ownership of the Pass to the PassManager.  When the
+  /// PassManager_X is destroyed, the pass will be destroyed as well, so
+  /// there is no need to delete the pass. (TODO delete passes.)
+  /// This implies that all passes MUST be allocated with 'new'.
+  void add(Pass *P) { /* TODO*/  }
+
+  /// Add pass into the pass manager queue.
+  bool addPass(Pass *P);
+
+  /// Execute all of the passes scheduled for execution.  Keep
+  /// track of whether any of the passes modifies the function, and if
+  /// so, return true.
+  bool runOnModule(Module &M);
+
+private:
+  // Collection of pass that are manged by this manager
+  std::vector<Pass *> PassVector;
+ 
+  // Active Pass Managers
+  BasicBlockPassManager_New *activeBBPassManager;
+};
+
+/// ModulePassManager_New manages ModulePasses and function pass managers.
+/// It batches all Module passes  passes and function pass managers together and
+/// sequence them to process one module.
+class ModulePassManager_New : public Pass,
+                              public PassManagerAnalysisHelper {
+ 
+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 managed by this manager
+  std::vector<Pass *> PassVector;
+  
+  // Active Pass Manager
+  FunctionPassManager_New *activeFunctionPassManager;
+};
+
+} // End of llvm namespace
+
 // PassManagerAnalysisHelper implementation
 
 /// Return true IFF pass P's required analysis set does not required new






More information about the llvm-commits mailing list