9d81ba77b766d7a8208b8333378613f0a93d439a
The caller-half of the global case: `g = mk()` into a GLOBAL array stored only the first word — a ≤24B reg-return landed `MOVQ AX, g(SB)` (8 of 24 bytes); a >24B sret-return hit the #220 sret-to-symbol gate which was TY_STRUCT-only and fell through to the same truncation. ≤24B: the local aggregate-receive arm was `off != 0`-only, so a global array fell to the scalar IDENT store. Add a global ARRAY arm — LEAQ name(SB), DI then store the full+tail words from AX/DX/CX (an array is never float-class, so AX/DX/CX is always the transport; no `g+8(SB)` operand form exists). Mirrors the str/slice global arm. >24B: add TY_ARRAY to the #220 sret-to-symbol gate (cg_sret_dest_sym / sretdestnode) — the callee writes the whole array through RDI. A ≤24B STRUCT global receive can be float-class (X0/X1, not AX/DX/CX), so it is left at its pre-existing symmetric behaviour — no consumer. 949_aggret_source_run gains global_recv (c → 15) and global_recv_sret (>24B → 22), both with per-row byte-id.
Description
No description provided
Languages
C
89.4%
Python
7.2%
Makefile
2.3%
Shell
0.8%
Assembly
0.3%