Skip to content

Commit

Permalink
clean up internal comments about float semantics
Browse files Browse the repository at this point in the history
- remove an outdated FIXME
- add reference to floating-point semantics issue

Co-authored-by: Jubilee <[email protected]>
  • Loading branch information
RalfJung and workingjubilee committed Sep 10, 2024
1 parent 3daa951 commit e556c13
Show file tree
Hide file tree
Showing 4 changed files with 4 additions and 8 deletions.
1 change: 1 addition & 0 deletions library/core/src/num/f16.rs
Original file line number Diff line number Diff line change
Expand Up @@ -435,6 +435,7 @@ impl f16 {
// WASM, see llvm/llvm-project#96437). These are platforms bugs, and Rust will misbehave on
// such platforms, but we can at least try to make things seem as sane as possible by being
// careful here.
// see also https://github.com/rust-lang/rust/issues/114479
if self.is_infinite() {
// Thus, a value may compare unequal to infinity, despite having a "full" exponent mask.
FpCategory::Infinite
Expand Down
5 changes: 1 addition & 4 deletions library/core/src/num/f32.rs
Original file line number Diff line number Diff line change
Expand Up @@ -662,10 +662,7 @@ impl f32 {
// hardware flushes subnormals to zero. These are platforms bugs, and Rust will misbehave on
// such hardware, but we can at least try to make things seem as sane as possible by being
// careful here.
//
// FIXME(jubilee): Using x87 operations is never necessary in order to function
// on x86 processors for Rust-to-Rust calls, so this issue should not happen.
// Code generation should be adjusted to use non-C calling conventions, avoiding this.
// see also https://github.com/rust-lang/rust/issues/114479
if self.is_infinite() {
// A value may compare unequal to infinity, despite having a "full" exponent mask.
FpCategory::Infinite
Expand Down
5 changes: 1 addition & 4 deletions library/core/src/num/f64.rs
Original file line number Diff line number Diff line change
Expand Up @@ -660,10 +660,7 @@ impl f64 {
// float semantics Rust relies on: x87 uses a too-large exponent, and some hardware flushes
// subnormals to zero. These are platforms bugs, and Rust will misbehave on such hardware,
// but we can at least try to make things seem as sane as possible by being careful here.
//
// FIXME(jubilee): Using x87 operations is never necessary in order to function
// on x86 processors for Rust-to-Rust calls, so this issue should not happen.
// Code generation should be adjusted to use non-C calling conventions, avoiding this.
// see also https://github.com/rust-lang/rust/issues/114479
//
// Thus, a value may compare unequal to infinity, despite having a "full" exponent mask.
// And it may not be NaN, as it can simply be an "overextended" finite value.
Expand Down
1 change: 1 addition & 0 deletions tests/ui/numbers-arithmetic/issue-105626.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ fn main() {
assert_ne!((n as f64) as f32, n as f32);

// FIXME: these assertions fail if only x87 is enabled
// see also https://github.com/rust-lang/rust/issues/114479
assert_eq!(n as i64 as f32, r);
assert_eq!(n as u64 as f32, r);
}

0 comments on commit e556c13

Please sign in to comment.