Hojun-Cho
e515a08fb7
check: autodereference a single-level *fn callee before the call gate (C6a)
...
cstage rejected a deref-less function-pointer call `f(21)` (f: *fn...) with
"calling non-function" while wwstage accepted it and ran correctly -- a
cs!=ww divergence. Hare auto-dereferences a pointer callee to its fn type
before the call. Peel one pointer level after the named-type chase so
cstage accepts a `*fn` callee, matching wwstage and Hare.
One level only, deliberately: the #181-cgen indirect-call path lowers the
callee VALUE as the target (CALL AX), which is the fn address for a single
`*fn` but only the address-of the fn-ptr for `**fn`. A multi-level peel
would accept `**fn` past what cgen can lower -- a silent both-stage
miscompile (returns garbage). cstage stays loud on `**fn` (rule 7);
wwstage's loop-accept of all levels (check.ww:3763) is the over-permissive
side, filed for align-down plus the deeper cgen multi-level autoderef.
Surfaced by the codegen miscompile hunt (finding C6a). Pinned by
test/lang/fnptr_derefless_call_test.ww (deref-less + canonical (*f)(21),
multi-arg, alias-chain, tuple-return; reverting the peel reds the
deref-less rows at compile).
2026-06-27 14:49:36 +09:00
..
2026-06-22 13:52:41 +09:00
2026-06-24 02:45:09 +09:00
2026-06-24 02:45:09 +09:00
2026-06-22 13:34:28 +09:00
2026-06-24 02:45:09 +09:00
2026-06-24 02:45:09 +09:00
2026-06-24 02:45:09 +09:00
2026-06-24 02:45:09 +09:00
2026-06-22 17:10:22 +09:00
2026-06-24 02:45:09 +09:00
2026-06-24 02:45:09 +09:00
2026-06-24 02:45:09 +09:00
2026-06-24 02:45:09 +09:00
2026-06-27 14:16:20 +09:00
2026-06-24 22:59:32 +09:00
2026-06-24 03:25:47 +09:00
2026-06-25 01:32:32 +09:00
2026-06-25 01:32:32 +09:00
2026-06-24 22:59:32 +09:00
2026-06-24 22:59:32 +09:00
2026-06-24 22:59:32 +09:00
2026-06-24 22:59:32 +09:00
2026-06-22 02:53:16 +09:00
2026-06-22 13:52:41 +09:00
2026-06-22 02:04:56 +09:00
2026-06-22 11:52:41 +09:00
2026-06-25 01:32:32 +09:00
2026-06-24 22:59:32 +09:00
2026-06-22 13:34:28 +09:00
2026-06-25 01:32:32 +09:00
2026-06-22 12:04:03 +09:00
2026-06-22 12:04:03 +09:00
2026-06-22 12:04:03 +09:00
2026-06-27 11:47:54 +09:00
2026-06-22 13:34:28 +09:00
2026-06-22 09:02:40 +09:00
2026-06-22 18:06:05 +09:00
2026-06-22 18:06:05 +09:00
2026-06-22 13:34:28 +09:00
2026-06-22 12:31:23 +09:00
2026-06-22 16:34:33 +09:00
2026-06-22 09:02:40 +09:00
2026-06-24 03:25:47 +09:00
2026-06-27 12:34:58 +09:00
2026-06-24 03:25:47 +09:00
2026-06-24 03:25:47 +09:00
2026-06-24 03:25:47 +09:00
2026-06-24 03:25:47 +09:00
2026-06-24 03:25:47 +09:00
2026-06-24 22:59:32 +09:00
2026-06-24 03:25:47 +09:00
2026-06-24 03:25:47 +09:00
2026-06-27 14:49:36 +09:00
2026-06-24 22:59:32 +09:00
2026-06-22 14:56:11 +09:00
2026-06-22 11:52:41 +09:00
2026-06-22 11:52:41 +09:00
2026-06-22 12:31:23 +09:00
2026-06-22 11:52:41 +09:00
2026-06-24 03:25:47 +09:00
2026-06-24 20:42:08 +09:00
2026-06-24 20:42:08 +09:00
2026-06-24 20:42:08 +09:00
2026-06-24 20:42:08 +09:00
2026-06-22 02:04:56 +09:00
2026-06-27 13:28:37 +09:00
2026-06-22 16:02:01 +09:00
2026-06-24 20:42:08 +09:00
2026-06-22 02:04:56 +09:00
2026-06-22 16:34:33 +09:00
2026-06-25 01:32:32 +09:00
2026-06-24 20:42:08 +09:00
2026-06-22 11:52:41 +09:00
2026-06-22 16:53:49 +09:00
2026-06-22 18:30:04 +09:00
2026-06-22 11:52:41 +09:00
2026-06-24 20:42:08 +09:00
2026-06-24 20:42:08 +09:00
2026-06-24 01:44:13 +09:00
2026-06-24 20:42:08 +09:00
2026-06-25 01:32:32 +09:00
2026-06-24 01:44:13 +09:00
2026-06-24 22:59:32 +09:00
2026-06-24 22:59:32 +09:00
2026-06-22 13:52:41 +09:00
2026-06-24 01:00:47 +09:00
2026-06-24 01:00:47 +09:00
2026-06-24 01:44:13 +09:00
2026-06-22 13:34:28 +09:00
2026-06-24 01:44:13 +09:00
2026-06-22 02:53:16 +09:00
2026-06-25 01:32:32 +09:00
2026-06-22 03:01:09 +09:00
2026-06-22 11:52:41 +09:00
2026-06-26 23:16:19 +09:00
2026-06-22 09:02:40 +09:00
2026-06-22 13:52:41 +09:00
2026-06-22 13:52:41 +09:00
2026-06-22 09:02:40 +09:00
2026-06-22 03:54:54 +09:00
2026-06-22 03:54:54 +09:00
2026-06-22 03:54:54 +09:00
2026-06-22 03:54:54 +09:00
2026-06-22 03:01:09 +09:00
2026-06-22 03:54:54 +09:00
2026-06-22 03:54:54 +09:00
2026-06-22 03:54:54 +09:00
2026-06-25 01:32:32 +09:00
2026-06-22 18:28:41 +09:00
2026-06-25 01:32:32 +09:00
2026-06-22 12:11:46 +09:00
2026-06-25 01:32:32 +09:00
2026-06-22 09:02:40 +09:00
2026-06-22 09:02:40 +09:00
2026-06-24 20:42:08 +09:00
2026-06-24 20:42:08 +09:00
2026-06-24 01:44:13 +09:00
2026-06-24 20:42:08 +09:00
2026-06-24 20:42:08 +09:00
2026-06-24 20:42:08 +09:00
2026-06-24 20:42:08 +09:00
2026-06-24 20:42:08 +09:00
2026-06-24 01:44:13 +09:00
2026-06-22 11:52:41 +09:00
2026-06-24 20:42:08 +09:00
2026-06-24 01:44:13 +09:00
2026-06-22 11:52:41 +09:00
2026-06-24 01:44:13 +09:00
2026-06-24 01:44:13 +09:00
2026-06-24 01:44:13 +09:00
2026-06-24 01:44:13 +09:00
2026-06-24 01:44:13 +09:00
2026-06-22 13:52:41 +09:00
2026-06-24 01:44:13 +09:00
2026-06-24 01:44:13 +09:00
2026-06-24 03:25:47 +09:00
2026-06-24 01:44:13 +09:00
2026-06-24 22:59:32 +09:00
2026-06-22 01:48:38 +09:00
2026-06-25 01:32:32 +09:00
2026-06-24 20:42:08 +09:00
2026-06-24 20:42:08 +09:00
2026-06-24 20:42:08 +09:00
2026-06-24 20:42:08 +09:00
2026-06-22 02:53:16 +09:00