DiagnosticGroups.td revision 208600
1193326Sed//==--- DiagnosticGroups.td - Diagnostic Group Definitions ----------------===//
2193326Sed//
3193326Sed//                     The LLVM Compiler Infrastructure
4193326Sed//
5193326Sed// This file is distributed under the University of Illinois Open Source
6193326Sed// License. See LICENSE.TXT for details.
7193326Sed//
8193326Sed//===----------------------------------------------------------------------===//
9193326Sed
10193326Seddef ImplicitFunctionDeclare : DiagGroup<"implicit-function-declaration">;
11193326Seddef ImplicitInt : DiagGroup<"implicit-int">;
12193326Sed
13193326Sed// Aggregation warning settings.
14193326Seddef Implicit : DiagGroup<"implicit", [
15193326Sed    ImplicitFunctionDeclare,
16193326Sed    ImplicitInt
17193326Sed]>;
18193326Sed
19204643Srdivacky// Empty DiagGroups are recognized by clang but ignored.
20198092Srdivackydef : DiagGroup<"address">;
21204643Srdivackydef AddressOfTemporary : DiagGroup<"address-of-temporary">;
22193326Seddef : DiagGroup<"aggregate-return">;
23198092Srdivackydef : DiagGroup<"attributes">;
24193326Seddef : DiagGroup<"bad-function-cast">;
25198954Srdivackydef : DiagGroup<"c++-compat">;
26193326Seddef : DiagGroup<"cast-align">;
27193326Seddef : DiagGroup<"cast-qual">;
28193326Seddef : DiagGroup<"char-align">;
29193326Seddef Comment : DiagGroup<"comment">;
30199482Srdivackydef : DiagGroup<"ctor-dtor-privacy">;
31193326Seddef : DiagGroup<"declaration-after-statement">;
32206084Srdivackydef GNUDesignator : DiagGroup<"gnu-designator">;
33204962Srdivackydef Deprecated : DiagGroup<"deprecated">;
34193326Seddef : DiagGroup<"disabled-optimization">;
35193326Seddef : DiagGroup<"discard-qual">;
36194613Seddef : DiagGroup<"div-by-zero">;
37193380Seddef EmptyBody : DiagGroup<"empty-body">;
38193326Seddef ExtraTokens : DiagGroup<"extra-tokens">;
39193326Sed
40193326Seddef FormatExtraArgs : DiagGroup<"format-extra-args">;
41193326Seddef FormatZeroLength : DiagGroup<"format-zero-length">;
42193326Sed
43208600Srdivackydef CXXHexFloats : DiagGroup<"c++-hex-floats">;
44208600Srdivacky
45208600Srdivackydef : DiagGroup<"c++0x-compat", [CXXHexFloats]>;
46193326Seddef FourByteMultiChar : DiagGroup<"four-char-constants">;
47199482Srdivackydef : DiagGroup<"idiomatic-parentheses">;
48198092Srdivackydef : DiagGroup<"import">;
49193326Seddef : DiagGroup<"init-self">;
50193326Seddef : DiagGroup<"inline">;
51193326Seddef : DiagGroup<"int-to-pointer-cast">;
52194613Seddef : DiagGroup<"invalid-pch">;
53204962Srdivackydef LiteralRange : DiagGroup<"literal-range">;
54204962Srdivackydef MissingBraces : DiagGroup<"missing-braces">;
55193326Seddef : DiagGroup<"missing-declarations">;
56193326Seddef : DiagGroup<"missing-format-attribute">;
57198954Srdivackydef : DiagGroup<"missing-include-dirs">;
58193326Seddef : DiagGroup<"missing-noreturn">;
59193326Seddef MultiChar : DiagGroup<"multichar">;
60193326Seddef : DiagGroup<"nested-externs">;
61193326Seddef : DiagGroup<"newline-eof">;
62198092Srdivackydef LongLong : DiagGroup<"long-long">;
63193326Seddef MismatchedTags : DiagGroup<"mismatched-tags">;
64205219Srdivackydef MissingFieldInitializers : DiagGroup<"missing-field-initializers">;
65193326Seddef NonNull : DiagGroup<"nonnull">;
66193326Seddef : DiagGroup<"nonportable-cfstrings">;
67199482Srdivackydef : DiagGroup<"non-virtual-dtor">;
68193326Seddef : DiagGroup<"old-style-definition">;
69198092Srdivackydef : DiagGroup<"overflow">;
70198092Srdivackydef : DiagGroup<"overloaded-virtual">;
71193326Seddef : DiagGroup<"packed">;
72198092Srdivackydef PointerArith : DiagGroup<"pointer-arith">;
73193326Seddef : DiagGroup<"pointer-to-int-cast">;
74193326Seddef : DiagGroup<"redundant-decls">;
75193326Seddef ReturnType : DiagGroup<"return-type">;
76199482Srdivackydef SemiBeforeMethodBody : DiagGroup<"semicolon-before-method-body">;
77193326Seddef : DiagGroup<"sequence-point">;
78205408Srdivackydef Shadow : DiagGroup<"shadow">;
79193326Seddef : DiagGroup<"shorten-64-to-32">;
80199482Srdivackydef SignCompare : DiagGroup<"sign-compare">;
81199482Srdivackydef : DiagGroup<"synth">;
82193326Sed
83198092Srdivacky// Preprocessor warnings.
84198092Srdivackydef : DiagGroup<"builtin-macro-redefined">;
85198092Srdivacky
86199990Srdivacky// Just silence warnings about -Wstrict-aliasing for now.
87193326Seddef : DiagGroup<"strict-aliasing=0">;
88193326Seddef : DiagGroup<"strict-aliasing=1">;
89193326Seddef : DiagGroup<"strict-aliasing=2">;
90193326Seddef : DiagGroup<"strict-aliasing">;
91193326Sed
92199990Srdivacky// Just silence warnings about -Wstrict-overflow for now.
93193326Seddef : DiagGroup<"strict-overflow=0">;
94193326Seddef : DiagGroup<"strict-overflow=1">;
95193326Seddef : DiagGroup<"strict-overflow=2">;
96199990Srdivackydef : DiagGroup<"strict-overflow=3">;
97199990Srdivackydef : DiagGroup<"strict-overflow=4">;
98199990Srdivackydef : DiagGroup<"strict-overflow=5">;
99193326Seddef : DiagGroup<"strict-overflow">;
100193326Sed
101193326Seddef InvalidOffsetof : DiagGroup<"invalid-offsetof">;
102193326Seddef : DiagGroup<"strict-prototypes">;
103193326Seddef : DiagGroup<"strict-selector-match">;
104203955Srdivackydef SwitchEnum     : DiagGroup<"switch-enum">;
105203955Srdivackydef Switch         : DiagGroup<"switch", [SwitchEnum]>;
106207632Srdivackydef Trigraphs      : DiagGroup<"trigraphs">;
107193326Sed
108193326Seddef : DiagGroup<"type-limits">;
109193326Seddef Uninitialized  : DiagGroup<"uninitialized">;
110193326Seddef UnknownPragmas : DiagGroup<"unknown-pragmas">;
111193725Seddef UnusedArgument : DiagGroup<"unused-argument">;
112207619Srdivackydef UnusedExceptionParameter : DiagGroup<"unused-exception-parameter">;
113193725Seddef UnusedFunction : DiagGroup<"unused-function">;
114193725Seddef UnusedLabel : DiagGroup<"unused-label">;
115193725Seddef UnusedParameter : DiagGroup<"unused-parameter">;
116193326Seddef UnusedValue    : DiagGroup<"unused-value">;
117193326Seddef UnusedVariable : DiagGroup<"unused-variable">;
118194613Seddef ReadOnlySetterAttrs : DiagGroup<"readonly-setter-attrs">;
119198092Srdivackydef Reorder : DiagGroup<"reorder">;
120194613Seddef UndeclaredSelector : DiagGroup<"undeclared-selector">;
121206084Srdivackydef Protocol : DiagGroup<"protocol">;
122198092Srdivackydef SuperSubClassMismatch : DiagGroup<"super-class-method-mismatch">;
123193326Seddef : DiagGroup<"variadic-macros">;
124200583Srdivackydef VariadicMacros : DiagGroup<"variadic-macros">;
125193326Seddef VectorConversions : DiagGroup<"vector-conversions">;      // clang specific
126208600Srdivackydef VLA : DiagGroup<"vla">;
127193326Seddef VolatileRegisterVar : DiagGroup<"volatile-register-var">;
128193326Seddef : DiagGroup<"write-strings">;
129198092Srdivackydef CharSubscript : DiagGroup<"char-subscripts">;
130193326Sed
131193326Sed// Aggregation warning settings.
132193326Sed
133199482Srdivacky// -Widiomatic-parentheses contains warnings about 'idiomatic'
134199482Srdivacky// missing parentheses;  it is off by default.
135199482Srdivackydef Parentheses : DiagGroup<"parentheses", [DiagGroup<"idiomatic-parentheses">]>;
136193326Sed
137199482Srdivacky// -Wconversion has its own warnings, but we split this one out for
138199482Srdivacky// legacy reasons.
139199482Srdivackydef Conversion : DiagGroup<"conversion",
140207632Srdivacky                           [DiagGroup<"shorten-64-to-32">]>,
141208600Srdivacky                 DiagCategory<"Value Conversion Issue">;
142199482Srdivacky
143193725Seddef Unused : DiagGroup<"unused",
144193725Sed                       [UnusedArgument, UnusedFunction, UnusedLabel,
145207619Srdivacky                        // UnusedParameter, (matches GCC's behavior)
146208600Srdivacky                        UnusedValue, UnusedVariable]>,
147208600Srdivacky                        DiagCategory<"Unused Entity Issue">;
148193725Sed
149193326Sed// Format settings.
150207632Srdivackydef Format : DiagGroup<"format", [FormatExtraArgs, FormatZeroLength, NonNull]>,
151208600Srdivacky             DiagCategory<"Format String Issue">;
152193326Seddef FormatSecurity : DiagGroup<"format-security", [Format]>;
153193326Seddef FormatNonLiteral : DiagGroup<"format-nonliteral", [FormatSecurity]>;
154193326Seddef FormatY2K : DiagGroup<"format-y2k", [Format]>;
155193326Seddef Format2 : DiagGroup<"format=2",
156193326Sed                        [FormatNonLiteral, FormatSecurity, FormatY2K]>;
157193326Sed
158194613Seddef Extra : DiagGroup<"extra", [
159205219Srdivacky    MissingFieldInitializers,
160199482Srdivacky    SemiBeforeMethodBody,
161199482Srdivacky    SignCompare,
162194613Sed    UnusedParameter
163194613Sed  ]>;
164193326Sed
165193326Seddef Most : DiagGroup<"most", [
166207619Srdivacky    CharSubscript,
167193326Sed    Comment,
168193326Sed    Format,
169193326Sed    Implicit,
170193326Sed    MismatchedTags,
171204962Srdivacky    MissingBraces,
172193326Sed    MultiChar,
173207619Srdivacky    Reorder,
174198092Srdivacky    ReturnType,
175193326Sed    Switch,
176193326Sed    Trigraphs,
177193326Sed    Uninitialized,
178193326Sed    UnknownPragmas,
179207619Srdivacky    Unused,
180193326Sed    VectorConversions,
181207619Srdivacky    VolatileRegisterVar
182193326Sed ]>;
183193326Sed
184193326Sed// -Wall is -Wmost -Wparentheses
185193326Seddef : DiagGroup<"all", [Most, Parentheses]>;
186193326Sed
187193326Sed// Aliases.
188201361Srdivackydef : DiagGroup<"", [Extra]>;                   // -W = -Wextra
189201361Srdivackydef : DiagGroup<"endif-labels", [ExtraTokens]>; // -Wendif-labels=-Wendif-tokens
190201361Srdivackydef : DiagGroup<"comments", [Comment]>;         // -Wcomments = -Wcomment
191193326Sed
192199482Srdivacky// A warning group for warnings that we want to have on by default in clang,
193199482Srdivacky// but which aren't on by default in GCC.
194199482Srdivackydef NonGCC : DiagGroup<"non-gcc",
195204962Srdivacky    [SignCompare, Conversion, LiteralRange]>;
196206084Srdivacky
197206084Srdivacky// A warning group for warnings about GCC extensions.
198208600Srdivackydef GNU : DiagGroup<"gnu", [GNUDesignator, VLA]>;
199