On Tue, Nov 5, 2024 at 2:47 PM Uros Bizjak <ubiz...@gmail.com> wrote:
>
> On Tue, Nov 5, 2024 at 12:19 PM Jakub Jelinek <ja...@redhat.com> wrote:
> >
> > On Tue, Nov 05, 2024 at 12:00:24PM +0100, Uros Bizjak wrote:
> > > On Tue, Nov 5, 2024 at 11:43 AM Andreas Schwab <sch...@linux-m68k.org> 
> > > wrote:
> > > >
> > > > On Nov 05 2024, Uros Bizjak wrote:
> > > >
> > > > > But what is the non-deprecated way to communicate the fact that SP
> > > > > changes, and possibly clobbers stack in the asm to the compiler?
> > > >
> > > > Since an asm statement is not allowed to change SP there is no need for
> > > > that.
> > >
> > > asm volatile ("pushfq; popfq %0" : "=r"(x));
> > >
> > > doesn't change SP at any sequence point, doesn't clobber the function
> > > frame, but the function using it shouldn't create redzone. How to
> > > communicate this to the compiler?
> >
> > One possibility would be make __attribute__((target ("no-red-zone")))
> > working (I think currently the option isn't TargetSave or isn't listed
> > somewhere, so it doesn't work).
>
> This won't work if we have a macro that is used in several functions.
> We will have to manually add the above attribute to all functions that
> inline the macro with redzone clobbering asm.
>
> > And the other  one is IMHO making it explicit that it clobbers the red zone,
> > so "redzone" or "red-zone" clobber (or some other word, but can't be easily
> > stack-below-sp because we have hppa with stack growing in the wrong
> > direction).
>
> We would have to define a memory clobber that would correspond to
> redzone and attach it to the asm parallel RTX, perhaps:
>
> (clobber (mem:BLK (reg:DI sp)))
>
> that would ultimately clear "crtl->is_leaf" when detected.

Maybe never make functions having any volatile asm() "leaf"?  Thus
require 'volatile' to be present - aka the asm has side-effects that
are not fully encoded in the constraints.

Richard.

> Uros.

Reply via email to