From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 943D4158128 for ; Wed, 18 Jun 2025 09:06:13 +0000 (UTC) Received: from lists.gentoo.org (bobolink.gentoo.org [140.211.166.189]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519) (No client certificate requested) (Authenticated sender: relay-lists.gentoo.org@gentoo.org) by smtp.gentoo.org (Postfix) with ESMTPSA id 80A70341E5D for ; Wed, 18 Jun 2025 09:06:13 +0000 (UTC) Received: from bobolink.gentoo.org (localhost [127.0.0.1]) by bobolink.gentoo.org (Postfix) with ESMTP id 7DAD71104D9; Wed, 18 Jun 2025 09:06:12 +0000 (UTC) Received: from smtp.gentoo.org (mail.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519) (No client certificate requested) by bobolink.gentoo.org (Postfix) with ESMTPS id 6B7CC1104D9 for ; Wed, 18 Jun 2025 09:06:12 +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) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 1D083341E5D for ; Wed, 18 Jun 2025 09:06:12 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id B41FE291F for ; Wed, 18 Jun 2025 09:06:10 +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: <1750237547.0368bcaaca6bc5c7d81426e5b69760063f808cad.sam@gentoo> Subject: [gentoo-commits] proj/gcc-patches:master commit in: 16.0.0/gentoo/ X-VCS-Repository: proj/gcc-patches X-VCS-Files: 16.0.0/gentoo/85_all_PR120697-x86-Handle-fstack-clash-protection-for-shrink-wrap-s.patch X-VCS-Directories: 16.0.0/gentoo/ X-VCS-Committer: sam X-VCS-Committer-Name: Sam James X-VCS-Revision: 0368bcaaca6bc5c7d81426e5b69760063f808cad X-VCS-Branch: master Date: Wed, 18 Jun 2025 09:06:10 +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: 8bcaf732-bd44-4199-87ff-abe586800806 X-Archives-Hash: cdde06036d3faa98d3b32f22537b2c0e commit: 0368bcaaca6bc5c7d81426e5b69760063f808cad Author: Sam James gentoo org> AuthorDate: Wed Jun 18 09:05:47 2025 +0000 Commit: Sam James gentoo org> CommitDate: Wed Jun 18 09:05:47 2025 +0000 URL: https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=0368bcaa 16.0.0: add patch for -fstack-clash-protection vs shrink wrapping Bug: https://gcc.gnu.org/PR120697 Signed-off-by: Sam James gentoo.org> ...fstack-clash-protection-for-shrink-wrap-s.patch | 89 ++++++++++++++++++++++ 1 file changed, 89 insertions(+) diff --git a/16.0.0/gentoo/85_all_PR120697-x86-Handle-fstack-clash-protection-for-shrink-wrap-s.patch b/16.0.0/gentoo/85_all_PR120697-x86-Handle-fstack-clash-protection-for-shrink-wrap-s.patch new file mode 100644 index 0000000..08e3c49 --- /dev/null +++ b/16.0.0/gentoo/85_all_PR120697-x86-Handle-fstack-clash-protection-for-shrink-wrap-s.patch @@ -0,0 +1,89 @@ +https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120697#c12 + +From 4f80288ecb15195c8baa3e0081354c4cab78db36 Mon Sep 17 00:00:00 2001 +From: Lili Cui +Date: Tue, 17 Jun 2025 23:49:03 -0700 +Subject: [PATCH] x86: Handle -fstack-clash-protection for shrink wrap separate + +gcc/ChangeLog: + + * config/i386/i386.cc (ix86_expand_prologue): + Delete 3 assertions and related code. + +gcc/testsuite/ChangeLog: + + * g++.target/i386/shrink_wrap_separate.C: + Add -fstack-clash-protection into build options. +--- + gcc/config/i386/i386.cc | 14 +------------- + .../g++.target/i386/shrink_wrap_separate.C | 2 +- + 2 files changed, 2 insertions(+), 14 deletions(-) + +diff --git a/gcc/config/i386/i386.cc b/gcc/config/i386/i386.cc +index 3824b533989..6dce7cdfdcb 100644 +--- a/gcc/config/i386/i386.cc ++++ b/gcc/config/i386/i386.cc +@@ -9234,10 +9234,9 @@ ix86_expand_prologue (void) + the stack frame saving one cycle of the prologue. However, avoid + doing this if we have to probe the stack; at least on x86_64 the + stack probe can turn into a call that clobbers a red zone location. */ +- else if ((ix86_using_red_zone () ++ else if (ix86_using_red_zone () + && (! TARGET_STACK_PROBE + || frame.stack_pointer_offset < CHECK_STACK_LIMIT)) +- || crtl->shrink_wrapped_separate) + { + HOST_WIDE_INT allocate_offset; + if (crtl->shrink_wrapped_separate) +@@ -9253,11 +9252,6 @@ ix86_expand_prologue (void) + + ix86_emit_save_regs_using_mov (frame.reg_save_offset); + int_registers_saved = true; +- +- if (ix86_using_red_zone () +- && (! TARGET_STACK_PROBE +- || frame.stack_pointer_offset < CHECK_STACK_LIMIT)) +- cfun->machine->red_zone_used = true; + } + } + +@@ -9377,8 +9371,6 @@ ix86_expand_prologue (void) + && flag_stack_clash_protection + && !ix86_target_stack_probe ()) + { +- gcc_assert (!crtl->shrink_wrapped_separate); +- + ix86_adjust_stack_and_probe (allocate, int_registers_saved, false); + allocate = 0; + } +@@ -9389,8 +9381,6 @@ ix86_expand_prologue (void) + { + const HOST_WIDE_INT probe_interval = get_probe_interval (); + +- gcc_assert (!crtl->shrink_wrapped_separate); +- + if (STACK_CHECK_MOVING_SP) + { + if (crtl->is_leaf +@@ -9447,8 +9437,6 @@ ix86_expand_prologue (void) + else if (!ix86_target_stack_probe () + || frame.stack_pointer_offset < CHECK_STACK_LIMIT) + { +- gcc_assert (!crtl->shrink_wrapped_separate); +- + pro_epilogue_adjust_stack (stack_pointer_rtx, stack_pointer_rtx, + GEN_INT (-allocate), -1, + m->fs.cfa_reg == stack_pointer_rtx); +diff --git a/gcc/testsuite/g++.target/i386/shrink_wrap_separate.C b/gcc/testsuite/g++.target/i386/shrink_wrap_separate.C +index 294dccde5d3..a1772c3a396 100644 +--- a/gcc/testsuite/g++.target/i386/shrink_wrap_separate.C ++++ b/gcc/testsuite/g++.target/i386/shrink_wrap_separate.C +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fdump-rtl-pro_and_epilogue" } */ ++/* { dg-options "-O2 -fstack-clash-protection -fdump-rtl-pro_and_epilogue" } */ + typedef struct a b; + typedef double c; + struct a { +-- +2.34.1