[wasm] Swift Async ABI p1: Pass the swiftasync argument in parameter 0
This commit attempts to start defining an ABI (WASM) for the async ctx
parameters to async functions. While other targets can rely on the name
of a register for this, in WASM the parameter position is what defines
its name, so an ABI must be position dependent.
The proposal here is to always place the async context in the first
parameter for WASM. (The swifttailcc padding for a missing swiftasync
argument also becomes parameter 0).
The WebAssembly parameter list already differs from the IR parameter
list:
* The backend already synthesizes parameters that are not in the IR list:
the demoted sret pointer, the varargs buffer pointer, and the swiftself,
swifterror and swiftasync padding.
* Direct precedent: LowerCall already reorders arguments for an ABI. For
Emscripten invoke calls, it swaps the demoted sret pointer and the
function pointer, which the __invoke ABI requires first.
[7 lines not shown]
www/worldmonitor: Update to 2.11.7
Upstream moved to a native TypeScript compiler, so point the build
at it.
Add /usr/local/bin to PATH in the relay rc script, the relay needs
curl at runtime.
Sponsored by: Netzkommune GmbH
[Clang][TBAA] Describe complex types as two fields in !tbaa.struct (#234539)
Add a special case for complex numbers in CollectFields so they're
represented as two fields of their real type instead of a single char
field. This follows the standard complex layout as per C99 6.2.5p13.
Enables vectorization of e.g. https://godbolt.org/z/3PevG697r
[CIR] Put __array_idx alloca in the correct address space and align (#231497)
LoweringPrepare lowers cir.array.ctor and cir.array.dtor into a loop
whose current element pointer lives in a stack slot `__array_idx`. The
slot was created in the default address space with align 1. On targets
whose allocas live in another address space this produced an alloca the
LLVM verifier rejects.
Create the slot in the alloca address space from the module's data
layout, as CIRGenFunction::emitAlloca does for other locals. Align it
for the element pointer it holds rather than its own address, since the
two differ where the alloca address space has narrower pointers.
Assisted-by: Claude Opus 5.5
---------
Signed-off-by: Steffen Holst Larsen <sholstla at amd.com>