| /* This testcase ICEd on IA-32 because the backend was inconsistent whether |
| to allow addends for @dtpoff relocs or not. */ |
| /* { dg-do compile } */ |
| /* { dg-require-effective-target fpic } */ |
| /* { dg-options "-O2 -fpic" } */ |
| /* { dg-require-effective-target tls } */ |
| |
| struct S { |
| int s0, s1, s2, s3; |
| }; |
| static __thread struct S x; |
| extern void abort (void); |
| extern void exit (int); |
| |
| void |
| foo (struct S *s) |
| { |
| s->s2 = 231; |
| } |
| |
| void |
| bar (void) |
| { |
| if (x.s0 == 231 || x.s2 != 231) |
| abort (); |
| } |
| |
| int |
| main () |
| { |
| foo (&x); |
| bar (); |
| exit (0); |
| } |