passes.c (rest_of_handle_branch_prob): Do not rebuild profiling info when not neecesary
authorJan Hubicka <jh@suse.cz>
Sat, 25 Jun 2005 11:57:53 +0000 (13:57 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Sat, 25 Jun 2005 11:57:53 +0000 (11:57 +0000)
* passes.c (rest_of_handle_branch_prob): Do not rebuild profiling info
when not neecesary
(rest_of_compilation): Fix conditional on branch prob pass.
* predict.c (tree_estimate_probability): Enable strip_builtin_expect
when not loop optimizing.

From-SVN: r101321

gcc/ChangeLog
gcc/passes.c
gcc/predict.c

index 634f89a06a311bff90c5a2dccc804666e8694025..87e59aa73a40fe44b06e6e7eb3980ce4abfc89ee 100644 (file)
@@ -1,3 +1,11 @@
+2005-06-25  Jan Hubicka  <jh@suse.cz>
+
+       * passes.c (rest_of_handle_branch_prob): Do not rebuild profiling info
+       when not neecesary
+       (rest_of_compilation): Fix conditional on branch prob pass.
+       * predict.c (tree_estimate_probability): Enable strip_builtin_expect
+       when not loop optimizing.
+
 2005-06-25  Bernd Schmidt  <bernd.schmidt@analog.com>
 
        * config/bfin/bfin.md (ror_one, rol_one, ashrdi3, ashldi3, lshrdi3):
index 4eff6c6d44064e0bb6e4f868892259c22e36bd87..126427f6cf4e459b87fefd9a32332ec40ea0d47c 100644 (file)
@@ -790,7 +790,8 @@ rest_of_handle_branch_prob (void)
   timevar_push (TV_BRANCH_PROB);
   open_dump_file (DFI_bp, current_function_decl);
 
-  if (profile_arc_flag || flag_test_coverage || flag_branch_probabilities)
+  if ((profile_arc_flag || flag_test_coverage || flag_branch_probabilities)
+      && !flag_tree_based_profiling)
     branch_prob ();
 
   /* Discover and record the loop depth at the head of each basic
@@ -801,7 +802,7 @@ rest_of_handle_branch_prob (void)
     flow_loops_dump (&loops, dump_file, NULL, 0);
 
   /* Estimate using heuristics if no profiling info is available.  */
-  if (flag_guess_branch_prob)
+  if (flag_guess_branch_prob && profile_status == PROFILE_ABSENT)
     estimate_probability (&loops);
 
   flow_loops_free (&loops);
@@ -1579,9 +1580,9 @@ rest_of_compilation (void)
   timevar_push (TV_FLOW);
   rest_of_handle_cfg ();
 
-  if (!flag_tree_based_profiling
-      && (optimize > 0 || profile_arc_flag
-         || flag_test_coverage || flag_branch_probabilities))
+  if (optimize > 0
+      || ((profile_arc_flag || flag_test_coverage || flag_branch_probabilities)
+         && !flag_tree_based_profiling))
     {
       rtl_register_profile_hooks ();
       rtl_register_value_prof_hooks ();
@@ -1589,6 +1590,7 @@ rest_of_compilation (void)
 
       if (flag_branch_probabilities
          && flag_profile_values
+          && !flag_tree_based_profiling
          && (flag_value_profile_transformations
              || flag_speculative_prefetching))
        rest_of_handle_value_profile_transformations ();
index 2e78d3937a0e2be511838a2cb4570b113a9fe6e4..792acb8ab147f38d85f08c4f3b3450d48b604c07 100644 (file)
@@ -1383,7 +1383,7 @@ tree_estimate_probability (void)
   FOR_EACH_BB (bb)
     combine_predictions_for_bb (dump_file, bb);
 
-  if (0)  /* FIXME: Enable once we are pass down the profile to RTL level.  */
+  if (!flag_loop_optimize)
     strip_builtin_expect ();
   estimate_bb_frequencies (&loops_info);
   free_dominance_info (CDI_POST_DOMINATORS);