Skip to content

Filter constant-decidable branch arms per call site #746

Description

@khatchad

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.

Metadata

Metadata

Assignees

No one assigned

    Fields

    No fields configured for Feature.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions