https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94042
--- Comment #34 from Segher Boessenkool <segher at gcc dot gnu.org> --- Yeah, 16 (or really 12-ish, not all are available) I call "tiny" :-) It is very surprising (and not pleasantly so) that this overrides REG_ALLOC_ORDER. We allocate GPR0 last (of the volatile GPRs), on purpose. Other volatile registers we also do not do in order at all, and this has been heavily tuned over the years. And for non-GPRs it is even more wild, like CRs are 0 7 5 6 1 (and yes, this matters). We don't want HONOR_REG_ALLOC_ORDER, it is way *too* strict, but all else being equal, we probably(*) want our order to be followed, as it was before. (*) I didn't actually benchmark things yet!