Merged: [turbofan] fix bug in DeadCodeElimination

Revision: d4ddf645c3ca81ed12caf0dfa398716def23e1b7

BUG=chromium:1076708
NOTRY=true
NOPRESUBMIT=true
NOTREECHECKS=true

(cherry picked from commit fb9aa71a2d8a41a73b0cf58ac132f702ab17a2e5)

TBR: neis@chromium.org
Change-Id: I8acdb4715a6786d954d5be49b909b136b4067969
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2187624
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
Cr-Original-Commit-Position: refs/branch-heads/8.3@{#18}
Cr-Original-Branched-From: 1668abddd8147c49c8f2f90b78dc2701f3794a30-refs/heads/8.3.110@{#1}
Cr-Original-Branched-From: 04a7a680a2838e1789f277495181e709e14a17ba-refs/heads/master@{#66926}
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2208932
Cr-Commit-Position: refs/branch-heads/8.1@{#67}
Cr-Branched-From: a4dcd39d521d14c4b1cac020812e44ee04a7f244-refs/heads/8.1.307@{#1}
Cr-Branched-From: f22c213304ec3542df87019aed0909b7dafeaa93-refs/heads/master@{#66031}
diff --git a/src/compiler/dead-code-elimination.cc b/src/compiler/dead-code-elimination.cc
index f39e6ca..bab6b7b 100644
--- a/src/compiler/dead-code-elimination.cc
+++ b/src/compiler/dead-code-elimination.cc
@@ -317,7 +317,10 @@
          node->opcode() == IrOpcode::kTailCall);
   Reduction reduction = PropagateDeadControl(node);
   if (reduction.Changed()) return reduction;
-  if (FindDeadInput(node) != nullptr) {
+  // Terminate nodes are not part of actual control flow, so they should never
+  // be replaced with Throw.
+  if (node->opcode() != IrOpcode::kTerminate &&
+      FindDeadInput(node) != nullptr) {
     Node* effect = NodeProperties::GetEffectInput(node, 0);
     Node* control = NodeProperties::GetControlInput(node, 0);
     if (effect->opcode() != IrOpcode::kUnreachable) {