[all-commits] [llvm/llvm-project] 08bba6: [WebAssembly] Support binary generation for new EH...

Heejin Ahn via All-commits all-commits at lists.llvm.org
Tue Sep 17 14:58:40 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 08bba6503b918c97d9d1a0cde97f4b3c64d5f2c3
      https://github.com/llvm/llvm-project/commit/08bba6503b918c97d9d1a0cde97f4b3c64d5f2c3
  Author: Heejin Ahn <aheejin at gmail.com>
  Date:   2024-09-17 (Tue, 17 Sep 2024)

  Changed paths:
    M llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCCodeEmitter.cpp
    M llvm/test/CodeGen/WebAssembly/exception.ll
    M llvm/test/MC/WebAssembly/eh-assembly.s

  Log Message:
  -----------
  [WebAssembly] Support binary generation for new EH (#109027)

This adds support for binary generation for the new EH proposal.

So far the only case that we emitted variable immediate operands in
binary has been `br_table`'s destinations. (Other `variable_ops` uses in
TableGen files are register operands, such as the operands of `call`, so
they don't get emitted in binary as a part of the same instruction.)

With this PR, variable immediate operands can include `try_table`'s
operands:
- The number of of catch clauses
- catch clauses sub-opcodes
  - `catch`: 0x00
  - `catch_ref`: 0x01
  - `catch_all`: 0x02
  - `catch_all_ref`: 0x03
- catch clauses' destinations

With `try_table`, we now have variable expr operands for `try_table`'s
catch clauses' tags. We treat their fixups in the same way we do for
tags in other instructions such as in `throw`.

Diff without whitespace will be easier to view.



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list