From 10714b633cbba472b1e68e6063a6d89ee903f5e6 Mon Sep 17 00:00:00 2001 From: jarin Date: Wed, 29 Jun 2016 22:38:22 -0700 Subject: [PATCH] [turbofan] Always defer replacement in simplified lowering. Since we do negative type checks, the current shortcut might still affect the lowering choices, possibly leading to inconsistent results. This CL gets rid of the shortcut. Review-Url: https://codereview.chromium.org/2101943005 Cr-Commit-Position: refs/heads/master@{#37412} --- src/compiler/simplified-lowering.cc | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/src/compiler/simplified-lowering.cc b/src/compiler/simplified-lowering.cc index b36b777224b..a6717fb1001 100644 --- a/src/compiler/simplified-lowering.cc +++ b/src/compiler/simplified-lowering.cc @@ -2102,20 +2102,9 @@ class RepresentationSelector { DCHECK_EQ(0, node->op()->ControlInputCount()); } - if (replacement->id() < count_ && - GetUpperBound(node)->Is(GetUpperBound(replacement)) && - TypeOf(node)->Is(TypeOf(replacement))) { - // Replace with a previously existing node eagerly only if the type is the - // same. - node->ReplaceUses(replacement); - } else { - // Otherwise, we are replacing a node with a representation change. - // Such a substitution must be done after all lowering is done, because - // changing the type could confuse the representation change - // insertion for uses of the node. - replacements_.push_back(node); - replacements_.push_back(replacement); - } + replacements_.push_back(node); + replacements_.push_back(replacement); + node->NullAllInputs(); // Node is now dead. }