Hojun-Cho
5bfcd8bd6b
cgen: convert the struct-store loop arms to a tinfo-native fill ( #31 c2)
...
The W1/W2/W5/W4b store / structlit-fill arms still resolved struct field
LAYOUT by bare-leaf name (structlookupchain / structlookup / letvarstructinfo)
inside the per-field store loop -- the write-side twin of commit-1's read fix.
Under a cross-module same-leaf collision (two modules each exporting a `pair`,
16B vs 24B) the field is stored at the wrong offset/width; an interior 2-byte
field store silently corrupted neighbours. cstage walks the resolved Type*
(never a name) and is correct; this aligns wwstage UP (ww-only change).
Convert each store loop to a tinfo-native fill. Two new helpers in cgenutil.ww:
sretretsizetn (a verbatim port of cstage cg_sret_retsize -- 4 kind-branches,
no TY_BANG, dropping the #129 module-juggling that was pure name-keying
compensation, redundant once the lookup walks resolved tinfo) and
cgstructlitfilltn (the tinfo-native twin of cgstructlitfill, recursing on
tichase(tf.type_).fields with NO name lookup at any nesting level). Supporting
twins storeopsz / tfieldlookup / cgdotfieldhardstoptn. Because the fill never
bottoms out on a name, the W4b "decisive wall" (a structlit that needed a
(sname,smod)-keyed structinfo the stamped leaf-only tinfo couldn't supply)
dissolves by construction, with no module-aware tinfo->structinfo bridge.
This CLOSES the nine in-loop nested sub-arms (N_CALL / N_STRUCTLIT / N_IDENT
field receive) by construction -- the tf walk has no name lookup. The
non-reddenable global arms (W5/W4b) are converted-for-construction: a qualified
global decl resolves its bare leaf correctly today, so byte-id (cs.s==ww.s) is
their net, not a value pin. `!T` is kind-preserving in both stages
(resolve_type / tinfofornode), so a `!struct` sret sizes as the inner struct,
never TAGGED -- the #129 drop changes no size.
Completes the 2-commit #31 arc (RULING R2 / Opt-2, .ai/ken-31-spec.md): the
#224 name-keyed receiver-layout cluster is now closed by construction. The
residual nested-field surface (the shared cgstructlitfill kept for its non-#31
callers + the cgenstmt/cgenutil let-receive/fill family) is tracked as #32 .
Pins: test/wcc/797 value-asserts ptr-WRITE (W1) and val-WRITE (W2), each
reddening under independent per-arm revert; nestfill_box drives
cgstructlitfilltn's nested recursion (bootstrap-uncovered -- the corpus has no
struct-literal field store -- so the value pin is its only net).
2026-06-29 15:19:41 +09:00
..
2026-06-29 03:55:26 +09:00
2026-05-11 13:49:27 +09:00
2026-06-18 22:47:53 +09:00
2026-06-24 00:39:20 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-05-12 11:35:50 +09:00
2026-05-12 12:45:11 +09:00
2026-06-13 11:03:42 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-05-12 13:44:27 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-22 23:29:39 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-29 03:55:26 +09:00
2026-06-22 23:29:39 +09:00
2026-06-24 00:28:25 +09:00
2026-06-23 01:12:27 +09:00
2026-06-22 23:29:39 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-29 03:55:26 +09:00
2026-06-22 23:29:39 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-22 23:29:39 +09:00
2026-06-29 03:55:26 +09:00
2026-06-22 23:29:39 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-05-18 18:25:36 +09:00
2026-05-18 18:25:36 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-05-18 18:25:36 +09:00
2026-06-29 03:55:26 +09:00
2026-05-18 18:25:36 +09:00
2026-05-18 18:25:36 +09:00
2026-05-18 18:25:36 +09:00
2026-05-18 18:25:36 +09:00
2026-06-29 03:55:26 +09:00
2026-06-22 23:29:39 +09:00
2026-05-18 19:22:27 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-21 13:04:59 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-05-18 23:37:16 +09:00
2026-06-16 01:36:14 +09:00
2026-05-19 00:58:28 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:57:50 +09:00
2026-06-18 11:16:56 +09:00
2026-06-22 23:29:39 +09:00
2026-05-19 04:56:56 +09:00
2026-05-19 10:44:16 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-22 23:29:39 +09:00
2026-06-29 03:55:26 +09:00
2026-06-22 23:29:39 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-22 23:29:39 +09:00
2026-06-18 11:16:56 +09:00
2026-06-18 11:16:56 +09:00
2026-06-18 11:16:56 +09:00
2026-06-18 11:16:56 +09:00
2026-06-18 11:16:56 +09:00
2026-06-18 11:16:56 +09:00
2026-06-18 11:16:56 +09:00
2026-06-18 11:16:56 +09:00
2026-06-18 11:16:56 +09:00
2026-06-18 11:16:56 +09:00
2026-05-31 20:31:40 +09:00
2026-06-01 05:04:46 +09:00
2026-06-01 05:04:46 +09:00
2026-06-29 03:55:26 +09:00
2026-06-18 11:16:56 +09:00
2026-06-18 16:44:41 +09:00
2026-06-18 11:16:56 +09:00
2026-06-18 11:16:56 +09:00
2026-06-18 16:44:41 +09:00
2026-06-24 22:59:32 +09:00
2026-06-18 11:16:56 +09:00
2026-06-18 11:16:56 +09:00
2026-06-18 11:16:56 +09:00
2026-06-18 16:44:41 +09:00
2026-06-29 11:45:08 +09:00
2026-06-18 16:44:41 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-29 15:19:41 +09:00
2026-06-01 11:53:06 +09:00
2026-06-22 23:29:39 +09:00
2026-06-29 03:55:26 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-29 03:55:26 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-18 16:44:41 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-09 21:27:40 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-18 16:44:41 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-08 11:25:11 +09:00
2026-06-18 21:21:50 +09:00
2026-05-28 08:07:19 +09:00
2026-05-28 09:06:54 +09:00
2026-05-28 09:06:54 +09:00
2026-06-10 20:45:46 +09:00
2026-06-10 20:45:46 +09:00
2026-06-16 19:56:34 +09:00
2026-06-16 19:56:34 +09:00
2026-06-10 20:45:46 +09:00
2026-06-10 20:45:46 +09:00
2026-06-18 00:32:13 +09:00
2026-06-18 16:44:41 +09:00
2026-06-22 23:29:39 +09:00
2026-06-18 11:16:56 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-10 20:45:46 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-05-18 18:25:36 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-01 17:34:23 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-24 02:45:09 +09:00
2026-06-24 02:45:09 +09:00
2026-06-24 02:45:09 +09:00
2026-06-26 23:16:19 +09:00
2026-06-22 23:29:39 +09:00
2026-06-06 13:06:37 +09:00
2026-06-24 20:42:08 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-10 15:18:58 +09:00
2026-06-11 04:51:17 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-29 03:55:26 +09:00
2026-06-18 16:44:41 +09:00
2026-06-29 03:55:26 +09:00
2026-06-18 16:44:41 +09:00
2026-06-22 23:29:39 +09:00
2026-06-24 22:59:32 +09:00
2026-06-22 23:29:39 +09:00
2026-06-24 01:44:13 +09:00
2026-06-22 23:29:39 +09:00
2026-06-24 03:25:47 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-10 20:45:46 +09:00
2026-06-10 20:45:46 +09:00
2026-06-10 20:45:46 +09:00
2026-06-10 20:45:46 +09:00
2026-06-10 20:45:46 +09:00
2026-06-10 20:45:46 +09:00
2026-06-10 20:45:46 +09:00
2026-06-10 20:45:46 +09:00
2026-06-10 20:45:46 +09:00
2026-06-10 20:45:46 +09:00
2026-06-22 23:29:39 +09:00
2026-06-10 20:45:46 +09:00
2026-06-10 20:45:46 +09:00
2026-06-29 03:55:26 +09:00
2026-06-10 20:45:46 +09:00
2026-06-10 20:45:46 +09:00
2026-06-10 20:45:46 +09:00
2026-06-10 20:45:46 +09:00
2026-06-10 20:45:46 +09:00
2026-06-10 20:45:46 +09:00
2026-06-10 20:45:46 +09:00
2026-06-10 20:45:46 +09:00
2026-06-10 20:45:46 +09:00
2026-06-10 20:45:46 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-29 03:55:26 +09:00
2026-06-17 00:17:25 +09:00
2026-06-22 23:29:39 +09:00
2026-06-23 00:23:15 +09:00
2026-06-18 12:09:25 +09:00
2026-06-13 04:43:57 +09:00
2026-06-18 00:52:33 +09:00
2026-06-22 23:29:39 +09:00
2026-06-18 12:47:41 +09:00
2026-06-13 10:17:51 +09:00
2026-06-18 17:39:27 +09:00
2026-06-22 23:29:39 +09:00
2026-06-14 11:46:10 +09:00
2026-06-12 00:21:16 +09:00
2026-06-22 23:29:39 +09:00
2026-06-18 19:32:42 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-18 16:44:41 +09:00
2026-06-18 11:16:56 +09:00
2026-06-18 11:16:56 +09:00
2026-06-18 11:16:56 +09:00
2026-06-18 16:44:41 +09:00
2026-06-16 02:43:01 +09:00
2026-06-22 19:49:57 +09:00
2026-06-22 23:29:39 +09:00
2026-06-10 20:45:46 +09:00
2026-06-18 20:45:12 +09:00
2026-06-22 20:52:11 +09:00
2026-06-16 15:35:26 +09:00
2026-06-11 09:32:44 +09:00
2026-06-16 14:54:19 +09:00
2026-06-18 20:45:12 +09:00
2026-06-16 13:30:45 +09:00
2026-06-16 17:16:37 +09:00
2026-06-16 17:16:37 +09:00
2026-06-19 00:58:57 +09:00
2026-06-16 18:04:54 +09:00
2026-06-29 03:55:26 +09:00
2026-06-10 20:45:46 +09:00
2026-06-10 20:45:46 +09:00
2026-06-18 19:32:42 +09:00
2026-06-25 01:32:32 +09:00
2026-06-16 20:19:14 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-11 04:51:17 +09:00
2026-06-22 23:29:39 +09:00
2026-06-22 23:29:39 +09:00
2026-06-13 04:40:58 +09:00
2026-06-22 21:17:30 +09:00
2026-06-18 09:52:19 +09:00
2026-06-13 10:20:46 +09:00
2026-06-29 03:55:26 +09:00
2026-06-18 11:16:56 +09:00
2026-06-18 11:16:56 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-16 19:56:34 +09:00
2026-06-18 11:16:56 +09:00
2026-06-10 20:45:46 +09:00
2026-06-10 20:45:46 +09:00
2026-06-17 06:23:37 +09:00
2026-06-29 03:55:26 +09:00