| /* PR target/78796 */ |
| /* { dg-do run } */ |
| /* { dg-options "-O2" } */ |
| /* { dg-additional-options "-mcmodel=large" { target aarch64-*-* } } */ |
| /* { dg-require-effective-target tls_runtime } */ |
| /* { dg-add-options tls } */ |
| |
| struct S { int a, b, c, d, e; }; |
| struct S t; |
| __thread struct S s; |
| |
| __attribute__((used, noinline, noclone)) void |
| foo (int *x, int *y) |
| { |
| asm volatile ("" : : "g" (x), "g" (y) : "memory"); |
| if (*x != 1 || *y != 2) |
| __builtin_abort (); |
| } |
| |
| __attribute__((used, noinline, noclone)) void |
| bar (void) |
| { |
| foo (&t.c, &s.c); |
| } |
| |
| int |
| main () |
| { |
| t.c = 1; |
| s.c = 2; |
| bar (); |
| return 0; |
| } |