[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