]> gcc.gnu.org Git - gcc.git/commitdiff
re PR middle-end/38729 (long time needed in tree canonical iv)
authorRichard Guenther <rguenther@suse.de>
Sun, 21 Jun 2009 10:22:08 +0000 (10:22 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Sun, 21 Jun 2009 10:22:08 +0000 (10:22 +0000)
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

gcc/ChangeLog
gcc/tree-ssa-loop-niter.c

index 4478145e3807428d7395a05a12a961be4aa4878a..55ec1baec3625ce77417ba8f9a60f62f93d7580b 100644 (file)
@@ -1,3 +1,9 @@
+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.
+
 2009-06-21  Jakub Jelinek  <jakub@redhat.com>
 
        * var-tracking.c (struct shared_hash_def, shared_hash): New types.
index 18fd6b26e4a83be5fb434cdfabf2e0086789677a..48016c0b7f57f1c0636b0e5bf15e3a134c06564e 100644 (file)
@@ -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))
This page took 0.115383 seconds and 5 git commands to generate.