OSDN Git Service

2006-05-02 Andrew MacLeod <amacleod@redhat.com>
authoramacleod <amacleod@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 3 May 2006 17:13:37 +0000 (17:13 +0000)
committeramacleod <amacleod@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 3 May 2006 17:13:37 +0000 (17:13 +0000)
        PR tree-optimization/27381
* tree-phinodes.c (remove_phi_arg_num): When moving a phi argument,
maintain the same immediate_use links.
* tree-ssa-operands.c (dump_immediate_uses_for): Show iteration marker
node rather than segfaulting.

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

gcc/ChangeLog
gcc/tree-phinodes.c
gcc/tree-ssa-operands.c

index 902857b..8f29f82 100644 (file)
@@ -1,3 +1,11 @@
+2006-05-02  Andrew MacLeod  <amacleod@redhat.com>
+
+       PR tree-optimization/27381
+       * tree-phinodes.c (remove_phi_arg_num): When moving a phi argument, 
+       maintain the same immediate_use links.
+       * tree-ssa-operands.c (dump_immediate_uses_for): Show iteration marker 
+       node rather than segfaulting.
+
 2006-05-03  Jakub Jelinek  <jakub@redhat.com>
 
        PR fortran/27395
index 75e7630..5e85aea 100644 (file)
@@ -406,14 +406,20 @@ remove_phi_arg_num (tree phi, int i)
 
   gcc_assert (i < num_elem);
 
-  /* Delink the last item, which is being removed.  */
-  delink_imm_use (&(PHI_ARG_IMM_USE_NODE (phi, num_elem - 1)));
 
-  /* If we are not at the last element, switch the last element
-     with the element we want to delete.  */
+  /* Delink the item which is being removed.  */
+  delink_imm_use (&(PHI_ARG_IMM_USE_NODE (phi, i)));
+
+  /* If it is not the last element, move the last element
+     to the element we want to delete, resetting all the links. */
   if (i != num_elem - 1)
     {
-      SET_PHI_ARG_DEF (phi, i, PHI_ARG_DEF (phi, num_elem - 1));
+      use_operand_p old_p, new_p;
+      old_p = &PHI_ARG_IMM_USE_NODE (phi, num_elem - 1);
+      new_p = &PHI_ARG_IMM_USE_NODE (phi, i);
+      /* Set use on new node, and link into last elements's place.  */
+      *(new_p->use) = *(old_p->use);
+      relink_imm_use (new_p, old_p);
     }
 
   /* Shrink the vector and return.  Note that we do not have to clear
index 68613fe..3cd8c45 100644 (file)
@@ -2513,10 +2513,13 @@ dump_immediate_uses_for (FILE *file, tree var)
 
   FOR_EACH_IMM_USE_FAST (use_p, iter, var)
     {
-      if (!is_gimple_reg (USE_FROM_PTR (use_p)))
-       print_generic_stmt (file, USE_STMT (use_p), TDF_VOPS);
+      if (use_p->stmt == NULL && use_p->use == NULL)
+        fprintf (file, "***end of stmt iterator marker***\n");
       else
-       print_generic_stmt (file, USE_STMT (use_p), TDF_SLIM);
+       if (!is_gimple_reg (USE_FROM_PTR (use_p)))
+         print_generic_stmt (file, USE_STMT (use_p), TDF_VOPS);
+       else
+         print_generic_stmt (file, USE_STMT (use_p), TDF_SLIM);
     }
   fprintf(file, "\n");
 }