--- old/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/AbstractFixedGuardNode.java 2019-03-12 08:09:43.103621972 +0100 +++ new/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/AbstractFixedGuardNode.java 2019-03-12 08:09:42.735619585 +0100 @@ -126,6 +126,14 @@ try (DebugCloseable position = this.withNodeSourcePosition()) { FixedNode currentNext = next(); setNext(null); + if (currentNext instanceof AbstractBeginNode && currentNext instanceof StateSplit && ((StateSplit) currentNext).stateAfter() != null) { + // Force an extra BeginNode in case any guarded Nodes are inputs to the StateSplit + BeginNode begin = graph().add(new BeginNode()); + begin.setNodeSourcePosition(getNoDeoptSuccessorPosition()); + begin.setNext(currentNext); + currentNext = begin; + } + DeoptimizeNode deopt = graph().add(new DeoptimizeNode(action, reason, speculation)); deopt.setStateBefore(stateBefore()); IfNode ifNode;