OSDN Git Service

2005-01-08 Jeff Law <law@redhat.com>
[pf3gnuchains/gcc-fork.git] / gcc / tree-ssa.c
index e2b23f0..24b5697 100644 (file)
@@ -96,7 +96,7 @@ flush_pending_stmts (edge e)
        phi = PHI_CHAIN (phi), arg = TREE_CHAIN (arg))
     {
       tree def = TREE_VALUE (arg);
-      add_phi_arg (&phi, def, e);
+      add_phi_arg (phi, def, e);
     }
 
   PENDING_STMT (e) = NULL;
@@ -289,7 +289,7 @@ verify_phi_args (tree phi, basic_block bb, basic_block *definition_block)
     {
       tree op = PHI_ARG_DEF (phi, i);
 
-      e = PHI_ARG_EDGE (phi, i);
+      e = EDGE_PRED (bb, i);
 
       if (op == NULL_TREE)
        {
@@ -404,31 +404,34 @@ verify_flow_sensitive_alias_info (void)
 
   for (i = 1; i < num_ssa_names; i++)
     {
+      tree var;
       var_ann_t ann;
       struct ptr_info_def *pi;
 
       ptr = ssa_name (i);
       if (!ptr)
        continue;
-      ann = var_ann (SSA_NAME_VAR (ptr));
-      pi = SSA_NAME_PTR_INFO (ptr);
 
       /* We only care for pointers that are actually referenced in the
         program.  */
-      if (!TREE_VISITED (ptr) || !POINTER_TYPE_P (TREE_TYPE (ptr)))
+      if (!POINTER_TYPE_P (TREE_TYPE (ptr)) || !TREE_VISITED (ptr))
        continue;
 
       /* RESULT_DECL is special.  If it's a GIMPLE register, then it
         is only written-to only once in the return statement.
         Otherwise, aggregate RESULT_DECLs may be written-to more than
         once in virtual operands.  */
-      if (TREE_CODE (SSA_NAME_VAR (ptr)) == RESULT_DECL
+      var = SSA_NAME_VAR (ptr);
+      if (TREE_CODE (var) == RESULT_DECL
          && is_gimple_reg (ptr))
        continue;
 
+      pi = SSA_NAME_PTR_INFO (ptr);
       if (pi == NULL)
        continue;
 
+      ann = var_ann (var);
       if (pi->is_dereferenced && !pi->name_mem_tag && !ann->type_mem_tag)
        {
          error ("Dereferenced pointers should have a name or a type tag");
@@ -1135,7 +1138,7 @@ check_phi_redundancy (tree phi, tree *eq_to)
        }
 
       if (val
-         && !operand_equal_p (val, def, 0))
+         && !operand_equal_for_phi_arg_p (val, def))
        return;
 
       val = def;
@@ -1253,7 +1256,7 @@ struct tree_opt_pass pass_redundant_phi =
   NULL,                                        /* sub */
   NULL,                                        /* next */
   0,                                   /* static_pass_number */
-  0,                                   /* tv_id */
+  TV_TREE_REDPHI,                      /* tv_id */
   PROP_cfg | PROP_ssa | PROP_alias,    /* properties_required */
   0,                                   /* properties_provided */
   0,                                   /* properties_destroyed */