cgen: B6-c1 assign/reassign family single peels fold into type_chase_named — 9 lines, cs-only

The exact B6-c1 set (rob b6 spec §2): cgexpr :6359 (tagged-local plain
reassign lu), :6403/:6405 (deref-target assign pu/vt), :6460/:6462
(deref compound-assign pu/vt), :6518 (str/slice/struct reassign lu) +
cgstmt :11696 (nomem null-propagate r), :12047 (assign base peel bu),
:13625 (destructure-reassign rhs ru — chased; the #64 citation above it
stays, the deferral is about the tuple-literal rhs ROUTE, not this
peel). Raw `->under` in cgen.c 58→49.

TRAIN INVARIANT: cs-only — zero selfhost/ or lib/ bytes move; w6c_ww/
ww_ww bit-identical to ken's 4cac1cb baselines (md5
b6bddc8eb5c3ed8e805e50371d4b7017 / 4e9ca8741f19e1f68219ff799a5e5a14).
cs movers bounded to exactly: kb6_streassign, kb5_wstore_a (the
named c1 family); the rest of the kb4/kb5/kb6/kna corpus + five
selfhost mains byte-NEUTRAL both stages; kw1_101 / fill2 / tuparg_c /
xampdef / amplen1 detectors unmoved. 989 lib ratchet: zero flips.

LIVE graduation: kb6_streassign (the :6518 lu single-peel missed
TY_STR at 2 alias levels, fell to the scalar default — `b = a` copied
the ptr WORD0 only, len/cap stale, cs silent exit 1; ww was the
runtime-correct full 3-word reference) → 0/0 byte-id. Designed
graduation: kb5_wstore_a (ken C1-CORR-2 seed — the ident-lhs N_ASSIGN
tagged gate :6359 is cgexpr INLINE, never reached B5's :2456 funnel)
→ wstore_a_2lvl re-pinned K_RUN_NOID→K_RUN in the b5 suite (84→85
checks). kb6_sreassign / kb6_dassign latent controls byte-NEUTRAL as
ken's structural bound predicts.

New 944_alias_cgen_b6_run row table (3 rows, 9 checks): streassign_2lvl
+ sreassign_2lvl/dassign_2lvl controls; Makefile wires
test_alias_cgen_b6_run into the unit list. All 944-family suites green;
sizelint 0.
This commit is contained in:
2026-06-06 03:48:54 +09:00
parent 4cac1cbb89
commit 1f14becdf3
4 changed files with 300 additions and 23 deletions

View File

@@ -26,12 +26,11 @@
* wstore_2lvl/_1lvl | kb5_wstore/wstore1: let-route |
* | controls (du arrives chased |
* | upstream — ken FLAG-1), NEUTRAL | 0/0
* wstore_a_bound_b6 | kb5_wstore_a: ASSIGN-route re-store |
* | — both-correct divergent; the |
* | ident-lhs N_ASSIGN gates in the |
* | cgexpr INLINE set (B6), NOT the |
* | :2456 funnel (C1-CORR-2, corrects |
* | rob R2) — byte-id waived until B6 | 0/0
* wstore_a_2lvl | kb5_wstore_a: ASSIGN-route re-store |
* | — was both-correct divergent; the |
* | ident-lhs N_ASSIGN gate (:6359) is |
* | cgexpr INLINE, NOT the :2456 funnel |
* | (C1-CORR-2) — GRADUATED at B6-c1 | 0/0
* succ_2lvl | kb5_succ: `?`-success remap over |
* | 2-lvl alias result — was divergent |
* | at RETURN positions only (C1-CORR-1)|
@@ -269,12 +268,11 @@ static const struct row rows[] = {
" };\n"
" return 0;\n"
"};\n", 0, 0, K_RUN, NULL },
/* C1-CORR-2 (ken c1-boundary addendum): the assign-route
* divergence does NOT close in this train — the ident-lhs
* N_ASSIGN tagged store gates in the cgexpr INLINE set (B6),
* never reaching the :2456 funnel. Both stages runtime-correct;
* byte-id rides B6. */
{ "wstore_a_bound_b6",
/* C1-CORR-2 → GRADUATED at B6-c1: the ident-lhs N_ASSIGN tagged
* store gate (:6359) was the cgexpr INLINE peel B5 could not
* reach; the B6-c1 chase closed it (pins-follow-the-layer, ken
* B6 oracle C1 seed). */
{ "wstore_a_2lvl",
"package main;\n"
"type u0 = (void | i64);\n"
"type u = u0;\n"
@@ -286,7 +284,7 @@ static const struct row rows[] = {
" case void => { return 2; };\n"
" };\n"
" return 0;\n"
"};\n", 0, 0, K_RUN_NOID, NULL }, /* byte-id: B6 */
"};\n", 0, 0, K_RUN, NULL }, /* graduated: B6-c1 */
/* C1-CORR-1 → GRADUATED at c3: the residual divergence was
* exactly three paired return-position tag syntheses — the
* cgreturn return-route family; the c3 rt chase closed it