[Bug target/94743] IRQ handler doesn't save scratch VFP registers
rearnsha at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon May 4 14:52:24 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94743
--- Comment #10 from Richard Earnshaw <rearnsha at gcc dot gnu.org> ---
(In reply to Christophe Lyon from comment #9)
> > My initial thoughts are along the lines of...
> > Only try to save FP registers that this function directly clobbers.
> What's the point of saving these if a callee clobbers other registers?
>
They need to be done early enough to ensure that any code in *this* function
does not clobber them. Any additional registers would have to be saved by a
library call that does that.
> Shouldn't that be something like save-nothing vs save-all-FP-regs if there
> is a callee?
>
> Do you mean save direct clobbers only when the handler is a leaf function?
Well, obviously if it's a leaf function, saving only the registers that are
clobbered is enough, and the compiler can do the analysis to ensure that.
>
> > Provide libgcc routines to save/restore the FP context.
> Do you mean such routines should push all FP regs+status regs?
All registers that are are call clobbered. There's no need to do the
call-saved registers as the compiler can do that on an as-needed case already.
More information about the Gcc-bugs
mailing list