8164954: split_if creates empty phi and region nodes
authorneliasso
Mon, 06 Mar 2017 14:08:52 +0100
changeset 44241 99010d3fcc97
parent 44240 c884d44d62d8
child 44242 6a0ee4ac7852
8164954: split_if creates empty phi and region nodes Summary: Don't split if all edges will be moved to new phi Reviewed-by: kvn, vlivanov
hotspot/src/share/vm/opto/ifnode.cpp
--- a/hotspot/src/share/vm/opto/ifnode.cpp	Mon Mar 06 21:28:33 2017 +0100
+++ b/hotspot/src/share/vm/opto/ifnode.cpp	Mon Mar 06 14:08:52 2017 +0100
@@ -249,6 +249,13 @@
       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