You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The latest clang points a minor bug for -Wimplicit-int-float-conversion.
On the implementation of wasm::wasm::isUInteger64, std::numeric_limits<uint64_t>::max() is implicitly converted to double.
As double has only 53 bit for digits on typical systems, and the conversion rounds the value to 0x1p64 rather than 0x1p64 - 1, that implies isUInteger64(0x1p64) returns true, which is wrong.
We should probably use fixed double literals like 0x1p64, -0x1p63, and 0x1p63 for the boundary check here.
The text was updated successfully, but these errors were encountered:
The latest clang points a minor bug for -Wimplicit-int-float-conversion.
On the implementation of wasm::wasm::isUInteger64,
std::numeric_limits<uint64_t>::max()
is implicitly converted to double.As double has only 53 bit for digits on typical systems, and the conversion rounds the value to 0x1p64 rather than 0x1p64 - 1, that implies
isUInteger64(0x1p64)
returns true, which is wrong.We should probably use fixed double literals like 0x1p64, -0x1p63, and 0x1p63 for the boundary check here.
The text was updated successfully, but these errors were encountered: