Implement C _FloatN, _FloatNx types.
[official-gcc.git] / gcc / testsuite / gcc.dg / torture / calleesave-sse.c
blob76db20ef67cc9fc5d1fb11d4c3cc201577033348
1 /* { dg-do run } */
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)
11 *h = 0;
12 return a * b + b + c;
15 __attribute__ ((noinline)) static int
16 boo (double a, double b, double c, double d)
18 return c * b + a + b;
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));
29 int main ()
31 double a = 2.0, b = 3.0, c = 4.0, d = 5.0;
32 double r1, r2;
33 int aa;
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);
40 if (r1 != r2)
41 abort ();
42 return 0;