@@ -1095,6 +1095,8 @@ impl Config {
1095
1095
let mut llvm_assertions = None ;
1096
1096
let mut llvm_tests = None ;
1097
1097
let mut llvm_plugins = None ;
1098
+ let mut rust_codegen_units = None ;
1099
+ let mut rust_codegen_units_std = None ;
1098
1100
let mut debug = None ;
1099
1101
let mut debug_assertions = None ;
1100
1102
let mut debug_assertions_std = None ;
@@ -1173,8 +1175,8 @@ impl Config {
1173
1175
backends. iter ( ) . map ( |s| INTERNER . intern_str ( s) ) . collect ( ) ;
1174
1176
}
1175
1177
1176
- config . rust_codegen_units = rust. codegen_units . map ( threads_from_config) ;
1177
- config . rust_codegen_units_std = rust. codegen_units_std . map ( threads_from_config) ;
1178
+ rust_codegen_units = rust. codegen_units . map ( threads_from_config) ;
1179
+ rust_codegen_units_std = rust. codegen_units_std . map ( threads_from_config) ;
1178
1180
config. rust_profile_use = flags. rust_profile_use . or ( rust. profile_use ) ;
1179
1181
config. rust_profile_generate = flags. rust_profile_generate . or ( rust. profile_generate ) ;
1180
1182
config. download_rustc_commit = config. download_ci_rustc_commit ( rust. download_rustc ) ;
@@ -1368,6 +1370,16 @@ impl Config {
1368
1370
config. llvm_plugins = llvm_plugins. unwrap_or ( false ) ;
1369
1371
config. rust_optimize = optimize. unwrap_or ( true ) ;
1370
1372
1373
+ let fully_optimized = config. rust_optimize && debug != Some ( true ) && !config. incremental ;
1374
+ if fully_optimized && rust_codegen_units. is_none ( ) {
1375
+ rust_codegen_units = Some ( 1 )
1376
+ }
1377
+ if fully_optimized && rust_codegen_units_std. is_none ( ) {
1378
+ rust_codegen_units_std = Some ( 1 )
1379
+ }
1380
+ config. rust_codegen_units = rust_codegen_units;
1381
+ config. rust_codegen_units_std = rust_codegen_units_std;
1382
+
1371
1383
let default = debug == Some ( true ) ;
1372
1384
config. rust_debug_assertions = debug_assertions. unwrap_or ( default) ;
1373
1385
config. rust_debug_assertions_std =
0 commit comments