re PR tree-optimization/51557 (ICE: in maybe_record_trace_start, at dwarf2cfi.c:2244 with custom flags)
PR debug/51557 * sel-sched-ir.c (create_copy_of_insn_rtx): Copy all notes other than REG_EQUAL, REG_EQUIV and REG_LABEL_OPERAND. * gcc.dg/pr51557.c: New test. From-SVN: r182404
This commit is contained in:
parent
511b44365a
commit
d734e6c466
@ -1,5 +1,9 @@
|
||||
2011-12-16 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR debug/51557
|
||||
* sel-sched-ir.c (create_copy_of_insn_rtx): Copy all notes
|
||||
other than REG_EQUAL, REG_EQUIV and REG_LABEL_OPERAND.
|
||||
|
||||
PR tree-optimization/51576
|
||||
* tree-cfg.c (replace_uses_by): Call maybe_clean_or_replace_eh_stmt
|
||||
even if fold_stmt didn't change anything.
|
||||
|
@ -5723,7 +5723,7 @@ create_vinsn_from_insn_rtx (rtx insn_rtx, bool force_unique_p)
|
||||
rtx
|
||||
create_copy_of_insn_rtx (rtx insn_rtx)
|
||||
{
|
||||
rtx res;
|
||||
rtx res, link;
|
||||
|
||||
if (DEBUG_INSN_P (insn_rtx))
|
||||
return create_insn_rtx_from_pattern (copy_rtx (PATTERN (insn_rtx)),
|
||||
@ -5733,6 +5733,22 @@ create_copy_of_insn_rtx (rtx insn_rtx)
|
||||
|
||||
res = create_insn_rtx_from_pattern (copy_rtx (PATTERN (insn_rtx)),
|
||||
NULL_RTX);
|
||||
|
||||
/* Copy all REG_NOTES except REG_EQUAL/REG_EQUIV and REG_LABEL_OPERAND
|
||||
since mark_jump_label will make them. REG_LABEL_TARGETs are created
|
||||
there too, but are supposed to be sticky, so we copy them. */
|
||||
for (link = REG_NOTES (insn_rtx); link; link = XEXP (link, 1))
|
||||
if (REG_NOTE_KIND (link) != REG_LABEL_OPERAND
|
||||
&& REG_NOTE_KIND (link) != REG_EQUAL
|
||||
&& REG_NOTE_KIND (link) != REG_EQUIV)
|
||||
{
|
||||
if (GET_CODE (link) == EXPR_LIST)
|
||||
add_reg_note (res, REG_NOTE_KIND (link),
|
||||
copy_insn_1 (XEXP (link, 0)));
|
||||
else
|
||||
add_reg_note (res, REG_NOTE_KIND (link), XEXP (link, 0));
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
2011-12-16 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR debug/51557
|
||||
* gcc.dg/pr51557.c: New test.
|
||||
|
||||
2011-12-16 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR lto/51572
|
||||
|
17
gcc/testsuite/gcc.dg/pr51557.c
Normal file
17
gcc/testsuite/gcc.dg/pr51557.c
Normal file
@ -0,0 +1,17 @@
|
||||
/* PR debug/51557 */
|
||||
/* { dg-do compile { target powerpc*-*-* ia64-*-* i?86-*-* x86_64-*-* } } */
|
||||
/* { dg-options "-Os -fno-asynchronous-unwind-tables -g -fsel-sched-pipelining -fselective-scheduling2" } */
|
||||
|
||||
extern int baz (void);
|
||||
extern void bar (int, int, int, int, int, int, int);
|
||||
|
||||
void
|
||||
synth (int *values, int n_values, int ci, int s1, int v, int s2)
|
||||
{
|
||||
while (--s1)
|
||||
{
|
||||
int r1 = values[s1];
|
||||
int co = ci ? r1 : baz () < r1;
|
||||
bar (0, n_values, s1, s2, v, co, 0);
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user