loop.c (add_label_notes): Increment the label usage count when a note is added to an insn which refers to...

* loop.c (add_label_notes): Increment the label usage count when
        a note is added to an insn which refers to a CODE_LABEL.
        * gcse.c (add_label_notes): Likewise.

From-SVN: r38603
This commit is contained in:
John David Anglin 2001-01-02 00:58:27 +00:00 committed by Jeff Law
parent 5be1aac912
commit 5b1ef59457
3 changed files with 20 additions and 6 deletions

View File

@ -1,3 +1,9 @@
2001-01-01 John David Anglin <dave@hiauly1.hia.nrc.ca>
* loop.c (add_label_notes): Increment the label usage count when
a note is added to an insn which refers to a CODE_LABEL.
* gcse.c (add_label_notes): Likewise.
2001-01-01 Andreas Jaeger <aj@suse.de>
* loop.c (scan_loop): Use xmalloc to allocate movables.

View File

@ -1,6 +1,6 @@
/* Global common subexpression elimination/Partial redundancy elimination
and global constant/copy propagation for GNU compiler.
Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
This file is part of GNU CC.
@ -4839,8 +4839,9 @@ one_pre_gcse_pass (pass)
}
/* If X contains any LABEL_REF's, add REG_LABEL notes for them to INSN.
We have to add REG_LABEL notes, because the following loop optimization
pass requires them. */
If notes are added to an insn which references a CODE_LABEL, the
LABEL_NUSES count is incremented. We have to add REG_LABEL notes,
because the following loop optimization pass requires them. */
/* ??? This is very similar to the loop.c add_label_notes function. We
could probably share code here. */
@ -4868,6 +4869,8 @@ add_label_notes (x, insn)
REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_LABEL, XEXP (x, 0),
REG_NOTES (insn));
if (LABEL_P (XEXP (x, 0)))
LABEL_NUSES (XEXP (x, 0))++;
return;
}

View File

@ -1594,7 +1594,8 @@ rtx_equal_for_loop_p (x, y, movables, regs)
}
/* If X contains any LABEL_REF's, add REG_LABEL notes for them to all
insns in INSNS which use the reference. */
insns in INSNS which use the reference. LABEL_NUSES for CODE_LABEL
references is incremented once for each added note. */
static void
add_label_notes (x, insns)
@ -1615,8 +1616,12 @@ add_label_notes (x, insns)
mark_jump_label for additional information). */
for (insn = insns; insn; insn = NEXT_INSN (insn))
if (reg_mentioned_p (XEXP (x, 0), insn))
REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_LABEL, XEXP (x, 0),
REG_NOTES (insn));
{
REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_LABEL, XEXP (x, 0),
REG_NOTES (insn));
if (LABEL_P (XEXP (x, 0)))
LABEL_NUSES (XEXP (x, 0))++;
}
}
fmt = GET_RTX_FORMAT (code);