https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78642
--- Comment #12 from Eric Botcazou <ebotcazou at gcc dot gnu.org> --- > But verify_rtx_sharing also has: > > case CLOBBER: > /* Share clobbers of hard registers (like cc0), but do not share > pseudo reg > clobbers or clobbers of hard registers that originated as pseudos. > This is needed to allow safe register renaming. */ > if (REG_P (XEXP (x, 0)) && REGNO (XEXP (x, 0)) < FIRST_PSEUDO_REGISTER > && ORIGINAL_REGNO (XEXP (x, 0)) == REGNO (XEXP (x, 0))) > return; > break; > > So why doesn't it return? Has ORIGINAL_REGNO changed on the hard reg? No, but the REGNO has, because of the leaf registers optimization.