> gcc/ChangeLog:
> 
> 2015-03-20  Martin Liska  <mli...@suse.cz>
>           Jakub Jelinek  <ja...@redhat.com>
> 
>       * config/i386/i386.c (def_builtin): Set deferred_isa_values for
>       masks that can potentially include a builtin.
>       (ix86_add_new_builtins): Introduce fast filter for isa values
>       that cannot trigger builtin inclusion.

Thanks, this looks better.
Patch is OK if it passes testing.

Honza
> ---
>  gcc/config/i386/i386.c | 11 +++++++++++
>  1 file changed, 11 insertions(+)
> 
> diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
> index 47deda7..82a4848 100644
> --- a/gcc/config/i386/i386.c
> +++ b/gcc/config/i386/i386.c
> @@ -30588,6 +30588,8 @@ struct builtin_isa {
>  
>  static struct builtin_isa ix86_builtins_isa[(int) IX86_BUILTIN_MAX];
>  
> +/* Bits that can still enable any inclusion of a builtin.  */
> +static HOST_WIDE_INT deferred_isa_values = 0;
>  
>  /* Add an ix86 target builtin function with CODE, NAME and TYPE.  Save the 
> MASK
>     of which isa_flags to use in the ix86_builtins_isa array.  Stores the
> @@ -30631,6 +30633,9 @@ def_builtin (HOST_WIDE_INT mask, const char *name,
>       }
>        else
>       {
> +       /* Just a MASK where set_and_not_built_p == true can potentially
> +          include a builtin.  */
> +       deferred_isa_values |= mask;
>         ix86_builtins[(int) code] = NULL_TREE;
>         ix86_builtins_isa[(int) code].tcode = tcode;
>         ix86_builtins_isa[(int) code].name = name;
> @@ -30666,6 +30671,12 @@ def_builtin_const (HOST_WIDE_INT mask, const char 
> *name,
>  static void
>  ix86_add_new_builtins (HOST_WIDE_INT isa)
>  {
> +  if ((isa & deferred_isa_values) == 0)
> +    return;
> +
> +  /* Bits in ISA value can be removed from potential isa values.  */
> +  deferred_isa_values &= ~isa;
> +
>    int i;
>    tree saved_current_target_pragma = current_target_pragma;
>    current_target_pragma = NULL_TREE;
> -- 
> 2.1.2
> 

Reply via email to