Commit 06f1716b by Jan Hubicka

re PR rtl-optimization/51069 (ICE in verify_loop_structure, at cfgloop.c:1559)

	PR rtl-optimization/51069
	* cfgloopmanip.c (remove_path): Removing path making irreducible
	region unconditional makes BB part of the region.
	* gcc.c-torture/compile/pr51069.c: New testcase.

From-SVN: r182767
parent 41d2ea57
2012-01-01 Jan Hubicka <jhjh@suse.cz>
PR rtl-optimization/51069
* cfgloopmanip.c (remove_path): Removing path making irreducible
region unconditional makes BB part of the region.
2012-01-01 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/51683
......@@ -290,6 +290,7 @@ remove_path (edge e)
int i, nrem, n_bord_bbs;
sbitmap seen;
bool irred_invalidated = false;
edge_iterator ei;
if (!can_remove_branch_p (e))
return false;
......@@ -329,9 +330,13 @@ remove_path (edge e)
/* Find "border" hexes -- i.e. those with predecessor in removed path. */
for (i = 0; i < nrem; i++)
SET_BIT (seen, rem_bbs[i]->index);
if (!irred_invalidated)
FOR_EACH_EDGE (ae, ei, e->src->succs)
if (ae != e && ae->dest != EXIT_BLOCK_PTR && !TEST_BIT (seen, ae->dest->index)
&& ae->flags & EDGE_IRREDUCIBLE_LOOP)
irred_invalidated = true;
for (i = 0; i < nrem; i++)
{
edge_iterator ei;
bb = rem_bbs[i];
FOR_EACH_EDGE (ae, ei, rem_bbs[i]->succs)
if (ae->dest != EXIT_BLOCK_PTR && !TEST_BIT (seen, ae->dest->index))
......
2012-01-01 Jan Hubicka <jh@suse.cz>
PR rtl-optimization/51069
* gcc.c-torture/compile/pr51069.c: New testcase.
2012-01-01 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/51683
......
int a, b, c, d, e, f, bar (void);
void
foo (int x)
{
for (;;)
{
if (!x)
{
for (d = 6; d >= 0; d--)
{
while (!b)
;
if (e)
return foo (x);
if (f)
{
a = 0;
continue;
}
for (; c; c--)
;
}
}
if (bar ())
break;
e = 0;
if (x)
for (;;)
;
}
}
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