]> git.proxmox.com Git - rustc.git/blame - src/test/ui/non-integer-atomic.rs
New upstream version 1.54.0+dfsg1
[rustc.git] / src / test / ui / non-integer-atomic.rs
CommitLineData
dfeec247
XL
1// build-fail
2
a7813a04 3#![feature(core_intrinsics)]
54a0048b 4#![allow(warnings)]
abe05a73 5#![crate_type = "rlib"]
54a0048b
SL
6
7use std::intrinsics;
8
9#[derive(Copy, Clone)]
abe05a73
XL
10pub struct Foo(i64);
11pub type Bar = &'static Fn();
12pub type Quux = [u8; 100];
54a0048b 13
abe05a73 14pub unsafe fn test_bool_load(p: &mut bool, v: bool) {
54a0048b
SL
15 intrinsics::atomic_load(p);
16 //~^ ERROR `atomic_load` intrinsic: expected basic integer type, found `bool`
17}
18
abe05a73 19pub unsafe fn test_bool_store(p: &mut bool, v: bool) {
54a0048b
SL
20 intrinsics::atomic_store(p, v);
21 //~^ ERROR `atomic_store` intrinsic: expected basic integer type, found `bool`
22}
23
abe05a73 24pub unsafe fn test_bool_xchg(p: &mut bool, v: bool) {
54a0048b
SL
25 intrinsics::atomic_xchg(p, v);
26 //~^ ERROR `atomic_xchg` intrinsic: expected basic integer type, found `bool`
27}
28
abe05a73 29pub unsafe fn test_bool_cxchg(p: &mut bool, v: bool) {
54a0048b
SL
30 intrinsics::atomic_cxchg(p, v, v);
31 //~^ ERROR `atomic_cxchg` intrinsic: expected basic integer type, found `bool`
32}
33
abe05a73 34pub unsafe fn test_Foo_load(p: &mut Foo, v: Foo) {
54a0048b
SL
35 intrinsics::atomic_load(p);
36 //~^ ERROR `atomic_load` intrinsic: expected basic integer type, found `Foo`
37}
38
abe05a73 39pub unsafe fn test_Foo_store(p: &mut Foo, v: Foo) {
54a0048b
SL
40 intrinsics::atomic_store(p, v);
41 //~^ ERROR `atomic_store` intrinsic: expected basic integer type, found `Foo`
42}
43
abe05a73 44pub unsafe fn test_Foo_xchg(p: &mut Foo, v: Foo) {
54a0048b
SL
45 intrinsics::atomic_xchg(p, v);
46 //~^ ERROR `atomic_xchg` intrinsic: expected basic integer type, found `Foo`
47}
48
abe05a73 49pub unsafe fn test_Foo_cxchg(p: &mut Foo, v: Foo) {
54a0048b
SL
50 intrinsics::atomic_cxchg(p, v, v);
51 //~^ ERROR `atomic_cxchg` intrinsic: expected basic integer type, found `Foo`
52}
53
abe05a73 54pub unsafe fn test_Bar_load(p: &mut Bar, v: Bar) {
54a0048b 55 intrinsics::atomic_load(p);
1b1a35ee 56 //~^ ERROR expected basic integer type, found `&dyn Fn()`
54a0048b
SL
57}
58
abe05a73 59pub unsafe fn test_Bar_store(p: &mut Bar, v: Bar) {
54a0048b 60 intrinsics::atomic_store(p, v);
1b1a35ee 61 //~^ ERROR expected basic integer type, found `&dyn Fn()`
54a0048b
SL
62}
63
abe05a73 64pub unsafe fn test_Bar_xchg(p: &mut Bar, v: Bar) {
54a0048b 65 intrinsics::atomic_xchg(p, v);
1b1a35ee 66 //~^ ERROR expected basic integer type, found `&dyn Fn()`
54a0048b
SL
67}
68
abe05a73 69pub unsafe fn test_Bar_cxchg(p: &mut Bar, v: Bar) {
54a0048b 70 intrinsics::atomic_cxchg(p, v, v);
1b1a35ee 71 //~^ ERROR expected basic integer type, found `&dyn Fn()`
54a0048b
SL
72}
73
abe05a73 74pub unsafe fn test_Quux_load(p: &mut Quux, v: Quux) {
54a0048b
SL
75 intrinsics::atomic_load(p);
76 //~^ ERROR `atomic_load` intrinsic: expected basic integer type, found `[u8; 100]`
77}
78
abe05a73 79pub unsafe fn test_Quux_store(p: &mut Quux, v: Quux) {
54a0048b
SL
80 intrinsics::atomic_store(p, v);
81 //~^ ERROR `atomic_store` intrinsic: expected basic integer type, found `[u8; 100]`
82}
83
abe05a73 84pub unsafe fn test_Quux_xchg(p: &mut Quux, v: Quux) {
54a0048b
SL
85 intrinsics::atomic_xchg(p, v);
86 //~^ ERROR `atomic_xchg` intrinsic: expected basic integer type, found `[u8; 100]`
87}
88
abe05a73 89pub unsafe fn test_Quux_cxchg(p: &mut Quux, v: Quux) {
54a0048b
SL
90 intrinsics::atomic_cxchg(p, v, v);
91 //~^ ERROR `atomic_cxchg` intrinsic: expected basic integer type, found `[u8; 100]`
92}