diff options
author | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-06-25 11:57:53 +0000 |
---|---|---|
committer | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-06-25 11:57:53 +0000 |
commit | 83480dec6042d266a6e213a860dbd871b6b85f4c (patch) | |
tree | fcd0bb9afb768f1dc2170bdeaffb0ba47bc7696e /gcc | |
parent | 91ac7c14a904530533c09140c1a2916f5d166bd2 (diff) | |
download | gcc-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/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/passes.c | 12 | ||||
-rw-r--r-- | gcc/predict.c | 2 |
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); |