Revert r168635 "Step towards implementation of pass manager with doInitialization...
authorOwen Anderson <resistor@mac.com>
Tue, 27 Nov 2012 00:53:24 +0000 (00:53 +0000)
committerOwen Anderson <resistor@mac.com>
Tue, 27 Nov 2012 00:53:24 +0000 (00:53 +0000)
It appears to have broken at least one buildbot.

llvm-svn: 168654

12 files changed:
llvm/include/llvm/CodeGen/MachineModuleInfo.h
llvm/include/llvm/Pass.h
llvm/include/llvm/PassManager.h
llvm/include/llvm/PassManagers.h
llvm/lib/VMCore/PassManager.cpp
llvm/tools/bugpoint/CrashDebugger.cpp
llvm/tools/llc/llc.cpp
llvm/tools/llvm-extract/llvm-extract.cpp
llvm/tools/llvm-prof/llvm-prof.cpp
llvm/tools/llvm-stress/llvm-stress.cpp
llvm/tools/lto/LTOCodeGenerator.cpp
llvm/tools/opt/opt.cpp

index 4660cad..fc73a3d 100644 (file)
@@ -180,10 +180,7 @@ public:
                     const MCObjectFileInfo *MOFI);
   ~MachineModuleInfo();
 
-  using ModulePass::doInitialization;
   bool doInitialization();
-
-  using ModulePass::doFinalization;
   bool doFinalization();
 
   /// EndFunction - Discard function meta information.
index acfc6a2..7b6f169 100644 (file)
@@ -230,7 +230,7 @@ public:
   /// doInitialization - Virtual method overridden by subclasses to do
   /// any necessary initialization.
   ///
-  virtual bool doInitialization(Module &)  { return false; }
+  virtual bool doInitialization()  { return false; }
 
   /// runOnModule - Virtual method overriden by subclasses to process the module
   /// being operated on.
@@ -239,7 +239,7 @@ public:
   /// doFinalization - Virtual method overriden by subclasses to do any post
   /// processing needed after all passes have run.
   ///
-  virtual bool doFinalization(Module &) { return false; }
+  virtual bool doFinalization() { return false; }
 
   virtual void assignPassManager(PMStack &PMS,
                                  PassManagerType T);
index ce5fda7..1d5e800 100644 (file)
@@ -58,6 +58,14 @@ public:
   /// whether any of the passes modifies the module, and if so, return true.
   bool run(Module &M);
 
+  /// doInitialization - Run all of the initializers for the module passes.
+  ///
+  bool doInitialization();
+
+  /// doFinalization - Run all of the finalizers for the module passes.
+  ///
+  bool doFinalization();
+
 private:
   /// PassManagerImpl_New is the actual class. PassManager is just the
   /// wraper to publish simple pass manager interface
index 385d6e1..b0450f3 100644 (file)
@@ -462,10 +462,6 @@ public:
   virtual PassManagerType getPassManagerType() const {
     return PMT_FunctionPassManager;
   }
-
-protected:
-  // FIXME: due to limitation in AddressSanitizer
-  bool RunFinalization;
 };
 
 Timer *getPassTimer(Pass *);
index 4e2d5fa..3a8a9e2 100644 (file)
@@ -1528,13 +1528,11 @@ bool FPPassManager::runOnFunction(Function &F) {
 }
 
 bool FPPassManager::runOnModule(Module &M) {
-  bool Changed = false;
+  bool Changed = doInitialization(M);
 
   for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I)
     Changed |= runOnFunction(*I);
 
-  // FIXME: doFinalization still needed here due to assumption in 
-  // AddressSanitizer
   return doFinalization(M) || Changed;
 }
 
@@ -1544,25 +1542,14 @@ bool FPPassManager::doInitialization(Module &M) {
   for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index)
     Changed |= getContainedPass(Index)->doInitialization(M);
 
-  // FIXME: mark Finalization as needed here due to assumption in
-  // AddressSanitizer
-  RunFinalization = true;
-
   return Changed;
 }
 
 bool FPPassManager::doFinalization(Module &M) {
   bool Changed = false;
-  // FIXME: due to limitation in AddressSanitizer
-  if (!RunFinalization)
-    return Changed; 
+
   for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index)
     Changed |= getContainedPass(Index)->doFinalization(M);
-  
-  // FIXME: due to limitation in AddressSanitizer
-  RunFinalization = false;
 
   return Changed;
 }
@@ -1585,10 +1572,6 @@ MPPassManager::runOnModule(Module &M) {
     Changed |= FPP->doInitialization(M);
   }
 
-  // Initialize module passes
-  for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index)
-    Changed |= getContainedPass(Index)->doInitialization(M);
-
   for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index) {
     ModulePass *MP = getContainedPass(Index);
     bool LocalChanged = false;
@@ -1617,10 +1600,6 @@ MPPassManager::runOnModule(Module &M) {
     removeDeadPasses(MP, M.getModuleIdentifier(), ON_MODULE_MSG);
   }
 
-  // Finalize module passes
-  for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index)
-    Changed |= getContainedPass(Index)->doFinalization(M);
-
   // Finalize on-the-fly passes
   for (std::map<Pass *, FunctionPassManagerImpl *>::iterator
        I = OnTheFlyManagers.begin(), E = OnTheFlyManagers.end();
@@ -1631,7 +1610,29 @@ MPPassManager::runOnModule(Module &M) {
     FPP->releaseMemoryOnTheFly();
     Changed |= FPP->doFinalization(M);
   }
-  
+
+  return Changed;
+}
+
+/// Run all of the initializers for the module passes.
+///
+bool MPPassManager::doInitialization() {
+  bool Changed = false;
+
+  for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index)
+    Changed |= getContainedPass(Index)->doInitialization();
+
+  return Changed;
+}
+
+/// Run all of the finalizers for the module passes.
+///
+bool MPPassManager::doFinalization() {
+  bool Changed = false;
+
+  for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index)
+    Changed |= getContainedPass(Index)->doFinalization();
+
   return Changed;
 }
 
