aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2020-10-13 16:44:47 +0200
committerMartin Liska <mliska@suse.cz>2020-10-15 09:56:55 +0200
commit508e2d88a4c512e8b8685cf5ba201ad48e6bb58d (patch)
tree418eecfd7b1df7cb9ccd6d12f794a03733c7971a /gcc
parenta0504b3d7c39d78cd9f50a52c49edb0113eadea5 (diff)
downloadgcc-508e2d88a4c512e8b8685cf5ba201ad48e6bb58d.zip
gcc-508e2d88a4c512e8b8685cf5ba201ad48e6bb58d.tar.gz
gcc-508e2d88a4c512e8b8685cf5ba201ad48e6bb58d.tar.bz2
IPA: fix profile handling in IRA
gcc/ChangeLog: PR ipa/97295 * profile-count.c (profile_count::to_frequency): Move part of gcc_assert to STATIC_ASSERT. * regs.h (REG_FREQ_FROM_BB): Do not use count.to_frequency for a function that does not have count_max initialized.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/profile-count.c4
-rw-r--r--gcc/regs.h3
2 files changed, 4 insertions, 3 deletions
diff --git a/gcc/profile-count.c b/gcc/profile-count.c
index c89914f..aaefc11 100644
--- a/gcc/profile-count.c
+++ b/gcc/profile-count.c
@@ -270,8 +270,8 @@ profile_count::to_frequency (struct function *fun) const
return BB_FREQ_MAX;
if (*this == zero ())
return 0;
- gcc_assert (REG_BR_PROB_BASE == BB_FREQ_MAX
- && fun->cfg->count_max.initialized_p ());
+ STATIC_ASSERT (REG_BR_PROB_BASE == BB_FREQ_MAX);
+ gcc_assert (fun->cfg->count_max.initialized_p ());
profile_probability prob = probability_in (fun->cfg->count_max);
if (!prob.initialized_p ())
return REG_BR_PROB_BASE;
diff --git a/gcc/regs.h b/gcc/regs.h
index 1decd2c2..11416c4 100644
--- a/gcc/regs.h
+++ b/gcc/regs.h
@@ -128,7 +128,8 @@ extern size_t reg_info_p_size;
or profile driven feedback is available and the function is never executed,
frequency is always equivalent. Otherwise rescale the basic block
frequency. */
-#define REG_FREQ_FROM_BB(bb) (optimize_function_for_size_p (cfun) \
+#define REG_FREQ_FROM_BB(bb) ((optimize_function_for_size_p (cfun) \
+ || !cfun->cfg->count_max.initialized_p ()) \
? REG_FREQ_MAX \
: ((bb)->count.to_frequency (cfun) \
* REG_FREQ_MAX / BB_FREQ_MAX) \