1 /* PR target/32338 */ 2 /* { dg-do link } */ 3 /* { dg-options "-O2 -fno-omit-frame-pointer" } */ 4 5 struct S 6 { 7 }; 8 9 int 10 __attribute__((noinline)) foo(struct S * d)11foo (struct S *d) 12 { 13 return 2; 14 } 15 16 int 17 __attribute__((noinline)) bar(struct S * d)18bar (struct S *d) 19 { 20 return 4; 21 } 22 23 int 24 __attribute__((noinline)) fnl(char const * q)25fnl (char const *q) 26 { 27 return __builtin_strlen (q); 28 } 29 30 int 31 __attribute__((noinline)) baz(struct S * d,char const * q)32baz (struct S *d, char const *q) 33 { 34 unsigned int len; 35 len = fnl (q); 36 if (len > 512) 37 return bar (d); 38 return foo (d); 39 } 40 41 int main(int argc,char * argv[])42main (int argc, char *argv[]) 43 { 44 if (argc > 30) 45 return baz ((void *) 0, "abcde"); 46 return 0; 47 } 48