https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119979
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- >I haven't done a deep dive but it looks like we've dropped a zero extension on >mcore-elf at -O2 with this test: The rules for mcore are: #define PROMOTE_MODE(MODE,UNSIGNEDP,TYPE) \ if (GET_MODE_CLASS (MODE) == MODE_INT \ && GET_MODE_SIZE (MODE) < UNITS_PER_WORD) \ { \ (MODE) = SImode; \ (UNSIGNEDP) = 1; \ } #define TARGET_PROMOTE_FUNCTION_MODE default_promote_function_mode_always_promote So dropping the zero extend inside t101_1mul is correct. based on those rules. It is the otherside which looks to be wrong.