@@ -701,21 +701,6 @@ PIC.addClassToPassName(decltype(CREATE_PASS)::name(), NAME);
701
701
PIC.addClassToPassName (" AfterOptimizationMarkerPass" , " AfterOptimization" );
702
702
}
703
703
704
- #if JL_LLVM_VERSION >= 160000
705
- auto createPIC () JL_NOTSAFEPOINT {
706
- auto PIC = std::make_unique<PassInstrumentationCallbacks>();
707
- adjustPIC (*PIC);
708
- return PIC;
709
- }
710
- #else
711
- auto createPIC (StandardInstrumentations &SI) JL_NOTSAFEPOINT {
712
- auto PIC = std::make_unique<PassInstrumentationCallbacks>();
713
- adjustPIC (*PIC);
714
- SI.registerCallbacks (*PIC);
715
- return PIC;
716
- }
717
- #endif
718
-
719
704
FunctionAnalysisManager createFAM (OptimizationLevel O, TargetMachine &TM) JL_NOTSAFEPOINT {
720
705
721
706
FunctionAnalysisManager FAM;
@@ -744,15 +729,8 @@ PIC.addClassToPassName(decltype(CREATE_PASS)::name(), NAME);
744
729
}
745
730
746
731
NewPM::NewPM (std::unique_ptr<TargetMachine> TM, OptimizationLevel O, OptimizationOptions options) :
747
- TM(std::move(TM)),
748
- #if JL_LLVM_VERSION < 160000
749
- SI (false ),
750
- PIC(createPIC(SI)),
751
- #else
752
- PIC (createPIC()),
753
- #endif
754
- PB (this ->TM.get(), PipelineTuningOptions(), None, PIC.get()),
755
- MPM(createMPM(PB, O, options)), O(O) {}
732
+ TM(std::move(TM)), O(O), options(options), TimePasses() {}
733
+
756
734
757
735
NewPM::~NewPM () = default ;
758
736
@@ -778,17 +756,34 @@ void NewPM::run(Module &M) {
778
756
// We must recreate the analysis managers every time
779
757
// so that analyses from previous runs of the pass manager
780
758
// do not hang around for the next run
781
- AnalysisManagers AM{*TM, PB, O};
782
-
759
+ #if JL_LLVM_VERSION >= 160000
760
+ StandardInstrumentations SI (M.getContext (),false );
761
+ #else
762
+ StandardInstrumentations SI (false );
763
+ #endif
764
+ FunctionAnalysisManager FAM (createFAM (O, *TM.get ()));
765
+ PassInstrumentationCallbacks PIC;
766
+ adjustPIC (PIC);
767
+ TimePasses.registerCallbacks (PIC);
768
+ SI.registerCallbacks (PIC, &FAM);
769
+ SI.getTimePasses ().setOutStream (nulls ()); // TODO: figure out a better way of doing this
770
+ LoopAnalysisManager LAM;
771
+ CGSCCAnalysisManager CGAM;
772
+ ModuleAnalysisManager MAM;
773
+ PassBuilder PB (TM.get (), PipelineTuningOptions (), None, &PIC);
774
+ PB.registerLoopAnalyses (LAM);
775
+ PB.registerFunctionAnalyses (FAM);
776
+ PB.registerCGSCCAnalyses (CGAM);
777
+ PB.registerModuleAnalyses (MAM);
778
+ PB.crossRegisterProxies (LAM, FAM, CGAM, MAM);
779
+ ModulePassManager MPM = createMPM (PB, O, options);
783
780
#ifndef __clang_gcanalyzer__ /* the analyzer cannot prove we have not added instrumentation callbacks with safepoints */
784
- MPM.run (M, AM. MAM );
781
+ MPM.run (M, MAM);
785
782
#endif
786
783
}
787
784
788
785
void NewPM::printTimers () {
789
- #if JL_LLVM_VERSION < 160000
790
- SI.getTimePasses ().print ();
791
- #endif
786
+ TimePasses.print ();
792
787
}
793
788
794
789
OptimizationLevel getOptLevel (int optlevel) {
0 commit comments