https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108215
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- It's something for if-conversion / if-combine. We have <bb 2> [local count: 1073741824]: src_6 = MEM[(const uint32_t *)data_5(D)]; _1 = src_6 & 4294967040; if (_1 == 287453952) goto <bb 5>; [20.97%] else goto <bb 3>; [79.03%] <bb 3> [local count: 848578161]: _2 = src_6 & 4294901760; if (_2 == 287440896) goto <bb 4>; [20.97%] else goto <bb 5>; [79.03%] <bb 4> [local count: 177946843]: <bb 5> [local count: 1073741824]: # _3 = PHI <1(4), 0(3), 1(2)> so an effective if-or-if where we fail to handle combining the conditions (we're going the if-and-if way to the zero return).