Skip to content

Commit 2f6e855

Browse files
authored
Rollup merge of #129863 - RalfJung:target-spec-features, r=wesleywiser
update comment regarding TargetOptions.features The claim that `-Ctarget-features` cannot disable these features set in the target spec is definitely wrong -- I tried it for `x86_64-pc-windows-gnu`, which enables SSE3 that way. Building with `-Ctarget-feature=-sse3` works fine, and `cfg!(target_feature = "sse3")` is `false` in that build. There are also some indications that these are actually intended to be overwritten: https://github.com/rust-lang/rust/blob/3b14526cead4105f82c398d8d4c7954efa3bab6b/compiler/rustc_target/src/spec/targets/i686_unknown_uefi.rs#L22-L23 https://github.com/rust-lang/rust/blob/84ac80f1921afc243d71fd0caaa4f2838c294102/compiler/rustc_target/src/spec/targets/x86_64h_apple_darwin.rs#L18-L23 So... let's update the comment to match reality, I guess? The claim that they overwrite `-Ctarget-cpu` is based on - for `native`, the comment in the apple target spec quoted above - for other CPU strings, the assumption that `LLVMRustCreateTargetMachine` will apply these features after doing whatever the base CPU model does. I am not sure how to check that, I hope some LLVM backend people can chime in. :)
2 parents 1453cce + 5c0dfc6 commit 2f6e855

File tree

1 file changed

+4
-3
lines changed
  • compiler/rustc_target/src/spec

1 file changed

+4
-3
lines changed

Diff for: compiler/rustc_target/src/spec/mod.rs

+4-3
Original file line numberDiff line numberDiff line change
@@ -2097,9 +2097,10 @@ pub struct TargetOptions {
20972097
/// Default CPU to pass to LLVM. Corresponds to `llc -mcpu=$cpu`. Defaults
20982098
/// to "generic".
20992099
pub cpu: StaticCow<str>,
2100-
/// Default target features to pass to LLVM. These features will *always* be
2101-
/// passed, and cannot be disabled even via `-C`. Corresponds to `llc
2102-
/// -mattr=$features`.
2100+
/// Default target features to pass to LLVM. These features overwrite
2101+
/// `-Ctarget-cpu` but can be overwritten with `-Ctarget-features`.
2102+
/// Corresponds to `llc -mattr=$features`.
2103+
/// Note that these are LLVM feature names, not Rust feature names!
21032104
pub features: StaticCow<str>,
21042105
/// Direct or use GOT indirect to reference external data symbols
21052106
pub direct_access_external_data: Option<bool>,

0 commit comments

Comments
 (0)