aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1992-09-19 15:42:53 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1992-09-19 15:42:53 -0400
commit4d9d7d9d3599160b7ffcb496c028d0461d9c1111 (patch)
tree8eee28d2d49175a82198a75bc9eadf28435442e5 /gcc
parent95ac8e67bcb7a8a4454c7cf2e48ee1cbd639992b (diff)
downloadgcc-4d9d7d9d3599160b7ffcb496c028d0461d9c1111.zip
gcc-4d9d7d9d3599160b7ffcb496c028d0461d9c1111.tar.gz
gcc-4d9d7d9d3599160b7ffcb496c028d0461d9c1111.tar.bz2
(reg_set_last): Allow old value to be a SUBREG.
From-SVN: r2170
Diffstat (limited to 'gcc')
-rw-r--r--gcc/rtlanal.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c
index 8ccae19..5b0af92 100644
--- a/gcc/rtlanal.c
+++ b/gcc/rtlanal.c
@@ -779,8 +779,8 @@ reg_set_last_1 (x, pat)
/* Return the last value to which REG was set prior to INSN. If we can't
find it easily, return 0.
- We only return a REG or constant because it is too hard to check if a
- MEM remains unchanged. */
+ We only return a REG, SUBREG, or constant because it is too hard to
+ check if a MEM remains unchanged. */
rtx
reg_set_last (x, insn)
@@ -818,7 +818,8 @@ reg_set_last (x, insn)
else if (reg_set_last_value)
{
if (CONSTANT_P (reg_set_last_value)
- || (GET_CODE (reg_set_last_value) == REG
+ || ((GET_CODE (reg_set_last_value) == REG
+ || GET_CODE (reg_set_last_value) == SUBREG)
&& ! reg_set_between_p (reg_set_last_value,
NEXT_INSN (insn), orig_insn)))
return reg_set_last_value;