int i; | |
__attribute__((noinline, noclone)) void | |
bar (char *p) | |
{ | |
if (i < 1 || i > 6) | |
__builtin_abort (); | |
if (__builtin_memcmp (p, "abcdefg", i + 1) != 0) | |
__builtin_abort (); | |
__builtin_memset (p, ' ', 7); | |
} | |
__attribute__((noinline, noclone)) void | |
foo (char *p, unsigned long l) | |
{ | |
if (l < 1 || l > 6) | |
return; | |
char buf[7]; | |
__builtin_memcpy (buf, p, l + 1); | |
bar (buf); | |
} | |
int | |
main () | |
{ | |
for (i = 0; i < 16; i++) | |
foo ("abcdefghijklmnop", i); | |
return 0; | |
} |