https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97708
--- Comment #14 from Jakub Jelinek <jakub at gcc dot gnu.org> --- No, why? You ask it to go into a general register, so it goes there. The local register variable has no priority at all. All it says the variable lives in a particular register. If the constraints allow that register, no reloading is needed, so you get it there, but if they don't, you get the value moved elsewhere.