Skip to content

Commit 1870f9b

Browse files
committed
Allow printing the version of the default codegen backend if it isn't llvm
1 parent f04a2d3 commit 1870f9b

File tree

3 files changed

+22
-29
lines changed

3 files changed

+22
-29
lines changed

compiler/rustc_codegen_cranelift/src/lib.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,10 @@ impl CodegenBackend for CraneliftCodegenBackend {
167167
vec![]
168168
}
169169

170+
fn print_version(&self) {
171+
println!("Cranelift version: {}", cranelift_codegen::VERSION);
172+
}
173+
170174
fn codegen_crate(
171175
&self,
172176
tcx: TyCtxt<'_>,

compiler/rustc_driver/src/lib.rs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ use rustc_data_structures::sync::SeqCst;
2121
use rustc_errors::registry::{InvalidErrorCode, Registry};
2222
use rustc_errors::{ErrorReported, PResult};
2323
use rustc_feature::find_gated_cfg;
24-
use rustc_interface::util::{self, collect_crate_types, get_builtin_codegen_backend};
24+
use rustc_interface::util::{self, collect_crate_types, get_codegen_backend};
2525
use rustc_interface::{interface, Queries};
2626
use rustc_lint::LintStore;
2727
use rustc_metadata::locator;
@@ -765,9 +765,7 @@ pub fn version(binary: &str, matches: &getopts::Matches) {
765765
println!("commit-date: {}", unw(util::commit_date_str()));
766766
println!("host: {}", config::host_triple());
767767
println!("release: {}", unw(util::release_str()));
768-
if cfg!(feature = "llvm") {
769-
get_builtin_codegen_backend(&None, "llvm")().print_version();
770-
}
768+
get_codegen_backend(&None, None).print_version();
771769
}
772770
}
773771

@@ -1060,9 +1058,7 @@ pub fn handle_options(args: &[String]) -> Option<getopts::Matches> {
10601058
}
10611059

10621060
if cg_flags.iter().any(|x| *x == "passes=list") {
1063-
if cfg!(feature = "llvm") {
1064-
get_builtin_codegen_backend(&None, "llvm")().print_passes();
1065-
}
1061+
get_codegen_backend(&None, None).print_passes();
10661062
return None;
10671063
}
10681064

compiler/rustc_interface/src/util.rs

Lines changed: 15 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -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-
401394
pub fn get_codegen_sysroot(
402395
maybe_sysroot: &Option<PathBuf>,
403396
backend_name: &str,

0 commit comments

Comments
 (0)