mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-12 06:06:32 +00:00
Give PassManager and FunctionPassManager a common base class, with
add(Pass *) as a pure virtual member function. This will allow all the various addPassesTo* functions in LLVM to avoid hard-coding what type of PassManager is used. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48226 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b4b28231f7
commit
580b89992f
@ -29,8 +29,22 @@ class ModuleProvider;
|
||||
class PassManagerImpl;
|
||||
class FunctionPassManagerImpl;
|
||||
|
||||
/// PassManagerBase - An abstract interface to allow code to add passes to
|
||||
/// a pass manager without having to hard-code what kind of pass manager
|
||||
/// it is.
|
||||
class PassManagerBase {
|
||||
public:
|
||||
virtual ~PassManagerBase();
|
||||
|
||||
/// add - Add a pass to the queue of passes to run. This passes ownership of
|
||||
/// the Pass to the PassManager. When the PassManager is destroyed, the pass
|
||||
/// will be destroyed as well, so there is no need to delete the pass. This
|
||||
/// implies that all passes MUST be allocated with 'new'.
|
||||
virtual void add(Pass *P) = 0;
|
||||
};
|
||||
|
||||
/// PassManager manages ModulePassManagers
|
||||
class PassManager {
|
||||
class PassManager : public PassManagerBase {
|
||||
public:
|
||||
|
||||
PassManager();
|
||||
@ -54,7 +68,7 @@ private:
|
||||
};
|
||||
|
||||
/// FunctionPassManager manages FunctionPasses and BasicBlockPassManagers.
|
||||
class FunctionPassManager {
|
||||
class FunctionPassManager : public PassManagerBase {
|
||||
public:
|
||||
/// FunctionPassManager ctor - This initializes the pass manager. It needs,
|
||||
/// but does not take ownership of, the specified module provider.
|
||||
|
@ -1531,4 +1531,4 @@ void BasicBlockPass::assignPassManager(PMStack &PMS,
|
||||
BBP->add(this);
|
||||
}
|
||||
|
||||
|
||||
PassManagerBase::~PassManagerBase() {}
|
||||
|
Loading…
Reference in New Issue
Block a user