@@ -916,13 +916,7 @@ pub fn version_at_macro_invocation(
916916 safe_println!( "host: {}" , config:: host_tuple( ) ) ;
917917 safe_println!( "release: {release}" ) ;
918918
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( ) ;
926920 }
927921}
928922
@@ -1125,19 +1119,26 @@ pub fn describe_flag_categories(early_dcx: &EarlyDiagCtxt, matches: &Matches) ->
11251119 }
11261120
11271121 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( ) ;
11351123 return true ;
11361124 }
11371125
11381126 false
11391127}
11401128
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+
11411142fn describe_debug_flags( ) {
11421143 safe_println!( "\n Available options:\n " ) ;
11431144 print_flag_list( "-Z" , config:: Z_OPTIONS ) ;
0 commit comments