https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101223

--- Comment #7 from Andrew Macleod <amacleod at redhat dot com> ---
I think this is our old friend 1-bit signed overflow.

for 1 signed bit values, varying is [-1, 0]  

range-op::build_lt checks to see if UB - 1 overflows, and if it does, then the
result is undefined.

wi::sub  sets the overflow flag for 0 - 1 with 1 bit signed...   so the
comparison ends up being undefined, and we then make incorrect choices because
we think we can.

I think we need to, yet again, special case 1-bit signed values here, and
probably in build_gt as well.

Reply via email to