https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116704
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- The register is assigned to 0 during rename stage and then removed from the rest of the pipeline as it has no effect otherwise. Only hw single step will cause it to be executed. Yes it will take up a slot for decode. Also this is issue here deals with return register so if this code was inlined then there the register choices will be different and even more there will be a jump threading that happens for the search so it becomes even more a minor issue.