Index: src/compiler/effect-control-linearizer.cc |
diff --git a/src/compiler/effect-control-linearizer.cc b/src/compiler/effect-control-linearizer.cc |
index 11fee09f9b7f84ccb67d8844d35c0ae068703c34..73190c138c60d5ad3c75dba41fb635a513cca8fa 100644 |
--- a/src/compiler/effect-control-linearizer.cc |
+++ b/src/compiler/effect-control-linearizer.cc |
@@ -328,13 +328,14 @@ void EffectControlLinearizer::ProcessNode(Node* node, Node** effect, |
DCHECK(node->op()->EffectOutputCount() == 0 || |
node->opcode() == IrOpcode::kStart); |
} |
- // Rewire control inputs of control nodes, and update the current control |
- // input. |
+ |
+ // Rewire control inputs. |
+ for (int i = 0; i < node->op()->ControlInputCount(); i++) { |
+ NodeProperties::ReplaceControlInput(node, *control, i); |
+ } |
+ // Update the current control and wire IfSuccess right after calls. |
if (node->op()->ControlOutputCount() > 0) { |
- DCHECK_EQ(1, node->op()->ControlInputCount()); |
- NodeProperties::ReplaceControlInput(node, *control); |
*control = node; |
- |
if (node->opcode() == IrOpcode::kCall) { |
// Schedule the call's IfSuccess node (if there is no exception use). |
TryScheduleCallIfSuccess(node, control); |