summaryrefslogtreecommitdiff
path: root/gcc/stupid.c
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1995-10-29 07:45:32 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1995-10-29 07:45:32 -0500
commit2d43e08975235eb5d3407cfd320685dcb909e4bb (patch)
treef53e80e093c506b4ad1edabd58b81e78710f541c /gcc/stupid.c
parent4f069e1470c4850d37991c0c7406da09e5acc544 (diff)
downloadgcc-2d43e08975235eb5d3407cfd320685dcb909e4bb.tar.gz
(stupid_mark_refs): Handle SUBREG of pseudo-reg in a SET_DEST same as
we handle a pseudo-reg in a SET_DEST. From-SVN: r10541
Diffstat (limited to 'gcc/stupid.c')
-rw-r--r--gcc/stupid.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/gcc/stupid.c b/gcc/stupid.c
index fb50b92a5ae..ed1afcf7dbe 100644
--- a/gcc/stupid.c
+++ b/gcc/stupid.c
@@ -1,5 +1,5 @@
/* Dummy data flow analysis for GNU compiler in nonoptimizing mode.
- Copyright (C) 1987, 1991, 1994 Free Software Foundation, Inc.
+ Copyright (C) 1987, 1991, 1994, 1995 Free Software Foundation, Inc.
This file is part of GNU CC.
@@ -423,10 +423,19 @@ stupid_mark_refs (x, insn)
if (code == SET || code == CLOBBER)
{
- if (SET_DEST (x) != 0 && GET_CODE (SET_DEST (x)) == REG)
+ if (SET_DEST (x) != 0
+ && (GET_CODE (SET_DEST (x)) == REG
+ || (GET_CODE (SET_DEST (x)) == SUBREG
+ && GET_CODE (SUBREG_REG (SET_DEST (x))) == REG
+ && (REGNO (SUBREG_REG (SET_DEST (x)))
+ >= FIRST_PSEUDO_REGISTER))))
{
/* Register is being assigned. */
- regno = REGNO (SET_DEST (x));
+ /* If setting a SUBREG, we treat the entire reg as being set. */
+ if (GET_CODE (SET_DEST (x)) == SUBREG)
+ regno = REGNO (SUBREG_REG (SET_DEST (x)));
+ else
+ regno = REGNO (SET_DEST (x));
/* For hard regs, update the where-live info. */
if (regno < FIRST_PSEUDO_REGISTER)