(choose_reload_regs): When setting reg_has_output_reload,
authorRichard Stallman <rms@gnu.org>
Tue, 22 Sep 1992 07:13:24 +0000 (07:13 +0000)
committerRichard Stallman <rms@gnu.org>
Tue, 22 Sep 1992 07:13:24 +0000 (07:13 +0000)
loop over multiple regs only for hard reg.  Set reg_is_output_reload
in separate loop.

From-SVN: r2204

gcc/reload1.c

index 1b322bbee0d65dd8006208acb8d1e96a71bf8b13..a6d95efb842568dcecb6c04dfe5352adac1d96f2 100644 (file)
@@ -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);
            }