https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87475
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Doesn't seem to. The cfg layout cleanup code simply tries to redirect a CROSSING_JUMP_P, which apparently on aarch64 looks like: (insn 119 80 120 5 (set (reg:DI 110) (high:DI (label_ref:DI 19))) -1 (insn_list:REG_LABEL_OPERAND 19 (nil))) (insn 120 119 121 5 (set (reg:DI 109) (lo_sum:DI (reg:DI 110) (label_ref:DI 19))) -1 (insn_list:REG_LABEL_OPERAND 19 (expr_list:REG_EQUAL (label_ref:DI 19) (nil)))) (jump_insn/j 121 120 19 5 (set (pc) (reg:DI 109)) -1 (nil) -> 19) and fails to adjust that, because the insn doesn't have the label directly in the insn, it is like a computed jump, but not recognized as such because it has non-NULL JUMP_LABEL.