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:
parent
3daa9518d5
commit
e556c136f3
@ -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
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user