Comment by newpavlov
5 hours ago
As one example, LLVM still routinely does dumb stuff like this: https://github.com/llvm/llvm-project/issues/53348
Regarding ABI, calee-saved registers also often result in useless data shuffling and prevent the compiler from using them for argument/result passing.
With whole program analysis (LTO, usually, though not only), LLVM can create custom ABIs.