Skip to content

Commit e8722f5

Browse files
committed
Use actual analysis managers with non-optimization pass manager
1 parent f3b7063 commit e8722f5

File tree

3 files changed

+34
-11
lines changed

3 files changed

+34
-11
lines changed

src/aotcompile.cpp

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -551,7 +551,6 @@ void jl_dump_native_impl(void *native_code,
551551
std::vector<NewArchiveMember> unopt_bc_Archive;
552552
std::vector<std::string> outputs;
553553

554-
ModuleAnalysisManager none;
555554
ModulePassManager preopt, postopt;
556555
legacy::PassManager emitter;
557556

@@ -603,13 +602,18 @@ void jl_dump_native_impl(void *native_code,
603602

604603
// do the actual work
605604
auto add_output = [&] (Module &M, StringRef unopt_bc_Name, StringRef bc_Name, StringRef obj_Name, StringRef asm_Name) {
606-
preopt.run(M, none);
605+
AnalysisManagers AM;
606+
PassBuilder PB;
607+
AM.crossRegister(PB);
608+
preopt.run(M, AM.MAM);
607609
if (unopt_bc_fname)
608610
emit_result(unopt_bc_Archive, unopt_bc_Buffer, unopt_bc_Name, outputs);
609611
if (!bc_fname && !obj_fname && !asm_fname)
610612
return;
611613
optimizer.run(M);
612-
postopt.run(M, none);
614+
AM = AnalysisManagers();
615+
AM.crossRegister(PB);
616+
postopt.run(M, AM.MAM);
613617
emitter.run(M);
614618
if (bc_fname)
615619
emit_result(bc_Archive, bc_Buffer, bc_Name, outputs);
@@ -1403,17 +1407,22 @@ NewPM::NewPM(std::unique_ptr<TargetMachine> TM, int opt_level, OptimizationOptio
14031407
PB(this->TM.get(), PipelineTuningOptions(), None, PIC.get()),
14041408
MPM(createMPM(opt_level, options)), opt_level(opt_level) {}
14051409

1406-
PreservedAnalyses NewPM::run(Module &M) {
1407-
LoopAnalysisManager LAM;
1408-
FunctionAnalysisManager FAM(createFAM(opt_level, TM->getTargetIRAnalysis(), TM->getTargetTriple()));
1409-
CGSCCAnalysisManager CGAM;
1410-
ModuleAnalysisManager MAM;
1410+
AnalysisManagers::AnalysisManagers(PassBuilder &PB, TargetMachine &TM, int opt_level) :
1411+
LAM(), FAM(createFAM(opt_level, TM.getTargetIRAnalysis(), TM.getTargetTriple())), CGAM(), MAM() {
1412+
crossRegister(PB);
1413+
}
1414+
1415+
void AnalysisManagers::crossRegister(PassBuilder &PB) {
14111416
PB.registerLoopAnalyses(LAM);
14121417
PB.registerFunctionAnalyses(FAM);
14131418
PB.registerCGSCCAnalyses(CGAM);
14141419
PB.registerModuleAnalyses(MAM);
14151420
PB.crossRegisterProxies(LAM, FAM, CGAM, MAM);
1416-
return MPM.run(M, MAM);
1421+
}
1422+
1423+
PreservedAnalyses NewPM::run(Module &M) {
1424+
AnalysisManagers analyses(PB, *TM, opt_level);
1425+
return MPM.run(M, analyses.MAM);
14171426
}
14181427

14191428
// TODO(vchuravy/maleadt):

src/disasm.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -483,9 +483,11 @@ void jl_strip_llvm_debug(Module *m)
483483
void jl_strip_llvm_addrspaces(Module *m)
484484
{
485485
ModulePassManager PM;
486-
ModuleAnalysisManager MAM;
486+
AnalysisManagers AM;
487+
PassBuilder PB;
488+
AM.crossRegister(PB);
487489
PM.addPass(RemoveJuliaAddrspacesPass());
488-
PM.run(*m, MAM);
490+
PM.run(*m, AM.MAM);
489491
}
490492

491493
// print an llvm IR acquired from jl_get_llvmf

src/jitlayers.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,18 @@ static inline bool imaging_default() {
8383
return jl_options.image_codegen || (jl_generating_output() && !jl_options.incremental);
8484
}
8585

86+
struct AnalysisManagers {
87+
LoopAnalysisManager LAM;
88+
FunctionAnalysisManager FAM;
89+
CGSCCAnalysisManager CGAM;
90+
ModuleAnalysisManager MAM;
91+
92+
AnalysisManagers() = default;
93+
AnalysisManagers(PassBuilder &PB, TargetMachine &TM, int opt_level);
94+
95+
void crossRegister(PassBuilder &PB);
96+
};
97+
8698
struct NewPM {
8799
std::unique_ptr<TargetMachine> TM;
88100
StandardInstrumentations SI;

0 commit comments

Comments
 (0)