Commit 014830a5 by Richard Kenner

(mark_target_live_regs): Fix bug in last change.

From-SVN: r2385
parent 9d790a4f
...@@ -2171,20 +2171,10 @@ mark_target_live_regs (target, res) ...@@ -2171,20 +2171,10 @@ mark_target_live_regs (target, res)
if (GET_CODE (PATTERN (insn)) == USE) if (GET_CODE (PATTERN (insn)) == USE)
{ {
/* If INSN is a USE made by update_block, we care about the /* If INSN is a USE made by update_block, we care about the
underlying insn. Any registers set or referenced by the underlying insn. Any registers set by the underlying insn
underlying insn should be treated as if the insn were are live since the insn is being done somewhere else. */
located here without the USE. */
if (GET_RTX_CLASS (GET_CODE (XEXP (PATTERN (insn), 0))) == 'i') if (GET_RTX_CLASS (GET_CODE (XEXP (PATTERN (insn), 0))) == 'i')
{ mark_set_resources (XEXP (PATTERN (insn), 0), res, 0, 1);
rtx inner = XEXP (PATTERN (insn), 0);
mark_referenced_resources (inner, &needed, 1);
mark_set_resources (inner, &set, 0, 1);
COPY_HARD_REG_SET (scratch, set.regs);
AND_COMPL_HARD_REG_SET (scratch, needed.regs);
AND_COMPL_HARD_REG_SET (res->regs, scratch);
}
/* All other USE insns are to be ignored. */ /* All other USE insns are to be ignored. */
continue; continue;
......
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