Index: src/compiler/verifier.cc |
diff --git a/src/compiler/verifier.cc b/src/compiler/verifier.cc |
index ff3b2efa45d746309573c755b20918618ba87d4f..cff4b682c5966a8c8120f8c13b5fc906493e8af0 100644 |
--- a/src/compiler/verifier.cc |
+++ b/src/compiler/verifier.cc |
@@ -135,6 +135,11 @@ void Verifier::Visitor::Check(Node* node) { |
CheckOutput(value, node, value->op()->ValueOutputCount(), "value"); |
CHECK(IsDefUseChainLinkPresent(value, node)); |
CHECK(IsUseDefChainLinkPresent(value, node)); |
+ // Verify that only parameters and projections can have input nodes with |
+ // multiple outputs. |
+ CHECK(node->opcode() == IrOpcode::kParameter || |
+ node->opcode() == IrOpcode::kProjection || |
+ value->op()->ValueOutputCount() <= 1); |
} |
// Verify all context inputs are value nodes. |
@@ -161,16 +166,6 @@ void Verifier::Visitor::Check(Node* node) { |
CHECK(IsUseDefChainLinkPresent(control, node)); |
} |
- // Verify all successors are projections if multiple value outputs exist. |
- if (node->op()->ValueOutputCount() > 1) { |
- for (Edge edge : node->use_edges()) { |
- Node* use = edge.from(); |
- CHECK(!NodeProperties::IsValueEdge(edge) || |
- use->opcode() == IrOpcode::kProjection || |
- use->opcode() == IrOpcode::kParameter); |
- } |
- } |
- |
switch (node->opcode()) { |
case IrOpcode::kStart: |
// Start has no inputs. |