[PATCH] D64666: [Sema] Enable -Wimplicit-float-conversion for integral to floating point precision loss

Ziang Wan via Phabricator via llvm-commits llvm-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 llvm-commits mailing list