hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases.common/src/org/graalvm/compiler/phases/common/ConditionalEliminationPhase.java
changeset 46509 b32d3928ad6a
parent 46459 7d4e637d3f21
child 46640 70bdce04c59b
--- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases.common/src/org/graalvm/compiler/phases/common/ConditionalEliminationPhase.java	Tue May 30 15:41:23 2017 -0700
+++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases.common/src/org/graalvm/compiler/phases/common/ConditionalEliminationPhase.java	Wed May 31 18:20:20 2017 -0700
@@ -400,6 +400,14 @@
                 MapCursor<ValuePhiNode, PhiInfoElement> entries = mergeMap.getEntries();
                 while (entries.advance()) {
                     ValuePhiNode phi = entries.getKey();
+                    assert phi.isAlive() || phi.isDeleted();
+                    /*
+                     * Phi might have been killed already via a conditional elimination in another
+                     * branch.
+                     */
+                    if (phi.isDeleted()) {
+                        continue;
+                    }
                     PhiInfoElement phiInfoElements = entries.getValue();
                     Stamp bestPossibleStamp = null;
                     for (int i = 0; i < phi.valueCount(); ++i) {