aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1992-10-09 14:13:13 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1992-10-09 14:13:13 -0400
commit014830a56db576f8fabdb74dedd312bf4b0d9423 (patch)
tree9e3f79bdda9710fe6e183c8e07c15490391cbbd6
parent9d790a4f7376d202702a505f3199d221df73bbcc (diff)
downloadgcc-014830a56db576f8fabdb74dedd312bf4b0d9423.zip
gcc-014830a56db576f8fabdb74dedd312bf4b0d9423.tar.gz
gcc-014830a56db576f8fabdb74dedd312bf4b0d9423.tar.bz2
(mark_target_live_regs): Fix bug in last change.
From-SVN: r2385
-rw-r--r--gcc/reorg.c16
1 files changed, 3 insertions, 13 deletions
diff --git a/gcc/reorg.c b/gcc/reorg.c
index 869c79a..4a87e40 100644
--- a/gcc/reorg.c
+++ b/gcc/reorg.c
@@ -2171,20 +2171,10 @@ mark_target_live_regs (target, res)
if (GET_CODE (PATTERN (insn)) == USE)
{
/* If INSN is a USE made by update_block, we care about the
- underlying insn. Any registers set or referenced by the
- underlying insn should be treated as if the insn were
- located here without the USE. */
+ underlying insn. Any registers set by the underlying insn
+ are live since the insn is being done somewhere else. */
if (GET_RTX_CLASS (GET_CODE (XEXP (PATTERN (insn), 0))) == 'i')
- {
- 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);
- }
+ mark_set_resources (XEXP (PATTERN (insn), 0), res, 0, 1);
/* All other USE insns are to be ignored. */
continue;