Commit a8886f7d by Richard Guenther Committed by Richard Biener

re PR tree-optimization/54458 (ICE get_loop_body, at cfgloop.c:830)

2012-09-04  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/54458
	* tree-ssa-threadupdate.c (thread_through_loop_header): If we
	turn the loop into one with multiple latches mark it so.

	* gcc.dg/torture/pr54458.c: New testcase.

From-SVN: r190918
parent cee8f252
2012-09-04 Richard Guenther <rguenther@suse.de>
PR tree-optimization/54458
* tree-ssa-threadupdate.c (thread_through_loop_header): If we
turn the loop into one with multiple latches mark it so.
2012-09-04 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com>
PR target/54220
......
2012-09-04 Richard Guenther <rguenther@suse.de>
PR tree-optimization/54458
* gcc.dg/torture/pr54458.c: New testcase.
2012-09-04 Christophe Lyon <christophe.lyon@linaro.org>
* gcc.target/arm/neon-vext.c: New test.
......
/* { dg-do compile } */
unsigned int a, b, c;
void
foo (unsigned int x)
{
do
{
if (a == 0 ? 1 : 1 % a)
for (; b; b--)
lab:;
else
while (x)
;
if (c)
goto lab;
}
while (1);
}
......@@ -1037,11 +1037,21 @@ thread_through_loop_header (struct loop *loop, bool may_peel_loop_headers)
}
free (bblocks);
/* If the new header has multiple latches mark it so. */
FOR_EACH_EDGE (e, ei, loop->header->preds)
if (e->src->loop_father == loop
&& e->src != loop->latch)
{
loop->latch = NULL;
loops_state_set (LOOPS_MAY_HAVE_MULTIPLE_LATCHES);
}
/* Cancel remaining threading requests that would make the
loop a multiple entry loop. */
FOR_EACH_EDGE (e, ei, header->preds)
{
edge e2;
if (e->aux == NULL)
continue;
......
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