[clang] [lld] [llvm] [WebAssembly] Define call-indirect-overlong and bulk-memory-opt features (PR #117087)

Dan Gohman via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 20 17:33:46 PST 2024


sunfishcode wrote:

The short answer is that's what the [Lime1 CPU calls it](https://github.com/WebAssembly/tool-conventions/blob/main/Lime.md#lime1) :smile: .

> Can you explain why you want call-indirect-overlong in lime1? Is it because you want to be able to link files compiles with multi-table? i.e. do you want/expect type relocations at every call_indirect site? If so then perhaps a better name might be call-indirect-relocatable? Or maybe even multi-table-compatible? Sorry for the bikesheding and this late stage..

I included call-indirect-overlong in my original Lime1 proposal because of the simplicity of it. I expected it's easy for mvp-level engines to add support for it. And the more engines support it, the fewer users will see obscure binary decoding errors in cases where a toolchain tries to use an overlong and an engine doesn't recognize it.

Concerning naming, from Lime1's perspective, call-indirect-overlong is just a language feature. It's not inherently *for* call-indirect relocations or multi-table separate compilation strategies. Engines should just accept `call_indirect` instructions with overlongs, so it's called "call-indirect-overlong". Toolchains can then use that behavior whenever they have a need for it.


https://github.com/llvm/llvm-project/pull/117087


More information about the llvm-commits mailing list