rs6000.md (movsf): Don't convert a SUBREG of the function return register into a...
authorGeoff Keating <geoffk@cygnus.com>
Thu, 28 Oct 1999 00:24:32 +0000 (00:24 +0000)
committerGeoffrey Keating <geoffk@gcc.gnu.org>
Thu, 28 Oct 1999 00:24:32 +0000 (00:24 +0000)
* config/rs6000/rs6000.md (movsf): Don't convert a SUBREG
of the function return register into a plain REG until
after function inlining is done.

From-SVN: r30224

gcc/ChangeLog
gcc/config/rs6000/rs6000.md

index fc5d4664409ae6036b86f7a531f01e14443660d1..7b90de63efc26a7187d6b0ca5ab7a6528a18339a 100644 (file)
@@ -1,3 +1,9 @@
+Thu Oct 28 10:20:02 1999  Geoffrey Keating  <geoffk@cygnus.com>
+
+       * config/rs6000/rs6000.md (movsf): Don't convert a SUBREG
+       of the function return register into a plain REG until
+       after function inlining is done.
+
 Wed Oct 27 15:21:46 1999  Richard Henderson  <rth@cygnus.com>
 
        * jump.c (jump_optimize_1): If we did cross-jumping, and
index 7305436bff6f89243009872e5509ea86d494b13e..7d313abcd34e5e45fe4aa095c41aee10fe1824c8 100644 (file)
      reg.  So expand it.  */
   if (GET_CODE (operands[0]) == SUBREG
       && GET_CODE (SUBREG_REG (operands[0])) == REG
-      && REGNO (SUBREG_REG (operands[0])) < FIRST_PSEUDO_REGISTER)
+      && REGNO (SUBREG_REG (operands[0])) < FIRST_PSEUDO_REGISTER
+      && (! REG_FUNCTION_VALUE_P (SUBREG_REG (operands[0]))
+         || ! rtx_equal_function_value_matters))
     operands[0] = alter_subreg (operands[0]);
   if (GET_CODE (operands[1]) == SUBREG
       && GET_CODE (SUBREG_REG (operands[1])) == REG