diff options
Diffstat (limited to 'src/wasm/wasm-ir-builder.cpp')
-rw-r--r-- | src/wasm/wasm-ir-builder.cpp | 9 |
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{}; } |