From: rakdver Date: Thu, 8 Jun 2006 08:19:50 +0000 (+0000) Subject: PR tree-optimization/27872 X-Git-Url: http://git.sourceforge.jp/view?a=commitdiff_plain;h=89c8b802150d5c659fbf9f00174721e67f1db7e8;p=pf3gnuchains%2Fgcc-fork.git PR tree-optimization/27872 * tree-ssa-loop-manip.c (tree_unroll_loop): Set EDGE_IRREDUCIBLE_LOOP flag on the new exit edge of the unrolled loop. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@114482 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 237393d8f12..ea88049fbd1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2006-06-07 Zdenek Dvorak + PR tree-optimization/27872 + * tree-ssa-loop-manip.c (tree_unroll_loop): Set EDGE_IRREDUCIBLE_LOOP + flag on the new exit edge of the unrolled loop. + +2006-06-07 Zdenek Dvorak + PR rtl-optimization/26449 * loop-invariant.c (move_invariant_reg): Fail if force_operand fails. diff --git a/gcc/tree-ssa-loop-manip.c b/gcc/tree-ssa-loop-manip.c index 556264c58f4..0b29c5ee8b4 100644 --- a/gcc/tree-ssa-loop-manip.c +++ b/gcc/tree-ssa-loop-manip.c @@ -841,6 +841,7 @@ tree_unroll_loop (struct loops *loops, struct loop *loop, unsigned factor, use_operand_p op; bool ok; unsigned est_niter; + unsigned irr = loop_preheader_edge (loop)->flags & EDGE_IRREDUCIBLE_LOOP; sbitmap wont_exit; est_niter = expected_loop_iterations (loop); @@ -883,7 +884,7 @@ tree_unroll_loop (struct loops *loops, struct loop *loop, unsigned factor, loop_split_edge_with (loop_latch_edge (loop), NULL); exit_bb = single_pred (loop->latch); - new_exit = make_edge (exit_bb, rest, EDGE_FALSE_VALUE); + new_exit = make_edge (exit_bb, rest, EDGE_FALSE_VALUE | irr); new_exit->count = loop_preheader_edge (loop)->count; est_niter = est_niter / factor + 1; new_exit->probability = REG_BR_PROB_BASE / est_niter;