https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110899
--- Comment #5 from Florian Weimer <fw at gcc dot gnu.org> --- (In reply to Michael Matz from comment #3) > For ABIs you generally want a good mix between caller- and callee-saved > registers. The x86-64 psABI didn't do that on the SSE regs for conscious, but > meanwhile irrelevant, reasons, so my approach above tried to rectify this. > > The clang attributes seem to go against that general idea, they move all regs > (or all general regs) into being callee-saved (except, strangely for > aarch64?). This is intended for functions that are called conditionally, but rarely, such as debug logging. It's not a generally useful calling convention. > It also makes argument registers be callee-saved, which is very > unconventional. Isn't this done for the this pointer in some C++ ABIs? > Does the clang implementation take into account the various problematic > cases that arise when calling a normal function from a (say) preserve_all > function > (hint: such call can't usually be done)? How so? We need to version the __preserve_most__ attribute with the ISA level, of course.