aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Trofimovich <slyfox@gentoo.org>2020-10-15 22:35:46 +0100
committerSergei Trofimovich <slyfox@gentoo.org>2020-10-15 22:35:46 +0100
commit604daa40f01cb708beafcef226f1b207d576075d (patch)
treeaf8d519c4f25bf94c44dde3e649051a30fcb7451
parent10.2.0: backport IPA to_frequency() ICE (diff)
downloadgcc-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>
-rw-r--r--9.3.0/gentoo/31_all_ipa-to_frequency.patch48
-rw-r--r--9.3.0/gentoo/README.history1
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