Skip to content

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

Merged
wsmoses merged 1 commit into
mainfrom
pb/compare-negation-dominance
Sep 2, 2026
Merged

CommonCompareExpressionRewrite: place the negation after the op it reads#2995
wsmoses merged 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
@wsmoses
wsmoses merged commit 0b283c2 into main Sep 2, 2026
24 of 32 checks passed
@wsmoses
wsmoses deleted the pb/compare-negation-dominance branch September 2, 2026 19:12
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