Speed-up def_builtin_const (ix86_valid_target_attribute).
authorMartin Liska <mliska@suse.cz>
Sun, 22 Mar 2015 22:50:00 +0000 (23:50 +0100)
committerMartin Liska <marxin@gcc.gnu.org>
Sun, 22 Mar 2015 22:50:00 +0000 (22:50 +0000)
* 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.

From-SVN: r221577

gcc/ChangeLog
gcc/config/i386/i386.c

index 36c88ee3499a5238fd37d75ddef8ed0f3ec399b8..7e05b814765096406f59fea60b889f8010d64d06 100644 (file)
@@ -1,3 +1,12 @@
+2015-03-22  Martin Liska  <mliska@suse.cz>
+
+           Jakub Jelinek  <jakub@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.
+
 2015-03-22  Martin Liska  <mliska@suse.cz>
 
        * ipa-icf.c (sem_item::update_hash_by_addr_refs): New function.
index 47deda7ce50f44839d33ba9964cd3d7f7e7de751..82a48482be6dfdce2dc8a02da1d21cb0fb33585b 100644 (file)
@@ -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;