mirror of git://gcc.gnu.org/git/gcc.git
re PR middle-end/67005 (ICE: in verify_loop_structure, at cfgloop.c:1647 (loop with header n not in loop tree))
PR middle-end/67005 * tree-ssa-dce.c (remove_dead_stmt): Also schedule fixup if removing an entry into an irreducible region. * gcc.dg/torture/pr67005.c: New test. From-SVN: r227268
This commit is contained in:
parent
078c4a8c53
commit
b7e36a33eb
|
|
@ -1,3 +1,9 @@
|
|||
2015-08-27 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
PR middle-end/67005
|
||||
* tree-ssa-dce.c (remove_dead_stmt): Also schedule fixup if removing
|
||||
an entry into an irreducible region.
|
||||
|
||||
2015-08-27 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
|
||||
|
||||
* configure: Regenerate.
|
||||
|
|
|
|||
|
|
@ -1,3 +1,8 @@
|
|||
2015-08-27 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
PR middle-end/67005
|
||||
* gcc.dg/torture/pr67005.c: New test.
|
||||
|
||||
2015-08-27 Alan Lawrence <alan.lawrence@arm.com>
|
||||
|
||||
* gcc.dg/tree-ssa/sra-15.c: New.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,15 @@
|
|||
/* { dg-do compile } */
|
||||
|
||||
int a;
|
||||
void
|
||||
f (void)
|
||||
{
|
||||
if (!a);
|
||||
else
|
||||
lbl:
|
||||
a = a;
|
||||
|
||||
if (a)
|
||||
a = 8;
|
||||
goto lbl;
|
||||
}
|
||||
|
|
@ -1125,10 +1125,11 @@ remove_dead_stmt (gimple_stmt_iterator *i, basic_block bb)
|
|||
if (e != e2)
|
||||
{
|
||||
cfg_altered = true;
|
||||
/* If we made a BB unconditionally exit a loop then this
|
||||
transform alters the set of BBs in the loop. Schedule
|
||||
a fixup. */
|
||||
if (loop_exit_edge_p (bb->loop_father, e))
|
||||
/* If we made a BB unconditionally exit a loop or removed
|
||||
an entry into an irreducible region, then this transform
|
||||
alters the set of BBs in the loop. Schedule a fixup. */
|
||||
if (loop_exit_edge_p (bb->loop_father, e)
|
||||
|| (e2->dest->flags & BB_IRREDUCIBLE_LOOP))
|
||||
loops_state_set (LOOPS_NEED_FIXUP);
|
||||
remove_edge (e2);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue