fix: avoid SIGFPE on x86_64 for signed integer division overflow #11624
+63
−16
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR fixes a SIGFPE crash on x86_64 when evaluating
INT_MIN / -1orINT_MIN % -1for signed integer types.On x86_64, the
idivinstruction traps when the quotient overflows the destination register. For signed integers,INT_MIN / -1produces a result that overflows (e.g.,-2147483648 / -1 = 2147483648which doesn't fit in Int32). ARM64'ssdivinstruction wraps instead of trapping.The fix:
Fixes #11612
🤖 Prepared with Claude Code