Skip to content

Commit

Permalink
One more step towards making doInitialization and doFinalization usef…
Browse files Browse the repository at this point in the history
…ul for

start up and clean up module passes, now that ASAN and TSAN are fixed the
tests pass



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168905 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
Pedro Artigas committed Nov 29, 2012
1 parent 6a144e4 commit 6eda081
Show file tree
Hide file tree
Showing 11 changed files with 19 additions and 84 deletions.
3 changes: 3 additions & 0 deletions include/llvm/CodeGen/MachineModuleInfo.h
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,10 @@ class MachineModuleInfo : public ImmutablePass {
const MCObjectFileInfo *MOFI);
~MachineModuleInfo();

using ModulePass::doInitialization;
bool doInitialization();

using ModulePass::doFinalization;
bool doFinalization();

/// EndFunction - Discard function meta information.
Expand Down
4 changes: 2 additions & 2 deletions include/llvm/Pass.h
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ class ModulePass : public Pass {
/// doInitialization - Virtual method overridden by subclasses to do
/// any necessary initialization before any pass is run.
///
virtual bool doInitialization() { return false; }
virtual bool doInitialization(Module &) { return false; }

/// runOnModule - Virtual method overriden by subclasses to process the module
/// being operated on.
Expand All @@ -239,7 +239,7 @@ class ModulePass : public Pass {
/// doFinalization - Virtual method overriden by subclasses to do any
/// necessary clean up after all passes have run.
///
virtual bool doFinalization() { return false; }
virtual bool doFinalization(Module &) { return false; }

virtual void assignPassManager(PMStack &PMS,
PassManagerType T);
Expand Down
8 changes: 0 additions & 8 deletions include/llvm/PassManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,14 +58,6 @@ class PassManager : public PassManagerBase {
/// 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
Expand Down
72 changes: 14 additions & 58 deletions lib/VMCore/PassManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1528,29 +1528,29 @@ bool FPPassManager::runOnFunction(Function &F) {
}

bool FPPassManager::runOnModule(Module &M) {
bool Changed = doInitialization(M);
bool Changed = false;

for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I)
Changed |= runOnFunction(*I);

return doFinalization(M) || Changed;
return Changed;
}

bool FPPassManager::doInitialization(Module &M) {
bool Changed = false;

for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index)
Changed |= getContainedPass(Index)->doInitialization(M);

return Changed;
}

bool FPPassManager::doFinalization(Module &M) {
bool Changed = false;

for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index)
Changed |= getContainedPass(Index)->doFinalization(M);

return Changed;
}

Expand All @@ -1572,6 +1572,10 @@ 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;
Expand Down Expand Up @@ -1600,6 +1604,10 @@ 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();
Expand All @@ -1610,29 +1618,7 @@ 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;
}

Expand Down Expand Up @@ -1692,24 +1678,6 @@ 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.
Expand Down Expand Up @@ -1754,18 +1722,6 @@ 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
Expand Down
2 changes: 0 additions & 2 deletions tools/bugpoint/CrashDebugger.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -412,9 +412,7 @@ 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)) {
Expand Down
2 changes: 0 additions & 2 deletions tools/llc/llc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -359,9 +359,7 @@ 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.
Expand Down
2 changes: 0 additions & 2 deletions tools/llvm-extract/llvm-extract.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -276,9 +276,7 @@ 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();
Expand Down
2 changes: 0 additions & 2 deletions tools/llvm-prof/llvm-prof.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -287,9 +287,7 @@ 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;
}
2 changes: 0 additions & 2 deletions tools/llvm-stress/llvm-stress.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -713,9 +713,7 @@ 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;
Expand Down
4 changes: 0 additions & 4 deletions tools/lto/LTOCodeGenerator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -342,9 +342,7 @@ void LTOCodeGenerator::applyScopeRestrictions() {
passes.add(createInternalizePass(mustPreserveList));

// apply scope restrictions
passes.doInitialization();
passes.run(*mergedModule);
passes.doFinalization();

_scopeRestrictionsDone = true;
}
Expand Down Expand Up @@ -399,9 +397,7 @@ 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();
Expand Down
2 changes: 0 additions & 2 deletions tools/opt/opt.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -820,9 +820,7 @@ 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)
Expand Down

0 comments on commit 6eda081

Please sign in to comment.