tree-ssa-alias.c (compute_flow_insensitive_aliasing): Reduce the number of queries...
authorJeff Law <law@redhat.com>
Thu, 25 Nov 2004 03:54:07 +0000 (20:54 -0700)
committerJeff Law <law@gcc.gnu.org>
Thu, 25 Nov 2004 03:54:07 +0000 (20:54 -0700)
        * tree-ssa-alias.c (compute_flow_insensitive_aliasing): Reduce
        the number of queries to random elements in the ai->written_vars
        bitmap.

From-SVN: r91271

gcc/ChangeLog
gcc/tree-ssa-alias.c

index 7aad684..94ada81 100644 (file)
@@ -1,3 +1,9 @@
+2004-11-24  Jeff Law  <law@redhat.com>
+
+       * tree-ssa-alias.c (compute_flow_insensitive_aliasing): Reduce
+       the number of queries to random elements in the ai->written_vars
+       bitmap.
+
 2004-11-24  Roger Sayle  <roger@eyesopen.com>
 
        * config/i386/i386.c (override_options): Disable x87 fancy math
index 0e30f12..4640f1f 100644 (file)
@@ -921,11 +921,16 @@ compute_flow_insensitive_aliasing (struct alias_info *ai)
          /* Skip memory tags and variables that have never been
             written to.  We also need to check if the variables are
             call-clobbered because they may be overwritten by
-            function calls.  */
-         tag_stored_p = bitmap_bit_p (ai->written_vars, tag_ann->uid)
-                        || is_call_clobbered (tag);
-         var_stored_p = bitmap_bit_p (ai->written_vars, v_ann->uid)
-                        || is_call_clobbered (var);
+            function calls.
+
+            Note this is effectively random accessing elements in
+            the sparse bitset, which can be highly inefficient.
+            So we first check the call_clobbered status of the
+            tag and variable before querying the bitmap.  */
+         tag_stored_p = is_call_clobbered (tag)
+                        || bitmap_bit_p (ai->written_vars, tag_ann->uid);
+         var_stored_p = is_call_clobbered (var)
+                        || bitmap_bit_p (ai->written_vars, v_ann->uid);
          if (!tag_stored_p && !var_stored_p)
            continue;