Having to adapt your code style to the underlying ABI is not a fantastic idea IMHO.
No, but it is something that is inherent in non-portable code. Those who know the ABI will be affected by it, and such approaches spread, like fads. Anyone doing microbenchmarks verifies "they are better", so an approach gets adopted. This happens.
It is actually the opposite that I'm interested in: what are the patterns one should avoid in portable code.
(I've mentioned before that whenever I look at e.g. the code generated by my compilers, I'm not really interested whether it is optimal or not, because that way lies madness. What I am interested in, is whether a compiler or a set of options causes it to generate horrible code. I prefer an approach that is not optimal, but not horrible anywhere, over approaches that are optimal somewhere but horrible somewhere else, because chasing optimality is a fool's errand, but avoiding horrible behaviour is a sensible precaution. In my experience and opinion, that is.)
In the olden era of Fortran and compiler-specific ABIs, when parameters were passed on the stack, using global variables instead of passing them as parameters was a way to speed up critical code. Now, the opposite is true, but old habits die hard, especially since They Are Written In Reliable Books I Trust, So Why Should I Trust Some Pseudonymous Person Saying Otherwise?