OSDN Git Service

* reload1.c (choose_reload_regs): Properly mark spill registers
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 29 Jun 1996 03:34:25 +0000 (03:34 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 29 Jun 1996 03:34:25 +0000 (03:34 +0000)
        as in use for inherited reloads.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@12377 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/reload1.c

index 09922ce..03d313f 100644 (file)
@@ -5376,20 +5376,24 @@ choose_reload_regs (insn, avoid_return_reg)
                 to load it, and use it as our reload reg.  */
              if (equiv != 0 && regno != HARD_FRAME_POINTER_REGNUM)
                {
+                 int nr = HARD_REGNO_NREGS (regno, reload_mode[r]);
+                 int k;
                  reload_reg_rtx[r] = equiv;
                  reload_inherited[r] = 1;
-                 /* If it is a spill reg,
-                    mark the spill reg as in use for this insn.  */
-                 i = spill_reg_order[regno];
-                 if (i >= 0)
+
+                 /* If any of the hard registers in EQUIV are spill
+                    registers, mark them as in use for this insn.  */
+                 for (k = 0; k < nr; k++)
                    {
-                     int nr = HARD_REGNO_NREGS (regno, reload_mode[r]);
-                     int k;
-                     mark_reload_reg_in_use (regno, reload_opnum[r],
-                                             reload_when_needed[r],
-                                             reload_mode[r]);
-                     for (k = 0; k < nr; k++)
-                       SET_HARD_REG_BIT (reload_reg_used_for_inherit, regno + k);
+                     i = spill_reg_order[regno + k];
+                     if (i >= 0)
+                       {
+                         mark_reload_reg_in_use (regno, reload_opnum[r],
+                                                 reload_when_needed[r],
+                                                 reload_mode[r]);
+                         SET_HARD_REG_BIT (reload_reg_used_for_inherit,
+                                           regno + k);
+                       }
                    }
                }
            }