/* PR rtl-optimization/57915 */ | |
/* { dg-do compile } */ | |
/* { dg-options "-Os" } */ | |
extern struct T { char a[8]; char b[16]; } t; | |
int c; | |
void foo (void); | |
extern inline char * | |
baz (char *x, const char *y) | |
{ | |
const char *e = y; | |
unsigned long f, g; | |
asm ("" : "+c" (f), "+D" (e) : "a" ('\0'), "X" (*e)); | |
g = e - 1 - y; | |
__builtin_memcpy (x, y, g); | |
x[g] = '\0'; | |
return x; | |
} | |
void | |
bar (void) | |
{ | |
char d[16]; | |
baz (d, t.b); | |
for (;;) | |
{ | |
foo (); | |
if (c) | |
baz (d, t.b); | |
} | |
} |