2 /* { dg-options "-fno-omit-frame-pointer" } */
3 /* { dg-require-effective-target alloca } */
5 #define alloca __builtin_alloca
6 extern void abort (void);
8 __attribute__ ((noinline
)) static double
9 bar (double a
, double b
, double c
, double d
, char *h
)
15 __attribute__ ((noinline
)) static int
16 boo (double a
, double b
, double c
, double d
)
21 __attribute__ ((noinline
)) static double
22 foo (double a
, double b
, double c
, double d
)
24 int aa
= boo (b
, c
, d
, a
);
25 return bar (a
, b
, c
, d
, (char *) alloca (aa
))
26 + bar (d
, c
, b
, a
, (char *) alloca (aa
));
31 double a
= 2.0, b
= 3.0, c
= 4.0, d
= 5.0;
35 aa
= boo (b
, c
, d
, a
);
36 r1
= bar (a
, b
, c
, d
, (char *) alloca (aa
))
37 + bar (d
, c
, b
, a
, (char *) alloca (aa
));
38 r2
= foo (a
, b
, c
, d
);