https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102131
--- Comment #5 from Jiu Fu Guo <guojiufu at gcc dot gnu.org> --- (In reply to bin cheng from comment #4) > (In reply to Jiu Fu Guo from comment #3) > > The issue may come from 'iv0 cmp iv1' transform: > > > > if (c<b) exit-loop > > -->if (c>=b) in-loop > > -->if (b<=c) in-loop > > > > c: {4, +, 3} > > b: {1, +, 1} > > > > if ({1, +, 1} <= {4, +, 3}) > > ==> if ({1,+,-2} <= {4,+,0}) //// here, error occur > > ==> if ({1,+,-2} < {5,+,0}) le-->lt > > So this duplicates to PR100740? Thanks Yes, in theory, these PRs are related to the inaccurate converting "{b1,s1} LT/LE {b2,s2}" to "{b1,s1-s2} LT/LE {b2,0}".