From c5eae3a6e69c63dc8d69f51f74f74b853831ec71 Mon Sep 17 00:00:00 2001 From: Miguel Ojeda Date: Thu, 19 May 2022 23:37:04 +0200 Subject: [PATCH] x86: rust: move unknown-to-`rustc` codegen features back to the target spec file Only a subset of the LLVM codegen features are recognized by `rustc`, and since https://github.com/rust-lang/rust/pull/87402 (Rust 1.61.0) the compiler gives a warning about it: warning: unknown feature specified for `-Ctarget-feature`: `mmx` | = note: it is still passed through to the codegen backend = note: consider filing a feature request ...since those features may be renamed or removed at any point: $ rustc --print target-features [...] Code-generation features cannot be used in cfg or #[target_feature], and may be renamed or removed in a future version of LLVM or rustc. Thus move them back to the target spec generated file. See https://github.com/rust-lang/rust/issues/96472 as well for a report. Signed-off-by: Miguel Ojeda --- arch/x86/Makefile | 3 +-- scripts/generate_rust_target.rs | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/x86/Makefile b/arch/x86/Makefile index 5ac9b324751d1a..26c6ac1fdfea87 100644 --- a/arch/x86/Makefile +++ b/arch/x86/Makefile @@ -63,8 +63,7 @@ export BITS # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53383 # KBUILD_CFLAGS += -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -KBUILD_RUSTFLAGS += -Ctarget-feature=-mmx,-sse,-sse2,-sse3,-ssse3,-sse4.1,-sse4.2 -KBUILD_RUSTFLAGS += -Ctarget-feature=-3dnow,-3dnowa,-avx,-avx2,+soft-float +KBUILD_RUSTFLAGS += -Ctarget-feature=-sse,-sse2,-sse3,-ssse3,-sse4.1,-sse4.2,-avx,-avx2 ifeq ($(CONFIG_X86_KERNEL_IBT),y) # diff --git a/scripts/generate_rust_target.rs b/scripts/generate_rust_target.rs index c146a3407183b6..fb4bd5751dab10 100644 --- a/scripts/generate_rust_target.rs +++ b/scripts/generate_rust_target.rs @@ -204,6 +204,7 @@ fn main() { "data-layout", "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128", ); + ts.push("features", "-3dnow,-3dnowa,-mmx,+soft-float"); ts.push("llvm-target", "x86_64-linux-gnu"); ts.push("target-pointer-width", "64"); } else {