diff options
| author | bors <bors@rust-lang.org> | 2024-07-27 18:29:13 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2024-07-27 18:29:13 +0000 |
| commit | fbccf50533b1f287edccb1fc0dd847cd78a1a27e (patch) | |
| tree | b1a462aa09b0b4a5190ea4f6534d65958a532c2c /compiler/rustc_mir_transform/src | |
| parent | d9e1dea75e0f57d489068460ef32127e291a07c4 (diff) | |
| parent | f62ae7e120438a5802c50bab84bcf983a7014bb7 (diff) | |
| download | rust-fbccf50533b1f287edccb1fc0dd847cd78a1a27e.tar.gz rust-fbccf50533b1f287edccb1fc0dd847cd78a1a27e.zip | |
Auto merge of #128278 - tgross35:rollup-zv7q0h5, r=tgross35
Rollup of 8 pull requests Successful merges: - #125897 (from_ref, from_mut: clarify documentation) - #128207 (improve error message when `global_asm!` uses `asm!` options) - #128241 (Remove logic to suggest clone of function output) - #128259 ([illumos/solaris] set MSG_NOSIGNAL while writing to sockets) - #128262 (Delete `SimplifyArmIdentity` and `SimplifyBranchSame` tests) - #128266 (update `rust.channel` default value documentation) - #128267 (Add rustdoc GUI test to check title with and without search) - #128271 (Disable jump threading of float equality) r? `@ghost` `@rustbot` modify labels: rollup
Diffstat (limited to 'compiler/rustc_mir_transform/src')
| -rw-r--r-- | compiler/rustc_mir_transform/src/jump_threading.rs | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/compiler/rustc_mir_transform/src/jump_threading.rs b/compiler/rustc_mir_transform/src/jump_threading.rs index 2100f4b4a1a..96c52845a4a 100644 --- a/compiler/rustc_mir_transform/src/jump_threading.rs +++ b/compiler/rustc_mir_transform/src/jump_threading.rs @@ -509,6 +509,13 @@ impl<'tcx, 'a> TOFinder<'tcx, 'a> { BinOp::Ne => ScalarInt::FALSE, _ => return None, }; + if value.const_.ty().is_floating_point() { + // Floating point equality does not follow bit-patterns. + // -0.0 and NaN both have special rules for equality, + // and therefore we cannot use integer comparisons for them. + // Avoid handling them, though this could be extended in the future. + return None; + } let value = value.const_.normalize(self.tcx, self.param_env).try_to_scalar_int()?; let conds = conditions.map(self.arena, |c| Condition { value, |
