w6c: remap legacy-union error tags in wwstage ? propagation

The #173 remap loop in cgtryprop gated on the tparam's explicit `!`
flag only; a LEGACY union (no marks anywhere) classifies error
variants POSITIONALLY (index 0 is success, cstage cg_variant_is_error
cgen.c:905) — so wwstage emitted no remap and propagated the callee's
raw tag into a differently-ordered caller union, a silent wrong arm
(cstage exit 7, wwstage 9 on the banked r700 row). Add the
variantiserror twin and gate the loop on it; refresh the drifted
cstage cite.

Graduates the held e2e row into the corpus (pin 1727/1156/3454) and
adds legacy-mode rows to test/lang/tryprop_tag_remap_test.ww:
reversed order both directions, slot-0 remap, str payload integrity,
a two-hop chain whose pre-fix runtime pass was double-miss tag
cancellation (the lang byteid leg pins the emitted remap blocks),
and a same-order zero-emission control.
This commit is contained in:
2026-08-08 17:11:50 +09:00
parent 74f927be16
commit dc33af6217
4 changed files with 167 additions and 6 deletions

View File

@@ -1,13 +1,13 @@
package wwfixture;
def protocolversion: i32 = 1;
def corpuscount: i32 = 1726;
def corpuscount: i32 = 1727;
def errorcount: i32 = 343;
def compilecount: i32 = 19;
def runcount: i32 = 209;
def runexitcount: i32 = 1155;
def nativecount: i32 = 3452;
def corpushash: str = "870ba4f5140ef331e9effb7cf21fcebe69b5f29d1177cf158e6a1b6db71e9d28";
def runexitcount: i32 = 1156;
def nativecount: i32 = 3454;
def corpushash: str = "40ad5fd79515a743f2adb53e4a26396c6f13859df956fa079299a4b459594177";
type directive = enum i32 {
ERROR = 0,