mirror of
https://github.com/RPCS3/llvm.git
synced 2025-03-04 08:37:45 +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 PassManagerImpl;
|
||||||
class FunctionPassManagerImpl;
|
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
|
/// PassManager manages ModulePassManagers
|
||||||
class PassManager {
|
class PassManager : public PassManagerBase {
|
||||||
public:
|
public:
|
||||||
|
|
||||||
PassManager();
|
PassManager();
|
||||||
@ -54,7 +68,7 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
/// FunctionPassManager manages FunctionPasses and BasicBlockPassManagers.
|
/// FunctionPassManager manages FunctionPasses and BasicBlockPassManagers.
|
||||||
class FunctionPassManager {
|
class FunctionPassManager : public PassManagerBase {
|
||||||
public:
|
public:
|
||||||
/// FunctionPassManager ctor - This initializes the pass manager. It needs,
|
/// FunctionPassManager ctor - This initializes the pass manager. It needs,
|
||||||
/// but does not take ownership of, the specified module provider.
|
/// but does not take ownership of, the specified module provider.
|
||||||
|
@ -1531,4 +1531,4 @@ void BasicBlockPass::assignPassManager(PMStack &PMS,
|
|||||||
BBP->add(this);
|
BBP->add(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PassManagerBase::~PassManagerBase() {}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user