Revert
authorJeff Law <law@redhat.com>
Tue, 19 Dec 2017 04:35:59 +0000 (21:35 -0700)
committerJeff Law <law@gcc.gnu.org>
Tue, 19 Dec 2017 04:35:59 +0000 (21:35 -0700)
2017-11-19  Jeff Law  <law@redhat.com>

* tree-ssa-dom.c (record_equivalences_from_phis): Fix handling
of degenerates resulting from ignoring an edge.

From-SVN: r255802

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

index d165b5ccf410f4bca19bfb896df3bfecaf1e3865..b5854f7a67ce4c14c9a8444dbe4e17d2986e601b 100644 (file)
@@ -1,3 +1,11 @@
+2017-12-18  Jeff Law  <law@redhat.com>
+
+       Revert
+       2017-11-19  Jeff Law  <law@redhat.com>
+
+       * tree-ssa-dom.c (record_equivalences_from_phis): Fix handling
+       of degenerates resulting from ignoring an edge.
+
 2017-12-18  Martin Sebor  <msebor@redhat.com>
 
        PR middle-end/83373
index 93c992a921566921b97f659dcf671c91f83c7f97..05bc807071f8f0c8cf1832af72f02579cf852ec1 100644 (file)
@@ -1109,7 +1109,6 @@ record_equivalences_from_phis (basic_block bb)
       tree rhs = NULL;
       size_t i;
 
-      bool ignored_phi_arg = false;
       for (i = 0; i < gimple_phi_num_args (phi); i++)
        {
          tree t = gimple_phi_arg_def (phi, i);
@@ -1120,14 +1119,10 @@ record_equivalences_from_phis (basic_block bb)
          if (lhs == t)
            continue;
 
-         /* We want to track if we ignored any PHI arguments because
-            their associated edges were not executable.  This impacts
-            whether or not we can use any equivalence we might discover.  */
+         /* If the associated edge is not marked as executable, then it
+            can be ignored.  */
          if ((gimple_phi_arg_edge (phi, i)->flags & EDGE_EXECUTABLE) == 0)
-           {
-             ignored_phi_arg = true;
-             continue;
-           }
+           continue;
 
          t = dom_valueize (t);
 
@@ -1152,15 +1147,9 @@ record_equivalences_from_phis (basic_block bb)
         a useful equivalence.  We do not need to record unwind data for
         this, since this is a true assignment and not an equivalence
         inferred from a comparison.  All uses of this ssa name are dominated
-        by this assignment, so unwinding just costs time and space.
-
-        Note that if we ignored a PHI argument and the resulting equivalence
-        is SSA_NAME = SSA_NAME.  Then we can not use the equivalence as the
-        uses of the LHS SSA_NAME are not necessarily dominated by the
-        assignment of the RHS SSA_NAME.  */
+        by this assignment, so unwinding just costs time and space.  */
       if (i == gimple_phi_num_args (phi)
-         && may_propagate_copy (lhs, rhs)
-         && (!ignored_phi_arg || TREE_CODE (rhs) != SSA_NAME))
+         && may_propagate_copy (lhs, rhs))
        set_ssa_name_value (lhs, rhs);
     }
 }