Auto merge of #86922 - joshtriplett:target-abi, r=oli-obk
target abi Implement cfg(target_abi) (RFC 2992) Add an `abi` field to `TargetOptions`, defaulting to "". Support using `cfg(target_abi = "...")` for conditional compilation on that field. Gated by `feature(cfg_target_abi)`. Add a test for `target_abi`, and a test for the feature gate. Add `target_abi` to tidy as a platform-specific cfg. Update targets to use `target_abi` All eabi targets have `target_abi = "eabi".` All eabihf targets have `target_abi = "eabihf"`. `armv6_unknown_freebsd` and `armv7_unknown_freebsd` have `target_abi = "eabihf"`. All abi64 targets have `target_abi = "abi64"`. All ilp32 targets have `target_abi = "ilp32"`. All softfloat targets have `target_abi = "softfloat"`. All *-uwp-windows-* targets have `target_abi = "uwp"`. All spe targets have `target_abi = "spe"`. All macabi targets have `target_abi = "macabi"`. aarch64-apple-ios-sim has `target_abi = "sim"`. `x86_64-fortanix-unknown-sgx` has `target_abi = "fortanix"`. `x86_64-unknown-linux-gnux32` has `target_abi = "x32"`. Add FIXME entries for targets for which existing values need to change once `cfg_target_abi` becomes stable. (All of them are tier 3 targets.) Add a test for `target_abi` in `--print cfg`.
This commit is contained in:
commit
ca99e3eb3a
62 changed files with 170 additions and 8 deletions
10
src/test/ui/cfg/cfg-target-abi.rs
Normal file
10
src/test/ui/cfg/cfg-target-abi.rs
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
// run-pass
|
||||
#![feature(cfg_target_abi)]
|
||||
|
||||
#[cfg(target_abi = "eabihf")]
|
||||
pub fn main() {
|
||||
}
|
||||
|
||||
#[cfg(not(target_abi = "eabihf"))]
|
||||
pub fn main() {
|
||||
}
|
||||
11
src/test/ui/feature-gates/feature-gate-cfg-target-abi.rs
Normal file
11
src/test/ui/feature-gates/feature-gate-cfg-target-abi.rs
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
#[cfg(target_abi = "x")] //~ ERROR `cfg(target_abi)` is experimental
|
||||
#[cfg_attr(target_abi = "x", x)] //~ ERROR `cfg(target_abi)` is experimental
|
||||
struct Foo(u64, u64);
|
||||
|
||||
#[cfg(not(any(all(target_abi = "x"))))] //~ ERROR `cfg(target_abi)` is experimental
|
||||
fn foo() {}
|
||||
|
||||
fn main() {
|
||||
cfg!(target_abi = "x");
|
||||
//~^ ERROR `cfg(target_abi)` is experimental and subject to change
|
||||
}
|
||||
39
src/test/ui/feature-gates/feature-gate-cfg-target-abi.stderr
Normal file
39
src/test/ui/feature-gates/feature-gate-cfg-target-abi.stderr
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
error[E0658]: `cfg(target_abi)` is experimental and subject to change
|
||||
--> $DIR/feature-gate-cfg-target-abi.rs:2:12
|
||||
|
|
||||
LL | #[cfg_attr(target_abi = "x", x)]
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: see issue #80970 <https://github.com/rust-lang/rust/issues/80970> for more information
|
||||
= help: add `#![feature(cfg_target_abi)]` to the crate attributes to enable
|
||||
|
||||
error[E0658]: `cfg(target_abi)` is experimental and subject to change
|
||||
--> $DIR/feature-gate-cfg-target-abi.rs:1:7
|
||||
|
|
||||
LL | #[cfg(target_abi = "x")]
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: see issue #80970 <https://github.com/rust-lang/rust/issues/80970> for more information
|
||||
= help: add `#![feature(cfg_target_abi)]` to the crate attributes to enable
|
||||
|
||||
error[E0658]: `cfg(target_abi)` is experimental and subject to change
|
||||
--> $DIR/feature-gate-cfg-target-abi.rs:5:19
|
||||
|
|
||||
LL | #[cfg(not(any(all(target_abi = "x"))))]
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: see issue #80970 <https://github.com/rust-lang/rust/issues/80970> for more information
|
||||
= help: add `#![feature(cfg_target_abi)]` to the crate attributes to enable
|
||||
|
||||
error[E0658]: `cfg(target_abi)` is experimental and subject to change
|
||||
--> $DIR/feature-gate-cfg-target-abi.rs:9:10
|
||||
|
|
||||
LL | cfg!(target_abi = "x");
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: see issue #80970 <https://github.com/rust-lang/rust/issues/80970> for more information
|
||||
= help: add `#![feature(cfg_target_abi)]` to the crate attributes to enable
|
||||
|
||||
error: aborting due to 4 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0658`.
|
||||
Loading…
Add table
Add a link
Reference in a new issue