diff --git a/cmd/w6c/cgen.c b/cmd/w6c/cgen.c index cdd48c01..50a3ae84 100644 --- a/cmd/w6c/cgen.c +++ b/cmd/w6c/cgen.c @@ -313,8 +313,10 @@ fld_isfloat(Type *t, int *isf32) * via sret instead of registers (#10). The element footprint walk * matches the N_RETURN tuple SEND exactly (a float = 1 SSE * eightbyte, a slice/str its 3-word header, a scalar 1 GP word). - * Everything else (in-cap tuples, tagged unions, str, slices, scalars) - * routes through its register-return ABI → 0. */ + * - TY_TAGGED whose slot exceeds the AX/DX/CX/R8 cursor + * (> TUPLE_GPCAP eightbytes) → its natural size (#38). + * Everything else (in-cap tuples, in-cap tagged unions, str, slices, + * scalars) routes through its register-return ABI → 0. */ static int cg_sret_retsize(Type *rt) {