cgen: peel *fn field types for local struct-field callees

fnptrcalleetfn's N_DOT arm accepted only a bare N_TFN field tnode, so
a call through a field declared `cb: *fn(...)` missed, fell through to
the name registry, and emitted CALL cb(SB) — an undefined symbol
(loud at link; cstage calls the stamped ptr-to-fn indirectly). Same
TPTR peel the N_IDENT arm already had. Fixture fnptrfield_call covers
the by-value and via-pointer shapes; corpus pin 1478/2956.
This commit is contained in:
2026-08-08 02:28:33 +09:00
parent 939d0938e2
commit 6553d60e91
4 changed files with 40 additions and 6 deletions

View File

@@ -1,13 +1,13 @@
package wwfixture;
def protocolversion: i32 = 1;
def corpuscount: i32 = 1477;
def corpuscount: i32 = 1478;
def errorcount: i32 = 335;
def compilecount: i32 = 17;
def runcount: i32 = 191;
def runexitcount: i32 = 934;
def nativecount: i32 = 2954;
def corpushash: str = "64258f4de9ac7d71c4ad6221dd2ae7338a38cd5c620fc4ce22c1105021559e83";
def runexitcount: i32 = 935;
def nativecount: i32 = 2956;
def corpushash: str = "2ac2342a80c4148968250bf4ce93852b78cdefb6af96622fa533eea4a68837c6";
type directive = enum i32 {
ERROR = 0,