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
This commit is contained in:
parent
6bb4268527
commit
b532a7859f
@ -1,3 +1,10 @@
|
||||
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>
|
||||
|
||||
* 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)
|
||||
if (crtl->shrink_wrapped
|
||||
&& single_succ_p (bb1)
|
||||
&& 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))))
|
||||
return false;
|
||||
|
||||
|
||||
/* If BB1 has only one successor, we may be looking at either an
|
||||
unconditional jump, or a fake edge to exit. */
|
||||
if (single_succ_p (bb1)
|
||||
|
@ -1,3 +1,8 @@
|
||||
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>
|
||||
|
||||
PR rtl-optimization/88414
|
||||
|
16
gcc/testsuite/gcc.target/i386/pr88470.c
Normal file
16
gcc/testsuite/gcc.target/i386/pr88470.c
Normal file
@ -0,0 +1,16 @@
|
||||
/* 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;
|
||||
}
|
Loading…
Reference in New Issue
Block a user