https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84673
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Component|tree-optimization |middle-end Last reconfirmed| |2021-12-17 Status|UNCONFIRMED |NEW Ever confirmed|0 |1 --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- I think this is a middle-end issue with respect to expanding: _1 = x_16 <= 31; _2 = x_16 == 92; _3 = _1 | _2; _4 = x_16 == 127; _6 = _3 | _4; if (_6 != 0) The question becomes should we produce the above for the gimple level and then re-introduce the conditionals (which is done for the last IOR). For aarch64 we produce the best code possible with the above code: cmp w2, 92 ccmp w2, 31, 0, ne ccmp w2, w3, 4, hi beq .L5 But only at -O2 on the trunk (-Os since GCC 7 does not do it I have not looked into why).