https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90354
--- Comment #3 from vfdff <zhongyunde at huawei dot com> --- I work on GCC 7.3, in function scan_trace, control = pat->insn (0), so it only check whether or not a jump_insn for the first insn of sequence. for (prev = insn, insn = NEXT_INSN (insn); insn; prev = insn, insn = NEXT_INSN (insn)) { rtx_insn *control; ... /* Handle all changes to the row state. Sequences require special handling for the positioning of the notes. */ if (rtx_sequence *pat = dyn_cast <rtx_sequence *> (PATTERN (insn))) { rtx_insn *elt; int i, n = pat->len (); control = pat->insn (0); // it get the first insn of sequence, and check whether or not a jump_insn ? if (can_throw_internal (control)) notice_eh_throw (control); dwarf2out_flush_queued_reg_saves (); if (JUMP_P (control) && INSN_ANNULLED_BRANCH_P (control)) { /* ??? Hopefully multiple delay slots are not annulled. */ gcc_assert (n == 2); gcc_assert (!RTX_FRAME_RELATED_P (control)); gcc_assert (!find_reg_note (control, REG_ARGS_SIZE, NULL)); ...