On Thu, Mar 14, 2019 at 09:08:17PM +0800, H.J. Lu wrote: > --- a/gcc/config/i386/i386.c > +++ b/gcc/config/i386/i386.c > @@ -2819,6 +2819,8 @@ remove_partial_avx_dependency (void) > rtx set; > rtx v4sf_const0 = NULL_RTX; > > + auto_vec<rtx_insn *> splitted_insn;
Perhaps throwing_insns or flow_transfer_insns or control_flow_insns instead? > + unsigned int i; > + FOR_EACH_VEC_ELT (splitted_insn, i, insn) I actually meant something like: if (control_flow_insn_p (insn)) { /* Split the block after insn. There will be a fallthru edge, which is OK so we keep it. We have to create the exception edges ourselves. */ split_block (bb, insn); rtl_make_eh_edge (NULL, bb, BB_END (bb)); } only inside of the FOR_EACH_VEC_ELT. If there is more than one insn that needs splitting in the bb, it will be in the vector as well and handled in some later iteration. Jakub