summaryrefslogtreecommitdiff
path: root/src/parser
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser')
-rw-r--r--src/parser/context-defs.cpp3
-rw-r--r--src/parser/contexts.h5
-rw-r--r--src/parser/wat-parser.cpp3
3 files changed, 4 insertions, 7 deletions
diff --git a/src/parser/context-defs.cpp b/src/parser/context-defs.cpp
index b43b7049f..76e61d4fb 100644
--- a/src/parser/context-defs.cpp
+++ b/src/parser/context-defs.cpp
@@ -57,9 +57,6 @@ Result<> ParseDefsCtx::addFunc(Name,
std::optional<LocalsT>,
Index pos) {
CHECK_ERR(withLoc(pos, irBuilder.visitEnd()));
- auto body = irBuilder.build();
- CHECK_ERR(withLoc(pos, body));
- wasm.functions[index]->body = *body;
return Ok{};
}
diff --git a/src/parser/contexts.h b/src/parser/contexts.h
index f2aeb2489..7eedcccc2 100644
--- a/src/parser/contexts.h
+++ b/src/parser/contexts.h
@@ -816,9 +816,10 @@ struct ParseDefsCtx : TypeParserCtx<ParseDefsCtx> {
IRBuilder irBuilder;
- void setFunction(Function* func) {
+ Result<> visitFunctionStart(Function* func) {
this->func = func;
- irBuilder.setFunction(func);
+ CHECK_ERR(irBuilder.visitFunctionStart(func));
+ return Ok{};
}
ParseDefsCtx(std::string_view in,
diff --git a/src/parser/wat-parser.cpp b/src/parser/wat-parser.cpp
index 7b58be4d5..7e106d3b9 100644
--- a/src/parser/wat-parser.cpp
+++ b/src/parser/wat-parser.cpp
@@ -157,8 +157,7 @@ Result<> parseModule(Module& wasm, std::string_view input) {
for (Index i = 0; i < decls.funcDefs.size(); ++i) {
ctx.index = i;
- ctx.setFunction(wasm.functions[i].get());
- CHECK_ERR(ctx.irBuilder.makeBlock(Name{}, ctx.func->getResults()));
+ CHECK_ERR(ctx.visitFunctionStart(wasm.functions[i].get()));
WithPosition with(ctx, decls.funcDefs[i].pos);
auto parsed = func(ctx);
CHECK_ERR(parsed);