32 lines
543 B
C
32 lines
543 B
C
/* { 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" } } */
|