On Tue, Mar 08, 2022 at 11:23:51AM +0100, Jakub Jelinek via Gcc-patches wrote: > 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.
Now verified that with your full patch applied gcc on Fedora/i686 doesn't build (gets those sorry messages when compiling unwind-dw2), while if I replace those 2 libgcc hunks from your patch with the above one it seems to get past the previous hanging point of gnat1 processes. Jakub