From: Eric Botcazou <botcazou@adacore.com>
To: gcc-patches@gcc.gnu.org
Subject: [PATCH] Fix PR target/90458
Date: Wed, 15 Feb 2023 16:24:09 +0100 [thread overview]
Message-ID: <8221231.NyiUUSuA9g@fomalhaut> (raw)
[-- Attachment #1: Type: text/plain, Size: 540 bytes --]
Hi,
this is the incompatibility of -fstack-clash-protection with Windows SEH. Now
the Windows ports always enable TARGET_STACK_PROBE, which means that the stack
is always probed (out of line) so -fstack-clash-protection does nothing more.
Tested on x86-64/Windows and Linux, OK for all active branches?
2023-02-15 Eric Botcazou <ebotcazou@adacore.com>
* config/i386/i386.cc (ix86_compute_frame_layout): Disable the
effects of -fstack-clash-protection for TARGET_STACK_PROBE.
(ix86_expand_prologue): Likewise.
--
Eric Botcazou
[-- Attachment #2: pr90458.diff --]
[-- Type: text/x-patch, Size: 1186 bytes --]
diff --git a/gcc/config/i386/i386.cc b/gcc/config/i386/i386.cc
index 3cacf738c4a..22f444be23c 100644
--- a/gcc/config/i386/i386.cc
+++ b/gcc/config/i386/i386.cc
@@ -6876,7 +6876,9 @@ ix86_compute_frame_layout (void)
stack clash protections are enabled and the allocated frame is
larger than the probe interval, then use pushes to save
callee saved registers. */
- || (flag_stack_clash_protection && to_allocate > get_probe_interval ()))
+ || (flag_stack_clash_protection
+ && !ix86_target_stack_probe ()
+ && to_allocate > get_probe_interval ()))
frame->save_regs_using_mov = false;
if (ix86_using_red_zone ()
@@ -8761,8 +8763,11 @@ ix86_expand_prologue (void)
sse_registers_saved = true;
}
- /* If stack clash protection is requested, then probe the stack. */
- if (allocate >= 0 && flag_stack_clash_protection)
+ /* If stack clash protection is requested, then probe the stack, unless it
+ is already probed on the target. */
+ if (allocate >= 0
+ && flag_stack_clash_protection
+ && !ix86_target_stack_probe ())
{
ix86_adjust_stack_and_probe (allocate, int_registers_saved, false);
allocate = 0;
next reply other threads:[~2023-02-15 15:24 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-15 15:24 Eric Botcazou [this message]
2023-02-15 19:05 ` Jeff Law
2023-02-16 3:27 ` NightStrike
2023-02-16 8:16 ` Eric Botcazou
2023-02-17 8:56 ` NightStrike
2023-02-17 9:18 ` Eric Botcazou
2023-02-17 19:49 ` Jeff Law
2023-03-11 15:56 ` Jeff Law
2023-03-12 0:35 ` NightStrike
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=8221231.NyiUUSuA9g@fomalhaut \
--to=botcazou@adacore.com \
--cc=gcc-patches@gcc.gnu.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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).