diff options
author | wilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-12-24 15:49:24 +0000 |
---|---|---|
committer | wilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-12-24 15:49:24 +0000 |
commit | 3721f2603495ef947aacccf59ffd27dba1fa06c8 (patch) | |
tree | 8a22599996bc1b39e0ceed17e8b3fae0bc72b030 /gcc/alias.c | |
parent | de132707b72cba464e8a7ee57ac76de342263096 (diff) | |
download | gcc-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.c | 17 |
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 |