Commit a746fd8c by Zdenek Dvorak Committed by Zdenek Dvorak

re PR tree-optimization/17806 (compiler error: in verify_loop_structure, at…

re PR tree-optimization/17806 (compiler error: in verify_loop_structure, at cfgloop.c:1491 , works -O2, breaks with -O3)

	PR tree-optimization/17806
	* cfghooks.c (split_edge): Update IRREDUCIBLE_LOOP flags.
	* cfgloopmanip.c (loop_split_edge_with): Updating of IRREDUCIBLE_LOOP
	flags moved to split_edge.

From-SVN: r88665
parent cc67d2fa
2004-10-07 Zdenek Dvorak <dvorakz@suse.cz>
PR tree-optimization/17806
* cfghooks.c (split_edge): Update IRREDUCIBLE_LOOP flags.
* cfgloopmanip.c (loop_split_edge_with): Updating of IRREDUCIBLE_LOOP
flags moved to split_edge.
2004-10-07 Eric Botcazou <ebotcazou@libertysurf.fr>
PR middle-end/17285
......
......@@ -389,6 +389,7 @@ split_edge (edge e)
gcov_type count = e->count;
int freq = EDGE_FREQUENCY (e);
edge f;
bool irr = (e->flags & EDGE_IRREDUCIBLE_LOOP) != 0;
if (!cfg_hooks->split_edge)
internal_error ("%s does not support split_edge.", cfg_hooks->name);
......@@ -399,6 +400,13 @@ split_edge (edge e)
EDGE_SUCC (ret, 0)->probability = REG_BR_PROB_BASE;
EDGE_SUCC (ret, 0)->count = count;
if (irr)
{
ret->flags |= BB_IRREDUCIBLE_LOOP;
EDGE_PRED (ret, 0)->flags |= EDGE_IRREDUCIBLE_LOOP;
EDGE_SUCC (ret, 0)->flags |= EDGE_IRREDUCIBLE_LOOP;
}
if (dom_computed[CDI_DOMINATORS])
set_immediate_dominator (CDI_DOMINATORS, ret, EDGE_PRED (ret, 0)->src);
......
......@@ -1241,7 +1241,6 @@ loop_split_edge_with (edge e, rtx insns)
{
basic_block src, dest, new_bb;
struct loop *loop_c;
edge new_e;
src = e->src;
dest = e->dest;
......@@ -1252,14 +1251,7 @@ loop_split_edge_with (edge e, rtx insns)
new_bb = split_edge (e);
add_bb_to_loop (new_bb, loop_c);
new_bb->flags = insns ? BB_SUPERBLOCK : 0;
new_e = EDGE_SUCC (new_bb, 0);
if (e->flags & EDGE_IRREDUCIBLE_LOOP)
{
new_bb->flags |= BB_IRREDUCIBLE_LOOP;
new_e->flags |= EDGE_IRREDUCIBLE_LOOP;
}
new_bb->flags |= (insns ? BB_SUPERBLOCK : 0);
if (insns)
emit_insn_after (insns, BB_END (new_bb));
......
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