commit:     7a1528e34ef7a5b1f431fbd6b918df8735e73ea8
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Fri Apr 18 21:15:59 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Fri Apr 18 21:17:01 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=7a1528e3

sys-devel/gcc: backport a late patch to 15 RC1

I thought this had made it in, but it didn't.

Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../files/gcc-15.0.1_pre20250418-PR119858.patch    | 38 +++++++++++++++
 sys-devel/gcc/gcc-15.0.1_pre20250418-r1.ebuild     | 57 ++++++++++++++++++++++
 2 files changed, 95 insertions(+)

diff --git a/sys-devel/gcc/files/gcc-15.0.1_pre20250418-PR119858.patch 
b/sys-devel/gcc/files/gcc-15.0.1_pre20250418-PR119858.patch
new file mode 100644
index 000000000000..f0b40a288dbf
--- /dev/null
+++ b/sys-devel/gcc/files/gcc-15.0.1_pre20250418-PR119858.patch
@@ -0,0 +1,38 @@
+https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=d88b917325546cee24a544dc05cbfbef0febfe25
+
+From d88b917325546cee24a544dc05cbfbef0febfe25 Mon Sep 17 00:00:00 2001
+From: Richard Biener <[email protected]>
+Date: Fri, 18 Apr 2025 14:52:41 +0200
+Subject: [PATCH] tree-optimization/119858 - type mismatch with POINTER_PLUS
+
+The recent PFA early-break vectorization fix left us with a POINTER_PLUS
+and non-sizetype offset.
+
+       PR tree-optimization/119858
+       * tree-vect-loop.cc (vectorizable_live_operation): Convert
+       pointer offset to sizetype.
+---
+ gcc/tree-vect-loop.cc | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/gcc/tree-vect-loop.cc b/gcc/tree-vect-loop.cc
+index 958b829fa8d1..2d35fa128864 100644
+--- a/gcc/tree-vect-loop.cc
++++ b/gcc/tree-vect-loop.cc
+@@ -11657,8 +11657,12 @@ vectorizable_live_operation (vec_info *vinfo, 
stmt_vec_info stmt_info,
+                                   break_lhs_phi);
+ 
+                 if (POINTER_TYPE_P (TREE_TYPE (new_tree)))
+-                  tmp2 = gimple_build (&iv_stmts, POINTER_PLUS_EXPR,
+-                                       TREE_TYPE (new_tree), new_tree, tmp2);
++                  {
++                    tmp2 = gimple_convert (&iv_stmts, sizetype, tmp2);
++                    tmp2 = gimple_build (&iv_stmts, POINTER_PLUS_EXPR,
++                                         TREE_TYPE (new_tree), new_tree,
++                                         tmp2);
++                  }
+                 else
+                   {
+                     tmp2 = gimple_convert (&iv_stmts, TREE_TYPE (new_tree),
+-- 
+2.43.5

diff --git a/sys-devel/gcc/gcc-15.0.1_pre20250418-r1.ebuild 
b/sys-devel/gcc/gcc-15.0.1_pre20250418-r1.ebuild
new file mode 100644
index 000000000000..06d32297706e
--- /dev/null
+++ b/sys-devel/gcc/gcc-15.0.1_pre20250418-r1.ebuild
@@ -0,0 +1,57 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Maintenance notes and explanations of GCC handling are on the wiki:
+# https://wiki.gentoo.org/wiki/Project:Toolchain/sys-devel/gcc
+
+TOOLCHAIN_PATCH_DEV="sam"
+TOOLCHAIN_HAS_TESTS=1
+TOOLCHAIN_GCC_RC=1
+PATCH_GCC_VER="15.0.0"
+PATCH_VER="55"
+MUSL_VER="2"
+MUSL_GCC_VER="15.0.0"
+PYTHON_COMPAT=( python3_{10..13} )
+
+if [[ -n ${TOOLCHAIN_GCC_RC} ]] ; then
+       # Cheesy hack for RCs
+       MY_PV=$(ver_cut 1).$((($(ver_cut 2) + 1))).$((($(ver_cut 3) - 
1)))-RC-$(ver_cut 5)
+       MY_P=${PN}-${MY_PV}
+       GCC_TARBALL_SRC_URI="mirror://gcc/snapshots/${MY_PV}/${MY_P}.tar.xz"
+       TOOLCHAIN_SET_S=no
+       S="${WORKDIR}"/${MY_P}
+fi
+
+inherit toolchain
+
+if tc_is_live ; then
+       # Needs to be after inherit (for now?), bug #830908
+       EGIT_BRANCH=master
+elif [[ -z ${TOOLCHAIN_USE_GIT_PATCHES} ]] ; then
+       # Don't keyword live ebuilds
+       #KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc 
~ppc64 ~riscv ~s390 ~sparc ~x86"
+       :;
+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}"
+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}-PR119858.patch
+       eapply_user
+}

Reply via email to