Index: src/compiler/verifier.cc |
diff --git a/src/compiler/verifier.cc b/src/compiler/verifier.cc |
index 47edd35d553172346ee9967e24cf161a8b69988c..85c6caa539fc7748f5a5d20251e369dc3e04c615 100644 |
--- a/src/compiler/verifier.cc |
+++ b/src/compiler/verifier.cc |
@@ -178,6 +178,16 @@ void Verifier::Visitor::Check(Node* node) { |
} |
switch (node->opcode()) { |
+ case IrOpcode::kAlways: |
+ // Always has no inputs. |
+ CHECK_EQ(0, input_count); |
+ // Always uses are Branch. |
+ for (auto use : node->uses()) { |
+ CHECK(use->opcode() == IrOpcode::kBranch); |
+ } |
+ // Type is boolean. |
+ CheckUpperIs(node, Type::Boolean()); |
+ break; |
case IrOpcode::kStart: |
// Start has no inputs. |
CHECK_EQ(0, input_count); |
@@ -233,12 +243,6 @@ void Verifier::Visitor::Check(Node* node) { |
// Type is empty. |
CheckNotTyped(node); |
break; |
- case IrOpcode::kTerminate: |
- // Type is empty. |
- CheckNotTyped(node); |
- CHECK_EQ(1, control_count); |
- CHECK_EQ(input_count, 1 + effect_count); |
- break; |
case IrOpcode::kOsrNormalEntry: |
case IrOpcode::kOsrLoopEntry: |
// Osr entries have |
@@ -348,6 +352,12 @@ void Verifier::Visitor::Check(Node* node) { |
CHECK_EQ(input_count, 1 + effect_count); |
break; |
} |
+ case IrOpcode::kEffectSet: { |
+ CHECK_EQ(0, value_count); |
+ CHECK_EQ(0, control_count); |
+ CHECK_LT(1, effect_count); |
+ break; |
+ } |
case IrOpcode::kValueEffect: |
// TODO(rossberg): what are the constraints on these? |
break; |