https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87153
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |diagnostic, ra Status|UNCONFIRMED |NEW Last reconfirmed| |2018-08-30 Component|c |middle-end Ever confirmed|0 |1 --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- Confirmed. I think the warning tells you that the ISRA.312 when not spilled to the stack by the compiler, might be not properly restored. That it is 'const' doesn't really matter. Given the source passes an aggregate by value depending on the ABI you might get the very same bad effect. Eventually we can do better with this warning and only warn when we actually failed to spill the register. I think the warning for arguments is usually a false positive since argument registers are call-clobbered. Given we use setjmp_crosses for the warning I wonder why we do not use that to guide register allocation ...