loop.c (add_label_notes): Do not ignore references to labels before dispatch tables.

* loop.c (add_label_notes): Do not ignore references to labels
        before dispatch tables.  Mirrors Apr 8 change to mark_jump_label.
        * gcse.c (add_label_notes): Similarly.

From-SVN: r21744
This commit is contained in:
Jeffrey A Law 1998-08-15 00:33:57 +00:00 committed by Jeff Law
parent fbe83d7ac8
commit 6b3603c273
3 changed files with 18 additions and 25 deletions

View File

@ -1,5 +1,9 @@
Fri Aug 14 21:07:03 1998 Jeffrey A Law (law@cygnus.com)
* loop.c (add_label_notes): Do not ignore references to labels
before dispatch tables. Mirrors Apr 8 change to mark_jump_label.
* gcse.c (add_label_notes): Similarly.
* pa.h (ASM_OUTPUT_MI_THUNK): Strip name encoding.
* m68k.md (adddi_dilshr32): One of the operands must be a register.

View File

@ -4733,17 +4733,13 @@ add_label_notes (x, insn)
if (code == LABEL_REF && !LABEL_REF_NONLOCAL_P (x))
{
rtx next = next_real_insn (XEXP (x, 0));
/* This code used to ignore labels that referred to dispatch tables to
avoid flow generating (slighly) worse code.
/* Don't record labels that refer to dispatch tables.
This is not necessary, since the tablejump references the same label.
And if we did record them, flow.c would make worse code. */
if (next == 0
|| ! (GET_CODE (next) == JUMP_INSN
&& (GET_CODE (PATTERN (next)) == ADDR_VEC
|| GET_CODE (PATTERN (next)) == ADDR_DIFF_VEC)))
REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_LABEL, XEXP (x, 0),
REG_NOTES (insn));
We no longer ignore such label references (see LABEL_REF handling in
mark_jump_label for additional information). */
REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_LABEL, XEXP (x, 0),
REG_NOTES (insn));
return;
}

View File

@ -1627,22 +1627,15 @@ add_label_notes (x, insns)
if (code == LABEL_REF && !LABEL_REF_NONLOCAL_P (x))
{
rtx next = next_real_insn (XEXP (x, 0));
/* This code used to ignore labels that referred to dispatch tables to
avoid flow generating (slighly) worse code.
/* Don't record labels that refer to dispatch tables.
This is not necessary, since the tablejump references the same label.
And if we did record them, flow.c would make worse code. */
if (next == 0
|| ! (GET_CODE (next) == JUMP_INSN
&& (GET_CODE (PATTERN (next)) == ADDR_VEC
|| GET_CODE (PATTERN (next)) == ADDR_DIFF_VEC)))
{
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));
}
return;
We no longer ignore such label references (see LABEL_REF handling in
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));
}
fmt = GET_RTX_FORMAT (code);