]> git.lizzy.rs Git - rust.git/blob - src/test/ui/feature-gates/feature-gate-cfg-target-has-atomic.rs
049fdd84d8c22e71a8dae4a329b97cfbe60f74fe
[rust.git] / src / test / ui / feature-gates / feature-gate-cfg-target-has-atomic.rs
1 #![feature(intrinsics, lang_items, no_core, rustc_attrs)]
2
3 #![crate_type="rlib"]
4 #![no_core]
5
6 extern "rust-intrinsic" {
7     fn atomic_xadd<T>(dst: *mut T, src: T) -> T;
8 }
9
10 #[lang = "sized"]
11 trait Sized {}
12 #[lang = "copy"]
13 trait Copy {}
14
15 #[cfg(target_has_atomic = "8")]
16 //~^ ERROR `cfg(target_has_atomic)` is experimental and subject to change
17 pub unsafe fn atomic_u8(x: *mut u8) {
18     atomic_xadd(x, 1);
19     atomic_xadd(x, 1);
20 }
21 #[cfg(target_has_atomic = "8")]
22 //~^ ERROR `cfg(target_has_atomic)` is experimental and subject to change
23 pub unsafe fn atomic_i8(x: *mut i8) {
24     atomic_xadd(x, 1);
25 }
26 #[cfg(target_has_atomic = "16")]
27 //~^ ERROR `cfg(target_has_atomic)` is experimental and subject to change
28 pub unsafe fn atomic_u16(x: *mut u16) {
29     atomic_xadd(x, 1);
30 }
31 #[cfg(target_has_atomic = "16")]
32 //~^ ERROR `cfg(target_has_atomic)` is experimental and subject to change
33 pub unsafe fn atomic_i16(x: *mut i16) {
34     atomic_xadd(x, 1);
35 }
36 #[cfg(target_has_atomic = "32")]
37 //~^ ERROR `cfg(target_has_atomic)` is experimental and subject to change
38 pub unsafe fn atomic_u32(x: *mut u32) {
39     atomic_xadd(x, 1);
40 }
41 #[cfg(target_has_atomic = "32")]
42 //~^ ERROR `cfg(target_has_atomic)` is experimental and subject to change
43 pub unsafe fn atomic_i32(x: *mut i32) {
44     atomic_xadd(x, 1);
45 }
46 #[cfg(target_has_atomic = "64")]
47 //~^ ERROR `cfg(target_has_atomic)` is experimental and subject to change
48 pub unsafe fn atomic_u64(x: *mut u64) {
49     atomic_xadd(x, 1);
50 }
51 #[cfg(target_has_atomic = "64")]
52 //~^ ERROR `cfg(target_has_atomic)` is experimental and subject to change
53 pub unsafe fn atomic_i64(x: *mut i64) {
54     atomic_xadd(x, 1);
55 }
56 #[cfg(target_has_atomic = "128")]
57 //~^ ERROR `cfg(target_has_atomic)` is experimental and subject to change
58 pub unsafe fn atomic_u128(x: *mut u128) {
59     atomic_xadd(x, 1);
60 }
61 #[cfg(target_has_atomic = "128")]
62 //~^ ERROR `cfg(target_has_atomic)` is experimental and subject to change
63 pub unsafe fn atomic_i128(x: *mut i128) {
64     atomic_xadd(x, 1);
65 }
66 #[cfg(target_has_atomic = "ptr")]
67 //~^ ERROR `cfg(target_has_atomic)` is experimental and subject to change
68 pub unsafe fn atomic_usize(x: *mut usize) {
69     atomic_xadd(x, 1);
70 }
71 #[cfg(target_has_atomic = "ptr")]
72 //~^ ERROR `cfg(target_has_atomic)` is experimental and subject to change
73 pub unsafe fn atomic_isize(x: *mut isize) {
74     atomic_xadd(x, 1);
75 }
76
77 fn main() {
78     cfg!(target_has_atomic = "8");
79     //~^ ERROR `cfg(target_has_atomic)` is experimental and subject to change
80     cfg!(target_has_atomic = "16");
81     //~^ ERROR `cfg(target_has_atomic)` is experimental and subject to change
82     cfg!(target_has_atomic = "32");
83     //~^ ERROR `cfg(target_has_atomic)` is experimental and subject to change
84     cfg!(target_has_atomic = "64");
85     //~^ ERROR `cfg(target_has_atomic)` is experimental and subject to change
86     cfg!(target_has_atomic = "128");
87     //~^ ERROR `cfg(target_has_atomic)` is experimental and subject to change
88     cfg!(target_has_atomic = "ptr");
89     //~^ ERROR `cfg(target_has_atomic)` is experimental and subject to change
90     cfg!(target_has_atomic_load_store = "8");
91     //~^ ERROR `cfg(target_has_atomic_load_store)` is experimental and subject to change
92     cfg!(target_has_atomic_load_store = "16");
93     //~^ ERROR `cfg(target_has_atomic_load_store)` is experimental and subject to change
94     cfg!(target_has_atomic_load_store = "32");
95     //~^ ERROR `cfg(target_has_atomic_load_store)` is experimental and subject to change
96     cfg!(target_has_atomic_load_store = "64");
97     //~^ ERROR `cfg(target_has_atomic_load_store)` is experimental and subject to change
98     cfg!(target_has_atomic_load_store = "128");
99     //~^ ERROR `cfg(target_has_atomic_load_store)` is experimental and subject to change
100     cfg!(target_has_atomic_load_store = "ptr");
101     //~^ ERROR `cfg(target_has_atomic_load_store)` is experimental and subject to change
102     cfg!(target_has_atomic_equal_alignment = "8");
103     //~^ ERROR `cfg(target_has_atomic_equal_alignment)` is experimental and subject to change
104     cfg!(target_has_atomic_equal_alignment = "16");
105     //~^ ERROR `cfg(target_has_atomic_equal_alignment)` is experimental and subject to change
106     cfg!(target_has_atomic_equal_alignment = "32");
107     //~^ ERROR `cfg(target_has_atomic_equal_alignment)` is experimental and subject to change
108     cfg!(target_has_atomic_equal_alignment = "64");
109     //~^ ERROR `cfg(target_has_atomic_equal_alignment)` is experimental and subject to change
110     cfg!(target_has_atomic_equal_alignment = "128");
111     //~^ ERROR `cfg(target_has_atomic_equal_alignment)` is experimental and subject to change
112     cfg!(target_has_atomic_equal_alignment = "ptr");
113     //~^ ERROR `cfg(target_has_atomic_equal_alignment)` is experimental and subject to change
114 }
115
116 #[macro_export]
117 #[rustc_builtin_macro]
118 macro_rules! cfg { () => () }