595577f6066cc04918e56dc150c50d79a3d7f3bf
Discovered while verifying #181's checker fix end-to-end: wwstage's cgcall pre-computes `isfnptrcall` only for N_IDENT (local) and N_DOT (struct fn-ptr field) callees. For a non-named callee — the deref-call `(*f)(...)` shape (N_UN TK_STAR) most prominently — the flag stayed false, the IDENT/DOT name-emit branches both missed, and the emit produced `CALL (SB)` with an empty symbol. Cstage handles this naturally via its default-fallthrough at cmd/w6c/cgen.c:5918-5921 — `else { cgexpr(c, n->lhs, locals); ins1(c, A_CALL, areg(D_AX)); }` catches every callee shape that isn't bare-IDENT module-fn or N_DOT module-qualified call. The fix here mirrors that fallthrough: any callee whose kind is neither N_IDENT nor N_DOT sets isfnptrcall = true, routing through the existing cgexpr-into-AX + CALL AX path. Combined.ww regenerated for selfhost/cmd/{w6c,wwdump}/main .combined.ww per #110 freshness gate. Lands as a follow-up to the #181 checker bail-lift: the checker now stamps the deref-call N_CALL (so cgen runs), and with this fix the wwstage cgen lowers it correctly. test/wcc/766's wwstage +byte-id rows go green; runtime symmetry with cstage holds.
Description
No description provided
Languages
C
89.4%
Python
7.2%
Makefile
2.3%
Shell
0.8%
Assembly
0.3%