1 int i;
2
3 __attribute__((noinline, noclone)) void
bar(char * p)4 bar (char *p)
5 {
6 if (i < 1 || i > 6)
7 __builtin_abort ();
8 if (__builtin_memcmp (p, "abcdefg", i + 1) != 0)
9 __builtin_abort ();
10 __builtin_memset (p, ' ', 7);
11 }
12
13 __attribute__((noinline, noclone)) void
foo(char * p,unsigned long l)14 foo (char *p, unsigned long l)
15 {
16 if (l < 1 || l > 6)
17 return;
18 char buf[7];
19 __builtin_memcpy (buf, p, l + 1);
20 bar (buf);
21 }
22
23 int
main()24 main ()
25 {
26 for (i = 0; i < 16; i++)
27 foo ("abcdefghijklmnop", i);
28 return 0;
29 }
30