| Index: src/compiler/control-reducer.cc | 
| diff --git a/src/compiler/control-reducer.cc b/src/compiler/control-reducer.cc | 
| index 281458b9b2823d40c88d664854e1f199f47c062f..6f7ffb3da38481fa9a896cf1e190638737b241d9 100644 | 
| --- a/src/compiler/control-reducer.cc | 
| +++ b/src/compiler/control-reducer.cc | 
| @@ -150,17 +150,11 @@ class ControlReducerImpl final : public AdvancedReducer { | 
| TRACE("ConnectNTL: #%d:%s\n", loop->id(), loop->op()->mnemonic()); | 
| DCHECK_EQ(IrOpcode::kLoop, loop->opcode()); | 
|  | 
| -    Node* always = graph()->NewNode(common()->Always()); | 
| -    Node* branch = graph()->NewNode(common()->Branch(), always, loop); | 
| -    Node* if_true = graph()->NewNode(common()->IfTrue(), branch); | 
| -    Node* if_false = graph()->NewNode(common()->IfFalse(), branch); | 
| - | 
| -    // Insert the branch into the loop and collect all loop effects. | 
| +    // Collect all loop effects. | 
| NodeVector effects(zone_); | 
| for (auto edge : loop->use_edges()) { | 
| DCHECK_EQ(loop, edge.to()); | 
| DCHECK(NodeProperties::IsControlEdge(edge)); | 
| -      if (edge.from() == branch) continue; | 
| switch (edge.from()->opcode()) { | 
| case IrOpcode::kPhi: | 
| break; | 
| @@ -168,8 +162,6 @@ class ControlReducerImpl final : public AdvancedReducer { | 
| effects.push_back(edge.from()); | 
| break; | 
| default: | 
| -          // Update all control edges (except {branch}) pointing to the {loop}. | 
| -          edge.UpdateTo(if_true); | 
| break; | 
| } | 
| } | 
| @@ -184,33 +176,32 @@ class ControlReducerImpl final : public AdvancedReducer { | 
| effects_count, &effects.front()); | 
| } | 
|  | 
| -    // Add a return to connect the NTL to the end. | 
| -    Node* ret = graph()->NewNode( | 
| -        common()->Return(), jsgraph_->UndefinedConstant(), effect, if_false); | 
| +    // Add a terminate to connect the NTL to the end. | 
| +    Node* terminate = graph()->NewNode(common()->Terminate(), effect, loop); | 
|  | 
| Node* end = graph()->end(); | 
| if (end->opcode() == IrOpcode::kDead) { | 
| // End is actually the dead node. Make a new end. | 
| -      end = graph()->NewNode(common()->End(), ret); | 
| +      end = graph()->NewNode(common()->End(), terminate); | 
| graph()->SetEnd(end); | 
| return end; | 
| } | 
| // End is not dead. | 
| Node* merge = end->InputAt(0); | 
| if (merge == NULL || merge->opcode() == IrOpcode::kDead) { | 
| -      // The end node died; just connect end to {ret}. | 
| -      end->ReplaceInput(0, ret); | 
| +      // The end node died; just connect end to {terminate}. | 
| +      end->ReplaceInput(0, terminate); | 
| } else if (merge->opcode() != IrOpcode::kMerge) { | 
| -      // Introduce a final merge node for {end->InputAt(0)} and {ret}. | 
| -      merge = graph()->NewNode(common()->Merge(2), merge, ret); | 
| +      // Introduce a final merge node for {end->InputAt(0)} and {terminate}. | 
| +      merge = graph()->NewNode(common()->Merge(2), merge, terminate); | 
| end->ReplaceInput(0, merge); | 
| -      ret = merge; | 
| +      terminate = merge; | 
| } else { | 
| // Append a new input to the final merge at the end. | 
| -      merge->AppendInput(graph()->zone(), ret); | 
| +      merge->AppendInput(graph()->zone(), terminate); | 
| merge->set_op(common()->Merge(merge->InputCount())); | 
| } | 
| -    return ret; | 
| +    return terminate; | 
| } | 
|  | 
| void AddNodesReachableFromRoots(ReachabilityMarker& marked, | 
|  |