https://gcc.gnu.org/bugzilla/show_bug.cgi?id=23855
--- Comment #29 from Andrew Pinski <pinskia at gcc dot gnu.org> --- We unswitch on the outer loops now in GCC 6 and above. So can we consider this as fixed? The code for aarch64-linux-gnu on the trunk looks like: .L3: mov w19, 0 .p2align 3 .L4: bl bar add w19, w19, 1 cmp w20, w19 bne .L4 add w21, w21, 1 cmp w22, w21 bne .L3