diff options
author | Sergei Trofimovich <slyfox@gentoo.org> | 2020-10-15 22:35:46 +0100 |
---|---|---|
committer | Sergei Trofimovich <slyfox@gentoo.org> | 2020-10-15 22:35:46 +0100 |
commit | 604daa40f01cb708beafcef226f1b207d576075d (patch) | |
tree | af8d519c4f25bf94c44dde3e649051a30fcb7451 /9.3.0 | |
parent | 10.2.0: backport IPA to_frequency() ICE (diff) | |
download | gcc-patches-604daa40f01cb708beafcef226f1b207d576075d.tar.gz gcc-patches-604daa40f01cb708beafcef226f1b207d576075d.tar.bz2 gcc-patches-604daa40f01cb708beafcef226f1b207d576075d.zip |
9.3.0: backport IPA to_frequency() ICE
Reported-by: inasprecali@disroot.org
Bug: https://bugs.gentoo.org/746578
Bug: https://gcc.gnu.org/PR97295
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
Diffstat (limited to '9.3.0')
-rw-r--r-- | 9.3.0/gentoo/31_all_ipa-to_frequency.patch | 48 | ||||
-rw-r--r-- | 9.3.0/gentoo/README.history | 1 |
2 files changed, 49 insertions, 0 deletions
diff --git a/9.3.0/gentoo/31_all_ipa-to_frequency.patch b/9.3.0/gentoo/31_all_ipa-to_frequency.patch new file mode 100644 index 0000000..0849207 --- /dev/null +++ b/9.3.0/gentoo/31_all_ipa-to_frequency.patch @@ -0,0 +1,48 @@ +https://bugs.gentoo.org/746578 +https://gcc.gnu.org/PR97295 + +From 508e2d88a4c512e8b8685cf5ba201ad48e6bb58d Mon Sep 17 00:00:00 2001 +From: Martin Liska <mliska@suse.cz> +Date: Tue, 13 Oct 2020 16:44:47 +0200 +Subject: [PATCH] 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. +--- + gcc/profile-count.c | 4 ++-- + gcc/regs.h | 3 ++- + 2 files changed, 4 insertions(+), 3 deletions(-) + +--- 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; +--- 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) \ +-- +2.28.0 + diff --git a/9.3.0/gentoo/README.history b/9.3.0/gentoo/README.history index 9dbbc19..ff47a81 100644 --- a/9.3.0/gentoo/README.history +++ b/9.3.0/gentoo/README.history @@ -1,6 +1,7 @@ 4 TODO + 30_all_plugin-objdump.patch U 11_all_extra-options.patch + + 31_all_ipa-to_frequency.patch 3 29 May 2020 + 29_all_libcpp-ar.patch |