]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
backport: re PR target/19019 (GCC ldouble format incompatibility with XLC long double)
authorDavid Edelsohn <edelsohn@gnu.org>
Fri, 25 Feb 2005 16:41:56 +0000 (16:41 +0000)
committerDavid Edelsohn <dje@gcc.gnu.org>
Fri, 25 Feb 2005 16:41:56 +0000 (11:41 -0500)
        Backport from mainline:
        2005-02-24  David Edelsohn  <edelsohn@gnu.org>
        PR target/19019
        * reload.c (operands_match_p): Only increment register number for
        SCALAR_INT_MODE_P modes in multiple hard registers.
        * config/rs6000/rs6000.md (trunctfdf2): Remove register constraints.
        Fix formatting.

From-SVN: r95536

gcc/ChangeLog
gcc/config/rs6000/rs6000.md
gcc/reload.c

index 6abb9a5dbcf77881b6a381a18f955d0d2c928bc6..2899a3965d7e0262e84c05ba5ae3be50bb5b892a 100644 (file)
@@ -1,3 +1,13 @@
+2005-02-25  David Edelsohn  <edelsohn@gnu.org>
+
+       Backport from mainline:
+       2005-02-24  David Edelsohn  <edelsohn@gnu.org>
+       PR target/19019
+       * reload.c (operands_match_p): Only increment register number for
+       SCALAR_INT_MODE_P modes in multiple hard registers.
+       * config/rs6000/rs6000.md (trunctfdf2): Remove register constraints.
+       Fix formatting.
+
 2005-02-24  Jakub Jelinek  <jakub@redhat.com>
 
        PR target/19019
index b67c210e2a9dec3a04e16d987f52db1f5ab85447..f4fd3df53f82996bdd6a8f7cc4b35fb8627a1079 100644 (file)
 })
 
 (define_expand "trunctfdf2"
-  [(set (match_operand:DF 0 "gpc_reg_operand" "=f")
-       (float_truncate:DF (match_operand:TF 1 "gpc_reg_operand" "f")))]
+  [(set (match_operand:DF 0 "gpc_reg_operand" "")
+       (float_truncate:DF (match_operand:TF 1 "gpc_reg_operand" "")))]
   "(DEFAULT_ABI == ABI_AIX || DEFAULT_ABI == ABI_DARWIN)
    && TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_LONG_DOUBLE_128"
-"")
+  "")
 
 (define_insn_and_split "trunctfdf2_internal1"
   [(set (match_operand:DF 0 "gpc_reg_operand" "=f,?f")
index ed70d00492e617855a674d387eb5717dad5f9334..9eae9ff7bfc0a8ad6c6b2b8378af84173f4fec3f 100644 (file)
@@ -2144,12 +2144,15 @@ operands_match_p (rtx x, rtx y)
        j = REGNO (y);
 
       /* On a WORDS_BIG_ENDIAN machine, point to the last register of a
-        multiple hard register group, so that for example (reg:DI 0) and
-        (reg:SI 1) will be considered the same register.  */
+        multiple hard register group of scalar integer registers, so that
+        for example (reg:DI 0) and (reg:SI 1) will be considered the same
+        register.  */
       if (WORDS_BIG_ENDIAN && GET_MODE_SIZE (GET_MODE (x)) > UNITS_PER_WORD
+         && SCALAR_INT_MODE_P (GET_MODE (x))
          && i < FIRST_PSEUDO_REGISTER)
        i += HARD_REGNO_NREGS (i, GET_MODE (x)) - 1;
       if (WORDS_BIG_ENDIAN && GET_MODE_SIZE (GET_MODE (y)) > UNITS_PER_WORD
+         && SCALAR_INT_MODE_P (GET_MODE (y))
          && j < FIRST_PSEUDO_REGISTER)
        j += HARD_REGNO_NREGS (j, GET_MODE (y)) - 1;