patch #4 in Saem's passmanager refactoring.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25077 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2006-01-04 04:36:11 +00:00
parent 60e9187a90
commit 53745b852d

View File

@ -620,6 +620,7 @@ public:
// Initialize the immutable pass... // Initialize the immutable pass...
IP->initializePass(); IP->initializePass();
} }
}; };
@ -660,6 +661,9 @@ public:
virtual const char *getPassName() const { return "BasicBlock Pass Manager"; } virtual const char *getPassName() const { return "BasicBlock Pass Manager"; }
virtual bool runOnBasicBlock(BasicBlock &BB);
// TODO:Start absorbing PassManagerTraits<BasicBlock> // TODO:Start absorbing PassManagerTraits<BasicBlock>
}; };
@ -682,7 +686,12 @@ public:
// Implement the BasicBlockPass interface... // Implement the BasicBlockPass interface...
virtual bool doInitialization(Module &M); virtual bool doInitialization(Module &M);
virtual bool doInitialization(Function &F); virtual bool doInitialization(Function &F);
virtual bool runOnBasicBlock(BasicBlock &BB);
// Forwarded
virtual bool runOnBasicBlock(BasicBlock &BB) {
return BasicBlockPassManager::runOnBasicBlock(BB);
}
virtual bool doFinalization(Function &F); virtual bool doFinalization(Function &F);
virtual bool doFinalization(Module &M); virtual bool doFinalization(Module &M);
@ -729,6 +738,9 @@ public:
virtual const char *getPassName() const { return "Function Pass Manager"; } virtual const char *getPassName() const { return "Function Pass Manager"; }
virtual bool runOnFunction(Function &F);
// TODO:Start absorbing PassManagerTraits<Function> // TODO:Start absorbing PassManagerTraits<Function>
}; };
@ -749,7 +761,12 @@ public:
// Implement the FunctionPass interface... // Implement the FunctionPass interface...
virtual bool doInitialization(Module &M); virtual bool doInitialization(Module &M);
virtual bool runOnFunction(Function &F);
// Forwarded
virtual bool runOnFunction(Function &F) {
return FunctionPassManagerT::runOnFunction(F);
}
virtual bool doFinalization(Module &M); virtual bool doFinalization(Module &M);
virtual void getAnalysisUsage(AnalysisUsage &AU) const { virtual void getAnalysisUsage(AnalysisUsage &AU) const {
@ -762,7 +779,6 @@ public:
} }
}; };
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
// ModulePassManager // ModulePassManager
// //
@ -792,6 +808,8 @@ public:
// debugging. // debugging.
virtual const char *getPMName() const { return "Module"; } virtual const char *getPMName() const { return "Module"; }
// runOnModule - Implement the PassManager interface.
virtual bool runOnModule(Module &M);
// TODO:Start absorbing PassManagerTraits<Module> // TODO:Start absorbing PassManagerTraits<Module>
}; };
@ -808,9 +826,9 @@ public:
// runPass - Specify how the pass should be run on the UnitType // runPass - Specify how the pass should be run on the UnitType
static bool runPass(PassClass *P, Module *M) { return P->runOnModule(*M); } static bool runPass(PassClass *P, Module *M) { return P->runOnModule(*M); }
// runOnModule - Implement the PassManager interface. // Forwarded
bool runOnModule(Module &M) { bool runOnModule(Module &M) {
return ((PassManagerT<Module>*)this)->runOnUnit(&M); return ModulePassManager::runOnModule(M);
} }
// Forwarded // Forwarded
@ -820,6 +838,31 @@ public:
}; };
//===----------------------------------------------------------------------===//
// PassManagerTraits Method Implementations
//
// BasicBlockPassManager Implementations
//
inline bool BasicBlockPassManager::runOnBasicBlock(BasicBlock &BB) {
return ((PMType*)this)->runOnUnit(&BB);
}
// FunctionPassManagerT Implementations
//
inline bool FunctionPassManagerT::runOnFunction(Function &F) {
return ((PMType*)this)->runOnUnit(&F);
}
// ModulePassManager Implementations
//
bool ModulePassManager::runOnModule(Module &M) {
return ((PassManagerT<Module>*)this)->runOnUnit(&M);
}
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
// PassManagerTraits Method Implementations // PassManagerTraits Method Implementations
// //
@ -840,10 +883,6 @@ inline bool PassManagerTraits<BasicBlock>::doInitialization(Function &F) {
return Changed; return Changed;
} }
inline bool PassManagerTraits<BasicBlock>::runOnBasicBlock(BasicBlock &BB) {
return ((PMType*)this)->runOnUnit(&BB);
}
inline bool PassManagerTraits<BasicBlock>::doFinalization(Function &F) { inline bool PassManagerTraits<BasicBlock>::doFinalization(Function &F) {
bool Changed = false; bool Changed = false;
for (unsigned i = 0, e = ((PMType*)this)->Passes.size(); i != e; ++i) for (unsigned i = 0, e = ((PMType*)this)->Passes.size(); i != e; ++i)
@ -868,10 +907,6 @@ inline bool PassManagerTraits<Function>::doInitialization(Module &M) {
return Changed; return Changed;
} }
inline bool PassManagerTraits<Function>::runOnFunction(Function &F) {
return ((PMType*)this)->runOnUnit(&F);
}
inline bool PassManagerTraits<Function>::doFinalization(Module &M) { inline bool PassManagerTraits<Function>::doFinalization(Module &M) {
bool Changed = false; bool Changed = false;
for (unsigned i = 0, e = ((PMType*)this)->Passes.size(); i != e; ++i) for (unsigned i = 0, e = ((PMType*)this)->Passes.size(); i != e; ++i)