diff options
author | aoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-09-29 21:52:12 +0000 |
---|---|---|
committer | aoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-09-29 21:52:12 +0000 |
commit | b29201305bbc2cfaa81430aa06c81b6c12041ace (patch) | |
tree | 8b7cd2a3c1dc10fd6fe1a5ff6ec9025224f41a3e /gcc/regrename.c | |
parent | e717a3eca5f58533cc159dc38b69907416bd6fff (diff) | |
download | gcc-b29201305bbc2cfaa81430aa06c81b6c12041ace.tar.gz |
* reload.c (find_reloads): Mark new USE insns with QImode.
(find_reloads_toplev, find_reloads_address, subst_reg_equivs,
find_reloads_subreg_address): Likewise.
* regrename.c (note_sets, clear_dead_regs): Abort if pseudos are
encountered.
* reload1.c (reload_combine_note_use): Likewise, inside USEs and
CLOBBERs.
(reload): Make sure there are no USEs with mode other than
VOIDmode. At the end, remove those marked with QImode.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@45889 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/regrename.c')
-rw-r--r-- | gcc/regrename.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/regrename.c b/gcc/regrename.c index afee0d79ec9..c0cf2326360 100644 --- a/gcc/regrename.c +++ b/gcc/regrename.c @@ -112,6 +112,11 @@ note_sets (x, set, data) return; regno = REGNO (x); nregs = HARD_REGNO_NREGS (regno, GET_MODE (x)); + + /* There must not be pseudos at this point. */ + if (regno + nregs > FIRST_PSEUDO_REGISTER) + abort (); + while (nregs-- > 0) SET_HARD_REG_BIT (*pset, regno + nregs); } @@ -132,6 +137,11 @@ clear_dead_regs (pset, kind, notes) rtx reg = XEXP (note, 0); unsigned int regno = REGNO (reg); int nregs = HARD_REGNO_NREGS (regno, GET_MODE (reg)); + + /* There must not be pseudos at this point. */ + if (regno + nregs > FIRST_PSEUDO_REGISTER) + abort (); + while (nregs-- > 0) CLEAR_HARD_REG_BIT (*pset, regno + nregs); } |