https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94567
--- Comment #14 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Created attachment 48288 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=48288&action=edit gcc10-pr94567.patch So perhaps this? In the condition exclude cases where we can't widen the problematic cases (and, as I figured out today, we can't widen if val is a MEM because we may not read from memory more than was read originally and also paradoxical subregs of MEM which are accepted as register_operand before reload could be problematic) and during splitting ensure we don't narrow if we couldn't widen again and widen if possible?