Hojun-Cho
3d79735964
check: reject a deref-less multi-level **fn call, not silently miscompile ( #14 )
...
wwstage exprtype's N_CALL fn-value arm peeled ALL pointer levels before the
TY_FN gate, so a deref-less `pf(21)` where pf:**fn type-checked and lowered --
then segfaulted at runtime (a silent miscompile). cstage peels exactly one
level and loud-rejects (the C6a discipline, check.c:1947).
Align wwstage DOWN: peel one level (loop -> if); a remaining non-TY_FN callee
hits a loud "calling non-function" reject mirroring cstage's message. Both
stages now reject the exotic deref-less `**fn`/`***fn` shape; the legitimate
`(*pf)(21)` and one-level deref-less `f(21)` (f:*fn) still compile + run.
Multi-level autoderef is a separate deferred FEATURE, not a miscompile to lower
(rule 7/10 -- align the richer stage down to the leaner, no value ships).
ww-only change (cstage is the correct oracle); a reject emits no asm, so the
byte-id baselines and LANGBYTEID floor are unchanged.
Pins: cfail test/wcc/data/fnptr_pp_derefless_reject (both stages reject,
reddens-on-revert -- the silent miscompile resurfaces if the fix is reverted) +
test/lang/fnptr_derefless_call_test (positive guard (*pf)(21)==42 and one-level
f(21), value-asserted + byte-id, so the fix does not over-reject the legitimate
one-level autoderef).
2026-06-29 15:49:01 +09:00
..
2026-06-24 22:59:32 +09:00
2026-06-24 22:59:32 +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-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-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-24 02:45:09 +09:00
2026-06-24 02:45:09 +09:00
2026-06-24 02:45:09 +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-28 02:44:23 +09:00
2026-06-28 11:27:24 +09:00
2026-06-28 02:44:23 +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-24 22:59:32 +09:00
2026-06-24 22:59:32 +09:00
2026-06-18 12:09:25 +09:00
2026-06-25 01:32:32 +09:00
2026-06-18 12:47:41 +09:00
2026-06-10 14:07:35 +09:00
2026-06-22 16:34:33 +09:00
2026-06-22 16:34:33 +09:00
2026-06-22 16:34:33 +09:00
2026-06-22 16:34:33 +09:00
2026-06-20 23:21:58 +09:00
2026-06-24 03:25:47 +09:00
2026-05-18 18:25:36 +09:00
2026-06-29 15:49:01 +09:00
2026-06-24 22:59:32 +09:00
2026-06-24 22:59:32 +09:00
2026-06-22 16:02:01 +09:00
2026-06-22 16:02:01 +09:00
2026-06-22 16:02:01 +09:00
2026-06-27 18:49:03 +09:00
2026-06-27 18:49:03 +09:00
2026-06-27 23:44:41 +09:00
2026-06-22 16:34:33 +09:00
2026-06-22 16:34:33 +09:00
2026-06-22 16:34:33 +09:00
2026-06-22 16:34:33 +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 16:53:49 +09:00
2026-06-22 16:53:49 +09:00
2026-06-22 16:53:49 +09:00
2026-05-18 18:25:36 +09:00
2026-06-18 00:52:33 +09:00
2026-06-18 00:52:33 +09:00
2026-06-24 20:42:08 +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 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-10 15:18:58 +09:00
2026-06-22 15:34:36 +09:00
2026-06-22 15:34:36 +09:00
2026-06-21 15:28:59 +09:00
2026-06-21 15:28:59 +09:00
2026-05-18 18:25:36 +09:00
2026-06-25 01:32:32 +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-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-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-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-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-24 01:44:13 +09:00
2026-06-24 01:44:13 +09:00
2026-05-18 18:25:36 +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 20:42:08 +09:00
2026-06-24 20:42:08 +09:00
2026-06-18 09:52:19 +09:00
2026-06-18 09:52:19 +09:00
2026-06-10 02:01:20 +09:00
2026-06-10 22:20:15 +09:00
2026-06-10 22:20:15 +09:00
2026-06-11 02:37:32 +09:00
2026-06-11 00:08:39 +09:00
2026-06-10 22:20:15 +09:00
2026-06-10 02:01:20 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-29 03:55:26 +09:00
2026-06-11 00:57:43 +09:00
2026-06-11 04:51:17 +09:00
2026-06-11 04:51:07 +09:00
2026-06-11 04:51:07 +09:00
2026-06-10 15:18:58 +09:00