[patch i386 4.4/trunk]: Fix sse restore for x86_64 in case of !sp_valid

Kai Tietz ktietz70@googlemail.com
Tue Sep 15 17:17:00 GMT 2009


Ok, here is a testcase of this issue for w64. Not sure if it shows the
issue for x64, too. Maybe somebody with a 4.4 or trunk version could
test.

I can add it to gcc.dg then.

Cheers,
Kai


-- 
|  (\_/) This is Bunny. Copy and paste
| (='.'=) Bunny into your signature to help
| (")_(") him gain world domination
-------------- next part --------------
#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;
}



More information about the Gcc-patches mailing list