https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112282
--- Comment #10 from avieira at gcc dot gnu.org --- So I had a look at that u_lsm.72_510 variable and it's only undefined if we don't loop, but if we don't loop then u_lsm_flag is set to 0 and we don't use u_lsm. So it's OK. I also checked and the early exits are covered by the same mechanism. So really the question is, why does irange think the range is [-21, 0]. Anyone have an idea of how to debug this?