summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHeejin Ahn <aheejin@gmail.com>2024-04-23 17:37:11 +0900
committerGitHub <noreply@github.com>2024-04-23 17:37:11 +0900
commita3c789008726ccf891b5f5581c87194578c32af4 (patch)
treeba3d713d751ae2be0629d5f852abb38f187ed489 /src
parente50a2ba8e85c274880898ef7c5d6efc186efcc17 (diff)
downloadbinaryen-a3c789008726ccf891b5f5581c87194578c32af4.tar.gz
binaryen-a3c789008726ccf891b5f5581c87194578c32af4.tar.bz2
binaryen-a3c789008726ccf891b5f5581c87194578c32af4.zip
[EH] Fix delegating to caller when func result is concrete (#6518)
hen the function return type is concrete, the translation result of a `try`-`delegate` that targets the caller includes a `return` that returns the whole function body: https://github.com/WebAssembly/binaryen/blob/219e668e87b012c0634043ed702534b8be31231f/src/passes/TranslateEH.cpp#L751-L763 We should do that based on the function's return type, not the function body's return type. The previous code didn't handle the case where the function's return type is concrete but the function body's return type is unreachable.
Diffstat (limited to 'src')
-rw-r--r--src/passes/TranslateEH.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/passes/TranslateEH.cpp b/src/passes/TranslateEH.cpp
index 760c4b656..33fa4689d 100644
--- a/src/passes/TranslateEH.cpp
+++ b/src/passes/TranslateEH.cpp
@@ -762,7 +762,7 @@ struct TranslateToNewEH : public WalkerPass<PostWalker<TranslateToNewEH>> {
// )
// )
Expression* innerBody = nullptr;
- if (func->body->type.isConcrete()) {
+ if (func->getResults().isConcrete()) {
auto* ret = builder.makeReturn(func->body);
innerBody = builder.blockifyWithName(
ret, callerDelegateBrTarget, nullptr, Type(HeapType::exn, Nullable));