]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
authorZdenek Dvorak <dvorakz@suse.cz>
Sun, 27 May 2007 17:23:11 +0000 (19:23 +0200)
committerZdenek Dvorak <rakdver@gcc.gnu.org>
Sun, 27 May 2007 17:23:11 +0000 (17:23 +0000)
* tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
* tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
* ifcvt.c (if_convert): Ditto.
* tree-ssa-threadupdate.c (thread_block): Ditto.
(thread_through_all_blocks): Ditto.  Assert that loops were analysed.
* tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
verify_loop_closed_ssa): Check number_of_loops instead of current_loops.
* predict.c (tree_estimate_probability): Ditto.
* tree-if-conv.c (main_tree_if_conversion): Ditto.
* tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
* modulo-sched.c (sms_schedule): Ditto.
* tree-scalar-evolution.c (scev_const_prop): Ditto.
(scev_finalize): Do not do anything if scev analysis was not
initialized.
* cfgloopanal.c (mark_irreducible_loops): Do not check whether
current_loops == NULL.
(mark_loop_exit_edges): Check number_of_loops instead of current_loops.
* loop-init.c (loop_optimizer_init): Do not free current_loops when
there are no loops.
(loop_optimizer_finalize): Assert that loops were analyzed.
(rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
rtl_doloop): Check number_of_loops instead of current_loops.
* tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
current_loops == NULL.
(tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
gate_tree_vectorize tree_linear_transform, check_data_deps,
tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
Check number_of_loops instead of current_loops.
(tree_ssa_loop_done): Do not check whether current_loops == NULL.
* tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
free loops if available.
(execute_pre): Do not pass do_fre to fini_pre.

From-SVN: r125114

15 files changed:
gcc/ChangeLog
gcc/cfgloopanal.c
gcc/ifcvt.c
gcc/loop-init.c
gcc/modulo-sched.c
gcc/predict.c
gcc/tree-chrec.c
gcc/tree-if-conv.c
gcc/tree-scalar-evolution.c
gcc/tree-ssa-loop-ch.c
gcc/tree-ssa-loop-manip.c
gcc/tree-ssa-loop.c
gcc/tree-ssa-pre.c
gcc/tree-ssa-threadupdate.c
gcc/tree-vrp.c

index 4df2a050d37f2814ccbc4e70f118454f93c05f4e..d162264a7c41fc6a26d76a047a35fe45e9be7233 100644 (file)
@@ -1,3 +1,39 @@
+2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
+
+       * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
+       * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
+       * ifcvt.c (if_convert): Ditto.
+       * tree-ssa-threadupdate.c (thread_block): Ditto.
+       (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
+       * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
+       verify_loop_closed_ssa): Check number_of_loops instead of current_loops.
+       * predict.c (tree_estimate_probability): Ditto.
+       * tree-if-conv.c (main_tree_if_conversion): Ditto.
+       * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
+       * modulo-sched.c (sms_schedule): Ditto.
+       * tree-scalar-evolution.c (scev_const_prop): Ditto.
+       (scev_finalize): Do not do anything if scev analysis was not
+       initialized.
+       * cfgloopanal.c (mark_irreducible_loops): Do not check whether
+       current_loops == NULL.
+       (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
+       * loop-init.c (loop_optimizer_init): Do not free current_loops when
+       there are no loops.
+       (loop_optimizer_finalize): Assert that loops were analyzed.
+       (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
+       rtl_doloop): Check number_of_loops instead of current_loops.
+       * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
+       current_loops == NULL.
+       (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
+       gate_tree_vectorize tree_linear_transform, check_data_deps,
+       tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
+       tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
+       Check number_of_loops instead of current_loops.
+       (tree_ssa_loop_done): Do not check whether current_loops == NULL.
+       * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
+       free loops if available.
+       (execute_pre): Do not pass do_fre to fini_pre.
+
 2007-05-27  Tobias Burnus  <burnus@net-b.de>
 
        PR middle-end/32083
index 54d00ce574c7b887a7cdd4e93ac53fcc76fa9a65..760542a0ba864cb4ade955d28069315733f03352 100644 (file)
@@ -273,7 +273,7 @@ mark_irreducible_loops (void)
   edge_iterator ei;
   int i, src, dest;
   struct graph *g;
-  int num = current_loops ? number_of_loops () : 1;
+  int num = number_of_loops ();
   int *queue1 = XNEWVEC (int, last_basic_block + num);
   int *queue2 = XNEWVEC (int, last_basic_block + num);
   int nq;
@@ -281,6 +281,8 @@ mark_irreducible_loops (void)
   struct loop *cloop, *loop;
   loop_iterator li;
 
+  gcc_assert (current_loops != NULL);
+
   /* Reset the flags.  */
   FOR_BB_BETWEEN (act, ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR, next_bb)
     {
@@ -302,36 +304,32 @@ mark_irreducible_loops (void)
        src = BB_REPR (act);
        dest = BB_REPR (e->dest);
 
-       if (current_loops)
-         {
-           /* Ignore latch edges.  */
-           if (e->dest->loop_father->header == e->dest
-               && e->dest->loop_father->latch == act)
-             continue;
+       /* Ignore latch edges.  */
+       if (e->dest->loop_father->header == e->dest
+           && e->dest->loop_father->latch == act)
+         continue;
+
+       /* Edges inside a single loop should be left where they are.  Edges
+          to subloop headers should lead to representative of the subloop,
+          but from the same place.
 
-           /* Edges inside a single loop should be left where they are.  Edges
-              to subloop headers should lead to representative of the subloop,
-              but from the same place.
-
-              Edges exiting loops should lead from representative
-              of the son of nearest common ancestor of the loops in that
-              act lays.  */
-
-           if (e->dest->loop_father->header == e->dest)
-             dest = LOOP_REPR (e->dest->loop_father);
-
-           if (!flow_bb_inside_loop_p (act->loop_father, e->dest))
-             {
-               depth = 1 + loop_depth (find_common_loop (act->loop_father,
-                                               e->dest->loop_father));
-               if (depth == loop_depth (act->loop_father))
-                 cloop = act->loop_father;
-               else
-                 cloop = VEC_index (loop_p, act->loop_father->superloops,
-                                    depth);
-
-               src = LOOP_REPR (cloop);
-             }
+          Edges exiting loops should lead from representative
+          of the son of nearest common ancestor of the loops in that
+          act lays.  */
+
+       if (e->dest->loop_father->header == e->dest)
+         dest = LOOP_REPR (e->dest->loop_father);
+
+       if (!flow_bb_inside_loop_p (act->loop_father, e->dest))
+         {
+           depth = 1 + loop_depth (find_common_loop (act->loop_father,
+                                                     e->dest->loop_father));
+           if (depth == loop_depth (act->loop_father))
+             cloop = act->loop_father;
+           else
+             cloop = VEC_index (loop_p, act->loop_father->superloops, depth);
+
+           src = LOOP_REPR (cloop);
          }
 
        add_edge (g, src, dest, e);
@@ -347,12 +345,9 @@ mark_irreducible_loops (void)
       queue1[nq++] = BB_REPR (act);
     }
 
-  if (current_loops)
+  FOR_EACH_LOOP (li, loop, 0)
     {
-      FOR_EACH_LOOP (li, loop, 0)
-       {
-         queue1[nq++] = LOOP_REPR (loop);
-       }
+      queue1[nq++] = LOOP_REPR (loop);
     }
   dfs (g, queue1, nq, queue2, false);
   for (i = 0; i < nq; i++)
@@ -366,8 +361,7 @@ mark_irreducible_loops (void)
   free (queue1);
   free (queue2);
 
-  if (current_loops)
-    current_loops->state |= LOOPS_HAVE_MARKED_IRREDUCIBLE_REGIONS;
+  current_loops->state |= LOOPS_HAVE_MARKED_IRREDUCIBLE_REGIONS;
 }
 
 /* Counts number of insns inside LOOP.  */
@@ -605,7 +599,7 @@ mark_loop_exit_edges (void)
   basic_block bb;
   edge e;
 
-  if (!current_loops)
+  if (number_of_loops () <= 1)
     return;
 
   FOR_EACH_BB (bb)
index 6fca205a4ef659486f24051a77716cc9590c05f1..28f510cda29f619020368f43d62d7dddd923d3e2 100644 (file)
@@ -3953,11 +3953,8 @@ if_convert (int x_life_data_ok)
   gcc_assert (! no_new_pseudos || reload_completed);
 
   loop_optimizer_init (AVOID_CFG_MODIFICATIONS);
-  if (current_loops)
-    {
-      mark_loop_exit_edges ();
-      loop_optimizer_finalize ();
-    }
+  mark_loop_exit_edges ();
+  loop_optimizer_finalize ();
   free_dominance_info (CDI_DOMINATORS);
 
   /* Compute postdominators if we think we'll use them.  */
index 3aa6527a80a804615c1f9149c24380bedd7105cf..d78b5ace52e25821bd1a1d78197edc81c2cfa15f 100644 (file)
@@ -51,14 +51,6 @@ loop_optimizer_init (unsigned flags)
   flow_loops_find (loops);
   current_loops = loops;
 
-  if (number_of_loops () <= 1)
-    {
-      /* No loops (the 1 returned by number_of_loops corresponds to the fake
-        loop that we put as a root of the loop tree).  */
-      loop_optimizer_finalize ();
-      return;
-    }
-
   if (flags & LOOPS_MAY_HAVE_MULTIPLE_LATCHES)
     {
       /* If the loops may have multiple latches, we cannot canonicalize
@@ -105,8 +97,7 @@ loop_optimizer_finalize (void)
   struct loop *loop;
   basic_block bb;
 
-  if (!current_loops)
-    return;
+  gcc_assert (current_loops != NULL);
 
   FOR_EACH_LOOP (li, loop, 0)
     {
@@ -244,7 +235,7 @@ gate_rtl_move_loop_invariants (void)
 static unsigned int
 rtl_move_loop_invariants (void)
 {
-  if (current_loops)
+  if (number_of_loops () > 1)
     move_loop_invariants ();
   return 0;
 }
@@ -277,7 +268,7 @@ gate_rtl_unswitch (void)
 static unsigned int
 rtl_unswitch (void)
 {
-  if (current_loops)
+  if (number_of_loops () > 1)
     unswitch_loops ();
   return 0;
 }
@@ -310,7 +301,7 @@ gate_rtl_unroll_and_peel_loops (void)
 static unsigned int
 rtl_unroll_and_peel_loops (void)
 {
-  if (current_loops)
+  if (number_of_loops () > 1)
     {
       int flags = 0;
 
@@ -359,7 +350,7 @@ static unsigned int
 rtl_doloop (void)
 {
 #ifdef HAVE_doloop_end
-  if (current_loops)
+  if (number_of_loops () > 1)
     doloop_optimize_loops ();
 #endif
   return 0;
index 36278a3a9eb00d6157e2cfc856ccda5ee7dd8c20..3e14ff5ac825c480cb16df746bba44351fe6c878 100644 (file)
@@ -893,8 +893,11 @@ sms_schedule (void)
 
   loop_optimizer_init (LOOPS_HAVE_PREHEADERS
                       | LOOPS_HAVE_RECORDED_EXITS);
-  if (!current_loops)
-    return;  /* There are no loops to schedule.  */
+  if (number_of_loops () <= 1)
+    {
+      loop_optimizer_finalize ();
+      return;  /* There are no loops to schedule.  */
+    }
 
   /* Initialize issue_rate.  */
   if (targetm.sched.issue_rate)
index f4ecb6fd415af60a4db366c952de552ac381ac48..0aa2c9537578a5ba182d45d826c9272b09077636 100644 (file)
@@ -1353,7 +1353,7 @@ tree_estimate_probability (void)
   basic_block bb;
 
   loop_optimizer_init (0);
-  if (current_loops && dump_file && (dump_flags & TDF_DETAILS))
+  if (dump_file && (dump_flags & TDF_DETAILS))
     flow_loops_dump (dump_file, NULL, 0);
 
   add_noreturn_fake_exit_edges ();
@@ -1368,7 +1368,7 @@ tree_estimate_probability (void)
 
   mark_irreducible_loops ();
   record_loop_exits ();
-  if (current_loops)
+  if (number_of_loops () > 1)
     predict_loops ();
 
   FOR_EACH_BB (bb)
@@ -1731,7 +1731,7 @@ estimate_loops (void)
   basic_block bb;
 
   /* Start by estimating the frequencies in the loops.  */
-  if (current_loops)
+  if (number_of_loops () > 1)
     estimate_loops_at_level (current_loops->tree_root->inner);
 
   /* Now propagate the frequencies through all the blocks.  */
index 45bee574f85795dea117a467963e7d2f57e4dcef..f55d004c8e9c1437e4b5982b2853fb829554cd3d 100644 (file)
@@ -974,13 +974,7 @@ evolution_function_is_invariant_rec_p (tree chrec, int loopnum)
 bool
 evolution_function_is_invariant_p (tree chrec, int loopnum)
 {
-  if (evolution_function_is_constant_p (chrec))
-    return true;
-  
-  if (current_loops != NULL)
-    return evolution_function_is_invariant_rec_p (chrec, loopnum);
-
-  return false;
+  return evolution_function_is_invariant_rec_p (chrec, loopnum);
 }
 
 /* Determine whether the given tree is an affine multivariate
index 580848eb06a0cae0d76b3398330879ae30163a9a..de2933e53ce2671a5e480d31dfb9ba0eaa1776e5 100644 (file)
@@ -1105,7 +1105,7 @@ main_tree_if_conversion (void)
   loop_iterator li;
   struct loop *loop;
 
-  if (!current_loops)
+  if (number_of_loops () <= 1)
     return 0;
 
   FOR_EACH_LOOP (li, loop, 0)
index eb45529e8f2169d60fc9db7beef9f0da24db2298..fd559388d65f4c51b0bda0f2681c4fea9d6baf58 100644 (file)
@@ -2863,6 +2863,8 @@ scev_analysis (void)
 void
 scev_finalize (void)
 {
+  if (!scalar_evolution_info)
+    return;
   htab_delete (scalar_evolution_info);
   BITMAP_FREE (already_instantiated);
   scalar_evolution_info = NULL;
@@ -2885,7 +2887,7 @@ scev_const_prop (void)
   unsigned i;
   loop_iterator li;
 
-  if (!current_loops)
+  if (number_of_loops () <= 1)
     return 0;
 
   FOR_EACH_BB (bb)
index e2e272b2266f2441054cca69aa5157ebdc0bb9ce..570ad268d2b76e7aee456a74b359b2579da0c954 100644 (file)
@@ -133,8 +133,11 @@ copy_loop_headers (void)
 
   loop_optimizer_init (LOOPS_HAVE_PREHEADERS
                       | LOOPS_HAVE_SIMPLE_LATCHES);
-  if (!current_loops)
-    return 0;
+  if (number_of_loops () <= 1)
+    {
+      loop_optimizer_finalize ();
+      return 0;
+    }
 
 #ifdef ENABLE_CHECKING
   verify_loop_structure ();
index 16b126dc4571a6a93c92e7333d131d608782ed46..a1d06911d6b93ff164ae29717e78d4a271d3f3e3 100644 (file)
@@ -360,7 +360,8 @@ rewrite_into_loop_closed_ssa (bitmap changed_bbs, unsigned update_flag)
   unsigned i, old_num_ssa_names;
   bitmap names_to_rename;
 
-  if (!current_loops)
+  current_loops->state |= LOOP_CLOSED_SSA;
+  if (number_of_loops () <= 1)
     return;
 
   loop_exits = get_loops_exits ();
@@ -389,8 +390,6 @@ rewrite_into_loop_closed_ssa (bitmap changed_bbs, unsigned update_flag)
   /* Fix up all the names found to be used outside their original
      loops.  */
   update_ssa (TODO_update_ssa);
-
-  current_loops->state |= LOOP_CLOSED_SSA;
 }
 
 /* Check invariants of the loop closed ssa form for the USE in BB.  */
@@ -432,7 +431,7 @@ verify_loop_closed_ssa (void)
   tree phi;
   unsigned i;
 
-  if (current_loops == NULL)
+  if (number_of_loops () <= 1)
     return;
 
   verify_ssa (false);
index 895c9c251743bfd9c51ca37cb9d2192a52b66e85..3a8f5db5ae72c8b93eafa0d3de2c1334a8f6c1af 100644 (file)
@@ -45,9 +45,6 @@ tree_loop_optimizer_init (void)
 {
   loop_optimizer_init (LOOPS_NORMAL
                       | LOOPS_HAVE_RECORDED_EXITS);
-  if (!current_loops)
-    return;
-
   rewrite_into_loop_closed_ssa (NULL, TODO_update_ssa);
 }
 
@@ -82,7 +79,7 @@ static unsigned int
 tree_ssa_loop_init (void)
 {
   tree_loop_optimizer_init ();
-  if (!current_loops)
+  if (number_of_loops () <= 1)
     return 0;
 
   scev_initialize ();
@@ -111,7 +108,7 @@ struct tree_opt_pass pass_tree_loop_init =
 static unsigned int
 tree_ssa_loop_im (void)
 {
-  if (!current_loops)
+  if (number_of_loops () <= 1)
     return 0;
 
   tree_ssa_lim ();
@@ -146,7 +143,7 @@ struct tree_opt_pass pass_lim =
 static unsigned int
 tree_ssa_loop_unswitch (void)
 {
-  if (!current_loops)
+  if (number_of_loops () <= 1)
     return 0;
 
   return tree_ssa_unswitch_loops ();
@@ -223,7 +220,7 @@ tree_vectorize (void)
 static bool
 gate_tree_vectorize (void)
 {
-  return flag_tree_vectorize && current_loops;
+  return flag_tree_vectorize && number_of_loops () > 1;
 }
 
 struct tree_opt_pass pass_vectorize =
@@ -249,7 +246,7 @@ struct tree_opt_pass pass_vectorize =
 static unsigned int
 tree_linear_transform (void)
 {
-  if (!current_loops)
+  if (number_of_loops () <= 1)
     return 0;
 
   linear_transform_loops ();
@@ -285,7 +282,7 @@ struct tree_opt_pass pass_linear_transform =
 static unsigned int
 check_data_deps (void)
 {
-  if (!current_loops)
+  if (number_of_loops () <= 1)
     return 0;
 
   tree_check_data_deps ();
@@ -320,7 +317,7 @@ struct tree_opt_pass pass_check_data_deps =
 static unsigned int
 tree_ssa_loop_ivcanon (void)
 {
-  if (!current_loops)
+  if (number_of_loops () <= 1)
     return 0;
 
   return canonicalize_induction_variables ();
@@ -381,7 +378,7 @@ struct tree_opt_pass pass_scev_cprop =
 static unsigned int
 tree_ssa_empty_loop (void)
 {
-  if (!current_loops)
+  if (number_of_loops () <= 1)
     return 0;
 
   return remove_empty_loops ();
@@ -410,7 +407,7 @@ struct tree_opt_pass pass_empty_loop =
 static unsigned int
 tree_ssa_loop_bounds (void)
 {
-  if (!current_loops)
+  if (number_of_loops () <= 1)
     return 0;
 
   estimate_numbers_of_iterations ();
@@ -440,7 +437,7 @@ struct tree_opt_pass pass_record_bounds =
 static unsigned int
 tree_complete_unroll (void)
 {
-  if (!current_loops)
+  if (number_of_loops () <= 1)
     return 0;
 
   return tree_unroll_loops_completely (flag_unroll_loops
@@ -477,7 +474,7 @@ struct tree_opt_pass pass_complete_unroll =
 static unsigned int
 tree_ssa_loop_prefetch (void)
 {
-  if (!current_loops)
+  if (number_of_loops () <= 1)
     return 0;
 
   return tree_ssa_prefetch_arrays ();
@@ -511,7 +508,7 @@ struct tree_opt_pass pass_loop_prefetch =
 static unsigned int
 tree_ssa_loop_ivopts (void)
 {
-  if (!current_loops)
+  if (number_of_loops () <= 1)
     return 0;
 
   tree_ssa_iv_optimize ();
@@ -547,9 +544,6 @@ struct tree_opt_pass pass_iv_optimize =
 static unsigned int
 tree_ssa_loop_done (void)
 {
-  if (!current_loops)
-    return 0;
-
   free_numbers_of_iterations_estimates ();
   scev_finalize ();
   loop_optimizer_finalize ();
index 46332112cda0ad5da6269a35f28f22d85ae66402..cdb6aa8e2e281bf9ce52ec8bd3ee2f15d371cddd 100644 (file)
@@ -3801,7 +3801,7 @@ init_pre (bool do_fre)
 /* Deallocate data structures used by PRE.  */
 
 static void
-fini_pre (bool do_fre)
+fini_pre (void)
 {
   basic_block bb;
   unsigned int i;
@@ -3849,7 +3849,7 @@ fini_pre (bool do_fre)
          && TREE_CODE (SSA_NAME_VALUE (name)) == VALUE_HANDLE)
        SSA_NAME_VALUE (name) = NULL;
     }
-  if (!do_fre && current_loops)
+  if (current_loops != NULL)
     loop_optimizer_finalize ();
 }
 
@@ -3915,7 +3915,7 @@ execute_pre (bool do_fre)
       realify_fake_stores ();
     }
 
-  fini_pre (do_fre);
+  fini_pre ();
 }
 
 /* Gate and execute functions for PRE.  */
index 6732f2e28991749916c8c72a0cfb114bf206de63..815c84fb7b305bebc032bf4e01bfa6bfa397d2cf 100644 (file)
@@ -530,7 +530,7 @@ thread_block (basic_block bb, bool noloop_only)
   /* If we thread the latch of the loop to its exit, the loop ceases to
      exist.  Make sure we do not restrict ourselves in order to preserve
      this loop.  */
-  if (current_loops && loop->header == bb)
+  if (loop->header == bb)
     {
       e = loop_latch_edge (loop);
       e2 = e->aux;
@@ -552,7 +552,6 @@ thread_block (basic_block bb, bool noloop_only)
          /* If NOLOOP_ONLY is true, we only allow threading through the
             header of a loop to exit edges.  */
          || (noloop_only
-             && current_loops
              && bb == bb->loop_father->header
              && !loop_exit_edge_p (bb->loop_father, e2)))
        {
@@ -1023,6 +1022,9 @@ thread_through_all_blocks (bool may_peel_loop_headers)
   struct loop *loop;
   loop_iterator li;
 
+  /* We must know about loops in order to preserve them.  */
+  gcc_assert (current_loops != NULL);
+
   if (threaded_edges == NULL)
     return false;
 
@@ -1046,16 +1048,13 @@ thread_through_all_blocks (bool may_peel_loop_headers)
   /* Then perform the threading through loop headers.  We start with the
      innermost loop, so that the changes in cfg we perform won't affect
      further threading.  */
-  if (current_loops)
+  FOR_EACH_LOOP (li, loop, LI_FROM_INNERMOST)
     {
-      FOR_EACH_LOOP (li, loop, LI_FROM_INNERMOST)
-       {
-         if (!loop->header
-             || !bitmap_bit_p (threaded_blocks, loop->header->index))
-           continue;
+      if (!loop->header
+         || !bitmap_bit_p (threaded_blocks, loop->header->index))
+       continue;
 
-         retval |= thread_through_loop_header (loop, may_peel_loop_headers);
-       }
+      retval |= thread_through_loop_header (loop, may_peel_loop_headers);
     }
 
   if (retval)
index c32c907ee3a454584dc442a254655fb7b1097ca2..b62b3e1d70bea7fc484d31777ceae2c618eb0890 100644 (file)
@@ -5998,11 +5998,8 @@ static unsigned int
 execute_vrp (void)
 {
   loop_optimizer_init (LOOPS_NORMAL | LOOPS_HAVE_RECORDED_EXITS);
-  if (current_loops)
-    {
-      rewrite_into_loop_closed_ssa (NULL, TODO_update_ssa);
-      scev_initialize ();
-    }
+  rewrite_into_loop_closed_ssa (NULL, TODO_update_ssa);
+  scev_initialize ();
 
   insert_range_assertions ();
 
@@ -6023,11 +6020,8 @@ execute_vrp (void)
   update_ssa (TODO_update_ssa);
 
   finalize_jump_threads ();
-  if (current_loops)
-    {
-      scev_finalize ();
-      loop_optimizer_finalize ();
-    }
+  scev_finalize ();
+  loop_optimizer_finalize ();
 
   return 0;
 }