On Mon, Aug 26, 2019 at 3:39 PM Richard Biener <rguent...@suse.de> wrote:
>
>
> The following removes the no longer necessary
> general_remove_non_convertible_regs since we can now deal with
> chains which define pseudos also defined outside of the chain.
>
> Bootstrapped and tested on x86_64-unknown-linux-gnu, OK?
>
> Thanks,
> Richard.
>
> 2019-08-26  Richard Biener  <rguent...@suse.de>
>
>         * config/i386/i386-features.c (general_remove_non_convertible_regs):
>         Remove.
>         (convert_scalars_to_vector): Do not call it.

LGTM, based on previous discussion.

Thanks,
Uros.

> Index: gcc/config/i386/i386-features.c
> ===================================================================
> --- gcc/config/i386/i386-features.c     (revision 274926)
> +++ gcc/config/i386/i386-features.c     (working copy)
> @@ -1425,66 +1425,6 @@ timode_scalar_to_vector_candidate_p (rtx
>    return false;
>  }
>
> -/* For a given bitmap of insn UIDs scans all instruction and
> -   remove insn from CANDIDATES in case it has both convertible
> -   and not convertible definitions.
> -
> -   All insns in a bitmap are conversion candidates according to
> -   scalar_to_vector_candidate_p.  Currently it implies all insns
> -   are single_set.  */
> -
> -static void
> -general_remove_non_convertible_regs (bitmap candidates)
> -{
> -  bitmap_iterator bi;
> -  unsigned id;
> -  bitmap regs = BITMAP_ALLOC (NULL);
> -
> -  EXECUTE_IF_SET_IN_BITMAP (candidates, 0, id, bi)
> -    {
> -      rtx def_set = single_set (DF_INSN_UID_GET (id)->insn);
> -      rtx reg = SET_DEST (def_set);
> -
> -      if (!REG_P (reg)
> -         || bitmap_bit_p (regs, REGNO (reg))
> -         || HARD_REGISTER_P (reg))
> -       continue;
> -
> -      for (df_ref def = DF_REG_DEF_CHAIN (REGNO (reg));
> -          def;
> -          def = DF_REF_NEXT_REG (def))
> -       {
> -         if (!bitmap_bit_p (candidates, DF_REF_INSN_UID (def)))
> -           {
> -             if (dump_file)
> -               fprintf (dump_file,
> -                        "r%d has non convertible definition in insn %d\n",
> -                        REGNO (reg), DF_REF_INSN_UID (def));
> -
> -             bitmap_set_bit (regs, REGNO (reg));
> -             break;
> -           }
> -       }
> -    }
> -
> -  EXECUTE_IF_SET_IN_BITMAP (regs, 0, id, bi)
> -    {
> -      for (df_ref def = DF_REG_DEF_CHAIN (id);
> -          def;
> -          def = DF_REF_NEXT_REG (def))
> -       if (bitmap_bit_p (candidates, DF_REF_INSN_UID (def)))
> -         {
> -           if (dump_file)
> -             fprintf (dump_file, "Removing insn %d from candidates list\n",
> -                      DF_REF_INSN_UID (def));
> -
> -           bitmap_clear_bit (candidates, DF_REF_INSN_UID (def));
> -         }
> -    }
> -
> -  BITMAP_FREE (regs);
> -}
> -
>  /* For a register REGNO, scan instructions for its defs and uses.
>     Put REGNO in REGS if a def or use isn't in CANDIDATES.  */
>
> @@ -1646,8 +1586,6 @@ convert_scalars_to_vector (bool timode_p
>
>    if (timode_p)
>      timode_remove_non_convertible_regs (&candidates[2]);
> -  for (unsigned i = 0; i <= 1; ++i)
> -    general_remove_non_convertible_regs (&candidates[i]);
>
>    for (unsigned i = 0; i <= 2; ++i)
>      if (!bitmap_empty_p (&candidates[i]))

Reply via email to