summaryrefslogtreecommitdiff
path: root/gcc/alias.c
diff options
context:
space:
mode:
authorwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>2002-12-24 15:49:24 +0000
committerwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>2002-12-24 15:49:24 +0000
commit3721f2603495ef947aacccf59ffd27dba1fa06c8 (patch)
tree8a22599996bc1b39e0ceed17e8b3fae0bc72b030 /gcc/alias.c
parentde132707b72cba464e8a7ee57ac76de342263096 (diff)
downloadgcc-3721f2603495ef947aacccf59ffd27dba1fa06c8.tar.gz
Fix v850 PlumHall testsuite failure.
* alias.c (record_set): Handle multi-reg hard registers. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@60474 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/alias.c')
-rw-r--r--gcc/alias.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/gcc/alias.c b/gcc/alias.c
index 12029f053cd..fee64b1e50d 100644
--- a/gcc/alias.c
+++ b/gcc/alias.c
@@ -932,6 +932,7 @@ record_set (dest, set, data)
{
unsigned regno;
rtx src;
+ int n;
if (GET_CODE (dest) != REG)
return;
@@ -941,6 +942,22 @@ record_set (dest, set, data)
if (regno >= reg_base_value_size)
abort ();
+ /* If this spans multiple hard registers, then we must indicate that every
+ register has an unusable value. */
+ if (regno < FIRST_PSEUDO_REGISTER)
+ n = HARD_REGNO_NREGS (regno, GET_MODE (dest));
+ else
+ n = 1;
+ if (n != 1)
+ {
+ while (--n >= 0)
+ {
+ reg_seen[regno + n] = 1;
+ new_reg_base_value[regno + n] = 0;
+ }
+ return;
+ }
+
if (set)
{
/* A CLOBBER wipes out any old value but does not prevent a previously