From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 9B37B15ACFB for ; Wed, 12 Apr 2023 07:40:29 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id D850DE0886; Wed, 12 Apr 2023 07:40:28 +0000 (UTC) Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 9E47CE0886 for ; Wed, 12 Apr 2023 07:40:28 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 71588340B7E for ; Wed, 12 Apr 2023 07:40:27 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id D41C17B for ; Wed, 12 Apr 2023 07:40:25 +0000 (UTC) From: "Sam James" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Sam James" Message-ID: <1681285160.e753e969fe0d9dffb1a68e4358821cddbf11bca6.sam@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: sys-devel/gcc/, sys-devel/gcc/files/ X-VCS-Repository: repo/gentoo X-VCS-Files: sys-devel/gcc/files/gcc-13.0.1_pre20230409-PR109434-DSE-throw.patch sys-devel/gcc/gcc-13.0.1_pre20230409-r3.ebuild X-VCS-Directories: sys-devel/gcc/ sys-devel/gcc/files/ X-VCS-Committer: sam X-VCS-Committer-Name: Sam James X-VCS-Revision: e753e969fe0d9dffb1a68e4358821cddbf11bca6 X-VCS-Branch: master Date: Wed, 12 Apr 2023 07:40:25 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: 6219c4c1-7bda-41ae-8210-13a8e0c743f9 X-Archives-Hash: c197df33f9cd7c43067de0db7020bd40 commit: e753e969fe0d9dffb1a68e4358821cddbf11bca6 Author: Sam James gentoo org> AuthorDate: Wed Apr 12 07:38:52 2023 +0000 Commit: Sam James gentoo org> CommitDate: Wed Apr 12 07:39:20 2023 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e753e969 sys-devel/gcc: backport DSE fix for std::optional for 13 Probably wouldn't do this by itself but given I've just pushed the SLP fix (989bee28461116343b958e978fe19472fe2ea3cb) and nobody will have built that yet, let's just do it given it's a miscompilation. Bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109434 Signed-off-by: Sam James gentoo.org> ...gcc-13.0.1_pre20230409-PR109434-DSE-throw.patch | 63 ++++++++++++++++++++++ sys-devel/gcc/gcc-13.0.1_pre20230409-r3.ebuild | 58 ++++++++++++++++++++ 2 files changed, 121 insertions(+) diff --git a/sys-devel/gcc/files/gcc-13.0.1_pre20230409-PR109434-DSE-throw.patch b/sys-devel/gcc/files/gcc-13.0.1_pre20230409-PR109434-DSE-throw.patch new file mode 100644 index 000000000000..5d45d8f4e018 --- /dev/null +++ b/sys-devel/gcc/files/gcc-13.0.1_pre20230409-PR109434-DSE-throw.patch @@ -0,0 +1,63 @@ +https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=6e3e708dbadaae7b504af7fc4410015624793f02 +https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109434 + +From 6e3e708dbadaae7b504af7fc4410015624793f02 Mon Sep 17 00:00:00 2001 +From: Richard Biener +Date: Tue, 11 Apr 2023 15:06:59 +0200 +Subject: [PATCH] tree-optimization/109434 - bogus DSE of throwing call LHS + +The byte tracking of call LHS didn't properly handle possibly +throwing calls correctly which cases bogus DSE and in turn, for the +testcase a bogus uninit diagnostic and (unreliable) wrong-code. + + PR tree-optimization/109434 + * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Properly + handle possibly throwing calls when processing the LHS + and may-defs are not OK. + + * g++.dg/opt/pr109434.C: New testcase. +--- /dev/null ++++ b/gcc/testsuite/g++.dg/opt/pr109434.C +@@ -0,0 +1,28 @@ ++// { dg-do compile } ++// { dg-require-effective-target c++17 } ++// { dg-options "-O2 -Wall" } ++ ++#include ++#include ++ ++std::optional foo() ++{ ++ volatile int x = 1; ++ if (x) ++ throw std::runtime_error("haha"); ++ return 42; ++} ++ ++int main() ++{ ++ std::optional optInt; ++ try { ++ // We falsely DSEd the LHS of the call even though foo throws ++ // which results in an uninitialized diagnostic ++ optInt = foo(); ++ } catch (...) { ++ return optInt.has_value(); ++ } ++ std::optional optDbl{optInt}; ++ return optDbl ? optDbl.value () : 2.0; ++} +--- a/gcc/tree-ssa-dse.cc ++++ b/gcc/tree-ssa-dse.cc +@@ -179,7 +179,8 @@ initialize_ao_ref_for_dse (gimple *stmt, ao_ref *write, bool may_def_ok = false) + } + if (tree lhs = gimple_get_lhs (stmt)) + { +- if (TREE_CODE (lhs) != SSA_NAME) ++ if (TREE_CODE (lhs) != SSA_NAME ++ && (may_def_ok || !stmt_could_throw_p (cfun, stmt))) + { + ao_ref_init (write, lhs); + return true; +-- +2.31.1 diff --git a/sys-devel/gcc/gcc-13.0.1_pre20230409-r3.ebuild b/sys-devel/gcc/gcc-13.0.1_pre20230409-r3.ebuild new file mode 100644 index 000000000000..073f68b644ac --- /dev/null +++ b/sys-devel/gcc/gcc-13.0.1_pre20230409-r3.ebuild @@ -0,0 +1,58 @@ +# 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_user +}