https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92283
--- Comment #10 from Richard Biener <rguenth at gcc dot gnu.org> --- Adding !GCC$ unroll 0 before line 848 or adding a call to an empty function after the loop nest (after 857) fixes the miscompare. GIMPLE level difference with the function call is one missed invariant motion of a load from a function parameter (iperturb) but assembly level diff is ~7000 lines :/ The iperturb change can be compensated for in the source which still fixes the miscompare (but assembly level difference doesn't improve much). The odd thing is that the differences aren't _too_ big so [stack] memory corruption seems unlikely(?).