wwstage computed tagged sizes/tags off the raw variant list — size() folded wrong constants (size((*u8|void)) 16 vs 8, (i32|never) 16 vs 4) and duplicate variants got divergent tag numbering vs cstage, while ww's own cgen layout folded nullable but its size() didn't. Make tinfofornode's N_TTAGGED arm the normalization SSoT mirroring cstage resolve_type (check.c:801-882): never-drop, duplicate dedup via structural typeeq, single-variant collapse, nullable fold on the normalized pair; astsize/astalign delegate, and voidvariantindex reads the normalized ti.params (cgen.c:900-911) so construct/match/void tag readers agree. Corpus-neutral (zero-move on all combineds); 989_tagnorm_run pins the folds dual-stage, red-proven. Review items #1/#3; residual #45 filed (AST-keyed nullable gate at global emit).
214 KiB
214 KiB