@@ -1691,6 +1692,24 @@ Pass* MPPassManager::getOnTheFlyPass(Pass *MP, AnalysisID PI, Function &F){
 //===----------------------------------------------------------------------===//
 // PassManagerImpl implementation
 
+bool PassManagerImpl::doInitialization() {
+  bool Changed = false;
+
+  for (unsigned Index = 0; Index < getNumContainedManagers(); ++Index)
+    Changed |= getContainedManager(Index)->doInitialization();
+
+  return Changed;
+}
+
+bool PassManagerImpl::doFinalization() {
+  bool Changed = false;
+
+  for (unsigned Index = 0; Index < getNumContainedManagers(); ++Index)
+    Changed |= getContainedManager(Index)->doFinalization();
+
+  return Changed;
+}
+
 //
 /// 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.
@@ -1735,6 +1754,18 @@ bool PassManager::run(Module &M) {
   return PM->run(M);
 }
 
+/// doInitialization - Run all of the initializers for the module passes.
+///
+bool PassManager::doInitialization() {
+  return PM->doInitialization();
+}
+
+/// doFinalization - Run all of the finalizers for the module passes.
+///
+bool PassManager::doFinalization() {
+  return PM->doFinalization();
+}
+
 //===----------------------------------------------------------------------===//
 // TimingInfo Class - This class is used to calculate information about the
 // amount of time each pass takes to execute.  This only happens with
index aed16f4..8836eed 100644 (file)
@@ -412,7 +412,9 @@ bool ReduceCrashingInstructions::TestInsts(std::vector<const Instruction*>
   // Verify that this is still valid.
   PassManager Passes;
   Passes.add(createVerifierPass());
+  Passes.doInitialization();
   Passes.run(*M);
+  Passes.doFinalization();
 
   // Try running on the hacked up program...
   if (TestFn(BD, M)) {
index 4d4a74c..f3e5c20 100644 (file)
@@ -359,7 +359,9 @@ int main(int argc, char **argv) {
     // Before executing passes, print the final values of the LLVM options.
     cl::PrintOptionValues();
 
+    PM.doInitialization();
     PM.run(*mod);
+    PM.doFinalization();
   }
 
   // Declare success.
index ac82d98..d2caabd 100644 (file)
@@ -276,7 +276,9 @@ int main(int argc, char **argv) {
   else if (Force || !CheckBitcodeOutputToConsole(Out.os(), true))
     Passes.add(createBitcodeWriterPass(Out.os()));
 
+  Passes.doInitialization();
   Passes.run(*M.get());
+  Passes.doFinalization();
 
   // Declare success.
   Out.keep();
index 81e9503..940ac34 100644 (file)
@@ -287,7 +287,9 @@ int main(int argc, char **argv) {
   PassManager PassMgr;
   PassMgr.add(createProfileLoaderPass(ProfileDataFile));
   PassMgr.add(new ProfileInfoPrinterPass(PIL));
+  PassMgr.doInitialization();
   PassMgr.run(*M);
+  PassMgr.doFinalization();
 
   return 0;
 }
index 8473d94..72fdac8 100644 (file)
@@ -713,7 +713,9 @@ int main(int argc, char **argv) {
   PassManager Passes;
   Passes.add(createVerifierPass());
   Passes.add(createPrintModulePass(&Out->os()));
+  Passes.doInitialization();
   Passes.run(*M.get());
+  Passes.doFinalization();
   Out->keep();
 
   return 0;
index b1c4f43..d9fa218 100644 (file)
@@ -342,7 +342,9 @@ void LTOCodeGenerator::applyScopeRestrictions() {
   passes.add(createInternalizePass(mustPreserveList));
 
   // apply scope restrictions
+  passes.doInitialization();
   passes.run(*mergedModule);
+  passes.doFinalization();
 
   _scopeRestrictionsDone = true;
 }
@@ -397,7 +399,9 @@ bool LTOCodeGenerator::generateObjectFile(raw_ostream &out,
   }
 
   // Run our queue of passes all at once now, efficiently.
+  passes.doInitialization();
   passes.run(*mergedModule);
+  passes.doFinalization();
 
   // Run the code generator, and write assembly file
   codeGenPasses->doInitialization();
index bac0d46..7cced98 100644 (file)
@@ -820,7 +820,9 @@ int main(int argc, char **argv) {
   cl::PrintOptionValues();
 
   // Now that we have all of the passes ready, run them.
+  Passes.doInitialization();
   Passes.run(*M.get());
+  Passes.doFinalization();
 
   // Declare success.
   if (!NoOutput || PrintBreakpoints)