Index: src/compiler/verifier.cc |
diff --git a/src/compiler/verifier.cc b/src/compiler/verifier.cc |
index e040cd296cccaba8b665d2119ae5f55522577424..1cc8c9f32e7011c67b4d2f452c6fe0e6f1c3f640 100644 |
--- a/src/compiler/verifier.cc |
+++ b/src/compiler/verifier.cc |
@@ -228,6 +228,27 @@ void Verifier::Visitor::Check(Node* node) { |
// Type is empty. |
CheckNotTyped(node); |
break; |
+ case IrOpcode::kSwitch: { |
+ // Switch uses are Case. |
+ std::vector<bool> uses; |
+ uses.resize(node->UseCount()); |
+ for (auto use : node->uses()) { |
+ CHECK_EQ(IrOpcode::kCase, use->opcode()); |
+ size_t const index = CaseIndexOf(use->op()); |
+ CHECK_LT(index, uses.size()); |
+ CHECK(!uses[index]); |
+ uses[index] = true; |
+ } |
+ // Type is empty. |
+ CheckNotTyped(node); |
+ break; |
+ } |
+ case IrOpcode::kCase: |
+ CHECK_EQ(IrOpcode::kSwitch, |
+ NodeProperties::GetControlInput(node)->opcode()); |
+ // Type is empty. |
+ CheckNotTyped(node); |
+ break; |
case IrOpcode::kLoop: |
case IrOpcode::kMerge: |
CHECK_EQ(control_count, input_count); |