From 5b1ef594574c48fc88045d143efe913f704e3f09 Mon Sep 17 00:00:00 2001 From: John David Anglin Date: Tue, 2 Jan 2001 00:58:27 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 6 ++++++ gcc/gcse.c | 9 ++++++--- gcc/loop.c | 11 ++++++++--- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5e3821ce5ff..f25661a6025 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2001-01-01 John David Anglin + + * 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 * loop.c (scan_loop): Use xmalloc to allocate movables. diff --git a/gcc/gcse.c b/gcc/gcse.c index 73f49f3ce88..f423c5ec27d 100644 --- a/gcc/gcse.c +++ b/gcc/gcse.c @@ -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; } diff --git a/gcc/loop.c b/gcc/loop.c index 8faacaf3e02..a504ed65c88 100644 --- a/gcc/loop.c +++ b/gcc/loop.c @@ -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); -- 2.30.2