https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88841
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- For the trunk for _2, if_to_switch can convert that one to: ;; Canonical GIMPLE case clusters: 9-10 13 32 ;; BT can be built: BT:9-32 Removing basic block 3 Expanded into a new gimple STMT: switch (c_6(D)) <default: <L6> [INV], case 9 ... 10: <L5> [INV], case 13: <L5> [INV], case 32: <L5> [INV]> For _1, we get the following IR (because fold-const decided to convert the || to | in some cases already): _1 = c_8(D) == 32; _2 = c_8(D) == 10; _3 = _1 | _2; if (_3 != 0) goto <bb 4>; [INV] else goto <bb 3>; [INV] <bb 3> : _4 = c_8(D) == 13; _5 = c_8(D) == 9; _6 = _4 | _5;