aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeoff Keating <geoffk@cygnus.com>1999-10-28 00:24:32 +0000
committerGeoffrey Keating <geoffk@gcc.gnu.org>1999-10-28 00:24:32 +0000
commit62961522f7b2e524e9266302aff321ef8579fb16 (patch)
tree1a9da0bc9f9dc40b2dca6da80cf643be81653c74
parente218fc41a887ae8f97649ad0ac79400654458f33 (diff)
downloadgcc-62961522f7b2e524e9266302aff321ef8579fb16.zip
gcc-62961522f7b2e524e9266302aff321ef8579fb16.tar.gz
gcc-62961522f7b2e524e9266302aff321ef8579fb16.tar.bz2
rs6000.md (movsf): Don't convert a SUBREG of the function return register into a plain REG until...
* 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
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/rs6000/rs6000.md4
2 files changed, 9 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fc5d466..7b90de6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index 7305436..7d313ab 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -6256,7 +6256,9 @@
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