tree-dfa.c (find_vars_r): Do not call add_referenced_vars for globals.
authorRichard Guenther <rguenther@suse.de>
Tue, 29 May 2012 12:48:34 +0000 (12:48 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Tue, 29 May 2012 12:48:34 +0000 (12:48 +0000)
2012-05-29  Richard Guenther  <rguenther@suse.de>

* tree-dfa.c (find_vars_r): Do not call add_referenced_vars
for globals.
(add_referenced_var_1): Re-organize.  Assert we are not
called for globals.
(remove_referenced_var): Likewise.
* varpool.c (add_new_static_var): Use create_tmp_var_raw.
* tree-mudflap.c (execute_mudflap_function_ops): Do not
call add_referenced_var on globals.
* matrix-reorg.c (transform_access_sites): Likewise.

From-SVN: r187955

gcc/ChangeLog
gcc/matrix-reorg.c
gcc/tree-dfa.c
gcc/tree-mudflap.c
gcc/varpool.c

index b7bc112177a3b0fff381ec3deaba38066ea88659..6099b8f91e9706f6a5b55c4e0f03755256bb8be7 100644 (file)
@@ -1,3 +1,15 @@
+2012-05-29  Richard Guenther  <rguenther@suse.de>
+
+       * tree-dfa.c (find_vars_r): Do not call add_referenced_vars
+       for globals.
+       (add_referenced_var_1): Re-organize.  Assert we are not
+       called for globals.
+       (remove_referenced_var): Likewise.
+       * varpool.c (add_new_static_var): Use create_tmp_var_raw.
+       * tree-mudflap.c (execute_mudflap_function_ops): Do not
+       call add_referenced_var on globals.
+       * matrix-reorg.c (transform_access_sites): Likewise.
+
 2012-05-29  Steven Bosscher  <steven@gcc.gnu.org>
 
        * alias.c (reg_known_value): Make this a VEC.
index 72a6a71af05c3653b44156f445df90d9187d3895..8395dd2beae882578f421786c37a942943728932 100644 (file)
@@ -1914,7 +1914,6 @@ transform_access_sites (void **slot, void *data ATTRIBUTE_UNUSED)
              num_elements =
                fold_build2 (MULT_EXPR, sizetype, fold_convert (sizetype, acc_info->index),
                            fold_convert (sizetype, d_size));
-             add_referenced_var (d_size);
              gsi = gsi_for_stmt (acc_info->stmt);
              tmp1 = force_gimple_operand_gsi (&gsi, num_elements, true,
                                               NULL, true, GSI_SAME_STMT);
index 2c6393367d583bec7214ac5c7e32fbe78e9fc9fa..fe477ff5ee5c83a537490ccd841676b641131c21 100644 (file)
@@ -430,7 +430,10 @@ find_vars_r (tree *tp, int *walk_subtrees, void *data)
 
   /* If T is a regular variable that the optimizers are interested
      in, add it to the list of variables.  */
-  else if (SSA_VAR_P (*tp))
+  else if ((TREE_CODE (*tp) == VAR_DECL
+           && !is_global_var (*tp))
+          || TREE_CODE (*tp) == PARM_DECL
+          || TREE_CODE (*tp) == RESULT_DECL)
     add_referenced_var_1 (*tp, fn);
 
   /* Type, _DECL and constant nodes have no interesting children.
@@ -560,22 +563,24 @@ add_referenced_var_1 (tree var, struct function *fn)
                       || TREE_CODE (var) == PARM_DECL
                       || TREE_CODE (var) == RESULT_DECL);
 
-  if (!(TREE_CODE (var) == VAR_DECL
-       && VAR_DECL_IS_VIRTUAL_OPERAND (var))
-      && is_global_var (var))
-    return false;
+  gcc_checking_assert ((TREE_CODE (var) == VAR_DECL
+                       && VAR_DECL_IS_VIRTUAL_OPERAND (var))
+                      || !is_global_var (var));
 
-  if (!*DECL_VAR_ANN_PTR (var))
-    *DECL_VAR_ANN_PTR (var) = ggc_alloc_cleared_var_ann_d ();
-
-  /* Insert VAR into the referenced_vars hash table if it isn't present.  */
+  /* Insert VAR into the referenced_vars hash table if it isn't present
+     and allocate its var-annotation.  */
   if (referenced_var_check_and_insert (var, fn))
-    return true;
+    {
+      gcc_checking_assert (!*DECL_VAR_ANN_PTR (var));
+      *DECL_VAR_ANN_PTR (var) = ggc_alloc_cleared_var_ann_d ();
+      return true;
+    }
 
   return false;
 }
 
-/* Remove VAR from the list.  */
+/* Remove VAR from the list of referenced variables and clear its
+   var-annotation.  */
 
 void
 remove_referenced_var (tree var)
@@ -585,14 +590,16 @@ remove_referenced_var (tree var)
   void **loc;
   unsigned int uid = DECL_UID (var);
 
-  /* Preserve var_anns of globals.  */
-  if (!is_global_var (var)
-      && (v_ann = var_ann (var)))
-    {
-      ggc_free (v_ann);
-      *DECL_VAR_ANN_PTR (var) = NULL;
-    }
-  gcc_assert (DECL_P (var));
+  gcc_checking_assert (TREE_CODE (var) == VAR_DECL
+                      || TREE_CODE (var) == PARM_DECL
+                      || TREE_CODE (var) == RESULT_DECL);
+
+  gcc_checking_assert (!is_global_var (var));
+
+  v_ann = var_ann (var);
+  ggc_free (v_ann);
+  *DECL_VAR_ANN_PTR (var) = NULL;
+
   in.uid = uid;
   loc = htab_find_slot_with_hash (gimple_referenced_vars (cfun), &in, uid,
                                  NO_INSERT);
index edd7755a701c28ed1d067ac88254e1c1052d5f06..dfb0ae1ee7d0e8f5125576caffec298ce4ed0f46 100644 (file)
@@ -427,10 +427,6 @@ execute_mudflap_function_ops (void)
 
   push_gimplify_context (&gctx);
 
-  add_referenced_var (mf_cache_array_decl);
-  add_referenced_var (mf_cache_shift_decl);
-  add_referenced_var (mf_cache_mask_decl);
-
   /* In multithreaded mode, don't cache the lookup cache parameters.  */
   if (! flag_mudflap_threads)
     mf_decl_cache_locals ();
index 487413ded6d5d85d04551ab439d9a2299ef958fc..bcd0a063a7909ca1b83bc77cf9221c891780fc03 100644 (file)
@@ -449,7 +449,7 @@ add_new_static_var (tree type)
   tree new_decl;
   struct varpool_node *new_node;
 
-  new_decl = create_tmp_var (type, NULL);
+  new_decl = create_tmp_var_raw (type, NULL);
   DECL_NAME (new_decl) = create_tmp_var_name (NULL);
   TREE_READONLY (new_decl) = 0;
   TREE_STATIC (new_decl) = 1;