summaryrefslogtreecommitdiff
path: root/src/wasm/wasm-ir-builder.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/wasm/wasm-ir-builder.cpp')
-rw-r--r--src/wasm/wasm-ir-builder.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/wasm/wasm-ir-builder.cpp b/src/wasm/wasm-ir-builder.cpp
index 6445cc3c9..bc3180423 100644
--- a/src/wasm/wasm-ir-builder.cpp
+++ b/src/wasm/wasm-ir-builder.cpp
@@ -233,7 +233,7 @@ Result<> IRBuilder::visitExpression(Expression* curr) {
}
Result<> IRBuilder::visitBlock(Block* curr) {
- scopeStack.push_back({{}, curr});
+ // No children; pushing and finalizing will be handled by `visit`.
return Ok{};
}
@@ -281,6 +281,11 @@ Result<> IRBuilder::visitArrayNew(ArrayNew* curr) {
return Ok{};
}
+Result<> IRBuilder::visitBlockStart(Block* curr) {
+ scopeStack.push_back({{}, curr});
+ return Ok{};
+}
+
Result<> IRBuilder::visitEnd() {
if (scopeStack.empty() || !scopeStack.back().block) {
return Err{"unexpected end"};
@@ -347,7 +352,7 @@ Result<> IRBuilder::makeBlock(Name label, Type type) {
auto* block = wasm.allocator.alloc<Block>();
block->name = label;
block->type = type;
- scopeStack.push_back({{}, block});
+ CHECK_ERR(visitBlockStart(block));
return Ok{};
}