https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91720
--- Comment #10 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Eric Botcazou from comment #9) > > That change added the && !REG_P in there, but unless the reg is loaded from > > memory, it is unclear how it can guarantee that the upper bits are zero > > (resp. sign) extended after arbitrary operations. > > Precisely because WORD_REGISTER_OPERATIONS is defined, i.e. the processor is > supposed to operate only a full registers. True, but that still doesn't imply that the upper bits are zeros. If something is loaded from memory, we do get that guarantee. But if we do say PLUS, the lowest upper bit might be 0 or 1, the bits above it zeros. If a constant is loaded into a register, the upper bits might be all zeros or all ones. For a multiplication, the upper bits could be anything, etc. > But, OK, I'm going to remove the > problematic && !REG_P and XFAIL the associated testcase. Does that also fix PR89795?