https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84128
Bug ID: 84128 Summary: i686: Stack spilling in -fstack-clash-protection prologue neglects %esp change Product: gcc Version: 8.0 Status: UNCONFIRMED Keywords: wrong-code Severity: normal Priority: P3 Component: target Assignee: law at redhat dot com Reporter: fw at gcc dot gnu.org Target Milestone: --- Target: i686 Created attachment 43291 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43291&action=edit Reproducer The attached test case (compile with -m32 -march=i686 -mtune=generic -fstack-clash-protection -O2) shows that %eax is popped off the stack in the stack-clash protection prologue after %esp has been moved: f1: .LFB0: .cfi_startproc pushl %eax .cfi_def_cfa_offset 8 .cfi_offset 0, -8 leal -32768(%esp), %eax .cfi_def_cfa 0, 32776 .LPSRL0: subl $4096, %esp orl $0, (%esp) cmpl %eax, %esp jne .LPSRL0 .cfi_def_cfa_register 4 subl $12, %esp .cfi_def_cfa_offset 32788 popl %eax Is this a missing stack tie? Seen with trunk@257087. Test case reduced from a miscompilation of pcre2.