[Bug tree-optimization/73550] Another wrong -Wmaybe-uninitialized warning in switch statement
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Aug 31 06:52:18 GMT 2022
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=73550
--- Comment #11 from Richard Biener <rguenth at gcc dot gnu.org> ---
Another thing we have is that with
After normalization [USE]:
fp_5 (a.3_4, b.2_3);
is conditional on:
((_27 & 20500) AND (NOT (_26 != 0)) AND (NOT (_20 > 14)))
and
After normalization [DEF]:
fp_5 = PHI <fun1(6), fun3(24), fp_11(D)(21), fun2(3), fun3(26)>
is conditional on:
((code_9(D) == 2))
OR ((code_9(D) <= 4) AND (code_9(D) >= 3))
OR ((code_9(D) == 1))
OR ((code_9(D) == 12))
OR ((code_9(D) <= 14) AND (code_9(D) >= 13))
OR ((code_9(D) == 11))
the negated _26 != 0 predicate is not "normalized", it's defined as
_20 = (unsigned int) code_9(D);
...
_27 = 1 << _20;
_26 = _27 & 480;
so ultimatively switch lowering lowers the second switch statement which
confuses us greatly here. OTOH without switch lowering we'd fail to
process the use predicate because it's reached by multiple case
labels.
Solving this case fully is going to be interesting, but I have some more
incremental improvements here.
More information about the Gcc-bugs
mailing list