URL
https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk
Subversion Repositories openrisc_me
[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.5.1/] [gcc/] [testsuite/] [gcc.dg/] [torture/] [calleesave-sse.c] - Rev 298
Compare with Previous | Blame | View Log
/* { dg-do run } */ /* { dg-options "-fno-omit-frame-pointer" } */ #define alloca __builtin_alloca extern void abort (void); __attribute__ ((noinline)) static double bar (double a, double b, double c, double d, char *h) { *h = 0; return a * b + b + c; } __attribute__ ((noinline)) static int boo (double a, double b, double c, double d) { return c * b + a + b; } __attribute__ ((noinline)) static double foo (double a, double b, double c, double d) { int aa = boo (b, c, d, a); return bar (a, b, c, d, (char *) alloca (aa)) + bar (d, c, b, a, (char *) alloca (aa)); } int main () { double a = 2.0, b = 3.0, c = 4.0, d = 5.0; double r1, r2; int aa; aa = boo (b, c, d, a); r1 = bar (a, b, c, d, (char *) alloca (aa)) + bar (d, c, b, a, (char *) alloca (aa)); r2 = foo (a, b, c, d); if (r1 != r2) abort (); return 0; }