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

Reply via email to