diff options
| author | bjorn3 <17426603+bjorn3@users.noreply.github.com> | 2024-01-02 21:17:00 +0000 |
|---|---|---|
| committer | bjorn3 <17426603+bjorn3@users.noreply.github.com> | 2024-01-02 21:17:00 +0000 |
| commit | 45d8c121ba02c825379b655d8dd74e1843e98d62 (patch) | |
| tree | 7169c7732e56e581d90df9a2d409c95297a2622c | |
| parent | c427754b52415a1fb11c83aa278b5fec21146b27 (diff) | |
| download | rust-45d8c121ba02c825379b655d8dd74e1843e98d62.tar.gz rust-45d8c121ba02c825379b655d8dd74e1843e98d62.zip | |
Return architecturally mandated target features to rustc
In the future the actual target features that Cranelift enables should be returned here, but for now this works. Fixes rust-lang/rustc_codegen_cranelift#1438
| -rw-r--r-- | src/lib.rs | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/lib.rs b/src/lib.rs index b482f0dd2f0..f327577eb4d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -42,7 +42,7 @@ use rustc_metadata::EncodedMetadata; use rustc_middle::dep_graph::{WorkProduct, WorkProductId}; use rustc_session::config::OutputFilenames; use rustc_session::Session; -use rustc_span::Symbol; +use rustc_span::{sym, Symbol}; pub use crate::config::*; use crate::prelude::*; @@ -190,8 +190,17 @@ impl CodegenBackend for CraneliftCodegenBackend { } } - fn target_features(&self, _sess: &Session, _allow_unstable: bool) -> Vec<rustc_span::Symbol> { - vec![] // FIXME necessary for #[cfg(target_feature] + fn target_features(&self, sess: &Session, _allow_unstable: bool) -> Vec<rustc_span::Symbol> { + // FIXME return the actually used target features. this is necessary for #[cfg(target_feature)] + if sess.target.arch == "x86_64" && sess.target.os != "none" { + // x86_64 mandates SSE2 support + vec![Symbol::intern("fxsr"), sym::sse, Symbol::intern("sse2")] + } else if sess.target.arch == "aarch64" && sess.target.os != "none" { + // AArch64 mandates Neon support + vec![sym::neon] + } else { + vec![] + } } fn print_version(&self) { |
