@@ -916,13 +916,7 @@ pub fn version_at_macro_invocation(
916
916
safe_println!( "host: {}" , config:: host_tuple( ) ) ;
917
917
safe_println!( "release: {release}" ) ;
918
918
919
- let debug_flags = matches. opt_strs( "Z" ) ;
920
- let backend_name = debug_flags. iter( ) . find_map( |x| x. strip_prefix( "codegen-backend=" ) ) ;
921
- let opts = config:: Options :: default ( ) ;
922
- let sysroot = filesearch:: materialize_sysroot( opts. maybe_sysroot. clone( ) ) ;
923
- let target = config:: build_target_config( early_dcx, & opts, & sysroot) ;
924
-
925
- get_codegen_backend( early_dcx, & sysroot, backend_name, & target) . print_version( ) ;
919
+ get_backend_from_raw_matches( early_dcx, matches) . print_version( ) ;
926
920
}
927
921
}
928
922
@@ -1125,19 +1119,26 @@ pub fn describe_flag_categories(early_dcx: &EarlyDiagCtxt, matches: &Matches) ->
1125
1119
}
1126
1120
1127
1121
if cg_flags. iter( ) . any( |x| * x == "passes=list" ) {
1128
- let backend_name = debug_flags. iter( ) . find_map( |x| x. strip_prefix( "codegen-backend=" ) ) ;
1129
-
1130
- let opts = config:: Options :: default ( ) ;
1131
- let sysroot = filesearch:: materialize_sysroot( opts. maybe_sysroot. clone( ) ) ;
1132
- let target = config:: build_target_config( early_dcx, & opts, & sysroot) ;
1133
-
1134
- get_codegen_backend( early_dcx, & sysroot, backend_name, & target) . print_passes( ) ;
1122
+ get_backend_from_raw_matches( early_dcx, matches) . print_passes( ) ;
1135
1123
return true ;
1136
1124
}
1137
1125
1138
1126
false
1139
1127
}
1140
1128
1129
+ fn get_backend_from_raw_matches(
1130
+ early_dcx: & EarlyDiagCtxt ,
1131
+ matches: & Matches ,
1132
+ ) -> Box <dyn CodegenBackend > {
1133
+ let debug_flags = matches. opt_strs( "Z" ) ;
1134
+ let backend_name = debug_flags. iter( ) . find_map( |x| x. strip_prefix( "codegen-backend=" ) ) ;
1135
+ let opts = config:: Options :: default ( ) ;
1136
+ let sysroot = filesearch:: materialize_sysroot( matches. opt_str( "sysroot" ) . map( PathBuf :: from) ) ;
1137
+ let target = config:: build_target_config( early_dcx, & opts, & sysroot) ;
1138
+
1139
+ get_codegen_backend( early_dcx, & sysroot, backend_name, & target)
1140
+ }
1141
+
1141
1142
fn describe_debug_flags( ) {
1142
1143
safe_println!( "\n Available options:\n " ) ;
1143
1144
print_flag_list( "-Z" , config:: Z_OPTIONS ) ;
0 commit comments