mirror of
https://github.com/RPCS3/llvm.git
synced 2025-03-05 09:09:23 +00:00
[PM] Refactor cross-registration of AM into an helper.
Requested by: Chandler Carruth. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@269582 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b776ae7788
commit
d1aa4ea020
@ -123,6 +123,15 @@ public:
|
||||
|
||||
explicit PassBuilder(TargetMachine *TM = nullptr) : TM(TM) {}
|
||||
|
||||
/// \brief Cross register the analysis managers through their proxies.
|
||||
///
|
||||
/// This is an interface that can be used to cross register each
|
||||
// AnalysisManager with all the others analysis managers.
|
||||
void crossRegisterProxies(LoopAnalysisManager &LAM,
|
||||
FunctionAnalysisManager &FAM,
|
||||
CGSCCAnalysisManager &CGAM,
|
||||
ModuleAnalysisManager &MAM);
|
||||
|
||||
/// \brief Registers all available module analysis passes.
|
||||
///
|
||||
/// This is an interface that can be used to populate a \c
|
||||
|
@ -677,3 +677,17 @@ bool PassBuilder::parseAAPipeline(AAManager &AA, StringRef PipelineText) {
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void PassBuilder::crossRegisterProxies(LoopAnalysisManager &LAM,
|
||||
FunctionAnalysisManager &FAM,
|
||||
CGSCCAnalysisManager &CGAM,
|
||||
ModuleAnalysisManager &MAM) {
|
||||
MAM.registerPass([&] { return FunctionAnalysisManagerModuleProxy(FAM); });
|
||||
MAM.registerPass([&] { return CGSCCAnalysisManagerModuleProxy(CGAM); });
|
||||
CGAM.registerPass([&] { return FunctionAnalysisManagerCGSCCProxy(FAM); });
|
||||
CGAM.registerPass([&] { return ModuleAnalysisManagerCGSCCProxy(MAM); });
|
||||
FAM.registerPass([&] { return CGSCCAnalysisManagerFunctionProxy(CGAM); });
|
||||
FAM.registerPass([&] { return ModuleAnalysisManagerFunctionProxy(MAM); });
|
||||
FAM.registerPass([&] { return LoopAnalysisManagerFunctionProxy(LAM); });
|
||||
LAM.registerPass([&] { return FunctionAnalysisManagerLoopProxy(FAM); });
|
||||
}
|
@ -76,16 +76,7 @@ bool llvm::runPassPipeline(StringRef Arg0, LLVMContext &Context, Module &M,
|
||||
PB.registerCGSCCAnalyses(CGAM);
|
||||
PB.registerFunctionAnalyses(FAM);
|
||||
PB.registerLoopAnalyses(LAM);
|
||||
|
||||
// Cross register the analysis managers through their proxies.
|
||||
MAM.registerPass([&] { return FunctionAnalysisManagerModuleProxy(FAM); });
|
||||
MAM.registerPass([&] { return CGSCCAnalysisManagerModuleProxy(CGAM); });
|
||||
CGAM.registerPass([&] { return FunctionAnalysisManagerCGSCCProxy(FAM); });
|
||||
CGAM.registerPass([&] { return ModuleAnalysisManagerCGSCCProxy(MAM); });
|
||||
FAM.registerPass([&] { return CGSCCAnalysisManagerFunctionProxy(CGAM); });
|
||||
FAM.registerPass([&] { return ModuleAnalysisManagerFunctionProxy(MAM); });
|
||||
FAM.registerPass([&] { return LoopAnalysisManagerFunctionProxy(LAM); });
|
||||
LAM.registerPass([&] { return FunctionAnalysisManagerLoopProxy(FAM); });
|
||||
PB.crossRegisterProxies(LAM, FAM, CGAM, MAM);
|
||||
|
||||
ModulePassManager MPM(DebugPM);
|
||||
if (VK > VK_NoVerifier)
|
||||
|
Loading…
x
Reference in New Issue
Block a user