https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97437
--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> --- I don't see anything undesirable on that. The 0 aka %rax is used in 7 different instructions later on besides the move, so either we just clear %ecx (can't use xorl for that as the flags register needs to be live), or clear %eax and copy to %ecx (3 bytes more), but then gain 7 bytes back because we don't really use an immediate form.