https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121388
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Created attachment 62044 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=62044&action=edit Semi reduced This as reduced as I can get it. The problem looks related to how long branches work. So we get a cbgt which is valid for 63 but siwtching it around for le, 63 is no longer valid. //(jump_insn:TI 196 195 197 (set (pc) // (if_then_else (gt (reg:SI 4 x4 [orig:158 iftmp.11_94 ] [158]) // (const_int 63 [0x3f])) // (label_ref:DI 725) // (pc))) "/app/example.cpp":55:38 discrim 2 24 {aarch64_cbgtsi} // (int_list:REG_BR_PROB 1073741825 (nil)) // -> 725) cble w4, 63, .L59 // 196 [c=28 l=8] aarch64_cbgtsi b .L49