diff options
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/reload1.c | 10 |
2 files changed, 8 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0d3f409e33d..0613e309b40 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2002-05-15 Aldy Hernandez <aldyh@redhat.com> + * reload1.c (forget_old_reloads_1): Do not use subreg offset. + +2002-05-15 Aldy Hernandez <aldyh@redhat.com> + * config/rs6000/rs6000.md ("altivec_mtvscr"): Set VSCR register. ("altivec_mfvscr"): Read from VSCR. diff --git a/gcc/reload1.c b/gcc/reload1.c index 1bcd29b3ee4..1349c3c8559 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -4098,23 +4098,21 @@ forget_old_reloads_1 (x, ignored, data) { unsigned int regno; unsigned int nr; - int offset = 0; /* note_stores does give us subregs of hard regs, subreg_regno_offset will abort if it is not a hard reg. */ while (GET_CODE (x) == SUBREG) { - offset += subreg_regno_offset (REGNO (SUBREG_REG (x)), - GET_MODE (SUBREG_REG (x)), - SUBREG_BYTE (x), - GET_MODE (x)); + /* We ignore the subreg offset when calculating the regno, + because we are using the entire underlying hard register + below. */ x = SUBREG_REG (x); } if (GET_CODE (x) != REG) return; - regno = REGNO (x) + offset; + regno = REGNO (x); if (regno >= FIRST_PSEUDO_REGISTER) nr = 1; |