On Mon, Mar 07, 2022 at 07:06:28AM -0800, H.J. Lu wrote: > Since eh_return doesn't work with stack realignment, disable SSE on > unwind-c.c and unwind-dw2.c to avoid stack realignment with the 4-byte > incoming stack to avoid SSE usage which is caused by > > commit 609e8c492d62d92465460eae3d43dfc4b2c68288 > Author: H.J. Lu <hjl.to...@gmail.com> > Date: Sat Feb 26 14:17:23 2022 -0800 > > x86: Always return pseudo register in ix86_gen_scratch_sse_rtx > > when pseudo vector registers are used to expand memset.
> PR target/104781 > * config.host (tmake_file): Add i386/32/t-eh-return-no-sse for > 32-bit x86 Cygwin, MinGW and Solaris. > * config/i386/32/t-eh-return-no-sse: New file. For this, isn't the right fix instead something like: --- gcc/config/i386/i386.h.jj 2022-02-25 12:06:45.535493490 +0100 +++ gcc/config/i386/i386.h 2022-03-08 11:20:43.207043370 +0100 @@ -2848,6 +2848,10 @@ extern enum attr_cpu ix86_schedule; #define NUM_X86_64_MS_CLOBBERED_REGS 12 #endif +/* __builtin_eh_return can't handle stack realignment, so disable SSE in + libgcc functions that call it. */ +#define LIBGCC2_UNWIND_ATTRIBUTE __attribute__((target ("no-sse"))) + /* Local variables: version-control: t As mentioned in PR104838, this likely isn't specific to just Solaris and cygwin/mingw. Fedora uses -msse2 -mfpmath=sse -mstackrealign in its C{,XX}FLAGS among other things for i686. Jakub