68219a119cb17d2428b8dd13090bc54486fd79ce
localloadop selected MOVBQSX/MOVBQZX/MOVSWQ/MOVL/MOVQ for scalar local/let loads via an AST walk down TBANG/TENUM/TNAME-alias chains, re-consulting aliaslookup and ending in fieldsize + fieldissignedc. Three precursors retire the walk: #53 (e3237d1, scopelookupprefer fixes flat-alias collision in resolvealias), #51 (1ce0f63, INTLIT tsuffix stamp), #52 (747279c, typenameisunsigned collapse onto typeisunsigned). Plus the A.6.2 type-AST stamp invariant at check.ww L426-436. Body collapses to two nil guards + ti.size + size cascade + typeissigned(ti). cstage cmd/w6c/cgen.c:357-362 is the SSoT; wwstage now reads tinfo.size directly the same way cstage reads t->size, with TBANG / TENUM / TNAME-alias chains pre-folded by tinfofornode (check.ww:1102-1153 TNAME, 1154-1161 TBANG, 1196-1208 TENUM). Defensive nil branches mirror cstage's `(t && t->size > 0) ? sz : 8` fall-through: when type info is missing, sz fails the != 1/2/4 discriminator and the helper returns MOVQ. Both nil paths are reachable: cgenexpr.ww callers (4 sites: 643, 664, 5380, 5471) populate the *node via a search loop that may exit with nil. Signature unchanged — `c: *cgen` is retained unused for callsite stability, mirroring A.6.3a fieldissignedc(c, t) which followed the same precedent. 5 callsites in cgenexpr.ww untouched (body-only collapse). Net -33 LOC across cgenutil.ww + two .combined.ww bundler regens. Byte-identity (994/995) is the behavior gate; full make test green at 133/133 confirms.
Description
No description provided
Languages
C
89.4%
Python
7.2%
Makefile
2.3%
Shell
0.8%
Assembly
0.3%