From: "Sam James" <sam@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: sys-devel/gcc/, sys-devel/gcc/files/
Date: Wed, 12 Apr 2023 13:23:36 +0000 (UTC) [thread overview]
Message-ID: <1681305803.efd15a6fa5db222c80ae272f77ae229340e4fb20.sam@gentoo> (raw)
commit: efd15a6fa5db222c80ae272f77ae229340e4fb20
Author: Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Wed Apr 12 13:20:36 2023 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Apr 12 13:23:23 2023 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=efd15a6f
sys-devel/gcc: backport two more patches for 13 (checking ICE + Clang miscompilation)
First fix is a checking ICE. As we're new to handling checking (see previous commits),
these are generally a sign of possible wrong-code/miscompilation, so it's nice
when checking flags it up and turns the issue into an ICE. So, don't be fooled
by the ICE part.
Second is a miscompilation of Clang which leads to a test failure.
I wouldn't normally backport so many of these, but they're all things we've
found through testing in Gentoo over the last few days, and it's especially
important given GCC 13 is imminent.
Bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109473
Bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109462
Signed-off-by: Sam James <sam <AT> gentoo.org>
...-clang-LocalizationChecker-ranger-any-PHI.patch | 46 +++++++++++++++++
...pre20230409-PR109473-ICE-reduction-epilog.patch | 58 +++++++++++++++++++++
sys-devel/gcc/gcc-13.0.1_pre20230409-r4.ebuild | 60 ++++++++++++++++++++++
3 files changed, 164 insertions(+)
diff --git a/sys-devel/gcc/files/gcc-13.0.1_pre20230409-PR109462-clang-LocalizationChecker-ranger-any-PHI.patch b/sys-devel/gcc/files/gcc-13.0.1_pre20230409-PR109462-clang-LocalizationChecker-ranger-any-PHI.patch
new file mode 100644
index 000000000000..2b5ea5ad826a
--- /dev/null
+++ b/sys-devel/gcc/files/gcc-13.0.1_pre20230409-PR109462-clang-LocalizationChecker-ranger-any-PHI.patch
@@ -0,0 +1,46 @@
+https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109462
+https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=24af552876eff707f75d30d3f0f0e7a5d62dd857
+
+From 24af552876eff707f75d30d3f0f0e7a5d62dd857 Mon Sep 17 00:00:00 2001
+From: Andrew MacLeod <amacleod@redhat.com>
+Date: Tue, 11 Apr 2023 17:29:03 -0400
+Subject: [PATCH] Don't use ANY PHI equivalences in range-on-entry.
+
+PR 108139 dissallows PHI equivalencies in the on-entry calculator, but
+it was only checking if the equivlaence was a PHI. In this case, NAME
+itself is a PHI with an equivlaence caused by an undefined value, so we
+also need to check that case. Unfortunately this un-fixes 101912.
+
+ PR tree-optimization/109462
+ gcc/
+ * gimple-range-cache.cc (ranger_cache::fill_block_cache): Don't
+ check for equivalences if NAME is a phi node.
+
+ gcc/testsuite/
+ * gcc.dg/uninit-pr101912.c: XFAIL the warning.
+--- a/gcc/gimple-range-cache.cc
++++ b/gcc/gimple-range-cache.cc
+@@ -1218,7 +1218,9 @@ ranger_cache::fill_block_cache (tree name, basic_block bb, basic_block def_bb)
+ fprintf (dump_file, "\n");
+ }
+ // See if any equivalences can refine it.
+- if (m_oracle)
++ // PR 109462, like 108139 below, a one way equivalence introduced
++ // by a PHI node can also be through the definition side. Disallow it.
++ if (m_oracle && !is_a<gphi *> (SSA_NAME_DEF_STMT (name)))
+ {
+ tree equiv_name;
+ relation_kind rel;
+--- a/gcc/testsuite/gcc.dg/uninit-pr101912.c
++++ b/gcc/testsuite/gcc.dg/uninit-pr101912.c
+@@ -11,7 +11,7 @@ tzloadbody (void)
+ for (int i = 0; i < n; i++)
+ {
+ int corr = getint ();
+- if (corr < 1 || (corr == 1 && !(leapcnt == 0 || (prevcorr < corr ? corr == prevcorr + 1 : (corr == prevcorr || corr == prevcorr - 1))))) /* { dg-bogus "uninitialized" } */
++ if (corr < 1 || (corr == 1 && !(leapcnt == 0 || (prevcorr < corr ? corr == prevcorr + 1 : (corr == prevcorr || corr == prevcorr - 1))))) /* { dg-bogus "uninitialized" "pr101912" { xfail *-*-* } } */
+ return -1;
+
+ prevcorr = corr;
+--
+2.31.1
diff --git a/sys-devel/gcc/files/gcc-13.0.1_pre20230409-PR109473-ICE-reduction-epilog.patch b/sys-devel/gcc/files/gcc-13.0.1_pre20230409-PR109473-ICE-reduction-epilog.patch
new file mode 100644
index 000000000000..cab26653a09d
--- /dev/null
+++ b/sys-devel/gcc/files/gcc-13.0.1_pre20230409-PR109473-ICE-reduction-epilog.patch
@@ -0,0 +1,58 @@
+https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=df7f55cb2ae550adeda339a57b657ebe1ad39367
+https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109473
+
+From df7f55cb2ae550adeda339a57b657ebe1ad39367 Mon Sep 17 00:00:00 2001
+From: Richard Biener <rguenther@suse.de>
+Date: Wed, 12 Apr 2023 10:22:08 +0200
+Subject: [PATCH] tree-optimization/109473 - ICE with reduction epilog
+ adjustment op
+
+The following makes sure to carry out the reduction epilog adjustment
+in the original computation type which for pointers is an unsigned
+integer type. There's a similar issue with signed vs. unsigned ops
+and overflow which is fixed by this as well.
+
+ PR tree-optimization/109473
+ * tree-vect-loop.cc (vect_create_epilog_for_reduction):
+ Convert scalar result to the computation type before performing
+ the reduction adjustment.
+
+ * gcc.dg/vect/pr109473.c: New testcase.
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/vect/pr109473.c
+@@ -0,0 +1,16 @@
++/* { dg-do compile } */
++/* { dg-additional-options "-O" } */
++
++struct spa_buffer {
++ __UINT32_TYPE__ *metas;
++};
++void do_port_use_buffers(struct spa_buffer **buffers, void *endptr, void *mem)
++{
++ for (int i = 0; i < 128; i++)
++ {
++ for (int j = 0; j < 128; j++)
++ endptr = (void *)((__UINTPTR_TYPE__)endptr + buffers[i]->metas[j]);
++ if (endptr > mem)
++ return;
++ }
++}
+--- a/gcc/tree-vect-loop.cc
++++ b/gcc/tree-vect-loop.cc
+@@ -6297,9 +6297,12 @@ vect_create_epilog_for_reduction (loop_vec_info loop_vinfo,
+ {
+ new_temp = scalar_results[0];
+ gcc_assert (TREE_CODE (TREE_TYPE (adjustment_def)) != VECTOR_TYPE);
+- adjustment_def = gimple_convert (&stmts, scalar_type, adjustment_def);
+- new_temp = gimple_build (&stmts, code, scalar_type,
++ adjustment_def = gimple_convert (&stmts, TREE_TYPE (vectype),
++ adjustment_def);
++ new_temp = gimple_convert (&stmts, TREE_TYPE (vectype), new_temp);
++ new_temp = gimple_build (&stmts, code, TREE_TYPE (vectype),
+ new_temp, adjustment_def);
++ new_temp = gimple_convert (&stmts, scalar_type, new_temp);
+ }
+
+ epilog_stmt = gimple_seq_last_stmt (stmts);
+--
+2.31.1
diff --git a/sys-devel/gcc/gcc-13.0.1_pre20230409-r4.ebuild b/sys-devel/gcc/gcc-13.0.1_pre20230409-r4.ebuild
new file mode 100644
index 000000000000..f1ae324ca919
--- /dev/null
+++ b/sys-devel/gcc/gcc-13.0.1_pre20230409-r4.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+TOOLCHAIN_PATCH_DEV="sam"
+PATCH_VER="9"
+PATCH_GCC_VER="13.1.0"
+MUSL_VER="1"
+MUSL_GCC_VER="13.1.0"
+
+if [[ $(ver_cut 3) == 9999 ]] ; then
+ MY_PV_2=$(ver_cut 2)
+ MY_PV_3=$(($(ver_cut 3) - 9998))
+ if [[ ${MY_PV_2} == 0 ]] ; then
+ MY_PV_2=0
+ MY_PV_3=0
+ else
+ MY_PV_2=$(($(ver_cut 2) - 1))
+ fi
+
+ # e.g. 12.2.9999 -> 12.1.1
+ TOOLCHAIN_GCC_PV=$(ver_cut 1).${MY_PV_2}.${MY_PV_3}
+fi
+
+inherit toolchain
+# Needs to be after inherit (for now?), bug #830908
+EGIT_BRANCH=master
+
+# Don't keyword live ebuilds
+if ! tc_is_live && [[ -z ${TOOLCHAIN_USE_GIT_PATCHES} ]] ; then
+# KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+ KEYWORDS="~loong"
+fi
+
+if [[ ${CATEGORY} != cross-* ]] ; then
+ # Technically only if USE=hardened *too* right now, but no point in complicating it further.
+ # If GCC is enabling CET by default, we need glibc to be built with support for it.
+ # bug #830454
+ RDEPEND="elibc_glibc? ( sys-libs/glibc[cet(-)?] )"
+ DEPEND="${RDEPEND}"
+ BDEPEND=">=${CATEGORY}/binutils-2.30[cet(-)?]"
+fi
+
+src_prepare() {
+ local p upstreamed_patches=(
+ # add them here
+ )
+ for p in "${upstreamed_patches[@]}"; do
+ rm -v "${WORKDIR}/patch/${p}" || die
+ done
+
+ toolchain_src_prepare
+
+ eapply "${FILESDIR}"/${P}-PR109469-SLP-returns-twice.patch
+ eapply "${FILESDIR}"/${P}-PR109434-DSE-throw.patch
+ eapply "${FILESDIR}"/${P}-PR109473-ICE-reduction-epilog.patch
+ eapply "${FILESDIR}"/${P}-PR109462-clang-LocalizationChecker-ranger-any-PHI.patch
+ eapply_user
+}
next reply other threads:[~2023-04-12 13:23 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-12 13:23 Sam James [this message]
-- strict thread matches above, loose matches on Subject: below --
2025-08-08 12:28 [gentoo-commits] repo/gentoo:master commit in: sys-devel/gcc/, sys-devel/gcc/files/ Sam James
2025-07-08 18:45 Sam James
2025-06-02 23:15 Sam James
2025-04-18 21:17 Sam James
2025-04-10 17:42 Sam James
2025-02-26 4:06 Sam James
2024-12-23 11:57 Sam James
2024-11-19 3:52 Sam James
2024-06-25 0:11 Sam James
2024-03-07 18:37 Sam James
2024-02-19 5:06 Sam James
2023-10-18 19:33 Sam James
2023-05-16 6:07 Sam James
2023-05-03 12:32 Sam James
2023-04-26 14:14 Sam James
2023-04-17 12:05 Sam James
2023-04-12 7:40 Sam James
2023-04-12 7:35 Sam James
2023-04-05 1:18 Sam James
2022-08-22 1:41 Sam James
2022-08-19 18:05 Sam James
2021-11-18 5:25 Sam James
2020-02-06 19:19 Sergei Trofimovich
2019-05-03 21:49 Andreas K. Hüttel
2017-11-19 13:40 Andreas Hüttel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1681305803.efd15a6fa5db222c80ae272f77ae229340e4fb20.sam@gentoo \
--to=sam@gentoo.org \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox