From: Richard Trieu Date: Tue, 22 Apr 2014 01:01:05 +0000 (+0000) Subject: Move the warning of implicit cast of a floating point to an integer out of X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e836dd328e99eab565c145ff328c435b9fac2801;p=clang Move the warning of implicit cast of a floating point to an integer out of -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 --- diff --git a/include/clang/Basic/DiagnosticGroups.td b/include/clang/Basic/DiagnosticGroups.td index b47b871dbe..f69e738aad 100644 --- a/include/clang/Basic/DiagnosticGroups.td +++ b/include/clang/Basic/DiagnosticGroups.td @@ -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, diff --git a/include/clang/Basic/DiagnosticSemaKinds.td b/include/clang/Basic/DiagnosticSemaKinds.td index c13be0326e..03a82ec6e6 100644 --- a/include/clang/Basic/DiagnosticSemaKinds.td +++ b/include/clang/Basic/DiagnosticSemaKinds.td @@ -2319,7 +2319,7 @@ def warn_impcast_float_precision : Warning< InGroup, DefaultIgnore; def warn_impcast_float_integer : Warning< "implicit conversion turns floating-point number into integer: %0 to %1">, - InGroup, DefaultIgnore; + InGroup, DefaultIgnore; def warn_impcast_integer_sign : Warning< "implicit conversion changes signedness: %0 to %1">, InGroup, DefaultIgnore; diff --git a/test/SemaCXX/warn-floating-point-conversion.cpp b/test/SemaCXX/warn-floating-point-conversion.cpp new file mode 100644 index 0000000000..1a88c2d3f3 --- /dev/null +++ b/test/SemaCXX/warn-floating-point-conversion.cpp @@ -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}} +} +