r204776 - Add existing warnings to -Waddress so that it works closer to what GCC has.
Richard Trieu
rtrieu at google.com
Tue Mar 25 18:55:34 PDT 2014
Author: rtrieu
Date: Tue Mar 25 20:55:33 2014
New Revision: 204776
URL: http://llvm.org/viewvc/llvm-project?rev=204776&view=rev
Log:
Add existing warnings to -Waddress so that it works closer to what GCC has.
Previously, -Waddress was empty.
Fixes PR9043.
Added:
cfe/trunk/test/SemaCXX/warn-address.cpp
Modified:
cfe/trunk/include/clang/Basic/DiagnosticGroups.td
cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td
Modified: cfe/trunk/include/clang/Basic/DiagnosticGroups.td
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticGroups.td?rev=204776&r1=204775&r2=204776&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/DiagnosticGroups.td (original)
+++ cfe/trunk/include/clang/Basic/DiagnosticGroups.td Tue Mar 25 20:55:33 2014
@@ -19,7 +19,6 @@ def Implicit : DiagGroup<"implicit", [
// Empty DiagGroups are recognized by clang but ignored.
def : DiagGroup<"abi">;
def AbsoluteValue : DiagGroup<"absolute-value">;
-def : DiagGroup<"address">;
def AddressOfTemporary : DiagGroup<"address-of-temporary">;
def : DiagGroup<"aggregate-return">;
def GNUAlignofExpression : DiagGroup<"gnu-alignof-expression">;
@@ -38,7 +37,8 @@ def ConstantConversion :
def LiteralConversion : DiagGroup<"literal-conversion">;
def StringConversion : DiagGroup<"string-conversion">;
def SignConversion : DiagGroup<"sign-conversion">;
-def BoolConversion : DiagGroup<"bool-conversion">;
+def PointerBoolConversion : DiagGroup<"pointer-bool-conversion">;
+def BoolConversion : DiagGroup<"bool-conversion", [ PointerBoolConversion ] >;
def IntConversion : DiagGroup<"int-conversion">;
def EnumConversion : DiagGroup<"enum-conversion">;
def EnumTooLarge : DiagGroup<"enum-too-large">;
@@ -284,6 +284,7 @@ def StaticLocalInInline : DiagGroup<"sta
def GNUStaticFloatInit : DiagGroup<"gnu-static-float-init">;
def StaticFloatInit : DiagGroup<"static-float-init", [GNUStaticFloatInit]>;
def GNUStatementExpression : DiagGroup<"gnu-statement-expression">;
+def StringCompare : DiagGroup<"string-compare">;
def StringPlusInt : DiagGroup<"string-plus-int">;
def StringPlusChar : DiagGroup<"string-plus-char">;
def StrncatSize : DiagGroup<"strncat-size">;
@@ -442,6 +443,11 @@ def UnreachableCodeAggressive : DiagGrou
// Aggregation warning settings.
+// Populate -Waddress with warnings from other groups.
+def : DiagGroup<"address", [PointerBoolConversion,
+ StringCompare,
+ TautologicalPointerCompare]>;
+
// -Widiomatic-parentheses contains warnings about 'idiomatic'
// missing parentheses; it is off by default. We do not include it
// in -Wparentheses because most users who use -Wparentheses explicitly
Modified: cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td?rev=204776&r1=204775&r2=204776&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td (original)
+++ cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td Tue Mar 25 20:55:33 2014
@@ -2350,7 +2350,7 @@ def warn_impcast_floating_point_to_bool
def warn_impcast_pointer_to_bool : Warning<
"address of%select{| function| array}0 '%1' will always evaluate to "
"'true'">,
- InGroup<BoolConversion>;
+ InGroup<PointerBoolConversion>;
def warn_null_pointer_compare : Warning<
"comparison of %select{address of|function|array}0 '%1' %select{not |}2"
"equal to a null pointer is always %select{true|false}2">,
@@ -6375,7 +6375,7 @@ def warn_comparison_always : Warning<
def warn_stringcompare : Warning<
"result of comparison against %select{a string literal|@encode}0 is "
"unspecified (use strncmp instead)">,
- InGroup<DiagGroup<"string-compare">>;
+ InGroup<StringCompare>;
def warn_identity_field_assign : Warning<
"assigning %select{field|instance variable}0 to itself">,
Added: cfe/trunk/test/SemaCXX/warn-address.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/warn-address.cpp?rev=204776&view=auto
==============================================================================
--- cfe/trunk/test/SemaCXX/warn-address.cpp (added)
+++ cfe/trunk/test/SemaCXX/warn-address.cpp Tue Mar 25 20:55:33 2014
@@ -0,0 +1,20 @@
+// RUN: %clang_cc1 -fsyntax-only -verify -Wno-bool-conversion -Wno-string-compare -Wno-tautological-compare -Waddress %s
+// RUN: %clang_cc1 -fsyntax-only -verify %s
+
+void foo();
+int arr[5];
+int global;
+const char* str = "";
+
+void test() {
+ if (foo) {} // expected-warning{{always evaluate to 'true'}} \
+ // expected-note{{silence}}
+ if (arr) {} // expected-warning{{always evaluate to 'true'}}
+ if (&global) {} // expected-warning{{always evaluate to 'true'}}
+ if (foo == 0) {} // expected-warning{{always false}} \
+ // expected-note{{silence}}
+ if (arr == 0) {} // expected-warning{{always false}}
+ if (&global == 0) {} // expected-warning{{always false}}
+
+ if (str == "foo") {} // expected-warning{{unspecified}}
+}
More information about the cfe-commits
mailing list