OSDN Git Service

2010-07-21 Richard Guenther <rguenther@suse.de>
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 21 Jul 2010 09:46:11 +0000 (09:46 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 21 Jul 2010 09:46:11 +0000 (09:46 +0000)
* tree-flow.h (referenced_var): Move define ...
* tree-flow-inline.h (referenced_var): ... here as an inline
function.  Assert here ...
* tree-dfa.c (referenced_var_lookup): ... instead of here.
* tree-ssa.c (maybe_optimize_var): Check if the variable
is in referenced vars.
(execute_update_addresses_taken): Remove old broken check.
* gimple-pretty-print.c (pp_points_to_solution): Use
referenced_var_lookup.
* tree-into-ssa.c (dump_decl_set): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@162368 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/gimple-pretty-print.c
gcc/tree-dfa.c
gcc/tree-flow-inline.h
gcc/tree-flow.h
gcc/tree-into-ssa.c
gcc/tree-ssa.c

index 2d70233..313baf6 100644 (file)
@@ -1,3 +1,16 @@
+2010-07-21  Richard Guenther  <rguenther@suse.de>
+
+       * tree-flow.h (referenced_var): Move define ...
+       * tree-flow-inline.h (referenced_var): ... here as an inline
+       function.  Assert here ...
+       * tree-dfa.c (referenced_var_lookup): ... instead of here.
+       * tree-ssa.c (maybe_optimize_var): Check if the variable
+       is in referenced vars.
+       (execute_update_addresses_taken): Remove old broken check.
+       * gimple-pretty-print.c (pp_points_to_solution): Use
+       referenced_var_lookup.
+       * tree-into-ssa.c (dump_decl_set): Likewise.
+
 2010-07-21  Jakub Jelinek  <jakub@redhat.com>
 
        PR debug/45003
index 0c613e4..6e1f6b7 100644 (file)
@@ -534,11 +534,7 @@ pp_points_to_solution (pretty_printer *buffer, struct pt_solution *pt)
       pp_string (buffer, "{ ");
       EXECUTE_IF_SET_IN_BITMAP (pt->vars, 0, i, bi)
        {
-         struct tree_decl_minimal in;
-         tree var;
-         in.uid = i;
-         var = (tree) htab_find_with_hash (gimple_referenced_vars (cfun),
-                                           &in, i);
+         tree var = referenced_var_lookup (i);
          if (var)
            {
              dump_generic_node (buffer, var, 0, dump_flags, false);
index 37e15bf..461e2cf 100644 (file)
@@ -495,7 +495,6 @@ referenced_var_lookup (unsigned int uid)
   struct tree_decl_minimal in;
   in.uid = uid;
   h = (tree) htab_find_with_hash (gimple_referenced_vars (cfun), &in, uid);
-  gcc_assert (h || uid == 0);
   return h;
 }
 
index 7e93537..7103d23 100644 (file)
@@ -98,6 +98,16 @@ next_htab_element (htab_iterator *hti)
   return NULL;
 }
 
+/* Get the variable with uid UID from the list of referenced vars.  */
+
+static inline tree
+referenced_var (unsigned int uid)
+{
+  tree var = referenced_var_lookup (uid);
+  gcc_assert (var || uid == 0);
+  return var;
+}
+
 /* Initialize ITER to point to the first referenced variable in the
    referenced_vars hashtable, and return that variable.  */
 
index 6b12d08..6209a84 100644 (file)
@@ -321,7 +321,6 @@ typedef struct
 extern tree referenced_var_lookup (unsigned int);
 extern bool referenced_var_check_and_insert (tree);
 #define num_referenced_vars htab_elements (gimple_referenced_vars (cfun))
-#define referenced_var(i) referenced_var_lookup (i)
 
 #define num_ssa_names (VEC_length (tree, cfun->gimple_df->ssa_names))
 #define ssa_name(i) (VEC_index (tree, cfun->gimple_df->ssa_names, (i)))
index e49fb03..e7c4eca 100644 (file)
@@ -1470,11 +1470,7 @@ dump_decl_set (FILE *file, bitmap set)
 
       EXECUTE_IF_SET_IN_BITMAP (set, 0, i, bi)
        {
-         struct tree_decl_minimal in;
-         tree var;
-         in.uid = i;
-         var = (tree) htab_find_with_hash (gimple_referenced_vars (cfun),
-                                           &in, i);
+         tree var = referenced_var_lookup (i);
          if (var)
            print_generic_expr (file, var, 0);
          else
index d4c519f..0be4591 100644 (file)
@@ -1881,6 +1881,11 @@ maybe_optimize_var (tree var, bitmap addresses_taken, bitmap not_reg_needs)
       || bitmap_bit_p (addresses_taken, DECL_UID (var)))
     return false;
 
+  /* If the variable is not in the list of referenced vars then we
+     do not need to touch it nor can we rename it.  */
+  if (!referenced_var_lookup (DECL_UID (var)))
+    return false;
+
   if (TREE_ADDRESSABLE (var)
       /* Do not change TREE_ADDRESSABLE if we need to preserve var as
         a non-register.  Otherwise we are confused and forget to
@@ -2031,13 +2036,7 @@ execute_update_addresses_taken (bool do_optimize)
         unused vars from BLOCK trees which cause code generation
         differences for -g vs. -g0.  */
       for (var = DECL_ARGUMENTS (cfun->decl); var; var = DECL_CHAIN (var))
-       {
-         /* ???  Not all arguments are in referenced vars.  */
-         if (!var_ann (var))
-           continue;
-         update_vops
-           |= maybe_optimize_var (var, addresses_taken, not_reg_needs);
-       }
+       update_vops |= maybe_optimize_var (var, addresses_taken, not_reg_needs);
       for (i = 0; VEC_iterate (tree, cfun->local_decls, i, var); ++i)
        update_vops |= maybe_optimize_var (var, addresses_taken, not_reg_needs);
     }