Add a global seen_call_names/seen_call_nargs set to Sema that persists
across analyzeFuncBodyAndRecord calls (not reset per-function). This
matches upstream Zig's InternPool memoization which is global: when a
type-returning function (Int, Log2Int, etc.) is called in one function's
body and later in another function's body, upstream memoizes the result
and skips the dead block on the second call.
The set is checked at three points:
- Unresolved type function path (callee not found, known type name)
- Param type body scanning (generic param type resolution)
- Resolved type function path (returns_type handler)
After creating a dead block, the call is registered in the set so
subsequent calls with the same callee name and arg count skip it.
Also add two new sema unit tests:
- cross_fn_memoized_call.zig: two exports calling same inline helper
- nested_inline_dead_blocks.zig: nested comptime inline calls
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>