[all-commits] [llvm/llvm-project] 8c64a3: [WebAssembly] Disable reference types in generic C...

Heejin Ahn via All-commits all-commits at lists.llvm.org
Wed May 1 16:51:21 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 8c64a304123b77d598eda73a14cf3ff0ec7970dc
      https://github.com/llvm/llvm-project/commit/8c64a304123b77d598eda73a14cf3ff0ec7970dc
  Author: Heejin Ahn <aheejin at gmail.com>
  Date:   2024-05-01 (Wed, 01 May 2024)

  Changed paths:
    M clang/docs/ReleaseNotes.rst
    M clang/lib/Basic/Targets/WebAssembly.cpp
    M clang/test/Preprocessor/wasm-target-features.c

  Log Message:
  -----------
  [WebAssembly] Disable reference types in generic CPU (#90792)

#80923 newly enabled multivalue and reference-types in the generic CPU.
But enabling reference-types ended up breaking up Wasm's Chromium CI
(https://chromium-review.googlesource.com/c/emscripten-releases/+/5500231)
because the way the table index is encoded is different from MVP (u32)
vs. reference-types (LEB), which caused different encodings for
`call_indirect`.

And Chromium CI's and Emscripten's minimum required node version is v16,
which does not yet support reference-types, which does not recognize
that table index encoding. reference-types is first supported in node
v17.2.

We knew the current minimum required node for Emscripten (v16) did not
support reference-types, but thought it was fine because unless you
explicitly use `__funcref` or `__externref` things would be fine, and if
you want to use them explicitly, you would have a newer node. But it
turned out it also affected the encoding of `call_indirect`.

While we are discussing the potential solutions, I will disable
reference-types to unblock the rolls.



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