[PATCH] D64666: [Sema] Enable -Wimplicit-float-conversion for integral to floating point precision loss
Ziang Wan via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Jul 25 10:32:10 PDT 2019
ziangwan added a comment.
My bad. I omit these two test cases. I apologize for my carelessness.
Yes, this warning definitely is a duplicate of c++11 narrowing, *when the code actually uses initialization-list syntax. For example, the following code would issue duplicated warnings for now:
float ff = {222222222222L};
long a = 222222222222L;
float ffff = {a};
However, c++11 narrowing conversion does not handle these cases. It does not handle initialization without initialization-list syntax. It does not handle implicit conversion in expressions. It does not handle implicit conversion in argument passing as well.
void test(float b) {}
float f = 222222222222L; // no narrowing warning
long a = 222222222222L;
float fff = a; // warning
float c = a + fff; // no narrowing warning of a from long to float
test(a); // no narrowing warning
Handling extra cases allow us to sanity-check code that does not use initialization-list syntax or has implicit conversion in expressions. I believe it is a valuable addition. A fix would be to let `-Wimplicit-int-float-conversion` skip initialization-list syntax. The other way would to augment c++ narrowing. What do you guys think is the proper way?
I will continue work on this patch. Please don't panic.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D64666/new/
https://reviews.llvm.org/D64666
More information about the cfe-commits
mailing list