V3 [PATCH] i386: Handle REG_EH_REGION note

Jakub Jelinek jakub@redhat.com
Thu Mar 14 13:25:00 GMT 2019


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



More information about the Gcc-patches mailing list