erik.pilkington updated this revision to Diff 168912. erik.pilkington added a comment.
Actually run the tests! https://reviews.llvm.org/D53048 Files: clang/include/clang/Basic/DiagnosticGroups.td clang/include/clang/Basic/DiagnosticSemaKinds.td clang/test/Sema/implicit-int-conversion.c Index: clang/test/Sema/implicit-int-conversion.c =================================================================== --- /dev/null +++ clang/test/Sema/implicit-int-conversion.c @@ -0,0 +1,15 @@ +// RUN: %clang_cc1 %s -verify -Wconversion -Wno-implicit-int-conversion -DSMALL=char -DBIG=int -DNO_DIAG +// RUN: %clang_cc1 %s -verify -Wno-conversion -Wimplicit-int-conversion -DSMALL=char -DBIG=int +// RUN: %clang_cc1 %s -verify -Wconversion -Wno-implicit-float-conversion -DSMALL=float -DBIG=double -DNO_DIAG +// RUN: %clang_cc1 %s -verify -Wno-conversion -Wimplicit-float-conversion -DSMALL=float -DBIG=double + +void f() { + SMALL a; + BIG b = 0; + a = b; +#ifndef NO_DIAG + // expected-warning@-2 {{implicit conversion}} +#else + // expected-no-diagnostics +#endif +} Index: clang/include/clang/Basic/DiagnosticSemaKinds.td =================================================================== --- clang/include/clang/Basic/DiagnosticSemaKinds.td +++ clang/include/clang/Basic/DiagnosticSemaKinds.td @@ -3183,10 +3183,10 @@ "implicit conversion from %0 to %1 is not permitted in C++">; def warn_impcast_float_precision : Warning< "implicit conversion loses floating-point precision: %0 to %1">, - InGroup<Conversion>, DefaultIgnore; + InGroup<ImplicitFloatConversion>, DefaultIgnore; def warn_impcast_float_result_precision : Warning< "implicit conversion when assigning computation result loses floating-point precision: %0 to %1">, - InGroup<Conversion>, DefaultIgnore; + InGroup<ImplicitFloatConversion>, DefaultIgnore; def warn_impcast_double_promotion : Warning< "implicit conversion increases floating-point precision: %0 to %1">, InGroup<DoublePromotion>, DefaultIgnore; @@ -3198,10 +3198,10 @@ InGroup<SignConversion>, DefaultIgnore; def warn_impcast_integer_precision : Warning< "implicit conversion loses integer precision: %0 to %1">, - InGroup<Conversion>, DefaultIgnore; + InGroup<ImplicitIntConversion>, DefaultIgnore; def warn_impcast_high_order_zero_bits : Warning< "higher order bits are zeroes after implicit conversion">, - InGroup<Conversion>, DefaultIgnore; + InGroup<ImplicitIntConversion>, DefaultIgnore; def warn_impcast_nonnegative_result : Warning< "the resulting value is always non-negative after implicit conversion">, InGroup<SignConversion>, DefaultIgnore; Index: clang/include/clang/Basic/DiagnosticGroups.td =================================================================== --- clang/include/clang/Basic/DiagnosticGroups.td +++ clang/include/clang/Basic/DiagnosticGroups.td @@ -59,6 +59,8 @@ UndefinedBoolConversion]>; def IntConversion : DiagGroup<"int-conversion">; def EnumConversion : DiagGroup<"enum-conversion">; +def ImplicitIntConversion : DiagGroup<"implicit-int-conversion">; +def ImplicitFloatConversion : DiagGroup<"implicit-float-conversion">; def FloatOverflowConversion : DiagGroup<"float-overflow-conversion">; def FloatZeroConversion : DiagGroup<"float-zero-conversion">; @@ -709,6 +711,8 @@ FloatConversion, Shorten64To32, IntConversion, + ImplicitIntConversion, + ImplicitFloatConversion, LiteralConversion, NonLiteralNullConversion, // (1-1)->pointer (etc) NullConversion, // NULL->non-pointer
Index: clang/test/Sema/implicit-int-conversion.c =================================================================== --- /dev/null +++ clang/test/Sema/implicit-int-conversion.c @@ -0,0 +1,15 @@ +// RUN: %clang_cc1 %s -verify -Wconversion -Wno-implicit-int-conversion -DSMALL=char -DBIG=int -DNO_DIAG +// RUN: %clang_cc1 %s -verify -Wno-conversion -Wimplicit-int-conversion -DSMALL=char -DBIG=int +// RUN: %clang_cc1 %s -verify -Wconversion -Wno-implicit-float-conversion -DSMALL=float -DBIG=double -DNO_DIAG +// RUN: %clang_cc1 %s -verify -Wno-conversion -Wimplicit-float-conversion -DSMALL=float -DBIG=double + +void f() { + SMALL a; + BIG b = 0; + a = b; +#ifndef NO_DIAG + // expected-warning@-2 {{implicit conversion}} +#else + // expected-no-diagnostics +#endif +} Index: clang/include/clang/Basic/DiagnosticSemaKinds.td =================================================================== --- clang/include/clang/Basic/DiagnosticSemaKinds.td +++ clang/include/clang/Basic/DiagnosticSemaKinds.td @@ -3183,10 +3183,10 @@ "implicit conversion from %0 to %1 is not permitted in C++">; def warn_impcast_float_precision : Warning< "implicit conversion loses floating-point precision: %0 to %1">, - InGroup<Conversion>, DefaultIgnore; + InGroup<ImplicitFloatConversion>, DefaultIgnore; def warn_impcast_float_result_precision : Warning< "implicit conversion when assigning computation result loses floating-point precision: %0 to %1">, - InGroup<Conversion>, DefaultIgnore; + InGroup<ImplicitFloatConversion>, DefaultIgnore; def warn_impcast_double_promotion : Warning< "implicit conversion increases floating-point precision: %0 to %1">, InGroup<DoublePromotion>, DefaultIgnore; @@ -3198,10 +3198,10 @@ InGroup<SignConversion>, DefaultIgnore; def warn_impcast_integer_precision : Warning< "implicit conversion loses integer precision: %0 to %1">, - InGroup<Conversion>, DefaultIgnore; + InGroup<ImplicitIntConversion>, DefaultIgnore; def warn_impcast_high_order_zero_bits : Warning< "higher order bits are zeroes after implicit conversion">, - InGroup<Conversion>, DefaultIgnore; + InGroup<ImplicitIntConversion>, DefaultIgnore; def warn_impcast_nonnegative_result : Warning< "the resulting value is always non-negative after implicit conversion">, InGroup<SignConversion>, DefaultIgnore; Index: clang/include/clang/Basic/DiagnosticGroups.td =================================================================== --- clang/include/clang/Basic/DiagnosticGroups.td +++ clang/include/clang/Basic/DiagnosticGroups.td @@ -59,6 +59,8 @@ UndefinedBoolConversion]>; def IntConversion : DiagGroup<"int-conversion">; def EnumConversion : DiagGroup<"enum-conversion">; +def ImplicitIntConversion : DiagGroup<"implicit-int-conversion">; +def ImplicitFloatConversion : DiagGroup<"implicit-float-conversion">; def FloatOverflowConversion : DiagGroup<"float-overflow-conversion">; def FloatZeroConversion : DiagGroup<"float-zero-conversion">; @@ -709,6 +711,8 @@ FloatConversion, Shorten64To32, IntConversion, + ImplicitIntConversion, + ImplicitFloatConversion, LiteralConversion, NonLiteralNullConversion, // (1-1)->pointer (etc) NullConversion, // NULL->non-pointer
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits