Merge
authorrbackman
Tue, 22 Oct 2013 14:02:15 +0000
changeset 21097 ef128c67048d
parent 21095 1a04f7b3946e (current diff)
parent 21096 3073d9608433 (diff)
child 21098 1820670a3362
Merge
--- a/hotspot/src/share/vm/opto/compile.cpp	Tue Oct 22 09:51:47 2013 +0200
+++ b/hotspot/src/share/vm/opto/compile.cpp	Tue Oct 22 14:02:15 2013 +0000
@@ -3006,10 +3006,15 @@
       if (result != NULL) {
         for (DUIterator_Fast jmax, j = result->fast_outs(jmax); j < jmax; j++) {
           Node* out = result->fast_out(j);
-          if (out->in(0) == NULL) {
-            out->set_req(0, non_throwing);
-          } else if (out->in(0) == ctrl) {
-            out->set_req(0, non_throwing);
+          // Phi nodes shouldn't be moved. They would only match below if they
+          // had the same control as the MathExactNode. The only time that
+          // would happen is if the Phi is also an input to the MathExact
+          if (!out->is_Phi()) {
+            if (out->in(0) == NULL) {
+              out->set_req(0, non_throwing);
+            } else if (out->in(0) == ctrl) {
+              out->set_req(0, non_throwing);
+            }
           }
         }
       }