]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR middle-end/41009 (FAIL: gcc.c-torture/execute/20070614-1.c execution, -O0)
authorJohn David Anglin <dave.anglin@nrc-cnrc.gc.ca>
Fri, 18 Sep 2009 14:34:31 +0000 (14:34 +0000)
committerJohn David Anglin <danglin@gcc.gnu.org>
Fri, 18 Sep 2009 14:34:31 +0000 (14:34 +0000)
PR middle-end/41009
Backport from mainline
2009-03-10  Richard Guenther  <rguenther@suse.de>
Nathan Froyd  <froydnj@codesourcery.com>

PR middle-end/37850
* libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
(__divMODE3): Likewise.

From-SVN: r151846

gcc/ChangeLog
gcc/libgcc2.c

index 1be383b9f98e1e1f884b567c0b55a56a120ac5ff..d73c1a3c63b745298ea71d40133cd85d59aa7d51 100644 (file)
@@ -1,3 +1,14 @@
+2009-09-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
+
+       PR middle-end/41009
+       Backport from mainline
+       2009-03-10  Richard Guenther  <rguenther@suse.de>
+       Nathan Froyd  <froydnj@codesourcery.com>
+
+       PR middle-end/37850
+       * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
+       (__divMODE3): Likewise.
+
 2009-09-15  Uros Bizjak  <ubizjak@gmail.com>
 
        * config/alpha/alpha.md (smaxsf3): Disable for IEEE mode.
index 792bfe69136ede1e1daedf3d95ee147be534dd58..ddfa53b4b8ba519c78b673a71d84002b2ecbdc5a 100644 (file)
@@ -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 */