@@ -523,6 +523,12 @@ pub(crate) unsafe fn optimize(
523
523
let module_name = module. name . clone ( ) ;
524
524
let module_name = Some ( & module_name[ ..] ) ;
525
525
526
+ if let Some ( false ) = config. new_llvm_pass_manager && llvm_util:: get_version ( ) >= ( 15 , 0 , 0 ) {
527
+ diag_handler. warn (
528
+ "ignoring `-Z new-llvm-pass-manager=no`, which is no longer supported with LLVM 15" ,
529
+ ) ;
530
+ }
531
+
526
532
if config. emit_no_opt_bc {
527
533
let out = cgcx. output_filenames . temp_path_ext ( "no-opt.bc" , module_name) ;
528
534
let out = path_to_c_string ( & out) ;
@@ -628,8 +634,8 @@ pub(crate) unsafe fn optimize(
628
634
extra_passes. as_ptr ( ) ,
629
635
extra_passes. len ( ) as size_t ,
630
636
) ;
631
- llvm:: LLVMPassManagerBuilderPopulateFunctionPassManager ( b, fpm) ;
632
- llvm:: LLVMPassManagerBuilderPopulateModulePassManager ( b, mpm) ;
637
+ llvm:: LLVMRustPassManagerBuilderPopulateFunctionPassManager ( b, fpm) ;
638
+ llvm:: LLVMRustPassManagerBuilderPopulateModulePassManager ( b, mpm) ;
633
639
} ) ;
634
640
635
641
have_name_anon_globals_pass = have_name_anon_globals_pass || prepare_for_thin_lto;
@@ -1085,7 +1091,7 @@ pub unsafe fn with_llvm_pmb(
1085
1091
// Create the PassManagerBuilder for LLVM. We configure it with
1086
1092
// reasonable defaults and prepare it to actually populate the pass
1087
1093
// manager.
1088
- let builder = llvm:: LLVMPassManagerBuilderCreate ( ) ;
1094
+ let builder = llvm:: LLVMRustPassManagerBuilderCreate ( ) ;
1089
1095
let opt_size = config. opt_size . map_or ( llvm:: CodeGenOptSizeNone , |x| to_llvm_opt_settings ( x) . 1 ) ;
1090
1096
let inline_threshold = config. inline_threshold ;
1091
1097
let pgo_gen_path = get_pgo_gen_path ( config) ;
@@ -1102,14 +1108,9 @@ pub unsafe fn with_llvm_pmb(
1102
1108
pgo_gen_path. as_ref ( ) . map_or ( ptr:: null ( ) , |s| s. as_ptr ( ) ) ,
1103
1109
pgo_use_path. as_ref ( ) . map_or ( ptr:: null ( ) , |s| s. as_ptr ( ) ) ,
1104
1110
pgo_sample_use_path. as_ref ( ) . map_or ( ptr:: null ( ) , |s| s. as_ptr ( ) ) ,
1111
+ opt_size as c_int ,
1105
1112
) ;
1106
1113
1107
- llvm:: LLVMPassManagerBuilderSetSizeLevel ( builder, opt_size as u32 ) ;
1108
-
1109
- if opt_size != llvm:: CodeGenOptSizeNone {
1110
- llvm:: LLVMPassManagerBuilderSetDisableUnrollLoops ( builder, 1 ) ;
1111
- }
1112
-
1113
1114
llvm:: LLVMRustAddBuilderLibraryInfo ( builder, llmod, config. no_builtins ) ;
1114
1115
1115
1116
// Here we match what clang does (kinda). For O0 we only inline
@@ -1118,16 +1119,16 @@ pub unsafe fn with_llvm_pmb(
1118
1119
// thresholds copied from clang.
1119
1120
match ( opt_level, opt_size, inline_threshold) {
1120
1121
( .., Some ( t) ) => {
1121
- llvm:: LLVMPassManagerBuilderUseInlinerWithThreshold ( builder, t) ;
1122
+ llvm:: LLVMRustPassManagerBuilderUseInlinerWithThreshold ( builder, t) ;
1122
1123
}
1123
1124
( llvm:: CodeGenOptLevel :: Aggressive , ..) => {
1124
- llvm:: LLVMPassManagerBuilderUseInlinerWithThreshold ( builder, 275 ) ;
1125
+ llvm:: LLVMRustPassManagerBuilderUseInlinerWithThreshold ( builder, 275 ) ;
1125
1126
}
1126
1127
( _, llvm:: CodeGenOptSizeDefault , _) => {
1127
- llvm:: LLVMPassManagerBuilderUseInlinerWithThreshold ( builder, 75 ) ;
1128
+ llvm:: LLVMRustPassManagerBuilderUseInlinerWithThreshold ( builder, 75 ) ;
1128
1129
}
1129
1130
( _, llvm:: CodeGenOptSizeAggressive , _) => {
1130
- llvm:: LLVMPassManagerBuilderUseInlinerWithThreshold ( builder, 25 ) ;
1131
+ llvm:: LLVMRustPassManagerBuilderUseInlinerWithThreshold ( builder, 25 ) ;
1131
1132
}
1132
1133
( llvm:: CodeGenOptLevel :: None , ..) => {
1133
1134
llvm:: LLVMRustAddAlwaysInlinePass ( builder, config. emit_lifetime_markers ) ;
@@ -1136,12 +1137,12 @@ pub unsafe fn with_llvm_pmb(
1136
1137
llvm:: LLVMRustAddAlwaysInlinePass ( builder, config. emit_lifetime_markers ) ;
1137
1138
}
1138
1139
( llvm:: CodeGenOptLevel :: Default , ..) => {
1139
- llvm:: LLVMPassManagerBuilderUseInlinerWithThreshold ( builder, 225 ) ;
1140
+ llvm:: LLVMRustPassManagerBuilderUseInlinerWithThreshold ( builder, 225 ) ;
1140
1141
}
1141
1142
}
1142
1143
1143
1144
f ( builder) ;
1144
- llvm:: LLVMPassManagerBuilderDispose ( builder) ;
1145
+ llvm:: LLVMRustPassManagerBuilderDispose ( builder) ;
1145
1146
}
1146
1147
1147
1148
// Create a `__imp_<symbol> = &symbol` global for every public static `symbol`.
0 commit comments