On 1/24/19 3:10 PM, Eric Botcazou wrote: >> md.texi says >> >> The @samp{tablejump} insn is always the last insn before the jump >> table it uses. Its assembler code normally has no need to use the >> second operand, but you should incorporate it in the RTL pattern so >> that the jump optimizer will not delete the table as unreachable code. >> >> but rtl.texi says >> >> A @code{jump_table_data} insn is a placeholder for the jump-table data >> of a @code{casesi} or @code{tablejump} insn. They are placed after >> a @code{tablejump_p} insn. A @code{jump_table_data} insn is not part o >> a basic blockm but it is associated with the basic block that ends with >> the @code{tablejump_p} insn. The @code{PATTERN} of a @code{jump_table_data} >> is always either an @code{addr_vec} or an @code{addr_diff_vec}, and a >> @code{jump_table_data} insn is always preceded by a @code{code_label}. The >> @code{tablejump_p} insn refers to that @code{code_label} via its >> @code{JUMP_LABEL}. >> >> Which of these two is true? > > The latter I'd say, see skip_insns_after_block. Hmm, I forgot about the label. Ugh. That may muck up the whole SCHED_GROUP_P thing. But yes, I think it's supposed to be the tablejump, label and jump table. The question in my mind is barriers and BLOCK_END notes -- where are those supposed to be?
Jeff