https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114515
--- Comment #2 from Segher Boessenkool <segher at gcc dot gnu.org> --- The PR101523 fix makes sure we do not get the same I2 back, because that violates algorithmic assumptions of combine. Importantly, the way it was things can be changed back time and time again, and that actually happened. There is no "canonical form" in combine, it all depends on what little piece of context is and is not considered what form combine prefers. Things can -- and DID -- oscillate. So, what is happening here? The "dup" here is really a "splat"? Should the backend have some extra define_insn or define_split, or maybe even a peephole?