From: John David Anglin Date: Fri, 18 Sep 2009 14:34:31 +0000 (+0000) Subject: re PR middle-end/41009 (FAIL: gcc.c-torture/execute/20070614-1.c execution, -O0) X-Git-Tag: releases/gcc-4.3.5~380 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0d2fc840da3cabe928348f1b2046cc7f157ef216;p=thirdparty%2Fgcc.git re PR middle-end/41009 (FAIL: gcc.c-torture/execute/20070614-1.c execution, -O0) PR middle-end/41009 Backport from mainline 2009-03-10 Richard Guenther Nathan Froyd PR middle-end/37850 * libgcc2.c (__mulMODE3): Use explicit assignments to form the result. (__divMODE3): Likewise. From-SVN: r151846 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1be383b9f98e..d73c1a3c63b7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2009-09-18 John David Anglin + + PR middle-end/41009 + Backport from mainline + 2009-03-10 Richard Guenther + Nathan Froyd + + PR middle-end/37850 + * libgcc2.c (__mulMODE3): Use explicit assignments to form the result. + (__divMODE3): Likewise. + 2009-09-15 Uros Bizjak * config/alpha/alpha.md (smaxsf3): Disable for IEEE mode. diff --git a/gcc/libgcc2.c b/gcc/libgcc2.c index 792bfe69136e..ddfa53b4b8ba 100644 --- a/gcc/libgcc2.c +++ b/gcc/libgcc2.c @@ -1830,6 +1830,7 @@ CTYPE CONCAT3(__mul,MODE,3) (MTYPE a, MTYPE b, MTYPE c, MTYPE d) { MTYPE ac, bd, ad, bc, x, y; + CTYPE res; ac = a * c; bd = b * d; @@ -1886,7 +1887,9 @@ CONCAT3(__mul,MODE,3) (MTYPE a, MTYPE b, MTYPE c, MTYPE d) } } - return x + I * y; + __real__ res = x; + __imag__ res = y; + return res; } #endif /* complex multiply */ @@ -1897,6 +1900,7 @@ CTYPE CONCAT3(__div,MODE,3) (MTYPE a, MTYPE b, MTYPE c, MTYPE d) { MTYPE denom, ratio, x, y; + CTYPE res; /* ??? We can get better behavior from logarithmic scaling instead of the division. But that would mean starting to link libgcc against @@ -1942,7 +1946,9 @@ CONCAT3(__div,MODE,3) (MTYPE a, MTYPE b, MTYPE c, MTYPE d) } } - return x + I * y; + __real__ res = x; + __imag__ res = y; + return res; } #endif /* complex divide */