Skip to content

[opt] Use a structural fingerprint to break ties in ReassociationPass#4000

Draft
copybara-service[bot] wants to merge 1 commit intomainfrom
test_888868233
Draft

[opt] Use a structural fingerprint to break ties in ReassociationPass#4000
copybara-service[bot] wants to merge 1 commit intomainfrom
test_888868233

Conversation

@copybara-service
Copy link
Copy Markdown

[opt] Use a structural fingerprint to break ties in ReassociationPass

Introduces a new lazy analysis, NodeFingerprintAnalysis, which computes a structural hash for each node in a function. This fingerprint is stable across changes to node IDs or names, as long as the underlying expression structure remains the same.

The ReassociationPass is updated to use this fingerprint in its sorting comparison for associative elements. By including the fingerprint in the sort order, the pass can more consistently break ties between nodes it can't otherwise distinguish except by name or ID, helping to prevent infinite loops where the pass oscillates between two equivalent IR forms.

Introduces a new lazy analysis, NodeFingerprintAnalysis, which computes a structural hash for each node in a function. This fingerprint is stable across changes to node IDs or names, as long as the underlying expression structure remains the same.

The ReassociationPass is updated to use this fingerprint in its sorting comparison for associative elements. By including the fingerprint in the sort order, the pass can more consistently break ties between nodes it can't otherwise distinguish except by name or ID, helping to prevent infinite loops where the pass oscillates between two equivalent IR forms.

PiperOrigin-RevId: 888868233
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant