From b93f3799a477e74ab9ce4f1a85b58c2fbf459298 Mon Sep 17 00:00:00 2001 From: geoffk Date: Thu, 28 Oct 1999 00:24:32 +0000 Subject: [PATCH] * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30224 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/config/rs6000/rs6000.md | 4 +++- 2 files changed, 9 insertions(+), 1 deletion(-) 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 + + * 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 * 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 -- 2.7.4