Commit b532a785 by Jakub Jelinek Committed by Jakub Jelinek

re PR rtl-optimization/88470 (ICE in maybe_record_trace_start, at dwarf2cfi.c:2354)

	PR rtl-optimization/88470
	* cfgcleanup.c (outgoing_edges_match): If the function is
	shrink-wrapped and bb1 ends with a JUMP_INSN with a single fake
	edge to EXIT, return false.

	* gcc.target/i386/pr88470.c: New test.

From-SVN: r267112
parent 6bb42685
2018-12-13 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/88470
* cfgcleanup.c (outgoing_edges_match): If the function is
shrink-wrapped and bb1 ends with a JUMP_INSN with a single fake
edge to EXIT, return false.
2018-12-13 Martin Sebor <msebor@redhat.com> 2018-12-13 Martin Sebor <msebor@redhat.com>
* doc/extend.texi: Consistently use @code for const and volatile * doc/extend.texi: Consistently use @code for const and volatile
...@@ -1592,10 +1592,13 @@ outgoing_edges_match (int mode, basic_block bb1, basic_block bb2) ...@@ -1592,10 +1592,13 @@ outgoing_edges_match (int mode, basic_block bb1, basic_block bb2)
if (crtl->shrink_wrapped if (crtl->shrink_wrapped
&& single_succ_p (bb1) && single_succ_p (bb1)
&& single_succ (bb1) == EXIT_BLOCK_PTR_FOR_FN (cfun) && single_succ (bb1) == EXIT_BLOCK_PTR_FOR_FN (cfun)
&& !JUMP_P (BB_END (bb1)) && (!JUMP_P (BB_END (bb1))
/* Punt if the only successor is a fake edge to exit, the jump
must be some weird one. */
|| (single_succ_edge (bb1)->flags & EDGE_FAKE) != 0)
&& !(CALL_P (BB_END (bb1)) && SIBLING_CALL_P (BB_END (bb1)))) && !(CALL_P (BB_END (bb1)) && SIBLING_CALL_P (BB_END (bb1))))
return false; return false;
/* If BB1 has only one successor, we may be looking at either an /* If BB1 has only one successor, we may be looking at either an
unconditional jump, or a fake edge to exit. */ unconditional jump, or a fake edge to exit. */
if (single_succ_p (bb1) if (single_succ_p (bb1)
......
2018-12-13 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/88470
* gcc.target/i386/pr88470.c: New test.
2018-12-13 Vladimir Makarov <vmakarov@redhat.com> 2018-12-13 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/88414 PR rtl-optimization/88414
......
/* PR rtl-optimization/88470 */
/* { dg-do compile } */
/* { dg-options "-O2 -maccumulate-outgoing-args -ftrapv -fno-ivopts -fno-reorder-blocks-and-partition" } */
void
foo (long x, long *y)
{
long *a = y - 64, i;
for (i = 0; i < x; i++)
{
long v = y[i];
*a++ = v;
}
register void **c __asm__ ("di");
goto **c;
}
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