| /* PR target/58595 */ |
| /* { dg-do run } */ |
| /* { dg-options "-O2" } */ |
| /* { dg-additional-options "-fpic" { target fpic } } */ |
| /* { dg-add-options tls } */ |
| /* { dg-require-effective-target tls_runtime } */ |
| /* { dg-require-effective-target sync_int_long } */ |
| |
| struct S { unsigned long a, b; }; |
| __thread struct S s; |
| void bar (unsigned long *); |
| |
| __attribute__((noinline)) void |
| foo (void) |
| { |
| int i; |
| for (i = 0; i < 10; i++) |
| __sync_fetch_and_add (&s.b, 1L); |
| } |
| |
| int |
| main () |
| { |
| s.b = 12; |
| foo (); |
| if (s.b != 22) |
| __builtin_abort (); |
| return 0; |
| } |