Commit 0ce2b299 by Eric Botcazou Committed by Eric Botcazou

re PR rtl-optimization/38281 (segmentation fault with optimization enabled)

	PR rtl-optimization/38281
	* combine.c (distribute_notes): When invoking SET_INSN_DELETED on i2,
	set it to NULL_RTX afterwards.

	* emit-rtl.c (set_insn_deleted): Fix formatting.

Co-Authored-By: Andrew Pinski <andrew_pinski@playstation.sony.com>
Co-Authored-By: Jakub Jelinek <jakub@redhat.com>

From-SVN: r142388
parent 396315d9
2008-12-03 Eric Botcazou <ebotcazou@adacore.com>
Jakub Jelinek <jakub@redhat.com>
Andrew Pinski <andrew_pinski@playstation.sony.com>
PR rtl-optimization/38281
* combine.c (distribute_notes): When invoking SET_INSN_DELETED on i2,
set it to NULL_RTX afterwards.
* emit-rtl.c (set_insn_deleted): Fix formatting.
2008-12-02 Richard Sandiford <rdsandiford@googlemail.com>
* config/mips/mips.c (mips_expand_builtin): Fix the mode of the
......@@ -12653,6 +12653,8 @@ distribute_notes (rtx notes, rtx from_insn, rtx i3, rtx i2, rtx elim_i2,
distribute_links (LOG_LINKS (tem));
SET_INSN_DELETED (tem);
if (tem == i2)
i2 = NULL_RTX;
#ifdef HAVE_cc0
/* Delete the setter too. */
......@@ -12668,6 +12670,8 @@ distribute_notes (rtx notes, rtx from_insn, rtx i3, rtx i2, rtx elim_i2,
distribute_links (LOG_LINKS (cc0_setter));
SET_INSN_DELETED (cc0_setter);
if (cc0_setter == i2)
i2 = NULL_RTX;
}
#endif
}
......
......@@ -3620,7 +3620,8 @@ add_insn_before (rtx insn, rtx before, basic_block bb)
/* Replace insn with an deleted instruction note. */
void set_insn_deleted (rtx insn)
void
set_insn_deleted (rtx insn)
{
df_insn_delete (BLOCK_FOR_INSN (insn), INSN_UID (insn));
PUT_CODE (insn, NOTE);
......
2008-12-03 Eric Botcazou <ebotcazou@adacore.com>
* gcc.c-torture/compile/20081203-1.c: New test.
2008-12-02 Jason Merrill <jason@redhat.com>
PR c++/35782, c++/37860
......
/* PR rtl-optimization/38281 */
/* Reporter: John Regehr <regehr@cs.utah.edu> */
/* Testcase by Jakub Jelinek <jakub@redhat.com> */
inline unsigned short
foo (unsigned short x, unsigned short y)
{
if (y == 0)
return x;
return x / y;
}
unsigned short a, b, c;
extern int baz (int, int);
void
bar (void)
{
int d = 0x3D75D162;
a = foo (b > d, baz (0, 1));
for (c = 0; c; c = 1)
;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment