diff options
author | Richard Stallman <rms@gnu.org> | 1992-09-22 07:13:24 +0000 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 1992-09-22 07:13:24 +0000 |
commit | 372e033b8f9c7b7f5f38313a8638570908b90b1f (patch) | |
tree | 6ef8b12f199b00ef180f129148c649c9e5302a77 | |
parent | 4323a0e11eab7e6eb217fe00e19e9363c8f1e240 (diff) | |
download | gcc-372e033b8f9c7b7f5f38313a8638570908b90b1f.zip gcc-372e033b8f9c7b7f5f38313a8638570908b90b1f.tar.gz gcc-372e033b8f9c7b7f5f38313a8638570908b90b1f.tar.bz2 |
(choose_reload_regs): When setting reg_has_output_reload,
loop over multiple regs only for hard reg. Set reg_is_output_reload
in separate loop.
From-SVN: r2204
-rw-r--r-- | gcc/reload1.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c index 1b322bb..a6d95efb 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -4634,12 +4634,18 @@ choose_reload_regs (insn, avoid_return_reg) && reload_reg_rtx[r] != 0) { register int nregno = REGNO (reload_out[r]); - int nr = HARD_REGNO_NREGS (nregno, reload_mode[r]); + int nr = 1; + + if (nregno < FIRST_PSEUDO_REGISTER) + nr = HARD_REGNO_NREGS (nregno, reload_mode[r]); while (--nr >= 0) + reg_has_output_reload[nregno + nr] = 1; + + if (i >= 0) { - reg_has_output_reload[nregno + nr] = 1; - if (i >= 0) + nr = HARD_REGNO_NREGS (spill_regs[i], reload_mode[r]); + while (--nr >= 0) SET_HARD_REG_BIT (reg_is_output_reload, spill_regs[i] + nr); } |