diff options
Diffstat (limited to 'src/ir/ReFinalize.cpp')
-rw-r--r-- | src/ir/ReFinalize.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/ir/ReFinalize.cpp b/src/ir/ReFinalize.cpp index 54dde65bc..b3639ba00 100644 --- a/src/ir/ReFinalize.cpp +++ b/src/ir/ReFinalize.cpp @@ -155,7 +155,11 @@ void ReFinalize::visitRefTest(RefTest* curr) { curr->finalize(); } void ReFinalize::visitRefCast(RefCast* curr) { curr->finalize(); } void ReFinalize::visitBrOnCast(BrOnCast* curr) { curr->finalize(); - WASM_UNREACHABLE("TODO (gc): br_on_cast"); + if (curr->type == Type::unreachable) { + replaceUntaken(curr->ref, nullptr); + } else { + updateBreakValueType(curr->name, curr->getCastType()); + } } void ReFinalize::visitRttCanon(RttCanon* curr) { curr->finalize(); } void ReFinalize::visitRttSub(RttSub* curr) { curr->finalize(); } |