diff options
author | Thomas Lively <tlively@google.com> | 2023-11-15 01:44:27 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-15 01:44:27 +0100 |
commit | b01c950bff78d44b31de0239ba0a27a9c3d33345 (patch) | |
tree | 2092499bffd4abcd01032c08dd392b1c4b35461c /src/parser/parsers.h | |
parent | 325d588b0bf1497322d75c35ef8e017f9a8a5d7c (diff) | |
download | binaryen-b01c950bff78d44b31de0239ba0a27a9c3d33345.tar.gz binaryen-b01c950bff78d44b31de0239ba0a27a9c3d33345.tar.bz2 binaryen-b01c950bff78d44b31de0239ba0a27a9c3d33345.zip |
[Parser] Parse BrOn expressions (#6100)
Diffstat (limited to 'src/parser/parsers.h')
-rw-r--r-- | src/parser/parsers.h | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/parser/parsers.h b/src/parser/parsers.h index 6b6bb0aa5..e2fb3732a 100644 --- a/src/parser/parsers.h +++ b/src/parser/parsers.h @@ -1315,11 +1315,17 @@ template<typename Ctx> Result<> makeRefCast(Ctx& ctx, Index pos) { } template<typename Ctx> Result<> makeBrOnNull(Ctx& ctx, Index pos, bool onFail) { - return ctx.in.err("unimplemented instruction"); + auto label = labelidx(ctx); + CHECK_ERR(label); + return ctx.makeBrOn(pos, *label, onFail ? BrOnNonNull : BrOnNull); } template<typename Ctx> Result<> makeBrOnCast(Ctx& ctx, Index pos, bool onFail) { - return ctx.in.err("unimplemented instruction"); + auto label = labelidx(ctx); + CHECK_ERR(label); + auto type = reftype(ctx); + CHECK_ERR(type); + return ctx.makeBrOn(pos, *label, onFail ? BrOnCastFail : BrOnCast, *type); } template<typename Ctx> |