@@ -680,7 +680,7 @@ PIC.addClassToPassName(decltype(CREATE_PASS)::name(), NAME);
680
680
return PIC;
681
681
}
682
682
683
- FunctionAnalysisManager createFAM (OptimizationLevel O, TargetIRAnalysis analysis, const Triple &triple ) JL_NOTSAFEPOINT {
683
+ FunctionAnalysisManager createFAM (OptimizationLevel O, TargetMachine &TM ) JL_NOTSAFEPOINT {
684
684
685
685
FunctionAnalysisManager FAM;
686
686
// Register the AA manager first so that our version is the one used.
@@ -691,12 +691,12 @@ PIC.addClassToPassName(decltype(CREATE_PASS)::name(), NAME);
691
691
AA.registerFunctionAnalysis <ScopedNoAliasAA>();
692
692
AA.registerFunctionAnalysis <TypeBasedAA>();
693
693
}
694
- // TM-> registerDefaultAliasAnalyses(AA);
694
+ TM. registerDefaultAliasAnalyses (AA);
695
695
return AA;
696
696
});
697
697
// Register our TargetLibraryInfoImpl.
698
- FAM.registerPass ([&] JL_NOTSAFEPOINT { return llvm::TargetIRAnalysis (analysis ); });
699
- FAM.registerPass ([&] JL_NOTSAFEPOINT { return llvm::TargetLibraryAnalysis (llvm::TargetLibraryInfoImpl (triple )); });
698
+ FAM.registerPass ([&] JL_NOTSAFEPOINT { return llvm::TargetIRAnalysis (TM. getTargetIRAnalysis () ); });
699
+ FAM.registerPass ([&] JL_NOTSAFEPOINT { return llvm::TargetLibraryAnalysis (llvm::TargetLibraryInfoImpl (TM. getTargetTriple () )); });
700
700
return FAM;
701
701
}
702
702
@@ -714,7 +714,7 @@ NewPM::NewPM(std::unique_ptr<TargetMachine> TM, OptimizationLevel O, Optimizatio
714
714
715
715
NewPM::~NewPM () = default ;
716
716
717
- AnalysisManagers::AnalysisManagers (TargetMachine &TM, PassBuilder &PB, OptimizationLevel O) : LAM(), FAM(createFAM(O, TM.getTargetIRAnalysis(), TM.getTargetTriple() )), CGAM(), MAM() {
717
+ AnalysisManagers::AnalysisManagers (TargetMachine &TM, PassBuilder &PB, OptimizationLevel O) : LAM(), FAM(createFAM(O, TM)), CGAM(), MAM() {
718
718
PB.registerLoopAnalyses (LAM);
719
719
PB.registerFunctionAnalyses (FAM);
720
720
PB.registerCGSCCAnalyses (CGAM);
@@ -819,7 +819,7 @@ static llvm::Optional<std::pair<OptimizationLevel, OptimizationOptions>> parseJu
819
819
// NOTE: Instead of exporting all the constructors in passes.h we could
820
820
// forward the callbacks to the respective passes. LLVM seems to prefer this,
821
821
// and when we add the full pass builder having them directly will be helpful.
822
- void registerCallbacks (PassBuilder &PB) JL_NOTSAFEPOINT {
822
+ static void registerCallbacks (PassBuilder &PB) JL_NOTSAFEPOINT {
823
823
auto PIC = PB.getPassInstrumentationCallbacks ();
824
824
if (PIC) {
825
825
adjustPIC (*PIC);
@@ -899,6 +899,11 @@ void registerCallbacks(PassBuilder &PB) JL_NOTSAFEPOINT {
899
899
});
900
900
}
901
901
902
+ extern " C" JL_DLLEXPORT_CODEGEN
903
+ void jl_register_passbuilder_callbacks_impl (void *PB) JL_NOTSAFEPOINT {
904
+ registerCallbacks (*static_cast <PassBuilder*>(PB));
905
+ }
906
+
902
907
extern " C" JL_DLLEXPORT_CODEGEN
903
908
::llvm::PassPluginLibraryInfo llvmGetPassPluginInfo () JL_NOTSAFEPOINT {
904
909
return {LLVM_PLUGIN_API_VERSION, " Julia" , " 1" , registerCallbacks};
0 commit comments