https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104931
--- Comment #9 from Richard Biener <rguenth at gcc dot gnu.org> --- Created attachment 52646 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=52646&action=edit ivcanon dump from the GIMPLE testcase (without bug) The difference is that with LTO we have expanded expressions to Analyzing # of iterations of loop 1 exit condition [(struct TValue *) (_2 + 4294967272) + 12, + , 24](no_overflow) < _2 + 4294967272 while with the GIMPLE testcase we immediately get to Statement (exit)if (from_26 < to_27) is executed at most 0 (bounded by 0) + 1 times in loop 1. ... Loop 1 iterates 0 times. Note the GIMPLE FE doesn't yet support parsing CLOBBER stmts (but I'm quite sure this doesn't matter here) and for the loops() support you need to commit a pending patch.