https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106397
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- The prefetching pass puts a __builtin_ia32_mfence () before the __builtin_unreachable () at the loop exit. IIRC there's a related bug that while return statements have a VUSE alternate "function returns" may lack them (that includes some EH related returns as well). Since the function eventually splits loop exit edges it breaks LC SSA anyway (that's a latent issue I think).