82c1948239db6e3d1e73e84cd88d6590bd9c6633
A.2's slotsize fast-path covered PTR/SLICE/CHAN/FN/STR but bailed on TAGGED (no nullable fold) and on primitives (cstage let_emit_size pads to 8B for slot storage; tinfo.size is natural width). Fallback hit count under wwdump build was 2187. A.3 closes both gaps. tinfo gains a `nullable: i32` field (fits the existing 4B pad, struct stays 96B). tinfofornode's N_TTAGGED arm detects `(*T | void)` (exactly 2 variants, one N_TPTR, one bare N_TNAME "void" — aliased or !void- wrapped void don't match) and folds to size=8, align=8, nullable=1. Mirrors cmd/wcc/check.c:412-426. slotsize fast-path re-adds TY_TAGGED (safe now) and gains a primitive- pad branch: BOOL/RUNE/I8-I64/U8-U64/INT/UINT/UINTPTR/ENUM/F32/F64 → return 8. Padding lives at the read site; tinfo.size remains a faithful natural-width SSoT. TUPLE/TSTRUCT/TARRAY deliberately stay on the fallback because per-field stride is registerstruct.totsize, not tinfo.size. Post-A.3 fallback hit count: 134 (94% reduction from A.2's 2187). Reviewer's per-kind breakdown: N_TNAME 101 (alias-to-struct chains) + N_TARRAY 33 (struct-element rounding) account for all remaining hits. Both A.4 work. Probes: `(*i32 | void)` byte-identical between stages with the 8B nullable encoding. `(*i32 | nomem)` correctly does NOT fold (nomem ≠ bare void). `(*i32 | !void)` correctly does NOT fold (N_TBANG isn't N_TNAME). 131/131 + 994 + 995 + bootstrap byte-identical (ww2==ww3==ww4).
Description
No description provided
Languages
C
89.4%
Python
7.2%
Makefile
2.3%
Shell
0.8%
Assembly
0.3%