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));

              ...

Reply via email to