Commit 051b9446 by Richard Biener Committed by Richard Biener

re PR bootstrap/56689 (internal compiler error: in get_loop_body, at cfgloop.c:841)

2013-03-25  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/56689
	* tree-vrp.c (execute_vrp): Mark loops for fixup if we removed
	any edge.

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

From-SVN: r197039
parent 374001cb
2013-03-25 Richard Biener <rguenther@suse.de> 2013-03-25 Richard Biener <rguenther@suse.de>
PR tree-optimization/56689
* tree-vrp.c (execute_vrp): Mark loops for fixup if we removed
any edge.
2013-03-25 Richard Biener <rguenther@suse.de>
* tree-ssa-loop-im.c (struct mem_ref): Use bitmap_head instead * tree-ssa-loop-im.c (struct mem_ref): Use bitmap_head instead
of bitmap. of bitmap.
(memory_references): Likewise. (memory_references): Likewise.
......
2013-03-25 Richard Biener <rguenther@suse.de>
PR tree-optimization/56689
* gcc.dg/torture/pr56689.c: New testcase.
2013-03-25 Kai Tietz <ktietz@redhat.com> 2013-03-25 Kai Tietz <ktietz@redhat.com>
* g++.dg/torture/20121105-1.C: Adjust for LLP64 targets. * g++.dg/torture/20121105-1.C: Adjust for LLP64 targets.
......
/* { dg-do compile } */
extern int baz ();
extern void bar (void);
extern void noret (void) __attribute__ ((__noreturn__));
void
fix_register (const char *name, int fixed, int call_used, int nregs)
{
int i;
int reg;
if ((reg = baz ()) >= 0)
{
for (i = reg; i < nregs; i++)
{
if ((i == 15 || i == 11) && (fixed == 0 || call_used == 0))
{
switch (fixed)
{
case 0:
switch (call_used)
{
case 1:
bar ();
break;
default:
(noret ());
}
case 1:
switch (call_used)
{
case 1:
break;
case 0:
default:
(noret ());
}
break;
default:
(noret ());
}
}
}
}
}
...@@ -9329,7 +9329,11 @@ execute_vrp (void) ...@@ -9329,7 +9329,11 @@ execute_vrp (void)
} }
if (to_remove_edges.length () > 0) if (to_remove_edges.length () > 0)
free_dominance_info (CDI_DOMINATORS); {
free_dominance_info (CDI_DOMINATORS);
if (current_loops)
loops_state_set (LOOPS_NEED_FIXUP);
}
to_remove_edges.release (); to_remove_edges.release ();
to_update_switch_stmts.release (); to_update_switch_stmts.release ();
......
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