diff options
author | Richard Guenther <rguenther@suse.de> | 2009-06-21 10:22:08 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2009-06-21 10:22:08 +0000 |
commit | 2cee15096c4e76bec61b97a5c0e595dfdf9224a4 (patch) | |
tree | b15c1763048612d704581def55d54de152a96bf1 /gcc/tree-ssa-loop-niter.c | |
parent | d24686d79d57c495c0bc30fdfd862584ae7cc453 (diff) | |
download | gcc-2cee15096c4e76bec61b97a5c0e595dfdf9224a4.zip gcc-2cee15096c4e76bec61b97a5c0e595dfdf9224a4.tar.gz gcc-2cee15096c4e76bec61b97a5c0e595dfdf9224a4.tar.bz2 |
re PR middle-end/38729 (long time needed in tree canonical iv)
2009-06-21 Richard Guenther <rguenther@suse.de>
PR tree-optimization/38729
* tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
to loops with a single exit if -fno-expensive-optimizations.
From-SVN: r148761
Diffstat (limited to 'gcc/tree-ssa-loop-niter.c')
-rw-r--r-- | gcc/tree-ssa-loop-niter.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/tree-ssa-loop-niter.c b/gcc/tree-ssa-loop-niter.c index 18fd6b2..48016c0 100644 --- a/gcc/tree-ssa-loop-niter.c +++ b/gcc/tree-ssa-loop-niter.c @@ -2254,6 +2254,12 @@ find_loop_niter_by_eval (struct loop *loop, edge *exit) tree niter = NULL_TREE, aniter; *exit = NULL; + + /* Loops with multiple exits are expensive to handle and less important. */ + if (!flag_expensive_optimizations + && VEC_length (edge, exits) > 1) + return chrec_dont_know; + for (i = 0; VEC_iterate (edge, exits, i, ex); i++) { if (!just_once_each_iteration_p (loop, ex->src)) |