http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58459
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- It is actually different behavior of PRE and not LIM doing the invariant motion. So it should reproduce with -O2 already (maybe you can double-check that).