https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71779
--- Comment #7 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Ok, the one which I was looking into did the correct thing for reload which is why I was confused. Anyways reload is where the problem is. It is doing a store of SI mode but then loading it via DI mode without knowing we thought the upper bits were zero. Or we can declare what combine was doing is wrong. Anyways it is either related to TRULY_NOOP_TRUNCATION or WORD_REGISTER_OPERATIONS but I can't seem to figure out combine that much right now.