< prev index next >

src/share/vm/opto/ifnode.cpp

Print this page
rev 12674 : 8164954: split_if creates empty phi and region nodes
Summary: Don't split if all edges will be moved to new phi
Reviewed-by:

@@ -247,10 +247,17 @@
     if (proj != NULL) {
       nb_predicate_proj++;
       predicate_proj = proj;
     }
   }
+
+  // If all the defs of the phi are the same constant, we already have the desired end state.
+  // Skip the split that would create empty phi and region nodes.
+  if((r->req() - req_c) == 1) {
+    return NULL;
+  }
+
   if (nb_predicate_proj > 1) {
     // Can happen in case of loop unswitching and when the loop is
     // optimized out: it's not a loop anymore so we don't care about
     // predicates.
     assert(!r->is_Loop(), "this must not be a loop anymore");
< prev index next >