https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115086
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Richard Earnshaw from comment #2) > And perhaps more importantly the mov can even be hoisted outside of a loop. That won't be happening right away, see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112304#c4 where cinc has the same issue. In this case it is very similar in that we don't pull the constant from the and (rather than add) inside LIM. Basically we don't have an early "combine" to even generate the and/not pattern, forwprop could but I Have not looked into why it does not and then we could do a split afterwards and LIM might be able to pull it out. I will definitely look into that but that will step 2 of this and the other issue.