mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-20 19:01:12 +08:00
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
This commit is contained in:
parent
847535b625
commit
fb2fed03b6
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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. */
|
||||
|
Loading…
x
Reference in New Issue
Block a user