w6c: fold dot chains through inferred-alloc struct pointers (#24 residue)
wwstage dotchainresolve gated its *T roots on an N_TPTR-over-N_TNAME
tnode; an inferred `let p = alloc(S{...})!` rides the checker-
SYNTHESIZED N_TPTR whose pointee is the struct BODY node (the #24
TNAME-normalize covers only the direct struct-lit binding), so the
root gate failed and chained p.field.pseudo reads fell to the
unfused deref arms — shape-only divergence vs cstage's type-keyed
fold (both stages runtime-correct; the historical field(SB) leak the
pin described was already fixed). Widen the local and global root
gates to accept the N_TSTRUCT pointee; correctness stays enforced by
the stamped-tinfo peel below (TY_PTR -> pointee TY_STRUCT).
Graduates alias_g73_heapfill out of DATABYTEID_DIVERGED (2 pins
remain, both the tagged-spill family); adds compile fixtures pinning
the newly-converged siblings (nested read+store, slice .cap,
inferred-global root; pin 1730/22/3460) and a runtime lang row that
mutates then re-points the heap base — a read bypassing the pointer
returns the wrong len.
This commit is contained in:
7
Makefile
7
Makefile
@@ -730,12 +730,7 @@ DATABYTEID_EXPECTED_MIN = 915
|
||||
# routes the cross-module tagged call-result through a 16B scratch pair
|
||||
# where cstage PUSHQes AX/DX (frame 16 vs 32); runtime-equivalent
|
||||
# (both stages run exit 42).
|
||||
# alias_g73_heapfill: held divergence — the ww-side heap struct-lit
|
||||
# str-arm deref-field READ leaks a field(SB) load (task #24); both
|
||||
# stages frontend-compile rc 0, only the .s differs. Graduates out
|
||||
# when #24 lands.
|
||||
DATABYTEID_DIVERGED = r700_strings_byteindex r839_xmod_nominal_match \
|
||||
alias_g73_heapfill
|
||||
DATABYTEID_DIVERGED = r700_strings_byteindex r839_xmod_nominal_match
|
||||
$(if $(DATABYTEID_FILES),,$(error test-byteid: empty data corpus))
|
||||
test-data-byteid: $(BIN)/ww $(BIN)/w6c $(BIN)/w6c_ww
|
||||
@work=$$(mktemp -d "$(CURDIR)/$(DATABYTEID_DIR).XXXXXX") || exit 1; \
|
||||
|
||||
Reference in New Issue
Block a user