blob: 8f1e7e90000a72d3749bf7b8cd7a2928de30f08b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
/* PR middle-end/88968 */
/* { dg-do compile } */
struct __attribute__((packed)) S {
unsigned int a : 16;
unsigned int b : 1;
} s;
void
foo (int y, int z)
{
#pragma omp atomic compare
s.a = s.a == y ? z : s.a;
}
int
bar (int y, int z)
{
int r;
#pragma omp atomic compare capture
{ r = s.a == y; if (r) { s.a = z; } }
return r;
}
int
baz (int y, int z)
{
int v;
#pragma omp atomic compare capture
if (s.a == y) { s.a = z; } else { v = s.a; }
return v;
}
int
qux (int y, int z)
{
int v;
#pragma omp atomic compare capture
v = s.a = s.a == y ? z : s.a;
return v;
}
|