> 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 >