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 | |
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')
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/basic-block.h | 1 | ||||
-rw-r--r-- | gcc/postreload-gcse.c | 2 | ||||
-rw-r--r-- | gcc/predict.c | 46 |
4 files changed, 28 insertions, 30 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c5690fc..b20e8b2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2008-08-31 Jan Hubicka <jh@suse.cz> + + * 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. + 2008-08-31 Jakub Jelinek <jakub@redhat.com> PR target/37168 diff --git a/gcc/basic-block.h b/gcc/basic-block.h index 59a6f4a..9b759b0 100644 --- a/gcc/basic-block.h +++ b/gcc/basic-block.h @@ -829,7 +829,6 @@ extern void compute_available (sbitmap *, sbitmap *, sbitmap *, sbitmap *); /* In predict.c */ extern bool maybe_hot_bb_p (const_basic_block); extern bool maybe_hot_edge_p (edge); -extern bool probably_cold_bb_p (const_basic_block); extern bool probably_never_executed_bb_p (const_basic_block); extern bool optimize_bb_for_size_p (const_basic_block); extern bool optimize_bb_for_speed_p (const_basic_block); diff --git a/gcc/postreload-gcse.c b/gcc/postreload-gcse.c index 884830a..57be7a5 100644 --- a/gcc/postreload-gcse.c +++ b/gcc/postreload-gcse.c @@ -1173,7 +1173,7 @@ eliminate_partially_redundant_loads (void) continue; /* Do not try anything on cold basic blocks. */ - if (probably_cold_bb_p (bb)) + if (optimize_bb_for_size_p (bb)) continue; /* Reset the table of things changed since the start of the current 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. */ |