https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114996
--- Comment #3 from Segher Boessenkool <segher at gcc dot gnu.org> --- That makes no sense. combine only ever results in 0, 1, or 2 insns, never 3. What you mean is that after 4 or more combinations you got what you wanter. But combine (like most RTL optimisations!) is a totally local optimisation, it only looks at a single step at a time. It should never have done stap #1 that it did before. It contradicts the principles of what combine does. The good news is that there are good ways to get the same effect (and much more). But restoring the previous behaviour is completely wrong. There are more things in the instruction combiner that aren't so very lineair, but this takes the cake.