| Index: src/compiler/osr.cc
 | 
| diff --git a/src/compiler/osr.cc b/src/compiler/osr.cc
 | 
| index 69532fb3e60fdbdd8d2907772cf16249884225af..e96b047da6e66ab9d30ec8421152ab5e073ff730 100644
 | 
| --- a/src/compiler/osr.cc
 | 
| +++ b/src/compiler/osr.cc
 | 
| @@ -103,6 +103,7 @@ static void PeelOuterLoopsForOsr(Graph* graph, CommonOperatorBuilder* common,
 | 
|      if (backedges == 1) {
 | 
|        // Simple case. Map the incoming edges to the loop to the previous copy.
 | 
|        for (Node* node : loop_tree->HeaderNodes(loop)) {
 | 
| +        if (!all.IsLive(node)) continue;  // dead phi hanging off loop.
 | 
|          Node* copy = mapping->at(node->id());
 | 
|          Node* backedge = node->InputAt(1);
 | 
|          if (previous) backedge = previous->at(backedge->id());
 | 
| @@ -119,6 +120,7 @@ static void PeelOuterLoopsForOsr(Graph* graph, CommonOperatorBuilder* common,
 | 
|        Node* merge =
 | 
|            graph->NewNode(common->Merge(backedges), backedges, &tmp_inputs[0]);
 | 
|        for (Node* node : loop_tree->HeaderNodes(loop)) {
 | 
| +        if (!all.IsLive(node)) continue;  // dead phi hanging off loop.
 | 
|          Node* copy = mapping->at(node->id());
 | 
|          if (node == loop_header) {
 | 
|            // The entry to the loop is the merge.
 | 
| @@ -214,7 +216,9 @@ bool OsrHelper::Deconstruct(JSGraph* jsgraph, CommonOperatorBuilder* common,
 | 
|    // Replace the normal entry with {Dead} and the loop entry with {Start}
 | 
|    // and run the control reducer to clean up the graph.
 | 
|    osr_normal_entry->ReplaceUses(dead);
 | 
| +  osr_normal_entry->Kill();
 | 
|    osr_loop_entry->ReplaceUses(graph->start());
 | 
| +  osr_loop_entry->Kill();
 | 
|  
 | 
|    // Normally the control reducer removes loops whose first input is dead,
 | 
|    // but we need to avoid that because the osr_loop is reachable through
 | 
| 
 |