Skip to content

Go: Use DataFlowIntegration for local SSA flow - #23130

Draft
owen-mc wants to merge 9 commits into
github:mainfrom
owen-mc:go/data-flow-integration
Draft

owen-mc wants to merge 9 commits into
github:mainfrom
owen-mc:go/data-flow-integration

Conversation

@owen-mc

@owen-mc owen-mc commented Nov 13, 2026 •

Copy link
Copy Markdown
Contributor

Use the shared DataFlowIntegration library for Go’s local SSA flow, following the earlier migration to MakeSsa.

The change preserves Go’s existing field-sensitive barrier guards and closure-flow modelling.

The shared graph retains merge nodes and cycles that were previously flattened. Adapt interface dispatch and the impossible-interface-nil-check query to handle these without changing their intended behavior. Hide internal merge nodes from path explanations.

Also enable SSA consistency checks and fix spurious reads of select-receive assignment targets. Remaining single-input phi findings arise because Go adds synthetic uncertain reads at function exits to retain captured definitions. Those reads extend liveness onto paths where no local definition exists.

owen-mc and others added 8 commits November 13, 2026 15:33
Record exact call targets and end-to-end value flow before the DataFlowIntegration migration.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Record pre-integration behavior for captured overwrites, loop-carried interface values, typed nil pointers, and unknown origins.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
We do not use closure flow or barrier guards.
Keep synthetic read and phi nodes in the analysis while omitting them from path explanations. Add regression coverage for state-changing steps and neverSkip configurations.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Propagate unknown origins instead of recursively proving every predecessor concrete. Treat uncertain writes conservatively and require a concrete origin, allowing known types to pass through SSA cycles.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Track possibly nil origins instead of recursively proving every predecessor non-nil. Treat captured writes conservatively and handle loop-carried values while retaining typed-nil and post-update semantics.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions github-actions Bot added the Go label Nov 13, 2026
@owen-mc
owen-mc force-pushed the go/data-flow-integration branch from f3daf4e to 135d102 Compare November 13, 2026 16:49

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant