clean up internal comments about float semantics

- remove an outdated FIXME
- add reference to floating-point semantics issue

Co-authored-by: Jubilee <workingjubilee@gmail.com>
This commit is contained in:
Ralf Jung 2024-08-31 22:28:17 +02:00 committed by Jubilee Young
parent 3daa9518d5
commit e556c136f3
4 changed files with 4 additions and 8 deletions

View File

@ -435,6 +435,7 @@ pub const fn classify(self) -> FpCategory {
// 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

View File

@ -662,10 +662,7 @@ pub const fn classify(self) -> FpCategory {
// 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

View File

@ -660,10 +660,7 @@ pub const fn classify(self) -> FpCategory {
// 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.

View File

@ -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);
}