mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-26 05:25:47 +00:00
Patch #6's in Saem's refactor-the-passmanager patch series. From him:
This sanitises the world, blows away the specialisations and adds traits per passmanager type -- seemed most natural. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25085 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -44,7 +44,10 @@ class Module;
|
||||
class AnalysisUsage;
|
||||
class PassInfo;
|
||||
class ImmutablePass;
|
||||
template<class UnitType> class PassManagerT;
|
||||
template<class Trait> class PassManagerT;
|
||||
class BasicBlockPassManager;
|
||||
class FunctionPassManagerT;
|
||||
class ModulePassManager;
|
||||
struct AnalysisResolver;
|
||||
|
||||
// AnalysisID - Use the PassInfo to identify a pass...
|
||||
@@ -197,9 +200,10 @@ public:
|
||||
}
|
||||
|
||||
private:
|
||||
friend class PassManagerT<Module>;
|
||||
friend class PassManagerT<Function>;
|
||||
friend class PassManagerT<BasicBlock>;
|
||||
template<typename Trait> friend class PassManagerT;
|
||||
friend class ModulePassManager;
|
||||
friend class FunctionPassManagerT;
|
||||
friend class BasicBlockPassManager;
|
||||
};
|
||||
|
||||
inline std::ostream &operator<<(std::ostream &OS, const Pass &P) {
|
||||
@@ -220,7 +224,7 @@ public:
|
||||
virtual bool runPass(Module &M) { return runOnModule(M); }
|
||||
virtual bool runPass(BasicBlock&) { return false; }
|
||||
|
||||
virtual void addToPassManager(PassManagerT<Module> *PM, AnalysisUsage &AU);
|
||||
virtual void addToPassManager(ModulePassManager *PM, AnalysisUsage &AU);
|
||||
};
|
||||
|
||||
|
||||
@@ -244,8 +248,9 @@ public:
|
||||
virtual bool runOnModule(Module &M) { return false; }
|
||||
|
||||
private:
|
||||
friend class PassManagerT<Module>;
|
||||
virtual void addToPassManager(PassManagerT<Module> *PM, AnalysisUsage &AU);
|
||||
template<typename Trait> friend class PassManagerT;
|
||||
friend class ModulePassManager;
|
||||
virtual void addToPassManager(ModulePassManager *PM, AnalysisUsage &AU);
|
||||
};
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
@@ -286,11 +291,12 @@ public:
|
||||
bool run(Function &F);
|
||||
|
||||
private:
|
||||
friend class PassManagerT<Module>;
|
||||
friend class PassManagerT<Function>;
|
||||
friend class PassManagerT<BasicBlock>;
|
||||
virtual void addToPassManager(PassManagerT<Module> *PM, AnalysisUsage &AU);
|
||||
virtual void addToPassManager(PassManagerT<Function> *PM, AnalysisUsage &AU);
|
||||
template<typename Trait> friend class PassManagerT;
|
||||
friend class ModulePassManager;
|
||||
friend class FunctionPassManagerT;
|
||||
friend class BasicBlockPassManager;
|
||||
virtual void addToPassManager(ModulePassManager *PM, AnalysisUsage &AU);
|
||||
virtual void addToPassManager(FunctionPassManagerT *PM, AnalysisUsage &AU);
|
||||
};
|
||||
|
||||
|
||||
@@ -344,10 +350,11 @@ struct BasicBlockPass : public FunctionPass {
|
||||
virtual bool runPass(BasicBlock &BB);
|
||||
|
||||
private:
|
||||
friend class PassManagerT<Function>;
|
||||
friend class PassManagerT<BasicBlock>;
|
||||
virtual void addToPassManager(PassManagerT<Function> *PM, AnalysisUsage &AU);
|
||||
virtual void addToPassManager(PassManagerT<BasicBlock> *PM,AnalysisUsage &AU);
|
||||
template<typename Trait> friend class PassManagerT;
|
||||
friend class FunctionPassManagerT;
|
||||
friend class BasicBlockPassManager;
|
||||
virtual void addToPassManager(FunctionPassManagerT *PM, AnalysisUsage &AU);
|
||||
virtual void addToPassManager(BasicBlockPassManager *PM,AnalysisUsage &AU);
|
||||
};
|
||||
|
||||
/// If the user specifies the -time-passes argument on an LLVM tool command line
|
||||
|
@@ -23,10 +23,12 @@ class Pass;
|
||||
class ModulePass;
|
||||
class Module;
|
||||
class ModuleProvider;
|
||||
template<class UnitType> class PassManagerT;
|
||||
class ModulePassManager;
|
||||
class FunctionPassManagerT;
|
||||
class BasicBlockPassManager;
|
||||
|
||||
class PassManager {
|
||||
PassManagerT<Module> *PM; // This is a straightforward Pimpl class
|
||||
ModulePassManager *PM; // This is a straightforward Pimpl class
|
||||
public:
|
||||
PassManager();
|
||||
~PassManager();
|
||||
@@ -49,7 +51,7 @@ class ImmutablePass;
|
||||
class Function;
|
||||
|
||||
class FunctionPassManager {
|
||||
PassManagerT<Function> *PM; // This is a straightforward Pimpl class
|
||||
FunctionPassManagerT *PM; // This is a straightforward Pimpl class
|
||||
ModuleProvider *MP;
|
||||
public:
|
||||
FunctionPassManager(ModuleProvider *P);
|
||||
|
Reference in New Issue
Block a user