On Tue, Nov 5, 2024 at 7:12 PM Jakub Jelinek <ja...@redhat.com> wrote: > > On Tue, Nov 05, 2024 at 06:55:33PM +0100, Uros Bizjak wrote: > > The difference between redzoned and non-redzoned code is *two* > > instructions that decrease and increase stack pointer, which I think > > is an acceptable compromise between correctness and performance. Also > > It is not. Because this price is paid for the 99.9% of inline asms that > don't really need it. It is much better to pay it portably by adding > the two instructions to the inline asm that really need it. That is > something that will not work just with new GCC versions, but all past > releases as well. > And by adding a new clobber allow better fine tuning (e.g. if one knows they > use inline asm that needs to do calls many times in the same otherwise leaf > function, they can use the clobber to force it).
Maybe inventing "asm call", implicitly volatile asm variant could solve this issue? This kind of asm would signal the compiler that the function manipulates stack and should not be marked as leaf. Uros.