| /* { dg-do compile } */ | |
| /* { dg-require-effective-target tls } */ | |
| /* { dg-skip-if "" { arc*-*-elf* } } */ | |
| /* { dg-options "-O3 -std=gnu99" } */ | |
| /* Check if addressing the `pos` member of struct is done via tls | |
| mechanism. */ | |
| struct callchain_cursor | |
| { | |
| int last; | |
| long long pos; | |
| } __thread a; | |
| void fn1 (struct callchain_cursor *p1) | |
| { | |
| p1->pos++; | |
| } | |
| extern void fn3 (void); | |
| void fn2 (void) | |
| { | |
| struct callchain_cursor *b = &a; | |
| while (1) | |
| { | |
| fn3 (); | |
| fn1 (b); | |
| } | |
| } | |
| /* { dg-final { scan-assembler "r25,@a@tpoff" } } */ |