Skip to content

CommonCompareExpressionRewrite: place the negation after the op it reads - #2995

Open
wsmoses wants to merge 1 commit into
mainfrom
pb/compare-negation-dominance
Open

CommonCompareExpressionRewrite: place the negation after the op it reads#2995
wsmoses wants to merge 1 commit into
mainfrom
pb/compare-negation-dominance

Conversation

@wsmoses

@wsmoses wsmoses commented Aug 27, 2026

Copy link
Copy Markdown
Member

When CommonCompareExpressionRewrite finds the negated twin after the matched compare, it created the NotOp at the rewriter's default insertion point — before the compare whose result it reads — producing IR that fails dominance verification (operand #0 does not dominate this use).

Hit by mfem's QuadratureInterpolator raised kernels under the XLA backend (#2968): masked strip-loop bounds emit LE/GT pairs on the same operands in one block, and whether the bad arm fires depends on block order, so it surfaced as a nondeterministic compile failure.

Fix: guard the insertion point and place the negation at the later compare's position. Lit test included (fails dominance verification without the fix).

🤖 Generated with Claude Code

https://claude.ai/code/session_016zErYp7upmqr4NHfhod9UD

When the negated twin appears after the matched compare, the NotOp was
created at the rewriter's default insertion point — before the compare
whose result it reads — producing IR that fails dominance verification.
Found via mfem QuadratureInterpolator raised kernels (#2968), where the
masked strip-loop bounds emit LE/GT pairs on the same operands.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016zErYp7upmqr4NHfhod9UD
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