> Hi. > > Explanation of the patch is introduced. thanks > > >> > >> mask &= ~OPTION_MASK_ISA_64BIT; > >> if (mask == 0 > >>@@ -30670,6 +30673,14 @@ def_builtin_const (HOST_WIDE_INT mask, const char > >>*name, > >> static void > >> ix86_add_new_builtins (HOST_WIDE_INT isa) > >> { > >>+ /* Last cached isa value. */ > >>+ static HOST_WIDE_INT last_tested_isa_value = 0; > >>+ > >>+ if ((isa & defined_isa_values) == 0 || isa == last_tested_isa_value) > > > >Heer you need to compare (isa & defined_isa_values) == (isa & > >last_tested_isa_value) right, because we have isa flags that enable no > >builtins. > > I do not understand why, the guard simply ignores last value, which is > already processed and > 'isa' with any intersection with defined_isa_values. Maybe I miss something?
I think you can also skip processing in cases ISA changed but the change has empty intersection with defined_isa_values. Honza