]> granicus.if.org Git - clang/commitdiff
Move the warning of implicit cast of a floating point to an integer out of
authorRichard Trieu <rtrieu@google.com>
Tue, 22 Apr 2014 01:01:05 +0000 (01:01 +0000)
committerRichard Trieu <rtrieu@google.com>
Tue, 22 Apr 2014 01:01:05 +0000 (01:01 +0000)
-Wconversion and into it's own group, -Wfloating-point-conversion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@206832 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/DiagnosticGroups.td
include/clang/Basic/DiagnosticSemaKinds.td
test/SemaCXX/warn-floating-point-conversion.cpp [new file with mode: 0644]

index b47b871dbeea52c3ef12705c23c685d2ed440e8a..f69e738aadf0567d9e36ac99fe49925fd230990c 100644 (file)
@@ -41,6 +41,7 @@ def PointerBoolConversion : DiagGroup<"pointer-bool-conversion">;
 def BoolConversion : DiagGroup<"bool-conversion", [ PointerBoolConversion ] >;
 def IntConversion : DiagGroup<"int-conversion">;
 def EnumConversion : DiagGroup<"enum-conversion">;
+def FloatingPointConversion : DiagGroup<"floating-point-conversion">;
 def EnumTooLarge : DiagGroup<"enum-too-large">;
 def NonLiteralNullConversion : DiagGroup<"non-literal-null-conversion">;
 def NullConversion : DiagGroup<"null-conversion">;
@@ -476,6 +477,7 @@ def Conversion : DiagGroup<"conversion",
                            [BoolConversion,
                             ConstantConversion,
                             EnumConversion,
+                            FloatingPointConversion,
                             Shorten64To32,
                             IntConversion,
                             LiteralConversion,
index c13be0326edbb86d72acfd96a91ef852ca7ef0a2..03a82ec6e65c9f7169a155cca5a63e5cb6c9a16c 100644 (file)
@@ -2319,7 +2319,7 @@ def warn_impcast_float_precision : Warning<
   InGroup<Conversion>, DefaultIgnore;
 def warn_impcast_float_integer : Warning<
   "implicit conversion turns floating-point number into integer: %0 to %1">,
-  InGroup<Conversion>, DefaultIgnore;
+  InGroup<FloatingPointConversion>, DefaultIgnore;
 def warn_impcast_integer_sign : Warning<
   "implicit conversion changes signedness: %0 to %1">,
   InGroup<SignConversion>, DefaultIgnore;
diff --git a/test/SemaCXX/warn-floating-point-conversion.cpp b/test/SemaCXX/warn-floating-point-conversion.cpp
new file mode 100644 (file)
index 0000000..1a88c2d
--- /dev/null
@@ -0,0 +1,38 @@
+// RUN: %clang_cc1 -verify -fsyntax-only %s -Wfloating-point-conversion
+
+bool ReturnBool(float f) {
+  return f;  //expected-warning{{conversion}}
+}
+
+char ReturnChar(float f) {
+  return f;  //expected-warning{{conversion}}
+}
+
+int ReturnInt(float f) {
+  return f;  //expected-warning{{conversion}}
+}
+
+long ReturnLong(float f) {
+  return f;  //expected-warning{{conversion}}
+}
+
+void Convert(float f, double d, long double ld) {
+  bool b;
+  char c;
+  int i;
+  long l;
+
+  b = f;  //expected-warning{{conversion}}
+  b = d;  //expected-warning{{conversion}}
+  b = ld;  //expected-warning{{conversion}}
+  c = f;  //expected-warning{{conversion}}
+  c = d;  //expected-warning{{conversion}}
+  c = ld;  //expected-warning{{conversion}}
+  i = f;  //expected-warning{{conversion}}
+  i = d;  //expected-warning{{conversion}}
+  i = ld;  //expected-warning{{conversion}}
+  l = f;  //expected-warning{{conversion}}
+  l = d;  //expected-warning{{conversion}}
+  l = ld;  //expected-warning{{conversion}}
+}
+