binaryen
binaryen copied to clipboard
[EH] --translate-to-new-eh "invalid delegate"
iiuc, delegate is allowed to target any type of block. from the overview of the old EH proposal:
delegate
can also targetcatch
-lesstry
s or non-try
block constructs likeblock
s orloop
s, in which case the delegated exception is assumed to propagate to the outer scope and will be caught by the next matching try-catches, or rethrown to the caller if there is no outer try block.
but --translate-to-new-eh complains like [parse exception: exceptionTargetNames not empty - invalid delegate (at 0:48)]
.
eg.
(module
(tag)
(func (export "main")
block
try
throw 0
delegate 0
end
)
)
This is unrelated to the new --translate-to-new-eh
. Parsing of delegate
targeting a block has never been supported in Binaryen. Yes it is allowed in the spec, but because our primary producer that generates delegate
, LLVM's Wasm backend, does not produce such code, supporting that has not been a priority. And given that we are planning to put more efforts on supporting the new instructions and less on improving support for the old instructions, I'm not sure whether this will be supported in the near future (or more frankly, ever). May I ask which toolchain generated this code, and what's your usage for this?
This is unrelated to the new
--translate-to-new-eh
. Parsing ofdelegate
targeting a block has never been supported in Binaryen.
ok
Yes it is allowed in the spec, but because our primary producer that generates
delegate
, LLVM's Wasm backend, does not produce such code, supporting that has not been a priority. And given that we are planning to put more efforts on supporting the new instructions and less on improving support for the old instructions, I'm not sure whether this will be supported in the near future (or more frankly, ever). May I ask which toolchain generated this code, and what's your usage for this?
i'm just experimenting things. i have no real use cases of this construct.