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:
parent
fbe83d7ac8
commit
6b3603c273
@ -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.
|
||||
|
16
gcc/gcse.c
16
gcc/gcse.c
@ -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;
|
||||
}
|
||||
|
||||
|
23
gcc/loop.c
23
gcc/loop.c
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user