http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60042
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Richard Biener from comment #3) > Bah, and with -fipa-pta -Ofast -fwhole-program we now _do_ see that there > isn't any aliasing but PRE messes up the loop and creates loop carried > dependencies ... :/ Ok, that's because PRE would be the one to make the array loads base addresses simple induction variables (it performs invariant motion of the address load from the global matrix struct). Thus inhibit_phi_insertion returns false. Looks like ordering of PRE / LIM isn't too great when considering such cases.