On Wed, 9 Mar 2022, Jakub Jelinek wrote: > On Wed, Mar 09, 2022 at 08:18:38AM +0100, Richard Biener wrote: > > I wonder if this is a good case for general-regs-only instead? At > > least no-sse cannot be functionally equivalent (since then we would > > not have needed general-regs-only ...). > > I think general-regs-only is approx. equivalent to no-mmx,no-sse, > we don't really need/want mmx in the unwinder I guess. > > The following seems to work fine too, regtested with > -O2 -msse2 -mfpmath=sse -mstackrealign in {C,CXX,XC,TC}FLAGS on i686-linux > (where without the patch it fails to build).
LGTM. > 2022-03-09 Jakub Jelinek <ja...@redhat.com> > > PR target/104781 > * config/i386/i386.h (LIBGCC2_UNWIND_ATTRIBUTE): Define for ia32. > > --- gcc/config/i386/i386.h.jj 2022-02-25 21:59:29.356291326 +0100 > +++ gcc/config/i386/i386.h 2022-03-09 10:00:38.242376504 +0100 > @@ -2848,6 +2848,12 @@ extern enum attr_cpu ix86_schedule; > #define NUM_X86_64_MS_CLOBBERED_REGS 12 > #endif > > +/* __builtin_eh_return can't handle stack realignment, so restrict to > + general regs in 32-bit libgcc functions that call it. */ > +#ifndef __x86_64__ > +#define LIBGCC2_UNWIND_ATTRIBUTE __attribute__((target > ("general-regs-only"))) > +#endif > + > /* > Local variables: > version-control: t > > > Jakub > > -- Richard Biener <rguent...@suse.de> SUSE Software Solutions Germany GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany; GF: Ivo Totev; HRB 36809 (AG Nuernberg)