https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92657
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Again, this is not due to tree-ch at all. This is due to the code motion passes move invariant load/stores out of the loop. Tree-ch pass just allows those passes to work. All three (gcse, tree pre and tree lim) need to be disabled to see the difference as all three are able to do the transformation.