Skip to content

[EH] --translate-to-new-eh "invalid delegate" #6274

Closed

Description

@yamt

iiuc, delegate is allowed to target any type of block.
from the overview of the old EH proposal:

delegate can also target catch-less trys or non-try block constructs
like blocks or loops, 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
  )
)

Activity

  1. aheejin commented on Feb 5, 2024

    @aheejin
    Member

    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?

  2. yamt commented on Feb 6, 2024

    @yamt
    ContributorAuthor

    This is unrelated to the new --translate-to-new-eh. Parsing of delegate 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.

  3. tlively commented on Jan 11, 2025

    @tlively
    Member

    We support parsing delegate targeting blocks now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions