Commit b55f96db by Richard Kenner

(find_dead_or_set_registers): Only kill spill regs after label made

before jump2.

From-SVN: r11778
parent bf8b4985
...@@ -133,6 +133,10 @@ Boston, MA 02111-1307, USA. */ ...@@ -133,6 +133,10 @@ Boston, MA 02111-1307, USA. */
/* Import list of registers used as spill regs from reload. */ /* Import list of registers used as spill regs from reload. */
extern HARD_REG_SET used_spill_regs; extern HARD_REG_SET used_spill_regs;
/* Import highest label used in function at end of reload. */
extern int max_label_num_after_reload;
#ifdef DELAY_SLOTS #ifdef DELAY_SLOTS
#define obstack_chunk_alloc xmalloc #define obstack_chunk_alloc xmalloc
...@@ -2468,11 +2472,14 @@ find_dead_or_set_registers (target, res, jump_target, jump_count, set, needed) ...@@ -2468,11 +2472,14 @@ find_dead_or_set_registers (target, res, jump_target, jump_count, set, needed)
AND_COMPL_HARD_REG_SET (res->regs, pending_dead_regs); AND_COMPL_HARD_REG_SET (res->regs, pending_dead_regs);
CLEAR_HARD_REG_SET (pending_dead_regs); CLEAR_HARD_REG_SET (pending_dead_regs);
/* All spill registers are dead at a label, so kill all of the if (CODE_LABEL_NUMBER (insn) < max_label_num_after_reload)
ones that aren't needed also. */ {
COPY_HARD_REG_SET (scratch, used_spill_regs); /* All spill registers are dead at a label, so kill all of the
AND_COMPL_HARD_REG_SET (scratch, needed.regs); ones that aren't needed also. */
AND_COMPL_HARD_REG_SET (res->regs, scratch); COPY_HARD_REG_SET (scratch, used_spill_regs);
AND_COMPL_HARD_REG_SET (scratch, needed.regs);
AND_COMPL_HARD_REG_SET (res->regs, scratch);
}
continue; continue;
case BARRIER: case BARRIER:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment