With parameter defaults materializing in the pointer analysis (#743), a branch guard like EmbeddingLayer.call's mode == "embedding" becomes constant-decidable per call site: the mode parameter's points-to set holds the default's "embedding" and the explicit "projection" constants, and each call site contributes exactly one. The analysis currently unions both arms of such guards everywhere (the callee-return descent and the type-feed edges alike), which produces runtime-infeasible cross-arm members. The witness is the vendored gpt-2 forward output: the embedding arm evaluated with the projection call's rank-3 input yields a rank-4 (2, 3, 8, 8) member alongside the runtime-true (2, 3, 10).
The capability is per-call-site arm filtering when a guard compares a parameter against string or numeric constants and the site's argument (or default) is a single constant: evaluate the comparison and drop the infeasible arm from that site's view.
With parameter defaults materializing in the pointer analysis (#743), a branch guard like
EmbeddingLayer.call'smode == "embedding"becomes constant-decidable per call site: themodeparameter's points-to set holds the default's"embedding"and the explicit"projection"constants, and each call site contributes exactly one. The analysis currently unions both arms of such guards everywhere (the callee-return descent and the type-feed edges alike), which produces runtime-infeasible cross-arm members. The witness is the vendored gpt-2 forward output: the embedding arm evaluated with the projection call's rank-3 input yields a rank-4(2, 3, 8, 8)member alongside the runtime-true(2, 3, 10).The capability is per-call-site arm filtering when a guard compares a parameter against string or numeric constants and the site's argument (or default) is a single constant: evaluate the comparison and drop the infeasible arm from that site's view.