aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-loop-manip.c
diff options
context:
space:
mode:
authorZdenek Dvorak <dvorakz@suse.cz>2006-06-08 10:19:50 +0200
committerZdenek Dvorak <rakdver@gcc.gnu.org>2006-06-08 08:19:50 +0000
commit8e08deebfccb960a2bdbd9c7e30a9e3c4633e12d (patch)
tree6f86296669830b6ab9e81bdfbae1fea91eb3fd33 /gcc/tree-ssa-loop-manip.c
parent136778e9b41c1d1d095f9e2e74b7255c7ce4f415 (diff)
downloadgcc-8e08deebfccb960a2bdbd9c7e30a9e3c4633e12d.zip
gcc-8e08deebfccb960a2bdbd9c7e30a9e3c4633e12d.tar.gz
gcc-8e08deebfccb960a2bdbd9c7e30a9e3c4633e12d.tar.bz2
re PR rtl-optimization/27872 (Internal compiler error in verify_loop_structure)
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. From-SVN: r114482
Diffstat (limited to 'gcc/tree-ssa-loop-manip.c')
-rw-r--r--gcc/tree-ssa-loop-manip.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/tree-ssa-loop-manip.c b/gcc/tree-ssa-loop-manip.c
index 556264c..0b29c5e 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;