re PR rtl-optimization/55270 (ICE in get_loop_body, at cfgloop.c:823)

2013-01-29  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/55270
	* tree-ssa-dom.c (eliminate_degenerate_phis): If we changed
	the CFG, schedule loops for fixup.

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

From-SVN: r195533
This commit is contained in:
Richard Biener 2013-01-29 10:40:24 +00:00 committed by Richard Biener
parent 5893f1589a
commit 83ba4d6f2b
4 changed files with 39 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2013-01-29 Richard Biener <rguenther@suse.de>
PR tree-optimization/55270
* tree-ssa-dom.c (eliminate_degenerate_phis): If we changed
the CFG, schedule loops for fixup.
2013-01-29 Nick Clifton <nickc@redhat.com>
* config/rl78/rl78.c (rl78_regno_mode_code_ok_for_base_p): Allow

View File

@ -1,3 +1,8 @@
2013-01-29 Richard Biener <rguenther@suse.de>
PR tree-optimization/55270
* gcc.dg/torture/pr55270.c: New testcase.
2013-01-28 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/56117

View File

@ -0,0 +1,22 @@
/* { dg-do compile } */
unsigned a, b, c;
void f(void)
{
for(; a; a++)
{
long *p1 = (long *)&b;
if(*p1)
return;
if(b && (*p1 = b) || c && ++*p1)
{
unsigned *p2 = &b;
for(*p2 = 0; *p2 < 1;)
for(; b; b++);
}
}
}

View File

@ -3006,7 +3006,12 @@ eliminate_degenerate_phis (void)
}
if (cfg_altered)
free_dominance_info (CDI_DOMINATORS);
{
free_dominance_info (CDI_DOMINATORS);
/* If we changed the CFG schedule loops for fixup by cfgcleanup. */
if (current_loops)
loops_state_set (LOOPS_NEED_FIXUP);
}
/* Propagation of const and copies may make some EH edges dead. Purge
such edges from the CFG as needed. */