Disable jump threading of float equality #826
Merged
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.
Jump threading stores values as
u128
(ScalarInt
) and does its comparisons for equality as integer comparisons.This works great for integers. Sadly, not everything is an integer.
Floats famously have wonky equality semantcs, with
NaN!=NaN
and0.0 == -0.0
. This does not match our beautiful integer bitpattern equality and therefore causes things to go horribly wrong.While jump threading could be extended to support floats by remembering that they're floats in the value state and handling them properly, it's signficantly easier to just disable it for now.
Ferrocene-backport-of: rust-lang/rust#128271