| /* PR target/49244 */ |
| /* { dg-do run } */ |
| /* { dg-options "-O2 -g" } */ |
| |
| int cnt; |
| |
| __attribute__((noinline, noclone)) void |
| bar (void) |
| { |
| cnt++; |
| } |
| |
| #include "pr49244-1.c" |
| |
| int a; |
| long int b; |
| unsigned long int c; |
| unsigned short int d; |
| |
| int |
| main () |
| { |
| __atomic_store_n (&a, 15, __ATOMIC_RELAXED); |
| if (f1 (&a, 2) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 15 |
| || f1 (&a, 4) != 0 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 31) |
| __builtin_abort (); |
| if (f2 (&a, 1) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 31 |
| || f2 (&a, 5) != 0 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 63) |
| __builtin_abort (); |
| __atomic_store_n (&b, 24, __ATOMIC_RELAXED); |
| if (f3 (&b, 2) != 1 || __atomic_load_n (&b, __ATOMIC_RELAXED) != 28 |
| || f3 (&b, 3) != 0 || __atomic_load_n (&b, __ATOMIC_RELAXED) != 28) |
| __builtin_abort (); |
| __atomic_store_n (&a, 0, __ATOMIC_RELAXED); |
| if (f4 (&a) != 0 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 128 |
| || f4 (&a) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 128) |
| __builtin_abort (); |
| if (f5 (&a) != 0 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8320 |
| || f5 (&a) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8320) |
| __builtin_abort (); |
| if (f6 (&a) != 0 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8321 |
| || f6 (&a) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8321) |
| __builtin_abort (); |
| if (cnt != 0 |
| || (f7 (&a, 7), cnt) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8193 |
| || (f7 (&a, 7), cnt) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8321) |
| __builtin_abort (); |
| if ((f8 (&a, 7), cnt) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8193 |
| || (f8 (&a, 7), cnt) != 2 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8321) |
| __builtin_abort (); |
| if (f9 (&a, 13) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 129 |
| || f9 (&a, 13) != 0 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8321) |
| __builtin_abort (); |
| if (f10 (&a) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8193 |
| || f10 (&a) != 0 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8321) |
| __builtin_abort (); |
| if (f11 (&a) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 129 |
| || f11 (&a) != 0 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8321) |
| __builtin_abort (); |
| if (f12 (&a) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8320 |
| || f12 (&a) != 0 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8321) |
| __builtin_abort (); |
| if (f13 (&a, 7) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8193 |
| || f13 (&a, 7) != 0 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8193) |
| __builtin_abort (); |
| if (f14 (&a, 13) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 1 |
| || f14 (&a, 13) != 0 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 1) |
| __builtin_abort (); |
| if (f15 (&a, 0) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 0 |
| || f15 (&a, 0) != 0 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 0) |
| __builtin_abort (); |
| __atomic_store_n (&a, 8321, __ATOMIC_RELAXED); |
| if (f16 (&a) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8193 |
| || f16 (&a) != 0 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8193) |
| __builtin_abort (); |
| if (f17 (&a) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 1 |
| || f17 (&a) != 0 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 1) |
| __builtin_abort (); |
| if (f18 (&a) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 0 |
| || f18 (&a) != 0 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 0) |
| __builtin_abort (); |
| if (f19 (&c, 7) != 1 || __atomic_load_n (&c, __ATOMIC_RELAXED) != 128 |
| || f19 (&c, 7) != 0 || __atomic_load_n (&c, __ATOMIC_RELAXED) != 0) |
| __builtin_abort (); |
| if (f20 (&c) != 0 || __atomic_load_n (&c, __ATOMIC_RELAXED) != 128 |
| || f20 (&c) != 1 || __atomic_load_n (&c, __ATOMIC_RELAXED) != 0) |
| __builtin_abort (); |
| __atomic_store_n (&a, 128, __ATOMIC_RELAXED); |
| if (f21 (&a, 4) != 0 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 144 |
| || f21 (&a, 4) != 16 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 144) |
| __builtin_abort (); |
| __atomic_store_n (&c, 1, __ATOMIC_RELAXED); |
| if (f22 (&c) != 128 || __atomic_load_n (&c, __ATOMIC_RELAXED) != 129 |
| || f22 (&c) != 0 || __atomic_load_n (&c, __ATOMIC_RELAXED) != 1) |
| __builtin_abort (); |
| if (f23 (&c) != 0 || __atomic_load_n (&c, __ATOMIC_RELAXED) != 129 |
| || f23 (&c) != 128 || __atomic_load_n (&c, __ATOMIC_RELAXED) != 1) |
| __builtin_abort (); |
| if (f24 (&d) != 0 || __atomic_load_n (&d, __ATOMIC_RELAXED) != 128 |
| || f24 (&d) != 1 || __atomic_load_n (&d, __ATOMIC_RELAXED) != 128) |
| __builtin_abort (); |
| __atomic_store_n (&d, 1, __ATOMIC_RELAXED); |
| if (f25 (&d) != 0 || __atomic_load_n (&d, __ATOMIC_RELAXED) != 129 |
| || f25 (&d) != 1 || __atomic_load_n (&d, __ATOMIC_RELAXED) != 129 |
| || cnt != 2) |
| __builtin_abort (); |
| return 0; |
| } |