]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR middle-end/37850 (infinite recursive call to __mulsc3 when multiplying not...
authorRichard Guenther <rguenther@suse.de>
Tue, 10 Mar 2009 15:42:51 +0000 (15:42 +0000)
committerNathan Froyd <froydnj@gcc.gnu.org>
Tue, 10 Mar 2009 15:42:51 +0000 (15:42 +0000)
PR middle-end/37850
* libgcc2.c (__mulMODE3): Use explicit assignments to form the
result.
(__divMODE3): Likewise.

Co-Authored-By: Nathan Froyd <froydnj@codesourcery.com>
From-SVN: r144751

gcc/ChangeLog
gcc/libgcc2.c

index 341bcc6155b7f1b81988d4ca57966d26319aa7bb..7325c220e12f1a79dc4243c5117ccdebc16b9039 100644 (file)
@@ -1,3 +1,11 @@
+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-03-09  Jakub Jelinek  <jakub@redhat.com>
 
        PR tree-optimization/39394
index 08f1ee69732a8eedfddd4f7552bda37d37ed24a8..0966ac216c230366a2286c254031010134689bba 100644 (file)
@@ -1831,6 +1831,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;
@@ -1887,7 +1888,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 */
 
@@ -1898,6 +1901,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
@@ -1943,7 +1947,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 */