Rollup merge of #136170 - taiki-e:atomics-32, r=workingjubilee
Reject unsound toggling of Arm atomics-32 target feature This target feature has the same semantics as RISC-V `forced-atomics` target feature that already marked as Forbidden (f5ed0cb217
) and toggling it can cause ABI incompatibility.2f348cb7ce/compiler/rustc_target/src/target_features.rs (L479-L483)
[Comment on feature definition in LLVM](7109f52197/llvm/lib/Target/ARM/ARMFeatures.td (L572-L574)
) also says: > Code built with this feature is not ABI-compatible with code built without this feature, if atomic variables are exposed across the ABI boundary. r? `@workingjubilee` or `@RalfJung` `@rustbot` label +O-Arm
This commit is contained in:
commit
0b1d717758
1 changed files with 5 additions and 0 deletions
|
@ -137,6 +137,11 @@ const ARM_FEATURES: &[(&str, Stability, ImpliedFeatures)] = &[
|
||||||
// tidy-alphabetical-start
|
// tidy-alphabetical-start
|
||||||
("aclass", Unstable(sym::arm_target_feature), &[]),
|
("aclass", Unstable(sym::arm_target_feature), &[]),
|
||||||
("aes", Unstable(sym::arm_target_feature), &["neon"]),
|
("aes", Unstable(sym::arm_target_feature), &["neon"]),
|
||||||
|
(
|
||||||
|
"atomics-32",
|
||||||
|
Stability::Forbidden { reason: "unsound because it changes the ABI of atomic operations" },
|
||||||
|
&[],
|
||||||
|
),
|
||||||
("crc", Unstable(sym::arm_target_feature), &[]),
|
("crc", Unstable(sym::arm_target_feature), &[]),
|
||||||
("d32", Unstable(sym::arm_target_feature), &[]),
|
("d32", Unstable(sym::arm_target_feature), &[]),
|
||||||
("dotprod", Unstable(sym::arm_target_feature), &["neon"]),
|
("dotprod", Unstable(sym::arm_target_feature), &["neon"]),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue