https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121936
--- Comment #30 from Iain Sandoe <iains at gcc dot gnu.org> --- and, I guess an addendum. There's a grey area here too - we want (and our uses expect) that compilers claiming to support the same ABI (let's say Itanium on Linux) will interoperate even when there are aspects of that interoperability that are not written in either the standard or the ABI. Of course, if they don't we have a "get out of jail free" card in pointing to the standard and the ABI .. but that does not make happy users. ---- unspecified as you say means "whatever the implementation does", but from my understanding that means "and the implementation does not have to declare it or even do it the same each time". I.e that's _not_ the same as "implementation defined" which is documented and consistent behaviour. So, for example, in this specific case, I believe it would be conforming for GCC to keep the textual ordering of function arguments at -O0 and provide a more efficient ordering at -O1. (which would mean that potentially even the GCC-GCC case was not reliable, and I'm pretty sure we try to avoid such things).
