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> 2012-09-04 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com>
PR target/54220 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> 2012-09-04 Christophe Lyon <christophe.lyon@linaro.org>
* gcc.target/arm/neon-vext.c: New test. * 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) ...@@ -1037,11 +1037,21 @@ thread_through_loop_header (struct loop *loop, bool may_peel_loop_headers)
} }
free (bblocks); 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 /* Cancel remaining threading requests that would make the
loop a multiple entry loop. */ loop a multiple entry loop. */
FOR_EACH_EDGE (e, ei, header->preds) FOR_EACH_EDGE (e, ei, header->preds)
{ {
edge e2; edge e2;
if (e->aux == NULL) if (e->aux == NULL)
continue; 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