diff options
author | Jan Hubicka <jh@suse.cz> | 2008-08-31 14:52:07 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2008-08-31 12:52:07 +0000 |
commit | fb2fed03b680e2421f24ed33e3ab7dc8f03797cc (patch) | |
tree | ec47e89df6f23c1dc88cad878c8a9f76d8738fa1 /gcc/predict.c | |
parent | 847535b6255a78ba618745d501b772ac95230359 (diff) | |
download | gcc-fb2fed03b680e2421f24ed33e3ab7dc8f03797cc.zip gcc-fb2fed03b680e2421f24ed33e3ab7dc8f03797cc.tar.gz gcc-fb2fed03b680e2421f24ed33e3ab7dc8f03797cc.tar.bz2 |
postreload-gcse.c (eliminate_partially_redundant_loads): Use optimize_bb_for_size_p.
* postreload-gcse.c (eliminate_partially_redundant_loads): Use optimize_bb_for_size_p.
* predict.c (maybe_hot_frequency_p): Make inline.
(maybe_hot_count_p): Break out from ...
(maybe_hot_bb_p): ... this one.
(maybe_hot_edge_p): Simplify.
* basic-block.h (probably_cold_bb_p): Remove.
From-SVN: r139830
Diffstat (limited to 'gcc/predict.c')
-rw-r--r-- | gcc/predict.c | 46 |
1 files changed, 18 insertions, 28 deletions
diff --git a/gcc/predict.c b/gcc/predict.c index e02f9f8..183ae8f 100644 --- a/gcc/predict.c +++ b/gcc/predict.c @@ -110,7 +110,8 @@ static const struct predictor_info predictor_info[]= { #undef DEF_PREDICTOR /* Return TRUE if frequency FREQ is considered to be hot. */ -static bool + +static inline bool maybe_hot_frequency_p (int freq) { if (!profile_info || !flag_branch_probabilities) @@ -127,17 +128,27 @@ maybe_hot_frequency_p (int freq) return true; } +/* Return TRUE if frequency FREQ is considered to be hot. */ + +static inline bool +maybe_hot_count_p (gcov_type count) +{ + if (profile_status != PROFILE_READ) + return true; + /* Code executed at most once is not hot. */ + if (profile_info->runs >= count) + return false; + return (count + > profile_info->sum_max / PARAM_VALUE (HOT_BB_COUNT_FRACTION)); +} + /* Return true in case BB can be CPU intensive and should be optimized for maximal performance. */ bool maybe_hot_bb_p (const_basic_block bb) { - if (profile_info && flag_branch_probabilities - && (bb->count - < profile_info->sum_max / PARAM_VALUE (HOT_BB_COUNT_FRACTION))) - return false; - return maybe_hot_frequency_p (bb->frequency); + return maybe_hot_count_p (bb->count) || maybe_hot_frequency_p (bb->frequency); } /* Return true if the call can be hot. */ @@ -167,28 +178,7 @@ cgraph_maybe_hot_edge_p (struct cgraph_edge *edge) bool maybe_hot_edge_p (edge e) { - if (profile_info && flag_branch_probabilities - && (e->count - < profile_info->sum_max / PARAM_VALUE (HOT_BB_COUNT_FRACTION))) - return false; - return maybe_hot_frequency_p (EDGE_FREQUENCY (e)); -} - -/* Return true in case BB is cold and should be optimized for size. */ - -bool -probably_cold_bb_p (const_basic_block bb) -{ - if (profile_info && flag_branch_probabilities - && (bb->count - < profile_info->sum_max / PARAM_VALUE (HOT_BB_COUNT_FRACTION))) - return true; - if ((!profile_info || !flag_branch_probabilities) - && cfun->function_frequency == FUNCTION_FREQUENCY_UNLIKELY_EXECUTED) - return true; - if (bb->frequency < BB_FREQ_MAX / PARAM_VALUE (HOT_BB_FREQUENCY_FRACTION)) - return true; - return false; + return maybe_hot_count_p (e->count) || maybe_hot_frequency_p (EDGE_FREQUENCY (e)); } /* Return true in case BB is probably never executed. */ |