[llvm-commits] [llvm] r168654 - in /llvm/trunk: include/llvm/CodeGen/MachineModuleInfo.h include/llvm/Pass.h include/llvm/PassManager.h include/llvm/PassManagers.h lib/VMCore/PassManager.cpp tools/bugpoint/CrashDebugger.cpp tools/llc/llc.cpp tools/llvm-extract/llvm-extract.cpp tools/llvm-prof/llvm-prof.cpp tools/llvm-stress/llvm-stress.cpp tools/lto/LTOCodeGenerator.cpp tools/opt/opt.cpp

Evan Cheng evan.cheng at apple.com
Mon Nov 26 22:59:45 PST 2012


Which buildbot?

Evan 

On Nov 26, 2012, at 4:53 PM, Owen Anderson <resistor at mac.com> wrote:

> Author: resistor
> Date: Mon Nov 26 18:53:24 2012
> New Revision: 168654
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=168654&view=rev
> Log:
> Revert r168635 "Step towards implementation of pass manager with doInitialization and doFinalization per module detangled from runOn?? calls, still has temporary code not to break ASAN to be removed when that pass conforms to the proposed model".
> It appears to have broken at least one buildbot.
> 
> Modified:
>    llvm/trunk/include/llvm/CodeGen/MachineModuleInfo.h
>    llvm/trunk/include/llvm/Pass.h
>    llvm/trunk/include/llvm/PassManager.h
>    llvm/trunk/include/llvm/PassManagers.h
>    llvm/trunk/lib/VMCore/PassManager.cpp
>    llvm/trunk/tools/bugpoint/CrashDebugger.cpp
>    llvm/trunk/tools/llc/llc.cpp
>    llvm/trunk/tools/llvm-extract/llvm-extract.cpp
>    llvm/trunk/tools/llvm-prof/llvm-prof.cpp
>    llvm/trunk/tools/llvm-stress/llvm-stress.cpp
>    llvm/trunk/tools/lto/LTOCodeGenerator.cpp
>    llvm/trunk/tools/opt/opt.cpp
> 
> Modified: llvm/trunk/include/llvm/CodeGen/MachineModuleInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/MachineModuleInfo.h?rev=168654&r1=168653&r2=168654&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/CodeGen/MachineModuleInfo.h (original)
> +++ llvm/trunk/include/llvm/CodeGen/MachineModuleInfo.h Mon Nov 26 18:53:24 2012
> @@ -180,10 +180,7 @@
>                     const MCObjectFileInfo *MOFI);
>   ~MachineModuleInfo();
> 
> -  using ModulePass::doInitialization;
>   bool doInitialization();
> -
> -  using ModulePass::doFinalization;
>   bool doFinalization();
> 
>   /// EndFunction - Discard function meta information.
> 
> Modified: llvm/trunk/include/llvm/Pass.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Pass.h?rev=168654&r1=168653&r2=168654&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Pass.h (original)
> +++ llvm/trunk/include/llvm/Pass.h Mon Nov 26 18:53:24 2012
> @@ -230,7 +230,7 @@
>   /// 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 @@
>   /// 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);
> 
> Modified: llvm/trunk/include/llvm/PassManager.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/PassManager.h?rev=168654&r1=168653&r2=168654&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/PassManager.h (original)
> +++ llvm/trunk/include/llvm/PassManager.h Mon Nov 26 18:53:24 2012
> @@ -58,6 +58,14 @@
>   /// 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
> 
> Modified: llvm/trunk/include/llvm/PassManagers.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/PassManagers.h?rev=168654&r1=168653&r2=168654&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/PassManagers.h (original)
> +++ llvm/trunk/include/llvm/PassManagers.h Mon Nov 26 18:53:24 2012
> @@ -462,10 +462,6 @@
>   virtual PassManagerType getPassManagerType() const {
>     return PMT_FunctionPassManager;
>   }
> -
> -protected:
> -  // FIXME: due to limitation in AddressSanitizer
> -  bool RunFinalization;
> };
> 
> Timer *getPassTimer(Pass *);
> 
> Modified: llvm/trunk/lib/VMCore/PassManager.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/PassManager.cpp?rev=168654&r1=168653&r2=168654&view=diff
> ==============================================================================
> --- llvm/trunk/lib/VMCore/PassManager.cpp (original)
> +++ llvm/trunk/lib/VMCore/PassManager.cpp Mon Nov 26 18:53:24 2012
> @@ -1528,13 +1528,11 @@
> }
> 
> 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 @@
>   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 @@
>     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 @@
>     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 @@
>     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 @@
> //===----------------------------------------------------------------------===//
> // 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 @@
>   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
> 
> Modified: llvm/trunk/tools/bugpoint/CrashDebugger.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/bugpoint/CrashDebugger.cpp?rev=168654&r1=168653&r2=168654&view=diff
> ==============================================================================
> --- llvm/trunk/tools/bugpoint/CrashDebugger.cpp (original)
> +++ llvm/trunk/tools/bugpoint/CrashDebugger.cpp Mon Nov 26 18:53:24 2012
> @@ -412,7 +412,9 @@
>   // 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)) {
> 
> Modified: llvm/trunk/tools/llc/llc.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llc/llc.cpp?rev=168654&r1=168653&r2=168654&view=diff
> ==============================================================================
> --- llvm/trunk/tools/llc/llc.cpp (original)
> +++ llvm/trunk/tools/llc/llc.cpp Mon Nov 26 18:53:24 2012
> @@ -359,7 +359,9 @@
>     // Before executing passes, print the final values of the LLVM options.
>     cl::PrintOptionValues();
> 
> +    PM.doInitialization();
>     PM.run(*mod);
> +    PM.doFinalization();
>   }
> 
>   // Declare success.
> 
> Modified: llvm/trunk/tools/llvm-extract/llvm-extract.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-extract/llvm-extract.cpp?rev=168654&r1=168653&r2=168654&view=diff
> ==============================================================================
> --- llvm/trunk/tools/llvm-extract/llvm-extract.cpp (original)
> +++ llvm/trunk/tools/llvm-extract/llvm-extract.cpp Mon Nov 26 18:53:24 2012
> @@ -276,7 +276,9 @@
>   else if (Force || !CheckBitcodeOutputToConsole(Out.os(), true))
>     Passes.add(createBitcodeWriterPass(Out.os()));
> 
> +  Passes.doInitialization();
>   Passes.run(*M.get());
> +  Passes.doFinalization();
> 
>   // Declare success.
>   Out.keep();
> 
> Modified: llvm/trunk/tools/llvm-prof/llvm-prof.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-prof/llvm-prof.cpp?rev=168654&r1=168653&r2=168654&view=diff
> ==============================================================================
> --- llvm/trunk/tools/llvm-prof/llvm-prof.cpp (original)
> +++ llvm/trunk/tools/llvm-prof/llvm-prof.cpp Mon Nov 26 18:53:24 2012
> @@ -287,7 +287,9 @@
>   PassManager PassMgr;
>   PassMgr.add(createProfileLoaderPass(ProfileDataFile));
>   PassMgr.add(new ProfileInfoPrinterPass(PIL));
> +  PassMgr.doInitialization();
>   PassMgr.run(*M);
> +  PassMgr.doFinalization();
> 
>   return 0;
> }
> 
> Modified: llvm/trunk/tools/llvm-stress/llvm-stress.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-stress/llvm-stress.cpp?rev=168654&r1=168653&r2=168654&view=diff
> ==============================================================================
> --- llvm/trunk/tools/llvm-stress/llvm-stress.cpp (original)
> +++ llvm/trunk/tools/llvm-stress/llvm-stress.cpp Mon Nov 26 18:53:24 2012
> @@ -713,7 +713,9 @@
>   PassManager Passes;
>   Passes.add(createVerifierPass());
>   Passes.add(createPrintModulePass(&Out->os()));
> +  Passes.doInitialization();
>   Passes.run(*M.get());
> +  Passes.doFinalization();
>   Out->keep();
> 
>   return 0;
> 
> Modified: llvm/trunk/tools/lto/LTOCodeGenerator.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/lto/LTOCodeGenerator.cpp?rev=168654&r1=168653&r2=168654&view=diff
> ==============================================================================
> --- llvm/trunk/tools/lto/LTOCodeGenerator.cpp (original)
> +++ llvm/trunk/tools/lto/LTOCodeGenerator.cpp Mon Nov 26 18:53:24 2012
> @@ -342,7 +342,9 @@
>   passes.add(createInternalizePass(mustPreserveList));
> 
>   // apply scope restrictions
> +  passes.doInitialization();
>   passes.run(*mergedModule);
> +  passes.doFinalization();
> 
>   _scopeRestrictionsDone = true;
> }
> @@ -397,7 +399,9 @@
>   }
> 
>   // 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();
> 
> Modified: llvm/trunk/tools/opt/opt.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/opt/opt.cpp?rev=168654&r1=168653&r2=168654&view=diff
> ==============================================================================
> --- llvm/trunk/tools/opt/opt.cpp (original)
> +++ llvm/trunk/tools/opt/opt.cpp Mon Nov 26 18:53:24 2012
> @@ -820,7 +820,9 @@
>   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)
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits



More information about the llvm-commits mailing list