@@ -331,20 +331,24 @@ enum class LLVMRustPassBuilderOptLevel {
331
331
Oz,
332
332
};
333
333
334
- static PassBuilder::OptimizationLevel fromRust (LLVMRustPassBuilderOptLevel Level) {
334
+ #if LLVM_VERSION_LT(14,0)
335
+ using OptimizationLevel = PassBuilder::OptimizationLevel;
336
+ #endif
337
+
338
+ static OptimizationLevel fromRust (LLVMRustPassBuilderOptLevel Level) {
335
339
switch (Level) {
336
340
case LLVMRustPassBuilderOptLevel::O0:
337
- return PassBuilder:: OptimizationLevel::O0;
341
+ return OptimizationLevel::O0;
338
342
case LLVMRustPassBuilderOptLevel::O1:
339
- return PassBuilder:: OptimizationLevel::O1;
343
+ return OptimizationLevel::O1;
340
344
case LLVMRustPassBuilderOptLevel::O2:
341
- return PassBuilder:: OptimizationLevel::O2;
345
+ return OptimizationLevel::O2;
342
346
case LLVMRustPassBuilderOptLevel::O3:
343
- return PassBuilder:: OptimizationLevel::O3;
347
+ return OptimizationLevel::O3;
344
348
case LLVMRustPassBuilderOptLevel::Os:
345
- return PassBuilder:: OptimizationLevel::Os;
349
+ return OptimizationLevel::Os;
346
350
case LLVMRustPassBuilderOptLevel::Oz:
347
- return PassBuilder:: OptimizationLevel::Oz;
351
+ return OptimizationLevel::Oz;
348
352
default :
349
353
report_fatal_error (" Bad PassBuilderOptLevel." );
350
354
}
@@ -754,7 +758,7 @@ LLVMRustOptimizeWithNewPassManager(
754
758
const char *ExtraPasses, size_t ExtraPassesLen) {
755
759
Module *TheModule = unwrap (ModuleRef);
756
760
TargetMachine *TM = unwrap (TMRef);
757
- PassBuilder:: OptimizationLevel OptLevel = fromRust (OptLevelRust);
761
+ OptimizationLevel OptLevel = fromRust (OptLevelRust);
758
762
759
763
760
764
PipelineTuningOptions PTO;
@@ -827,35 +831,35 @@ LLVMRustOptimizeWithNewPassManager(
827
831
828
832
// We manually collect pipeline callbacks so we can apply them at O0, where the
829
833
// PassBuilder does not create a pipeline.
830
- std::vector<std::function<void (ModulePassManager &, PassBuilder:: OptimizationLevel)>>
834
+ std::vector<std::function<void (ModulePassManager &, OptimizationLevel)>>
831
835
PipelineStartEPCallbacks;
832
836
#if LLVM_VERSION_GE(11, 0)
833
- std::vector<std::function<void (ModulePassManager &, PassBuilder:: OptimizationLevel)>>
837
+ std::vector<std::function<void (ModulePassManager &, OptimizationLevel)>>
834
838
OptimizerLastEPCallbacks;
835
839
#else
836
- std::vector<std::function<void (FunctionPassManager &, PassBuilder:: OptimizationLevel)>>
840
+ std::vector<std::function<void (FunctionPassManager &, OptimizationLevel)>>
837
841
OptimizerLastEPCallbacks;
838
842
#endif
839
843
840
844
if (VerifyIR) {
841
845
PipelineStartEPCallbacks.push_back (
842
- [VerifyIR](ModulePassManager &MPM, PassBuilder:: OptimizationLevel Level) {
846
+ [VerifyIR](ModulePassManager &MPM, OptimizationLevel Level) {
843
847
MPM.addPass (VerifierPass ());
844
848
}
845
849
);
846
850
}
847
851
848
852
if (InstrumentGCOV) {
849
853
PipelineStartEPCallbacks.push_back (
850
- [](ModulePassManager &MPM, PassBuilder:: OptimizationLevel Level) {
854
+ [](ModulePassManager &MPM, OptimizationLevel Level) {
851
855
MPM.addPass (GCOVProfilerPass (GCOVOptions::getDefault ()));
852
856
}
853
857
);
854
858
}
855
859
856
860
if (InstrumentCoverage) {
857
861
PipelineStartEPCallbacks.push_back (
858
- [](ModulePassManager &MPM, PassBuilder:: OptimizationLevel Level) {
862
+ [](ModulePassManager &MPM, OptimizationLevel Level) {
859
863
InstrProfOptions Options;
860
864
MPM.addPass (InstrProfiling (Options, false ));
861
865
}
@@ -870,19 +874,19 @@ LLVMRustOptimizeWithNewPassManager(
870
874
/* CompileKernel=*/ false );
871
875
#if LLVM_VERSION_GE(11, 0)
872
876
OptimizerLastEPCallbacks.push_back (
873
- [Options](ModulePassManager &MPM, PassBuilder:: OptimizationLevel Level) {
877
+ [Options](ModulePassManager &MPM, OptimizationLevel Level) {
874
878
MPM.addPass (MemorySanitizerPass (Options));
875
879
MPM.addPass (createModuleToFunctionPassAdaptor (MemorySanitizerPass (Options)));
876
880
}
877
881
);
878
882
#else
879
883
PipelineStartEPCallbacks.push_back (
880
- [Options](ModulePassManager &MPM, PassBuilder:: OptimizationLevel Level) {
884
+ [Options](ModulePassManager &MPM, OptimizationLevel Level) {
881
885
MPM.addPass (MemorySanitizerPass (Options));
882
886
}
883
887
);
884
888
OptimizerLastEPCallbacks.push_back (
885
- [Options](FunctionPassManager &FPM, PassBuilder:: OptimizationLevel Level) {
889
+ [Options](FunctionPassManager &FPM, OptimizationLevel Level) {
886
890
FPM.addPass (MemorySanitizerPass (Options));
887
891
}
888
892
);
@@ -892,19 +896,19 @@ LLVMRustOptimizeWithNewPassManager(
892
896
if (SanitizerOptions->SanitizeThread ) {
893
897
#if LLVM_VERSION_GE(11, 0)
894
898
OptimizerLastEPCallbacks.push_back (
895
- [](ModulePassManager &MPM, PassBuilder:: OptimizationLevel Level) {
899
+ [](ModulePassManager &MPM, OptimizationLevel Level) {
896
900
MPM.addPass (ThreadSanitizerPass ());
897
901
MPM.addPass (createModuleToFunctionPassAdaptor (ThreadSanitizerPass ()));
898
902
}
899
903
);
900
904
#else
901
905
PipelineStartEPCallbacks.push_back (
902
- [](ModulePassManager &MPM, PassBuilder:: OptimizationLevel Level) {
906
+ [](ModulePassManager &MPM, OptimizationLevel Level) {
903
907
MPM.addPass (ThreadSanitizerPass ());
904
908
}
905
909
);
906
910
OptimizerLastEPCallbacks.push_back (
907
- [](FunctionPassManager &FPM, PassBuilder:: OptimizationLevel Level) {
911
+ [](FunctionPassManager &FPM, OptimizationLevel Level) {
908
912
FPM.addPass (ThreadSanitizerPass ());
909
913
}
910
914
);
@@ -914,7 +918,7 @@ LLVMRustOptimizeWithNewPassManager(
914
918
if (SanitizerOptions->SanitizeAddress ) {
915
919
#if LLVM_VERSION_GE(11, 0)
916
920
OptimizerLastEPCallbacks.push_back (
917
- [SanitizerOptions](ModulePassManager &MPM, PassBuilder:: OptimizationLevel Level) {
921
+ [SanitizerOptions](ModulePassManager &MPM, OptimizationLevel Level) {
918
922
MPM.addPass (RequireAnalysisPass<ASanGlobalsMetadataAnalysis, Module>());
919
923
MPM.addPass (ModuleAddressSanitizerPass (
920
924
/* CompileKernel=*/ false , SanitizerOptions->SanitizeAddressRecover ));
@@ -925,19 +929,19 @@ LLVMRustOptimizeWithNewPassManager(
925
929
);
926
930
#else
927
931
PipelineStartEPCallbacks.push_back (
928
- [&](ModulePassManager &MPM, PassBuilder:: OptimizationLevel Level) {
932
+ [&](ModulePassManager &MPM, OptimizationLevel Level) {
929
933
MPM.addPass (RequireAnalysisPass<ASanGlobalsMetadataAnalysis, Module>());
930
934
}
931
935
);
932
936
OptimizerLastEPCallbacks.push_back (
933
- [SanitizerOptions](FunctionPassManager &FPM, PassBuilder:: OptimizationLevel Level) {
937
+ [SanitizerOptions](FunctionPassManager &FPM, OptimizationLevel Level) {
934
938
FPM.addPass (AddressSanitizerPass (
935
939
/* CompileKernel=*/ false , SanitizerOptions->SanitizeAddressRecover ,
936
940
/* UseAfterScope=*/ true ));
937
941
}
938
942
);
939
943
PipelineStartEPCallbacks.push_back (
940
- [SanitizerOptions](ModulePassManager &MPM, PassBuilder:: OptimizationLevel Level) {
944
+ [SanitizerOptions](ModulePassManager &MPM, OptimizationLevel Level) {
941
945
MPM.addPass (ModuleAddressSanitizerPass (
942
946
/* CompileKernel=*/ false , SanitizerOptions->SanitizeAddressRecover ));
943
947
}
@@ -947,14 +951,14 @@ LLVMRustOptimizeWithNewPassManager(
947
951
if (SanitizerOptions->SanitizeHWAddress ) {
948
952
#if LLVM_VERSION_GE(11, 0)
949
953
OptimizerLastEPCallbacks.push_back (
950
- [SanitizerOptions](ModulePassManager &MPM, PassBuilder:: OptimizationLevel Level) {
954
+ [SanitizerOptions](ModulePassManager &MPM, OptimizationLevel Level) {
951
955
MPM.addPass (HWAddressSanitizerPass (
952
956
/* CompileKernel=*/ false , SanitizerOptions->SanitizeHWAddressRecover ));
953
957
}
954
958
);
955
959
#else
956
960
PipelineStartEPCallbacks.push_back (
957
- [SanitizerOptions](ModulePassManager &MPM, PassBuilder:: OptimizationLevel Level) {
961
+ [SanitizerOptions](ModulePassManager &MPM, OptimizationLevel Level) {
958
962
MPM.addPass (HWAddressSanitizerPass (
959
963
/* CompileKernel=*/ false , SanitizerOptions->SanitizeHWAddressRecover ));
960
964
}
@@ -970,7 +974,7 @@ LLVMRustOptimizeWithNewPassManager(
970
974
#endif
971
975
bool NeedThinLTOBufferPasses = UseThinLTOBuffers;
972
976
if (!NoPrepopulatePasses) {
973
- if (OptLevel == PassBuilder:: OptimizationLevel::O0) {
977
+ if (OptLevel == OptimizationLevel::O0) {
974
978
#if LLVM_VERSION_GE(12, 0)
975
979
for (const auto &C : PipelineStartEPCallbacks)
976
980
PB.registerPipelineStartEPCallback (C);
0 commit comments