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)11 foo (struct S *d)
12 {
13   return 2;
14 }
15 
16 int
17 __attribute__((noinline))
bar(struct S * d)18 bar (struct S *d)
19 {
20   return 4;
21 }
22 
23 int
24 __attribute__((noinline))
fnl(char const * q)25 fnl (char const *q)
26 {
27   return __builtin_strlen (q);
28 }
29 
30 int
31 __attribute__((noinline))
baz(struct S * d,char const * q)32 baz (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[])42 main (int argc, char *argv[])
43 {
44   if (argc > 30)
45     return baz ((void *) 0, "abcde");
46   return 0;
47 }
48