/* { dg-require-effective-target fpic } */ | |
/* { dg-options "-Os -fpic" } */ | |
/* { dg-final { scan-assembler-not "str\[\\t \]*r.,\[\\t \]*.sp," } } */ | |
struct S | |
{ | |
int count; | |
char *addr; | |
}; | |
void func(const char*, const char*, int, const char*); | |
/* This function should not need to spill to the stack. */ | |
void test(struct S *p) | |
{ | |
int off = p->count; | |
while (p->count >= 0) | |
{ | |
const char *s = "xyz"; | |
if (*p->addr) s = "pqr"; | |
func("abcde", p->addr + off, off, s); | |
p->count--; | |
} | |
} |