wcc: route DATA-emit through emitsymname mangler (#127)
wwstage cgen.ww emitdefconstants now uses the same emitsymname mangler that LOAD/CALL sites use, replacing 8 lines of duplicate `d.exported`/`d.nmod` logic. Rule-12 sea-of-stars consolidation — one path, not two parallel paths that can desynchronise. Cstage twin: cmd/w6c/cgen.c:8510 (mod_mangle in emit_defs). Bootstrap- neutral post-90d31c5 (the duplicate PATH_MAX def that motivated the divergence was cleaned up in drew's source-hygiene fold); all 5 tool combined.ww emit cs==ww byte-identical asm post-fix. New test 913 (4 rows: exported i64 def, main-local i64 def, u64 width, multi-def sequence) pins the simple-shape invariant forward — a future caller introducing a colliding name produces the same symbol from both stages by construction. Drew's (a) ruling. Reviewer-127 noted the new path additionally consults FFI (ffiresolve) which the old d.exported/d.nmod block did not — incidental improvement to cs/ww symmetry beyond the mod-mangle consolidation.
This commit is contained in:
6
Makefile
6
Makefile
@@ -335,6 +335,7 @@ TESTS = $(BIN)/test_smoke $(BIN)/test_lex $(BIN)/test_parse $(BIN)/test_check \
|
||||
$(BIN)/test_dotbase_arr_run \
|
||||
$(BIN)/test_continue_run \
|
||||
$(BIN)/test_sar_shr_run \
|
||||
$(BIN)/test_def_mangle_run \
|
||||
$(BIN)/test_f64cgen_run \
|
||||
$(BIN)/test_f64crossmod_run \
|
||||
$(BIN)/test_tuprecv_run \
|
||||
@@ -1123,6 +1124,11 @@ $(BIN)/test_sar_shr_run: test/wcc/912_sar_shr_run.c $(BIN)/ww \
|
||||
$(LIB)/libwwrt.a | $(BIN)
|
||||
$(CC) $(CFLAGS) -o $@ $<
|
||||
|
||||
$(BIN)/test_def_mangle_run: test/wcc/913_def_mangle_run.c $(BIN)/ww \
|
||||
$(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
||||
$(LIB)/libwwrt.a | $(BIN)
|
||||
$(CC) $(CFLAGS) -o $@ $<
|
||||
|
||||
$(BIN)/test_f64cgen_run: test/wcc/951_f64cgen_run.c $(BIN)/ww $(BIN)/w6c \
|
||||
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
||||
$(CC) $(CFLAGS) -o $@ $<
|
||||
|
||||
Reference in New Issue
Block a user