https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110992
--- Comment #4 from Andrew Pinski ---
What we had before in GCC 13:
# RANGE [irange] unsigned short [0, 1] NONZERO 0x1
d.3_19 = (unsigned short) _3;
_21 = -d.3_19;
_22 = (short intD.17) _21;
_6 = (short intD.17) b.0_1;
_7 = _6 &
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110992
--- Comment #3 from Andrew Pinski ---
So this was fixed by accident via r14-3721-ge6bcf83989478348428c732 .
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110992
--- Comment #2 from Andrew Pinski ---
So I think this is because ethread can understand `(a & b)!=0` but not
`(a*c)!=0` that is a*c != 0 means that a or c will both be non-zero (especially
since a*c is known to not to overflow as c as a range
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110992
Andrew Pinski changed:
What|Removed |Added
Target Milestone|--- |14.0
Ever confirmed|0