ziangwan added a comment.

In D64666#1613356 <https://reviews.llvm.org/D64666#1613356>, @mgorny wrote:

> In D64666#1613057 <https://reviews.llvm.org/D64666#1613057>, @ziangwan wrote:
>
> > The warning is actually correct here. This implicit integral to float 
> > conversion loses precision. Is it the intended behavior of the code? If so, 
> > we can simply add an explicit type cast to silence the warning.
>
>
> I don't really know. Hence, I added author of the code and libc++ maintainers 
> as subscribers. Do you think I should open a bug for it too?


We can wait for libc++ maintainers to respond before we open a bug.

Here is more insight of this warning:

  float a = unsigned int::max() - unsigned int::min() + float(1);

The `max() - min()` expression evaluates to 2147483645 as type unsigned int. It 
then gets converted to float type, loses precision and becomes 2147483648f, 
where the significand is all 1. Then, 1f is added to 2147483648f. The final 
value is 2147483648f because 1 is too small compared to 2147483648f and has no 
effect.

I don't know if the above is the intended behavior. Eventually, the final value 
is a floating point type with significand all ones. I guess that's what the 
author wants after all.


Repository:
  rL LLVM

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D64666/new/

https://reviews.llvm.org/D64666



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to