The #45 non-ident arm tag-compared the word in AX against the variant index; for the nullable (*T | void) fold that word IS the pointer — `h.m is *t` on a non-null pointer answered FALSE (silent cs≠ww, cstage correct: CMPQ $0 + JE/JNE polarity per cgen.c N_TYPETEST). The ident path had the same missing nullable arm since before #45 (pre-existing at master, unexercised in the bootstrap corpus). One nullable branch at the shared compare choke-point closes both halves: want stays RAW (cstage tests tag == ptr_tag unclamped, a no-match -1 takes the void polarity). Rows nullable_dot_field + nullable_ident pin both polarities and both states in 927; whole-corpus control (5 selfhost combined.ww, master-vs-branch w6c + w6c_ww) byte-id.
8.9 KiB
8.9 KiB