summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2005-06-25 11:57:53 +0000
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2005-06-25 11:57:53 +0000
commit83480dec6042d266a6e213a860dbd871b6b85f4c (patch)
treefcd0bb9afb768f1dc2170bdeaffb0ba47bc7696e /gcc
parent91ac7c14a904530533c09140c1a2916f5d166bd2 (diff)
downloadgcc-83480dec6042d266a6e213a860dbd871b6b85f4c.tar.gz
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@101321 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/passes.c12
-rw-r--r--gcc/predict.c2
3 files changed, 16 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 634f89a06a3..87e59aa73a4 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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):
diff --git a/gcc/passes.c b/gcc/passes.c
index 4eff6c6d440..126427f6cf4 100644
--- a/gcc/passes.c
+++ b/gcc/passes.c
@@ -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 ();
diff --git a/gcc/predict.c b/gcc/predict.c
index 2e78d3937a0..792acb8ab14 100644
--- a/gcc/predict.c
+++ b/gcc/predict.c
@@ -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);