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
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits