tree-outof-ssa.c (coalesce_abnormal_edges): Pass the correct target partition to...
authorJeff Law <law@redhat.com>
Tue, 14 Dec 2004 20:05:48 +0000 (13:05 -0700)
committerJeff Law <law@gcc.gnu.org>
Tue, 14 Dec 2004 20:05:48 +0000 (13:05 -0700)
        * tree-outof-ssa.c (coalesce_abnormal_edges): Pass the correct target
        partition to conflict_graph_merge_regs.

From-SVN: r92157

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

index a5b07df63fa8b01a68ec4f5b1c30c5fd4340c16a..1a8f5a6cbeba9afbf6de6b1332342e08ec1ae6a4 100644 (file)
@@ -1,3 +1,8 @@
+2004-12-14  Jeff Law  <law@redhat.com>
+
+       * tree-outof-ssa.c (coalesce_abnormal_edges): Pass the correct target
+       partition to conflict_graph_merge_regs.
+
 2004-12-14  Uttam Pawar  <uttamp@us.ibm.com>
            Janis Johnson  <janis187@us.ibm.com>
 
index 621366b85ae29123478ffd4604b8249c13271867..d61acbd0b1d408f8f87d7722944af5c2b3d12eab 100644 (file)
@@ -569,7 +569,7 @@ coalesce_abnormal_edges (var_map map, conflict_graph graph, root_var_p rv)
   basic_block bb;
   edge e;
   tree phi, var, tmp;
-  int x, y;
+  int x, y, z;
   edge_iterator ei;
 
   /* Code cannot be inserted on abnormal edges. Look for all abnormal 
@@ -641,8 +641,9 @@ coalesce_abnormal_edges (var_map map, conflict_graph graph, root_var_p rv)
                                      "ABNORMAL: Coalescing ",
                                      var, " and ", tmp);
                  }
+               z = var_union (map, var, tmp);
 #ifdef ENABLE_CHECKING
-               if (var_union (map, var, tmp) == NO_PARTITION)
+               if (z == NO_PARTITION)
                  {
                    print_exprs_edge (stderr, e, "\nUnable to coalesce", 
                                      partition_to_var (map, x), " and ", 
@@ -650,9 +651,13 @@ coalesce_abnormal_edges (var_map map, conflict_graph graph, root_var_p rv)
                    internal_error ("SSA corruption");
                  }
 #else
-               gcc_assert (var_union (map, var, tmp) != NO_PARTITION);
+               gcc_assert (z != NO_PARTITION);
 #endif
-               conflict_graph_merge_regs (graph, x, y);
+               gcc_assert (z == x || z == y);
+               if (z == x)
+                 conflict_graph_merge_regs (graph, x, y);
+               else
+                 conflict_graph_merge_regs (graph, y, x);
              }
          }
 }