On Wed, Feb 15, 2023 at 10:24 AM Eric Botcazou via Gcc-patches <gcc-patches@gcc.gnu.org> wrote: > > 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 <ebotca...@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.
This fixes dg.exp/stack-check-2.c, -7, 8, and -16.c, which is great! -6 no longer ICEs, but still fails. -3, -4, -5, and -9 didn't ICE, and still fail: gcc.dg/stack-check-10.c: pattern found 0 times FAIL: gcc.dg/stack-check-10.c scan-rtl-dump-times pro_and_epilogue "Stack clash no probe" 2 gcc.dg/stack-check-10.c: pattern found 0 times FAIL: gcc.dg/stack-check-10.c scan-rtl-dump-times pro_and_epilogue "Stack clash not noreturn" 2 gcc.dg/stack-check-10.c: pattern found 0 times FAIL: gcc.dg/stack-check-10.c scan-rtl-dump-times pro_and_epilogue "Stack clash residual allocation in prologue" 2 gcc.dg/stack-check-10.c: pattern found 0 times FAIL: gcc.dg/stack-check-10.c scan-rtl-dump-times pro_and_epilogue "Stack clash no frame pointer needed" 2 gcc.dg/stack-check-3.c: pattern found 0 times FAIL: gcc.dg/stack-check-3.c scan-rtl-dump-times expand "allocation and probing residuals" 7 gcc.dg/stack-check-3.c: pattern found 0 times FAIL: gcc.dg/stack-check-3.c scan-rtl-dump-times expand "allocation and probing in loop" 7 gcc.dg/stack-check-4.c: pattern found 0 times FAIL: gcc.dg/stack-check-4.c scan-rtl-dump-times pro_and_epilogue "Stack clash noreturn" 1 gcc.dg/stack-check-4.c: pattern found 0 times FAIL: gcc.dg/stack-check-4.c scan-rtl-dump-times pro_and_epilogue "Stack clash not noreturn" 1 gcc.dg/stack-check-5.c: pattern found 0 times FAIL: gcc.dg/stack-check-5.c scan-rtl-dump-times pro_and_epilogue "Stack clash no probe" 4 gcc.dg/stack-check-5.c: pattern found 0 times FAIL: gcc.dg/stack-check-5.c scan-rtl-dump-times pro_and_epilogue "Stack clash not noreturn" 4 gcc.dg/stack-check-5.c: pattern found 0 times FAIL: gcc.dg/stack-check-5.c scan-rtl-dump-times pro_and_epilogue "Stack clash no frame pointer needed" 4 gcc.dg/stack-check-5.c: pattern found 0 times FAIL: gcc.dg/stack-check-5.c scan-rtl-dump-times pro_and_epilogue "Stack clash no residual allocation in prologue" 1 gcc.dg/stack-check-5.c: pattern found 0 times FAIL: gcc.dg/stack-check-5.c scan-rtl-dump-times pro_and_epilogue "Stack clash residual allocation in prologue" 3 gcc.dg/stack-check-6.c: pattern found 0 times FAIL: gcc.dg/stack-check-6.c scan-rtl-dump-times pro_and_epilogue "Stack clash inline probes" 2 gcc.dg/stack-check-6.c: pattern found 0 times FAIL: gcc.dg/stack-check-6.c scan-rtl-dump-times pro_and_epilogue "Stack clash probe loop" 2 gcc.dg/stack-check-6.c: pattern found 0 times FAIL: gcc.dg/stack-check-6.c scan-rtl-dump-times pro_and_epilogue "Stack clash residual allocation in prologue" 4 gcc.dg/stack-check-6.c: pattern found 0 times FAIL: gcc.dg/stack-check-6.c scan-rtl-dump-times pro_and_epilogue "Stack clash not noreturn" 4 gcc.dg/stack-check-6.c: pattern found 0 times FAIL: gcc.dg/stack-check-6.c scan-rtl-dump-times pro_and_epilogue "Stack clash no frame pointer needed" 4 gcc.dg/stack-check-6a.c: pattern found 0 times FAIL: gcc.dg/stack-check-6a.c scan-rtl-dump-times pro_and_epilogue "Stack clash residual allocation in prologue" 4 gcc.dg/stack-check-6a.c: pattern found 0 times FAIL: gcc.dg/stack-check-6a.c scan-rtl-dump-times pro_and_epilogue "Stack clash not noreturn" 4 gcc.dg/stack-check-6a.c: pattern found 0 times FAIL: gcc.dg/stack-check-6a.c scan-rtl-dump-times pro_and_epilogue "Stack clash no frame pointer needed" 4 gcc.dg/stack-check-9.c: pattern found 0 times FAIL: gcc.dg/stack-check-9.c scan-rtl-dump-times pro_and_epilogue "Stack clash inline probes" 1 gcc.dg/stack-check-9.c: pattern found 0 times FAIL: gcc.dg/stack-check-9.c scan-rtl-dump-times pro_and_epilogue "Stack clash residual allocation in prologue" 1 gcc.dg/stack-check-9.c: pattern found 0 times FAIL: gcc.dg/stack-check-9.c scan-rtl-dump-times pro_and_epilogue "Stack clash not noreturn" 1 gcc.dg/stack-check-9.c: pattern found 0 times FAIL: gcc.dg/stack-check-9.c scan-rtl-dump-times pro_and_epilogue "Stack clash no frame pointer needed" 1 target/i386.exp/stack-check-12.c no longer ICEs but still fails. -11, -18 and -19 still fail: gcc.target/i386/stack-check-11.c: sub[ql] found 1 times FAIL: gcc.target/i386/stack-check-11.c scan-assembler-times sub[ql] 4 gcc.target/i386/stack-check-11.c: or[ql] found 0 times FAIL: gcc.target/i386/stack-check-11.c scan-assembler-times or[ql] 3 ia32882847.c:2:13: error: size of array 'dummy' is negative^M ia32882847.c:4:55: error: '__i386__' undeclared here (not in a function)^M compiler exited with status 1 FAIL: gcc.target/i386/stack-check-12.c scan-assembler pushq\t%rax FAIL: gcc.target/i386/stack-check-12.c scan-assembler popq\t%rax gcc.target/i386/stack-check-18.c: pattern found 0 times FAIL: gcc.target/i386/stack-check-18.c scan-rtl-dump-times expand "allocation and probing in loop" 1 gcc.target/i386/stack-check-18.c: pattern found 0 times FAIL: gcc.target/i386/stack-check-18.c scan-rtl-dump-times expand "allocation and probing residuals" 1 gcc.target/i386/stack-check-18.c: or[ql] found 0 times FAIL: gcc.target/i386/stack-check-18.c scan-assembler-times or[ql] 1 gcc.target/i386/stack-check-19.c: pattern found 0 times FAIL: gcc.target/i386/stack-check-19.c scan-rtl-dump-times expand "allocation and probing in loop" 1 gcc.target/i386/stack-check-19.c: pattern found 0 times FAIL: gcc.target/i386/stack-check-19.c scan-rtl-dump-times expand "allocation and probing residuals" 1 gcc.target/i386/stack-check-19.c: or[ql] found 0 times FAIL: gcc.target/i386/stack-check-19.c scan-assembler-times or[ql] 2 gcc.target/i386/stack-check-19.c: (?:je|jne) found 0 times FAIL: gcc.target/i386/stack-check-19.c scan-assembler-times (?:je|jne) 3