https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106922
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> --- Created attachment 53578 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=53578&action=edit CFG of the second testcase With -m32 one can see the full redundancy discovery is a bit fragile since it requires an out-of-loop use to make the cross loop redundancy anticipated. See the CFG graph for illustration. It should be possible to create a smaller testcase from this, when the use of external.m_initialized is removed then the PRE does no longer work. That somehow happens with -m32 but not -m64 ...