Correct alignment of atomic types and (re)add Atomic{I,U}128
LLVM requires that atomic loads and stores be aligned to at least the size of the type.
This commit is contained in:
parent
10f42cbde0
commit
01674fbe06
8 changed files with 169 additions and 20 deletions
|
|
@ -61,6 +61,16 @@ pub unsafe fn atomic_u64(x: *mut u64) {
|
|||
pub unsafe fn atomic_i64(x: *mut i64) {
|
||||
atomic_xadd(x, 1);
|
||||
}
|
||||
#[cfg(target_has_atomic = "128")]
|
||||
//~^ ERROR `cfg(target_has_atomic)` is experimental and subject to change (see issue #32976)
|
||||
pub unsafe fn atomic_u128(x: *mut u128) {
|
||||
atomic_xadd(x, 1);
|
||||
}
|
||||
#[cfg(target_has_atomic = "128")]
|
||||
//~^ ERROR `cfg(target_has_atomic)` is experimental and subject to change (see issue #32976)
|
||||
pub unsafe fn atomic_i128(x: *mut i128) {
|
||||
atomic_xadd(x, 1);
|
||||
}
|
||||
#[cfg(target_has_atomic = "ptr")]
|
||||
//~^ ERROR `cfg(target_has_atomic)` is experimental and subject to change (see issue #32976)
|
||||
pub unsafe fn atomic_usize(x: *mut usize) {
|
||||
|
|
@ -81,6 +91,8 @@ fn main() {
|
|||
//~^ ERROR `cfg(target_has_atomic)` is experimental and subject to change (see issue #32976)
|
||||
cfg!(target_has_atomic = "64");
|
||||
//~^ ERROR `cfg(target_has_atomic)` is experimental and subject to change (see issue #32976)
|
||||
cfg!(target_has_atomic = "128");
|
||||
//~^ ERROR `cfg(target_has_atomic)` is experimental and subject to change (see issue #32976)
|
||||
cfg!(target_has_atomic = "ptr");
|
||||
//~^ ERROR `cfg(target_has_atomic)` is experimental and subject to change (see issue #32976)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ LL | #[cfg(target_has_atomic = "64")]
|
|||
error[E0658]: `cfg(target_has_atomic)` is experimental and subject to change (see issue #32976)
|
||||
--> $DIR/feature-gate-cfg-target-has-atomic.rs:64:7
|
||||
|
|
||||
LL | #[cfg(target_has_atomic = "ptr")]
|
||||
LL | #[cfg(target_has_atomic = "128")]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: add #![feature(cfg_target_has_atomic)] to the crate attributes to enable
|
||||
|
|
@ -73,13 +73,29 @@ LL | #[cfg(target_has_atomic = "ptr")]
|
|||
error[E0658]: `cfg(target_has_atomic)` is experimental and subject to change (see issue #32976)
|
||||
--> $DIR/feature-gate-cfg-target-has-atomic.rs:69:7
|
||||
|
|
||||
LL | #[cfg(target_has_atomic = "128")]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: add #![feature(cfg_target_has_atomic)] to the crate attributes to enable
|
||||
|
||||
error[E0658]: `cfg(target_has_atomic)` is experimental and subject to change (see issue #32976)
|
||||
--> $DIR/feature-gate-cfg-target-has-atomic.rs:74:7
|
||||
|
|
||||
LL | #[cfg(target_has_atomic = "ptr")]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: add #![feature(cfg_target_has_atomic)] to the crate attributes to enable
|
||||
|
||||
error[E0658]: `cfg(target_has_atomic)` is experimental and subject to change (see issue #32976)
|
||||
--> $DIR/feature-gate-cfg-target-has-atomic.rs:76:10
|
||||
--> $DIR/feature-gate-cfg-target-has-atomic.rs:79:7
|
||||
|
|
||||
LL | #[cfg(target_has_atomic = "ptr")]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: add #![feature(cfg_target_has_atomic)] to the crate attributes to enable
|
||||
|
||||
error[E0658]: `cfg(target_has_atomic)` is experimental and subject to change (see issue #32976)
|
||||
--> $DIR/feature-gate-cfg-target-has-atomic.rs:86:10
|
||||
|
|
||||
LL | cfg!(target_has_atomic = "8");
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
@ -87,7 +103,7 @@ LL | cfg!(target_has_atomic = "8");
|
|||
= help: add #![feature(cfg_target_has_atomic)] to the crate attributes to enable
|
||||
|
||||
error[E0658]: `cfg(target_has_atomic)` is experimental and subject to change (see issue #32976)
|
||||
--> $DIR/feature-gate-cfg-target-has-atomic.rs:78:10
|
||||
--> $DIR/feature-gate-cfg-target-has-atomic.rs:88:10
|
||||
|
|
||||
LL | cfg!(target_has_atomic = "16");
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
@ -95,7 +111,7 @@ LL | cfg!(target_has_atomic = "16");
|
|||
= help: add #![feature(cfg_target_has_atomic)] to the crate attributes to enable
|
||||
|
||||
error[E0658]: `cfg(target_has_atomic)` is experimental and subject to change (see issue #32976)
|
||||
--> $DIR/feature-gate-cfg-target-has-atomic.rs:80:10
|
||||
--> $DIR/feature-gate-cfg-target-has-atomic.rs:90:10
|
||||
|
|
||||
LL | cfg!(target_has_atomic = "32");
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
@ -103,7 +119,7 @@ LL | cfg!(target_has_atomic = "32");
|
|||
= help: add #![feature(cfg_target_has_atomic)] to the crate attributes to enable
|
||||
|
||||
error[E0658]: `cfg(target_has_atomic)` is experimental and subject to change (see issue #32976)
|
||||
--> $DIR/feature-gate-cfg-target-has-atomic.rs:82:10
|
||||
--> $DIR/feature-gate-cfg-target-has-atomic.rs:92:10
|
||||
|
|
||||
LL | cfg!(target_has_atomic = "64");
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
@ -111,13 +127,21 @@ LL | cfg!(target_has_atomic = "64");
|
|||
= help: add #![feature(cfg_target_has_atomic)] to the crate attributes to enable
|
||||
|
||||
error[E0658]: `cfg(target_has_atomic)` is experimental and subject to change (see issue #32976)
|
||||
--> $DIR/feature-gate-cfg-target-has-atomic.rs:84:10
|
||||
--> $DIR/feature-gate-cfg-target-has-atomic.rs:94:10
|
||||
|
|
||||
LL | cfg!(target_has_atomic = "128");
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: add #![feature(cfg_target_has_atomic)] to the crate attributes to enable
|
||||
|
||||
error[E0658]: `cfg(target_has_atomic)` is experimental and subject to change (see issue #32976)
|
||||
--> $DIR/feature-gate-cfg-target-has-atomic.rs:96:10
|
||||
|
|
||||
LL | cfg!(target_has_atomic = "ptr");
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: add #![feature(cfg_target_has_atomic)] to the crate attributes to enable
|
||||
|
||||
error: aborting due to 15 previous errors
|
||||
error: aborting due to 18 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0658`.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue