@@ -73,7 +73,10 @@ pub fn create_session(
7373 let codegen_backend = if let Some ( make_codegen_backend) = make_codegen_backend {
7474 make_codegen_backend ( & sopts)
7575 } else {
76- get_codegen_backend ( & sopts)
76+ get_codegen_backend (
77+ & sopts. maybe_sysroot ,
78+ sopts. debugging_opts . codegen_backend . as_ref ( ) . map ( |name| & name[ ..] ) ,
79+ )
7780 } ;
7881
7982 // target_override is documented to be called before init(), so this is okay
@@ -241,7 +244,13 @@ fn load_backend_from_dylib(path: &Path) -> fn() -> Box<dyn CodegenBackend> {
241244 }
242245}
243246
244- pub fn get_codegen_backend ( sopts : & config:: Options ) -> Box < dyn CodegenBackend > {
247+ /// Get the codegen backend based on the name and specified sysroot.
248+ ///
249+ /// A name of `None` indicates that the default backend should be used.
250+ pub fn get_codegen_backend (
251+ maybe_sysroot : & Option < PathBuf > ,
252+ backend_name : Option < & str > ,
253+ ) -> Box < dyn CodegenBackend > {
245254 static INIT : Once = Once :: new ( ) ;
246255
247256 static mut LOAD : fn ( ) -> Box < dyn CodegenBackend > = || unreachable ! ( ) ;
@@ -253,16 +262,11 @@ pub fn get_codegen_backend(sopts: &config::Options) -> Box<dyn CodegenBackend> {
253262 #[ cfg( not( feature = "llvm" ) ) ]
254263 const DEFAULT_CODEGEN_BACKEND : & str = "cranelift" ;
255264
256- let codegen_name = sopts
257- . debugging_opts
258- . codegen_backend
259- . as_ref ( )
260- . map ( |name| & name[ ..] )
261- . unwrap_or ( DEFAULT_CODEGEN_BACKEND ) ;
262-
263- let backend = match codegen_name {
265+ let backend = match backend_name. unwrap_or ( DEFAULT_CODEGEN_BACKEND ) {
264266 filename if filename. contains ( '.' ) => load_backend_from_dylib ( filename. as_ref ( ) ) ,
265- codegen_name => get_builtin_codegen_backend ( & sopts. maybe_sysroot , codegen_name) ,
267+ #[ cfg( feature = "llvm" ) ]
268+ "llvm" => rustc_codegen_llvm:: LlvmCodegenBackend :: new,
269+ backend_name => get_codegen_sysroot ( maybe_sysroot, backend_name) ,
266270 } ;
267271
268272 unsafe {
@@ -387,17 +391,6 @@ fn sysroot_candidates() -> Vec<PathBuf> {
387391 }
388392}
389393
390- pub fn get_builtin_codegen_backend (
391- maybe_sysroot : & Option < PathBuf > ,
392- backend_name : & str ,
393- ) -> fn ( ) -> Box < dyn CodegenBackend > {
394- match backend_name {
395- #[ cfg( feature = "llvm" ) ]
396- "llvm" => rustc_codegen_llvm:: LlvmCodegenBackend :: new,
397- _ => get_codegen_sysroot ( maybe_sysroot, backend_name) ,
398- }
399- }
400-
401394pub fn get_codegen_sysroot (
402395 maybe_sysroot : & Option < PathBuf > ,
403396 backend_name : & str ,
0 commit comments