https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79244
--- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> --- On branches this is latent wrong-code as we simply do /* Propagate the RHS into every use of the LHS. */ FOR_EACH_IMM_USE_STMT (use_stmt, iter, lhs) FOR_EACH_IMM_USE_ON_STMT (use_p, iter) SET_USE (use_p, var); there. OTOH we only see unpropagated vars there so we are restoring the original IL. I changed it to replace_uses_by to get stmts folded properly to avoid non-canonical operand order and non-canonical MEMs after propagation. I'll conditionally restore the above.