DiagnosticGroups.td revision 314564
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.
20210299Seddef : DiagGroup<"abi">;
21276479Sdimdef AbsoluteValue : DiagGroup<"absolute-value">;
22204643Srdivackydef AddressOfTemporary : DiagGroup<"address-of-temporary">;
23193326Seddef : DiagGroup<"aggregate-return">;
24261991Sdimdef GNUAlignofExpression : DiagGroup<"gnu-alignof-expression">;
25210299Seddef AmbigMemberTemplate : DiagGroup<"ambiguous-member-template">;
26261991Sdimdef GNUAnonymousStruct : DiagGroup<"gnu-anonymous-struct">;
27296417Sdimdef GNUAutoType : DiagGroup<"gnu-auto-type">;
28249423Sdimdef ArrayBounds : DiagGroup<"array-bounds">;
29249423Sdimdef ArrayBoundsPointerArithmetic : DiagGroup<"array-bounds-pointer-arithmetic">;
30221345Sdimdef Availability : DiagGroup<"availability">;
31239462Sdimdef Section : DiagGroup<"section">;
32234353Sdimdef AutoImport : DiagGroup<"auto-import">;
33296417Sdimdef CXX14BinaryLiteral : DiagGroup<"c++14-binary-literal">;
34261991Sdimdef GNUBinaryLiteral : DiagGroup<"gnu-binary-literal">;
35261991Sdimdef GNUCompoundLiteralInitializer : DiagGroup<"gnu-compound-literal-initializer">;
36251662Sdimdef BitFieldConstantConversion : DiagGroup<"bitfield-constant-conversion">;
37296417Sdimdef BitFieldWidth : DiagGroup<"bitfield-width">;
38251662Sdimdef ConstantConversion :
39251662Sdim  DiagGroup<"constant-conversion", [ BitFieldConstantConversion ] >;
40234353Sdimdef LiteralConversion : DiagGroup<"literal-conversion">;
41234353Sdimdef StringConversion : DiagGroup<"string-conversion">;
42234353Sdimdef SignConversion : DiagGroup<"sign-conversion">;
43276479Sdimdef PointerBoolConversion : DiagGroup<"pointer-bool-conversion">;
44276479Sdimdef UndefinedBoolConversion : DiagGroup<"undefined-bool-conversion">;
45276479Sdimdef BoolConversion : DiagGroup<"bool-conversion", [PointerBoolConversion,
46276479Sdim                                                   UndefinedBoolConversion]>;
47234353Sdimdef IntConversion : DiagGroup<"int-conversion">;
48243830Sdimdef EnumConversion : DiagGroup<"enum-conversion">;
49309124Sdim
50309124Sdimdef FloatOverflowConversion : DiagGroup<"float-overflow-conversion">;
51309124Sdimdef FloatZeroConversion : DiagGroup<"float-zero-conversion">;
52309124Sdimdef FloatConversion :
53309124Sdim  DiagGroup<"float-conversion", [FloatOverflowConversion,
54309124Sdim                                 FloatZeroConversion]>;
55309124Sdim
56296417Sdimdef DoublePromotion : DiagGroup<"double-promotion">;
57276479Sdimdef EnumTooLarge : DiagGroup<"enum-too-large">;
58288943Sdimdef UnsupportedNan : DiagGroup<"unsupported-nan">;
59309124Sdimdef UnsupportedCB : DiagGroup<"unsupported-cb">;
60239462Sdimdef NonLiteralNullConversion : DiagGroup<"non-literal-null-conversion">;
61234353Sdimdef NullConversion : DiagGroup<"null-conversion">;
62243830Sdimdef ImplicitConversionFloatingPointToBool :
63243830Sdim  DiagGroup<"implicit-conversion-floating-point-to-bool">;
64276479Sdimdef ObjCLiteralConversion : DiagGroup<"objc-literal-conversion">;
65276479Sdimdef MacroRedefined : DiagGroup<"macro-redefined">;
66249423Sdimdef BuiltinMacroRedefined : DiagGroup<"builtin-macro-redefined">;
67227737Sdimdef BuiltinRequiresHeader : DiagGroup<"builtin-requires-header">;
68249423Sdimdef C99Compat : DiagGroup<"c99-compat">;
69212904Sdimdef CXXCompat: DiagGroup<"c++-compat">;
70261991Sdimdef ExternCCompat : DiagGroup<"extern-c-compat">;
71261991Sdimdef KeywordCompat : DiagGroup<"keyword-compat">;
72261991Sdimdef GNUCaseRange : DiagGroup<"gnu-case-range">;
73212904Sdimdef CastAlign : DiagGroup<"cast-align">;
74280031Sdimdef CastQual : DiagGroup<"cast-qual">;
75193326Seddef : DiagGroup<"char-align">;
76193326Seddef Comment : DiagGroup<"comment">;
77261991Sdimdef GNUComplexInteger : DiagGroup<"gnu-complex-integer">;
78261991Sdimdef GNUConditionalOmittedOperand : DiagGroup<"gnu-conditional-omitted-operand">;
79249423Sdimdef ConfigMacros : DiagGroup<"config-macros">;
80199482Srdivackydef : DiagGroup<"ctor-dtor-privacy">;
81206084Srdivackydef GNUDesignator : DiagGroup<"gnu-designator">;
82261991Sdimdef GNUStringLiteralOperatorTemplate :
83261991Sdim  DiagGroup<"gnu-string-literal-operator-template">;
84309124Sdimdef UndefinedVarTemplate : DiagGroup<"undefined-var-template">;
85309124Sdimdef UndefinedFuncTemplate : DiagGroup<"undefined-func-template">;
86212904Sdim
87280031Sdimdef DeleteIncomplete : DiagGroup<"delete-incomplete">;
88223017Sdimdef DeleteNonVirtualDtor : DiagGroup<"delete-non-virtual-dtor">;
89243830Sdimdef AbstractFinalClass : DiagGroup<"abstract-final-class">;
90223017Sdim
91261991Sdimdef CXX11CompatDeprecatedWritableStr :
92261991Sdim  DiagGroup<"c++11-compat-deprecated-writable-strings">;
93261991Sdim
94296417Sdimdef DeprecatedAttributes : DiagGroup<"deprecated-attributes">;
95212904Sdimdef DeprecatedDeclarations : DiagGroup<"deprecated-declarations">;
96276479Sdimdef UnavailableDeclarations : DiagGroup<"unavailable-declarations">;
97309124Sdimdef UnguardedAvailability : DiagGroup<"unguarded-availability">;
98314564Sdim// partial-availability is an alias of unguarded-availability.
99314564Sdimdef : DiagGroup<"partial-availability", [UnguardedAvailability]>;
100314564Sdimdef DeprecatedDynamicExceptionSpec
101314564Sdim    : DiagGroup<"deprecated-dynamic-exception-spec">;
102261991Sdimdef DeprecatedImplementations :DiagGroup<"deprecated-implementations">;
103261991Sdimdef DeprecatedIncrementBool : DiagGroup<"deprecated-increment-bool">;
104261991Sdimdef DeprecatedRegister : DiagGroup<"deprecated-register">;
105261991Sdimdef DeprecatedWritableStr : DiagGroup<"deprecated-writable-strings",
106261991Sdim                                      [CXX11CompatDeprecatedWritableStr]>;
107276479Sdim// FIXME: Why is DeprecatedImplementations not in this group?
108296417Sdimdef Deprecated : DiagGroup<"deprecated", [DeprecatedAttributes,
109296417Sdim                                          DeprecatedDeclarations,
110314564Sdim                                          DeprecatedDynamicExceptionSpec,
111261991Sdim                                          DeprecatedIncrementBool,
112276479Sdim                                          DeprecatedRegister,
113276479Sdim                                          DeprecatedWritableStr]>,
114212904Sdim                 DiagCategory<"Deprecations">;
115212904Sdim
116314564Sdimdef DynamicExceptionSpec
117314564Sdim    : DiagGroup<"dynamic-exception-spec", [DeprecatedDynamicExceptionSpec]>;
118314564Sdim
119296417Sdimdef LibLTO : DiagGroup<"liblto">;
120193326Seddef : DiagGroup<"disabled-optimization">;
121193326Seddef : DiagGroup<"discard-qual">;
122314564Sdimdef DivZero : DiagGroup<"division-by-zero">;
123314564Sdimdef : DiagGroup<"div-by-zero", [DivZero]>;
124243830Sdim
125239462Sdimdef DocumentationHTML : DiagGroup<"documentation-html">;
126251662Sdimdef DocumentationUnknownCommand : DiagGroup<"documentation-unknown-command">;
127251662Sdimdef DocumentationPedantic : DiagGroup<"documentation-pedantic",
128251662Sdim                                      [DocumentationUnknownCommand]>;
129243830Sdimdef DocumentationDeprecatedSync : DiagGroup<"documentation-deprecated-sync">;
130243830Sdimdef Documentation : DiagGroup<"documentation",
131243830Sdim                              [DocumentationHTML,
132243830Sdim                               DocumentationDeprecatedSync]>;
133243830Sdim
134193380Seddef EmptyBody : DiagGroup<"empty-body">;
135288943Sdimdef Exceptions : DiagGroup<"exceptions">;
136288943Sdim
137261991Sdimdef GNUEmptyInitializer : DiagGroup<"gnu-empty-initializer">;
138261991Sdimdef GNUEmptyStruct : DiagGroup<"gnu-empty-struct">;
139193326Seddef ExtraTokens : DiagGroup<"extra-tokens">;
140239462Sdimdef CXX11ExtraSemi : DiagGroup<"c++11-extra-semi">;
141239462Sdimdef ExtraSemi : DiagGroup<"extra-semi", [CXX11ExtraSemi]>;
142193326Sed
143261991Sdimdef GNUFlexibleArrayInitializer : DiagGroup<"gnu-flexible-array-initializer">;
144261991Sdimdef GNUFlexibleArrayUnionMember : DiagGroup<"gnu-flexible-array-union-member">;
145261991Sdimdef GNUFoldingConstant : DiagGroup<"gnu-folding-constant">;
146193326Seddef FormatExtraArgs : DiagGroup<"format-extra-args">;
147193326Seddef FormatZeroLength : DiagGroup<"format-zero-length">;
148193326Sed
149251662Sdim// Warnings for C++1y code which is not compatible with prior C++ standards.
150280031Sdimdef CXXPre14Compat : DiagGroup<"c++98-c++11-compat">;
151280031Sdimdef CXXPre14CompatPedantic : DiagGroup<"c++98-c++11-compat-pedantic",
152280031Sdim                                       [CXXPre14Compat]>;
153276479Sdimdef CXXPre1zCompat : DiagGroup<"c++98-c++11-c++14-compat">;
154276479Sdimdef CXXPre1zCompatPedantic : DiagGroup<"c++98-c++11-c++14-compat-pedantic",
155276479Sdim                                       [CXXPre1zCompat]>;
156251662Sdim
157234353Sdimdef CXX98CompatBindToTemporaryCopy :
158234353Sdim  DiagGroup<"c++98-compat-bind-to-temporary-copy">;
159234353Sdimdef CXX98CompatLocalTypeTemplateArgs :
160234353Sdim  DiagGroup<"c++98-compat-local-type-template-args">;
161234353Sdimdef CXX98CompatUnnamedTypeTemplateArgs :
162234353Sdim  DiagGroup<"c++98-compat-unnamed-type-template-args">;
163234353Sdim
164234353Sdimdef CXX98Compat : DiagGroup<"c++98-compat",
165280031Sdim                            [CXX98CompatLocalTypeTemplateArgs,
166251662Sdim                             CXX98CompatUnnamedTypeTemplateArgs,
167280031Sdim                             CXXPre14Compat,
168276479Sdim                             CXXPre1zCompat]>;
169226633Sdim// Warnings for C++11 features which are Extensions in C++98 mode.
170251662Sdimdef CXX98CompatPedantic : DiagGroup<"c++98-compat-pedantic",
171251662Sdim                                    [CXX98Compat,
172280031Sdim                                     CXX98CompatBindToTemporaryCopy,
173280031Sdim                                     CXXPre14CompatPedantic,
174276479Sdim                                     CXXPre1zCompatPedantic]>;
175208600Srdivacky
176226633Sdimdef CXX11Narrowing : DiagGroup<"c++11-narrowing">;
177234353Sdim
178280031Sdimdef CXX11WarnOverrideMethod : DiagGroup<"inconsistent-missing-override">;
179280031Sdim
180234353Sdim// Original name of this warning in Clang
181226633Sdimdef : DiagGroup<"c++0x-narrowing", [CXX11Narrowing]>;
182226633Sdim
183234353Sdim// Name of this warning in GCC
184234353Sdimdef : DiagGroup<"narrowing", [CXX11Narrowing]>;
185234353Sdim
186234353Sdimdef CXX11CompatReservedUserDefinedLiteral :
187234353Sdim  DiagGroup<"c++11-compat-reserved-user-defined-literal">;
188234353Sdimdef ReservedUserDefinedLiteral :
189234353Sdim  DiagGroup<"reserved-user-defined-literal",
190234353Sdim            [CXX11CompatReservedUserDefinedLiteral]>;
191234353Sdim
192234353Sdimdef CXX11Compat : DiagGroup<"c++11-compat",
193234353Sdim                            [CXX11Narrowing,
194251662Sdim                             CXX11CompatReservedUserDefinedLiteral,
195261991Sdim                             CXX11CompatDeprecatedWritableStr,
196280031Sdim                             CXXPre14Compat,
197276479Sdim                             CXXPre1zCompat]>;
198226633Sdimdef : DiagGroup<"c++0x-compat", [CXX11Compat]>;
199251662Sdimdef CXX11CompatPedantic : DiagGroup<"c++11-compat-pedantic",
200280031Sdim                                    [CXXPre14CompatPedantic,
201276479Sdim                                     CXXPre1zCompatPedantic]>;
202226633Sdim
203276479Sdimdef CXX14Compat : DiagGroup<"c++14-compat", [CXXPre1zCompat]>;
204276479Sdimdef CXX14CompatPedantic : DiagGroup<"c++14-compat-pedantic",
205276479Sdim                                    [CXXPre1zCompatPedantic]>;
206276479Sdim
207296417Sdimdef CXX1zCompat : DiagGroup<"c++1z-compat", [DeprecatedRegister,
208296417Sdim                                             DeprecatedIncrementBool]>;
209296417Sdim
210221345Sdimdef ExitTimeDestructors : DiagGroup<"exit-time-destructors">;
211234353Sdimdef FlexibleArrayExtensions : DiagGroup<"flexible-array-extensions">;
212193326Seddef FourByteMultiChar : DiagGroup<"four-char-constants">;
213212904Sdimdef GlobalConstructors : DiagGroup<"global-constructors">;
214224145Sdimdef BitwiseOpParentheses: DiagGroup<"bitwise-op-parentheses">;
215218893Sdimdef LogicalOpParentheses: DiagGroup<"logical-op-parentheses">;
216261991Sdimdef LogicalNotParentheses: DiagGroup<"logical-not-parentheses">;
217243830Sdimdef ShiftOpParentheses: DiagGroup<"shift-op-parentheses">;
218251662Sdimdef OverloadedShiftOpParentheses: DiagGroup<"overloaded-shift-op-parentheses">;
219234353Sdimdef DanglingElse: DiagGroup<"dangling-else">;
220249423Sdimdef DanglingField : DiagGroup<"dangling-field">;
221249423Sdimdef DistributedObjectModifiers : DiagGroup<"distributed-object-modifiers">;
222309124Sdimdef ExpansionToDefined : DiagGroup<"expansion-to-defined">;
223288943Sdimdef FlagEnum : DiagGroup<"flag-enum">;
224296417Sdimdef IncrementBool : DiagGroup<"increment-bool", [DeprecatedIncrementBool]>;
225276479Sdimdef InfiniteRecursion : DiagGroup<"infinite-recursion">;
226261991Sdimdef GNUImaginaryConstant : DiagGroup<"gnu-imaginary-constant">;
227210299Seddef IgnoredQualifiers : DiagGroup<"ignored-qualifiers">;
228198092Srdivackydef : DiagGroup<"import">;
229296417Sdimdef GNUIncludeNext : DiagGroup<"gnu-include-next">;
230276479Sdimdef IncompatibleMSStruct : DiagGroup<"incompatible-ms-struct">;
231249423Sdimdef IncompatiblePointerTypesDiscardsQualifiers 
232249423Sdim  : DiagGroup<"incompatible-pointer-types-discards-qualifiers">;
233314564Sdimdef IncompatibleFunctionPointerTypes
234314564Sdim  : DiagGroup<"incompatible-function-pointer-types">;
235249423Sdimdef IncompatiblePointerTypes
236249423Sdim  : DiagGroup<"incompatible-pointer-types",
237314564Sdim    [IncompatiblePointerTypesDiscardsQualifiers,
238314564Sdim     IncompatibleFunctionPointerTypes]>;
239234353Sdimdef IncompleteUmbrella : DiagGroup<"incomplete-umbrella">;
240276479Sdimdef NonModularIncludeInFrameworkModule
241276479Sdim  : DiagGroup<"non-modular-include-in-framework-module">;
242276479Sdimdef NonModularIncludeInModule : DiagGroup<"non-modular-include-in-module",
243276479Sdim                                          [NonModularIncludeInFrameworkModule]>;
244280031Sdimdef IncompleteModule : DiagGroup<"incomplete-module",
245280031Sdim    [IncompleteUmbrella, NonModularIncludeInModule]>;
246314564Sdimdef PrivateModule : DiagGroup<"private-module">;
247280031Sdim
248296417Sdimdef CXX11InlineNamespace : DiagGroup<"c++11-inline-namespace">;
249249423Sdimdef InvalidNoreturn : DiagGroup<"invalid-noreturn">;
250249423Sdimdef InvalidSourceEncoding : DiagGroup<"invalid-source-encoding">;
251234353Sdimdef KNRPromotedParameter : DiagGroup<"knr-promoted-parameter">;
252193326Seddef : DiagGroup<"init-self">;
253193326Seddef : DiagGroup<"inline">;
254194613Seddef : DiagGroup<"invalid-pch">;
255261991Sdimdef GNULabelsAsValue : DiagGroup<"gnu-label-as-value">;
256204962Srdivackydef LiteralRange : DiagGroup<"literal-range">;
257234353Sdimdef LocalTypeTemplateArgs : DiagGroup<"local-type-template-args",
258234353Sdim                                      [CXX98CompatLocalTypeTemplateArgs]>;
259288943Sdimdef RangeLoopAnalysis : DiagGroup<"range-loop-analysis">;
260288943Sdimdef ForLoopAnalysis : DiagGroup<"for-loop-analysis">;
261288943Sdimdef LoopAnalysis : DiagGroup<"loop-analysis", [ForLoopAnalysis,
262288943Sdim                                               RangeLoopAnalysis]>;
263226633Sdimdef MalformedWarningCheck : DiagGroup<"malformed-warning-check">;
264226633Sdimdef Main : DiagGroup<"main">;
265234353Sdimdef MainReturnType : DiagGroup<"main-return-type">;
266314564Sdimdef MaxUnsignedZero : DiagGroup<"max-unsigned-zero">;
267204962Srdivackydef MissingBraces : DiagGroup<"missing-braces">;
268212904Sdimdef MissingDeclarations: DiagGroup<"missing-declarations">;
269193326Seddef : DiagGroup<"missing-format-attribute">;
270198954Srdivackydef : DiagGroup<"missing-include-dirs">;
271249423Sdimdef MissingNoreturn : DiagGroup<"missing-noreturn">;
272193326Seddef MultiChar : DiagGroup<"multichar">;
273193326Seddef : DiagGroup<"nested-externs">;
274243830Sdimdef CXX11LongLong : DiagGroup<"c++11-long-long">;
275243830Sdimdef LongLong : DiagGroup<"long-long", [CXX11LongLong]>;
276288943Sdimdef ImplicitlyUnsignedLiteral : DiagGroup<"implicitly-unsigned-literal">;
277249423Sdimdef MethodSignatures : DiagGroup<"method-signatures">;
278243830Sdimdef MismatchedParameterTypes : DiagGroup<"mismatched-parameter-types">;
279243830Sdimdef MismatchedReturnTypes : DiagGroup<"mismatched-return-types">;
280193326Seddef MismatchedTags : DiagGroup<"mismatched-tags">;
281205219Srdivackydef MissingFieldInitializers : DiagGroup<"missing-field-initializers">;
282280031Sdimdef ModuleBuild : DiagGroup<"module-build">;
283249423Sdimdef ModuleConflict : DiagGroup<"module-conflict">;
284296417Sdimdef ModuleFileExtension : DiagGroup<"module-file-extension">;
285261991Sdimdef NewlineEOF : DiagGroup<"newline-eof">;
286288943Sdimdef Nullability : DiagGroup<"nullability">;
287288943Sdimdef NullabilityDeclSpec : DiagGroup<"nullability-declspec">;
288314564Sdimdef NullabilityInferredOnNestedType : DiagGroup<"nullability-inferred-on-nested-type">;
289288943Sdimdef NullableToNonNullConversion : DiagGroup<"nullable-to-nonnull-conversion">;
290314564Sdimdef NullabilityCompletenessOnArrays : DiagGroup<"nullability-completeness-on-arrays">;
291314564Sdimdef NullabilityCompleteness : DiagGroup<"nullability-completeness",
292314564Sdim                                        [NullabilityCompletenessOnArrays]>;
293249423Sdimdef NullArithmetic : DiagGroup<"null-arithmetic">;
294234353Sdimdef NullCharacter : DiagGroup<"null-character">;
295218893Sdimdef NullDereference : DiagGroup<"null-dereference">;
296210299Seddef InitializerOverrides : DiagGroup<"initializer-overrides">;
297193326Seddef NonNull : DiagGroup<"nonnull">;
298249423Sdimdef NonPODVarargs : DiagGroup<"non-pod-varargs">;
299276479Sdimdef ClassVarargs : DiagGroup<"class-varargs", [NonPODVarargs]>;
300193326Seddef : DiagGroup<"nonportable-cfstrings">;
301218893Sdimdef NonVirtualDtor : DiagGroup<"non-virtual-dtor">;
302314564Sdimdef : DiagGroup<"effc++", [NonVirtualDtor]>;
303234353Sdimdef OveralignedType : DiagGroup<"over-aligned">;
304276479Sdimdef OldStyleCast : DiagGroup<"old-style-cast">;
305193326Seddef : DiagGroup<"old-style-definition">;
306212904Sdimdef OutOfLineDeclaration : DiagGroup<"out-of-line-declaration">;
307198092Srdivackydef : DiagGroup<"overflow">;
308239462Sdimdef ForwardClassReceiver : DiagGroup<"receiver-forward-class">;
309239462Sdimdef MethodAccess : DiagGroup<"objc-method-access">;
310239462Sdimdef ObjCReceiver : DiagGroup<"receiver-expr">;
311276479Sdimdef OperatorNewReturnsNull : DiagGroup<"new-returns-null">;
312212904Sdimdef OverlengthStrings : DiagGroup<"overlength-strings">;
313218893Sdimdef OverloadedVirtual : DiagGroup<"overloaded-virtual">;
314239462Sdimdef PrivateExtern : DiagGroup<"private-extern">;
315239462Sdimdef SelTypeCast : DiagGroup<"cast-of-sel-type">;
316276479Sdimdef FunctionDefInObjCContainer : DiagGroup<"function-def-in-objc-container">;
317243830Sdimdef BadFunctionCast : DiagGroup<"bad-function-cast">;
318234353Sdimdef ObjCPropertyImpl : DiagGroup<"objc-property-implementation">;
319239462Sdimdef ObjCPropertyNoAttribute : DiagGroup<"objc-property-no-attribute">;
320288943Sdimdef ObjCProtocolQualifiers : DiagGroup<"objc-protocol-qualifiers">;
321226633Sdimdef ObjCMissingSuperCalls : DiagGroup<"objc-missing-super-calls">;
322276479Sdimdef ObjCDesignatedInit : DiagGroup<"objc-designated-initializers">;
323226633Sdimdef ObjCRetainBlockProperty : DiagGroup<"objc-noncopy-retain-block-property">;
324234353Sdimdef ObjCReadonlyPropertyHasSetter : DiagGroup<"objc-readonly-with-setter-property">;
325261991Sdimdef ObjCInvalidIBOutletProperty : DiagGroup<"invalid-iboutlet">;
326234353Sdimdef ObjCRootClass : DiagGroup<"objc-root-class">;
327261991Sdimdef ObjCPointerIntrospectPerformSelector : DiagGroup<"deprecated-objc-pointer-introspection-performSelector">;
328261991Sdimdef ObjCPointerIntrospect : DiagGroup<"deprecated-objc-pointer-introspection", [ObjCPointerIntrospectPerformSelector]>;
329280031Sdimdef ObjCMultipleMethodNames : DiagGroup<"objc-multiple-method-names">;
330314564Sdimdef OpenCLUnsupportedRGBA: DiagGroup<"opencl-unsupported-rgba">;
331249423Sdimdef DeprecatedObjCIsaUsage : DiagGroup<"deprecated-objc-isa-usage">;
332280031Sdimdef ExplicitInitializeCall : DiagGroup<"explicit-initialize-call">;
333218893Sdimdef Packed : DiagGroup<"packed">;
334218893Sdimdef Padded : DiagGroup<"padded">;
335288943Sdimdef PessimizingMove : DiagGroup<"pessimizing-move">;
336198092Srdivackydef PointerArith : DiagGroup<"pointer-arith">;
337276479Sdimdef PoundWarning : DiagGroup<"#warnings">;
338234353Sdimdef PoundPragmaMessage : DiagGroup<"#pragma-messages">,
339221345Sdim                         DiagCategory<"#pragma message Directive">;
340193326Seddef : DiagGroup<"pointer-to-int-cast">;
341193326Seddef : DiagGroup<"redundant-decls">;
342261991Sdimdef RedeclaredClassMember : DiagGroup<"redeclared-class-member">;
343261991Sdimdef GNURedeclaredEnum : DiagGroup<"gnu-redeclared-enum">;
344288943Sdimdef RedundantMove : DiagGroup<"redundant-move">;
345296417Sdimdef Register : DiagGroup<"register", [DeprecatedRegister]>;
346249423Sdimdef ReturnStackAddress : DiagGroup<"return-stack-address">;
347234353Sdimdef ReturnTypeCLinkage : DiagGroup<"return-type-c-linkage">;
348234353Sdimdef ReturnType : DiagGroup<"return-type", [ReturnTypeCLinkage]>;
349234353Sdimdef BindToTemporaryCopy : DiagGroup<"bind-to-temporary-copy",
350234353Sdim                                    [CXX98CompatBindToTemporaryCopy]>;
351239462Sdimdef SelfAssignmentField : DiagGroup<"self-assign-field">;
352239462Sdimdef SelfAssignment : DiagGroup<"self-assign", [SelfAssignmentField]>;
353280031Sdimdef SelfMove : DiagGroup<"self-move">;
354199482Srdivackydef SemiBeforeMethodBody : DiagGroup<"semicolon-before-method-body">;
355226633Sdimdef Sentinel : DiagGroup<"sentinel">;
356226633Sdimdef MissingMethodReturnType : DiagGroup<"missing-method-return-type">;
357309124Sdim
358309124Sdimdef ShadowFieldInConstructorModified : DiagGroup<"shadow-field-in-constructor-modified">;
359309124Sdimdef ShadowFieldInConstructor : DiagGroup<"shadow-field-in-constructor",
360309124Sdim                                         [ShadowFieldInConstructorModified]>;
361314564Sdimdef ShadowIvar : DiagGroup<"shadow-ivar">;
362314564Sdimdef ShadowUncapturedLocal : DiagGroup<"shadow-uncaptured-local">;
363309124Sdim
364309124Sdim// -Wshadow-all is a catch-all for all shadowing. -Wshadow is just the
365309124Sdim// shadowing that we think is unsafe.
366314564Sdimdef Shadow : DiagGroup<"shadow", [ShadowFieldInConstructorModified,
367314564Sdim                                  ShadowIvar]>;
368314564Sdimdef ShadowAll : DiagGroup<"shadow-all", [Shadow, ShadowFieldInConstructor,
369314564Sdim                                         ShadowUncapturedLocal]>;
370309124Sdim
371243830Sdimdef Shorten64To32 : DiagGroup<"shorten-64-to-32">;
372210299Seddef : DiagGroup<"sign-promo">;
373199482Srdivackydef SignCompare : DiagGroup<"sign-compare">;
374212904Sdimdef : DiagGroup<"stack-protector">;
375212904Sdimdef : DiagGroup<"switch-default">;
376199482Srdivackydef : DiagGroup<"synth">;
377224145Sdimdef SizeofArrayArgument : DiagGroup<"sizeof-array-argument">;
378249423Sdimdef SizeofArrayDecay : DiagGroup<"sizeof-array-decay">;
379249423Sdimdef SizeofPointerMemaccess : DiagGroup<"sizeof-pointer-memaccess">;
380249423Sdimdef StaticInInline : DiagGroup<"static-in-inline">;
381249423Sdimdef StaticLocalInInline : DiagGroup<"static-local-in-inline">;
382249423Sdimdef GNUStaticFloatInit : DiagGroup<"gnu-static-float-init">;
383249423Sdimdef StaticFloatInit : DiagGroup<"static-float-init", [GNUStaticFloatInit]>;
384261991Sdimdef GNUStatementExpression : DiagGroup<"gnu-statement-expression">;
385276479Sdimdef StringCompare : DiagGroup<"string-compare">;
386234353Sdimdef StringPlusInt : DiagGroup<"string-plus-int">;
387261991Sdimdef StringPlusChar : DiagGroup<"string-plus-char">;
388234353Sdimdef StrncatSize : DiagGroup<"strncat-size">;
389243830Sdimdef TautologicalOutOfRangeCompare : DiagGroup<"tautological-constant-out-of-range-compare">;
390276479Sdimdef TautologicalPointerCompare : DiagGroup<"tautological-pointer-compare">;
391276479Sdimdef TautologicalOverlapCompare : DiagGroup<"tautological-overlap-compare">;
392276479Sdimdef TautologicalUndefinedCompare : DiagGroup<"tautological-undefined-compare">;
393243830Sdimdef TautologicalCompare : DiagGroup<"tautological-compare",
394276479Sdim                                    [TautologicalOutOfRangeCompare,
395276479Sdim                                     TautologicalPointerCompare,
396276479Sdim                                     TautologicalOverlapCompare,
397276479Sdim                                     TautologicalUndefinedCompare]>;
398221345Sdimdef HeaderHygiene : DiagGroup<"header-hygiene">;
399243830Sdimdef DuplicateDeclSpecifier : DiagGroup<"duplicate-decl-specifier">;
400243830Sdimdef CompareDistinctPointerType : DiagGroup<"compare-distinct-pointer-types">;
401261991Sdimdef GNUUnionCast : DiagGroup<"gnu-union-cast">;
402261991Sdimdef GNUVariableSizedTypeNotAtEnd : DiagGroup<"gnu-variable-sized-type-not-at-end">;
403261991Sdimdef Varargs : DiagGroup<"varargs">;
404193326Sed
405249423Sdimdef Unsequenced : DiagGroup<"unsequenced">;
406249423Sdim// GCC name for -Wunsequenced
407249423Sdimdef : DiagGroup<"sequence-point", [Unsequenced]>;
408249423Sdim
409198092Srdivacky// Preprocessor warnings.
410243830Sdimdef AmbiguousMacro : DiagGroup<"ambiguous-macro">;
411280031Sdimdef KeywordAsMacro : DiagGroup<"keyword-macro">;
412280031Sdimdef ReservedIdAsMacro : DiagGroup<"reserved-id-macro">;
413198092Srdivacky
414199990Srdivacky// Just silence warnings about -Wstrict-aliasing for now.
415193326Seddef : DiagGroup<"strict-aliasing=0">;
416193326Seddef : DiagGroup<"strict-aliasing=1">;
417193326Seddef : DiagGroup<"strict-aliasing=2">;
418193326Seddef : DiagGroup<"strict-aliasing">;
419193326Sed
420199990Srdivacky// Just silence warnings about -Wstrict-overflow for now.
421193326Seddef : DiagGroup<"strict-overflow=0">;
422193326Seddef : DiagGroup<"strict-overflow=1">;
423193326Seddef : DiagGroup<"strict-overflow=2">;
424199990Srdivackydef : DiagGroup<"strict-overflow=3">;
425199990Srdivackydef : DiagGroup<"strict-overflow=4">;
426199990Srdivackydef : DiagGroup<"strict-overflow=5">;
427193326Seddef : DiagGroup<"strict-overflow">;
428193326Sed
429193326Seddef InvalidOffsetof : DiagGroup<"invalid-offsetof">;
430193326Seddef : DiagGroup<"strict-prototypes">;
431212904Sdimdef StrictSelector : DiagGroup<"strict-selector-match">;
432234353Sdimdef MethodDuplicate : DiagGroup<"duplicate-method-match">;
433280031Sdimdef ObjCCStringFormat : DiagGroup<"cstring-format-directive">;
434234353Sdimdef CoveredSwitchDefault : DiagGroup<"covered-switch-default">;
435276479Sdimdef SwitchBool     : DiagGroup<"switch-bool">;
436203955Srdivackydef SwitchEnum     : DiagGroup<"switch-enum">;
437234353Sdimdef Switch         : DiagGroup<"switch">;
438239462Sdimdef ImplicitFallthroughPerFunction :
439239462Sdim  DiagGroup<"implicit-fallthrough-per-function">;
440239462Sdimdef ImplicitFallthrough  : DiagGroup<"implicit-fallthrough",
441239462Sdim                                     [ImplicitFallthroughPerFunction]>;
442239462Sdimdef InvalidPPToken : DiagGroup<"invalid-pp-token">;
443207632Srdivackydef Trigraphs      : DiagGroup<"trigraphs">;
444193326Sed
445193326Seddef : DiagGroup<"type-limits">;
446249423Sdimdef UndefinedReinterpretCast : DiagGroup<"undefined-reinterpret-cast">;
447249423Sdimdef ReinterpretBaseClass : DiagGroup<"reinterpret-base-class">;
448234353Sdimdef Unicode  : DiagGroup<"unicode">;
449221345Sdimdef UninitializedMaybe : DiagGroup<"conditional-uninitialized">;
450239462Sdimdef UninitializedSometimes : DiagGroup<"sometimes-uninitialized">;
451249423Sdimdef UninitializedStaticSelfInit : DiagGroup<"static-self-init">;
452249423Sdimdef Uninitialized  : DiagGroup<"uninitialized", [UninitializedSometimes,
453249423Sdim                                                 UninitializedStaticSelfInit]>;
454314564Sdimdef IgnoredPragmaIntrinsic : DiagGroup<"ignored-pragma-intrinsic">;
455193326Seddef UnknownPragmas : DiagGroup<"unknown-pragmas">;
456314564Sdimdef IgnoredPragmas : DiagGroup<"ignored-pragmas", [IgnoredPragmaIntrinsic]>;
457276479Sdimdef Pragmas : DiagGroup<"pragmas", [UnknownPragmas, IgnoredPragmas]>;
458249423Sdimdef UnknownWarningOption : DiagGroup<"unknown-warning-option">;
459234353Sdimdef NSobjectAttribute : DiagGroup<"NSObject-attribute">;
460288943Sdimdef IndependentClassAttribute : DiagGroup<"IndependentClass-attribute">;
461276479Sdimdef UnknownAttributes : DiagGroup<"unknown-attributes">;
462234353Sdimdef IgnoredAttributes : DiagGroup<"ignored-attributes">;
463276479Sdimdef Attributes : DiagGroup<"attributes", [UnknownAttributes,
464276479Sdim                                          IgnoredAttributes]>;
465288943Sdimdef UnknownSanitizers : DiagGroup<"unknown-sanitizers">;
466234353Sdimdef UnnamedTypeTemplateArgs : DiagGroup<"unnamed-type-template-args",
467234353Sdim                                        [CXX98CompatUnnamedTypeTemplateArgs]>;
468261991Sdimdef UnsupportedFriend : DiagGroup<"unsupported-friend">;
469193725Seddef UnusedArgument : DiagGroup<"unused-argument">;
470276479Sdimdef UnusedCommandLineArgument : DiagGroup<"unused-command-line-argument">;
471280031Sdimdef IgnoredOptimizationArgument : DiagGroup<"ignored-optimization-argument">;
472280031Sdimdef InvalidCommandLineArgument : DiagGroup<"invalid-command-line-argument",
473280031Sdim                                           [IgnoredOptimizationArgument]>;
474226633Sdimdef UnusedComparison : DiagGroup<"unused-comparison">;
475207619Srdivackydef UnusedExceptionParameter : DiagGroup<"unused-exception-parameter">;
476221345Sdimdef UnneededInternalDecl : DiagGroup<"unneeded-internal-declaration">;
477221345Sdimdef UnneededMemberFunction : DiagGroup<"unneeded-member-function">;
478239462Sdimdef UnusedPrivateField : DiagGroup<"unused-private-field">;
479221345Sdimdef UnusedFunction : DiagGroup<"unused-function", [UnneededInternalDecl]>;
480221345Sdimdef UnusedMemberFunction : DiagGroup<"unused-member-function",
481221345Sdim                                     [UnneededMemberFunction]>;
482193725Seddef UnusedLabel : DiagGroup<"unused-label">;
483193725Seddef UnusedParameter : DiagGroup<"unused-parameter">;
484226633Sdimdef UnusedResult : DiagGroup<"unused-result">;
485280031Sdimdef PotentiallyEvaluatedExpression : DiagGroup<"potentially-evaluated-expression">;
486280031Sdimdef UnevaluatedExpression : DiagGroup<"unevaluated-expression",
487280031Sdim                                      [PotentiallyEvaluatedExpression]>;
488280031Sdimdef UnusedValue : DiagGroup<"unused-value", [UnusedComparison, UnusedResult,
489280031Sdim                                             UnevaluatedExpression]>;
490261991Sdimdef UnusedConstVariable : DiagGroup<"unused-const-variable">;
491261991Sdimdef UnusedVariable : DiagGroup<"unused-variable",
492261991Sdim                               [UnusedConstVariable]>;
493280031Sdimdef UnusedLocalTypedef : DiagGroup<"unused-local-typedef">;
494261991Sdimdef UnusedPropertyIvar :  DiagGroup<"unused-property-ivar">;
495280031Sdimdef UnusedGetterReturnValue : DiagGroup<"unused-getter-return-value">;
496218893Sdimdef UsedButMarkedUnused : DiagGroup<"used-but-marked-unused">;
497226633Sdimdef UserDefinedLiterals : DiagGroup<"user-defined-literals">;
498314564Sdimdef UserDefinedWarnings : DiagGroup<"user-defined-warnings">;
499198092Srdivackydef Reorder : DiagGroup<"reorder">;
500194613Seddef UndeclaredSelector : DiagGroup<"undeclared-selector">;
501218893Sdimdef ImplicitAtomic : DiagGroup<"implicit-atomic-properties">;
502218893Sdimdef CustomAtomic : DiagGroup<"custom-atomic-properties">;
503218893Sdimdef AtomicProperties : DiagGroup<"atomic-properties",
504218893Sdim                                 [ImplicitAtomic, CustomAtomic]>;
505224145Sdimdef ARCUnsafeRetainedAssign : DiagGroup<"arc-unsafe-retained-assign">;
506224145Sdimdef ARCRetainCycles : DiagGroup<"arc-retain-cycles">;
507224145Sdimdef ARCNonPodMemAccess : DiagGroup<"arc-non-pod-memaccess">;
508224145Sdimdef AutomaticReferenceCounting : DiagGroup<"arc",
509243830Sdim                                           [ARCUnsafeRetainedAssign,
510224145Sdim                                            ARCRetainCycles,
511224145Sdim                                            ARCNonPodMemAccess]>;
512243830Sdimdef ARCRepeatedUseOfWeakMaybe : DiagGroup<"arc-maybe-repeated-use-of-weak">;
513243830Sdimdef ARCRepeatedUseOfWeak : DiagGroup<"arc-repeated-use-of-weak",
514243830Sdim                                     [ARCRepeatedUseOfWeakMaybe]>;
515314564Sdimdef BlockCaptureAutoReleasing : DiagGroup<"block-capture-autoreleasing">;
516261991Sdimdef ObjCBridge : DiagGroup<"bridge-cast">;
517261991Sdim
518276479Sdimdef DeallocInCategory:DiagGroup<"dealloc-in-category">;
519261991Sdimdef SelectorTypeMismatch : DiagGroup<"selector-type-mismatch">;
520261991Sdimdef Selector : DiagGroup<"selector", [SelectorTypeMismatch]>;
521206084Srdivackydef Protocol : DiagGroup<"protocol">;
522280031Sdimdef AtProtocol : DiagGroup<"at-protocol">;
523280031Sdimdef PropertyAccessDotSyntax: DiagGroup<"property-access-dot-syntax">;
524280031Sdimdef PropertyAttr : DiagGroup<"property-attribute-mismatch">;
525198092Srdivackydef SuperSubClassMismatch : DiagGroup<"super-class-method-mismatch">;
526226633Sdimdef OverridingMethodMismatch : DiagGroup<"overriding-method-mismatch">;
527200583Srdivackydef VariadicMacros : DiagGroup<"variadic-macros">;
528234353Sdimdef VectorConversion : DiagGroup<"vector-conversion">;      // clang specific
529234353Sdimdef VexingParse : DiagGroup<"vexing-parse">;
530208600Srdivackydef VLA : DiagGroup<"vla">;
531249423Sdimdef VLAExtension : DiagGroup<"vla-extension">;
532193326Seddef VolatileRegisterVar : DiagGroup<"volatile-register-var">;
533234353Sdimdef Visibility : DiagGroup<"visibility">;
534243830Sdimdef ZeroLengthArray : DiagGroup<"zero-length-array">;
535261991Sdimdef GNUZeroLineDirective : DiagGroup<"gnu-zero-line-directive">;
536261991Sdimdef GNUZeroVariadicMacroArguments : DiagGroup<"gnu-zero-variadic-macro-arguments">;
537276479Sdimdef Fallback : DiagGroup<"fallback">;
538221345Sdim
539276479Sdim// This covers both the deprecated case (in C++98)
540276479Sdim// and the extension case (in C++11 onwards).
541276479Sdimdef WritableStrings : DiagGroup<"writable-strings", [DeprecatedWritableStr]>;
542276479Sdim
543221345Sdim// GCC calls -Wdeprecated-writable-strings -Wwrite-strings.
544276479Sdim//
545276479Sdim// Bizarrely, this warning flag enables -fconst-strings in C. This is
546276479Sdim// GCC-compatible, but really weird.
547276479Sdim//
548276479Sdim// FIXME: Should this affect C++11 (where this is an error,
549276479Sdim//        not just deprecated) or not?
550276479Sdimdef GCCWriteStrings : DiagGroup<"write-strings" , [WritableStrings]>;
551221345Sdim
552198092Srdivackydef CharSubscript : DiagGroup<"char-subscripts">;
553218893Sdimdef LargeByValueCopy : DiagGroup<"large-by-value-copy">;
554221345Sdimdef DuplicateArgDecl : DiagGroup<"duplicate-method-arg">;
555314564Sdimdef SignedEnumBitfield : DiagGroup<"signed-enum-bitfield">;
556193326Sed
557276479Sdim// Unreachable code warning groups.
558276479Sdim//
559276479Sdim//  The goal is make -Wunreachable-code on by default, in -Wall, or at
560276479Sdim//  least actively used, with more noisy versions of the warning covered
561276479Sdim//  under separate flags.
562276479Sdim//
563276479Sdimdef UnreachableCodeLoopIncrement : DiagGroup<"unreachable-code-loop-increment">;
564276479Sdimdef UnreachableCode : DiagGroup<"unreachable-code",
565276479Sdim                                [UnreachableCodeLoopIncrement]>;
566276479Sdimdef UnreachableCodeBreak : DiagGroup<"unreachable-code-break">;
567276479Sdimdef UnreachableCodeReturn : DiagGroup<"unreachable-code-return">;
568276479Sdimdef UnreachableCodeAggressive : DiagGroup<"unreachable-code-aggressive",
569276479Sdim                                    [UnreachableCode,
570276479Sdim                                     UnreachableCodeBreak,
571276479Sdim                                     UnreachableCodeReturn]>;
572276479Sdim
573193326Sed// Aggregation warning settings.
574193326Sed
575276479Sdim// Populate -Waddress with warnings from other groups.
576276479Sdimdef : DiagGroup<"address", [PointerBoolConversion,
577276479Sdim                            StringCompare,
578276479Sdim                            TautologicalPointerCompare]>;
579276479Sdim
580199482Srdivacky// -Widiomatic-parentheses contains warnings about 'idiomatic'
581221345Sdim// missing parentheses;  it is off by default.  We do not include it
582221345Sdim// in -Wparentheses because most users who use -Wparentheses explicitly
583221345Sdim// do not want these warnings.
584226633Sdimdef ParenthesesOnEquality : DiagGroup<"parentheses-equality">;
585218893Sdimdef Parentheses : DiagGroup<"parentheses",
586224145Sdim                            [LogicalOpParentheses,
587261991Sdim                             LogicalNotParentheses,
588226633Sdim                             BitwiseOpParentheses,
589243830Sdim                             ShiftOpParentheses,
590251662Sdim                             OverloadedShiftOpParentheses,
591234353Sdim                             ParenthesesOnEquality,
592234353Sdim                             DanglingElse]>;
593193326Sed
594218893Sdim// -Wconversion has its own warnings, but we split a few out for
595218893Sdim// legacy reasons:
596218893Sdim//   - some people want just 64-to-32 warnings
597218893Sdim//   - conversion warnings with constant sources are on by default
598218893Sdim//   - conversion warnings for literals are on by default
599218893Sdim//   - bool-to-pointer conversion warnings are on by default
600234353Sdim//   - __null-to-integer conversion warnings are on by default
601199482Srdivackydef Conversion : DiagGroup<"conversion",
602243830Sdim                           [BoolConversion,
603234353Sdim                            ConstantConversion,
604243830Sdim                            EnumConversion,
605276479Sdim                            FloatConversion,
606243830Sdim                            Shorten64To32,
607243830Sdim                            IntConversion,
608234353Sdim                            LiteralConversion,
609243830Sdim                            NonLiteralNullConversion, // (1-1)->pointer (etc)
610243830Sdim                            NullConversion, // NULL->non-pointer
611276479Sdim                            ObjCLiteralConversion,
612234353Sdim                            SignConversion,
613243830Sdim                            StringConversion]>,
614208600Srdivacky                 DiagCategory<"Value Conversion Issue">;
615199482Srdivacky
616193725Seddef Unused : DiagGroup<"unused",
617193725Sed                       [UnusedArgument, UnusedFunction, UnusedLabel,
618207619Srdivacky                        // UnusedParameter, (matches GCC's behavior)
619212904Sdim                        // UnusedMemberFunction, (clean-up llvm before enabling)
620280031Sdim                        UnusedPrivateField, UnusedLocalTypedef,
621261991Sdim                        UnusedValue, UnusedVariable, UnusedPropertyIvar]>,
622208600Srdivacky                        DiagCategory<"Unused Entity Issue">;
623193725Sed
624193326Sed// Format settings.
625226633Sdimdef FormatInvalidSpecifier : DiagGroup<"format-invalid-specifier">;
626219077Sdimdef FormatSecurity : DiagGroup<"format-security">;
627234353Sdimdef FormatNonStandard : DiagGroup<"format-non-iso">;
628224145Sdimdef FormatY2K : DiagGroup<"format-y2k">;
629288943Sdimdef FormatPedantic : DiagGroup<"format-pedantic">;
630219077Sdimdef Format : DiagGroup<"format",
631219077Sdim                       [FormatExtraArgs, FormatZeroLength, NonNull,
632226633Sdim                        FormatSecurity, FormatY2K, FormatInvalidSpecifier]>,
633208600Srdivacky             DiagCategory<"Format String Issue">;
634276479Sdimdef FormatNonLiteral : DiagGroup<"format-nonliteral">;
635193326Seddef Format2 : DiagGroup<"format=2",
636193326Sed                        [FormatNonLiteral, FormatSecurity, FormatY2K]>;
637193326Sed
638239462Sdimdef TypeSafety : DiagGroup<"type-safety">;
639239462Sdim
640314564Sdimdef IncompatibleExceptionSpec : DiagGroup<"incompatible-exception-spec">;
641314564Sdim
642261991Sdimdef IntToVoidPointerCast : DiagGroup<"int-to-void-pointer-cast">;
643261991Sdimdef IntToPointerCast : DiagGroup<"int-to-pointer-cast",
644261991Sdim                                 [IntToVoidPointerCast]>;
645243830Sdim
646288943Sdimdef Move : DiagGroup<"move", [PessimizingMove, RedundantMove, SelfMove]>;
647288943Sdim
648194613Seddef Extra : DiagGroup<"extra", [
649205219Srdivacky    MissingFieldInitializers,
650210299Sed    IgnoredQualifiers,
651210299Sed    InitializerOverrides,
652199482Srdivacky    SemiBeforeMethodBody,
653226633Sdim    MissingMethodReturnType,
654199482Srdivacky    SignCompare,
655194613Sed    UnusedParameter
656194613Sed  ]>;
657193326Sed
658193326Seddef Most : DiagGroup<"most", [
659207619Srdivacky    CharSubscript,
660193326Sed    Comment,
661223017Sdim    DeleteNonVirtualDtor,
662296417Sdim    ForLoopAnalysis,
663193326Sed    Format,
664193326Sed    Implicit,
665288943Sdim    InfiniteRecursion,
666193326Sed    MismatchedTags,
667204962Srdivacky    MissingBraces,
668288943Sdim    Move,
669193326Sed    MultiChar,
670207619Srdivacky    Reorder,
671198092Srdivacky    ReturnType,
672218893Sdim    SelfAssignment,
673280031Sdim    SelfMove,
674224145Sdim    SizeofArrayArgument,
675249423Sdim    SizeofArrayDecay,
676234353Sdim    StringPlusInt,
677193326Sed    Trigraphs,
678193326Sed    Uninitialized,
679193326Sed    UnknownPragmas,
680207619Srdivacky    Unused,
681218893Sdim    VolatileRegisterVar,
682226633Sdim    ObjCMissingSuperCalls,
683276479Sdim    ObjCDesignatedInit,
684239462Sdim    OverloadedVirtual,
685239462Sdim    PrivateExtern,
686261991Sdim    SelTypeCast,
687314564Sdim    ExternCCompat,
688314564Sdim    UserDefinedWarnings
689193326Sed ]>;
690193326Sed
691226633Sdim// Thread Safety warnings 
692239462Sdimdef ThreadSafetyAttributes : DiagGroup<"thread-safety-attributes">;
693243830Sdimdef ThreadSafetyAnalysis   : DiagGroup<"thread-safety-analysis">;
694243830Sdimdef ThreadSafetyPrecise    : DiagGroup<"thread-safety-precise">;
695280031Sdimdef ThreadSafetyReference  : DiagGroup<"thread-safety-reference">;
696280031Sdimdef ThreadSafetyNegative   : DiagGroup<"thread-safety-negative">;
697243830Sdimdef ThreadSafety : DiagGroup<"thread-safety",
698243830Sdim                             [ThreadSafetyAttributes, 
699243830Sdim                              ThreadSafetyAnalysis,
700280031Sdim                              ThreadSafetyPrecise,
701280031Sdim                              ThreadSafetyReference]>;
702280031Sdimdef ThreadSafetyVerbose : DiagGroup<"thread-safety-verbose">;
703249423Sdimdef ThreadSafetyBeta : DiagGroup<"thread-safety-beta">;
704226633Sdim
705261991Sdim// Uniqueness Analysis warnings
706261991Sdimdef Consumed       : DiagGroup<"consumed">;
707261991Sdim
708234353Sdim// Note that putting warnings in -Wall will not disable them by default. If a
709234353Sdim// warning should be active _only_ when -Wall is passed in, mark it as
710234353Sdim// DefaultIgnore in addition to putting it here.
711296417Sdimdef All : DiagGroup<"all", [Most, Parentheses, Switch, SwitchBool]>;
712193326Sed
713296417Sdim// Warnings that should be in clang-cl /w4.
714296417Sdimdef : DiagGroup<"CL4", [All, Extra]>;
715296417Sdim
716239462Sdim// Warnings enabled by -pedantic.  This is magically filled in by TableGen.
717239462Sdimdef Pedantic : DiagGroup<"pedantic">;
718239462Sdim
719193326Sed// Aliases.
720201361Srdivackydef : DiagGroup<"", [Extra]>;                   // -W = -Wextra
721261991Sdimdef : DiagGroup<"endif-labels", [ExtraTokens]>; // -Wendif-labels=-Wextra-tokens
722201361Srdivackydef : DiagGroup<"comments", [Comment]>;         // -Wcomments = -Wcomment
723234353Sdimdef : DiagGroup<"conversion-null",
724234353Sdim                [NullConversion]>; // -Wconversion-null = -Wnull-conversion
725234353Sdimdef : DiagGroup<"bool-conversions",
726234353Sdim                [BoolConversion]>; // -Wbool-conversions  = -Wbool-conversion
727234353Sdimdef : DiagGroup<"int-conversions",
728234353Sdim                [IntConversion]>; // -Wint-conversions = -Wint-conversion
729234353Sdimdef : DiagGroup<"vector-conversions",
730234353Sdim                [VectorConversion]>; // -Wvector-conversions = -Wvector-conversion
731280031Sdimdef : DiagGroup<"unused-local-typedefs", [UnusedLocalTypedef]>;
732280031Sdim                // -Wunused-local-typedefs = -Wunused-local-typedef
733193326Sed
734199482Srdivacky// A warning group for warnings that we want to have on by default in clang,
735199482Srdivacky// but which aren't on by default in GCC.
736199482Srdivackydef NonGCC : DiagGroup<"non-gcc",
737204962Srdivacky    [SignCompare, Conversion, LiteralRange]>;
738206084Srdivacky
739226633Sdim// A warning group for warnings about using C++11 features as extensions in
740218893Sdim// earlier C++ versions.
741296417Sdimdef CXX11 : DiagGroup<"c++11-extensions", [CXX11ExtraSemi, CXX11InlineNamespace,
742296417Sdim                                           CXX11LongLong]>;
743243830Sdim
744280031Sdim// A warning group for warnings about using C++14 features as extensions in
745251662Sdim// earlier C++ versions.
746296417Sdimdef CXX14 : DiagGroup<"c++14-extensions", [CXX14BinaryLiteral]>;
747251662Sdim
748276479Sdim// A warning group for warnings about using C++1z features as extensions in
749276479Sdim// earlier C++ versions.
750276479Sdimdef CXX1z : DiagGroup<"c++1z-extensions">;
751276479Sdim
752226633Sdimdef : DiagGroup<"c++0x-extensions", [CXX11]>;
753280031Sdimdef : DiagGroup<"c++1y-extensions", [CXX14]>;
754280031Sdim
755223017Sdimdef DelegatingCtorCycles :
756223017Sdim  DiagGroup<"delegating-ctor-cycles">;
757218893Sdim
758234353Sdim// A warning group for warnings about using C11 features as extensions.
759234353Sdimdef C11 : DiagGroup<"c11-extensions">;
760226633Sdim
761234353Sdim// A warning group for warnings about using C99 features as extensions.
762234353Sdimdef C99 : DiagGroup<"c99-extensions">;
763234353Sdim
764206084Srdivacky// A warning group for warnings about GCC extensions.
765261991Sdimdef GNU : DiagGroup<"gnu", [GNUAlignofExpression, GNUAnonymousStruct,
766296417Sdim                            GNUAutoType,
767261991Sdim                            GNUBinaryLiteral, GNUCaseRange,
768261991Sdim                            GNUComplexInteger, GNUCompoundLiteralInitializer,
769261991Sdim                            GNUConditionalOmittedOperand, GNUDesignator,
770261991Sdim                            GNUEmptyInitializer, GNUEmptyStruct,
771261991Sdim                            VLAExtension, GNUFlexibleArrayInitializer,
772261991Sdim                            GNUFlexibleArrayUnionMember, GNUFoldingConstant,
773296417Sdim                            GNUImaginaryConstant, GNUIncludeNext,
774296417Sdim                            GNULabelsAsValue,
775261991Sdim                            RedeclaredClassMember, GNURedeclaredEnum,
776261991Sdim                            GNUStatementExpression, GNUStaticFloatInit,
777261991Sdim                            GNUStringLiteralOperatorTemplate,
778261991Sdim                            GNUUnionCast, GNUVariableSizedTypeNotAtEnd,
779261991Sdim                            ZeroLengthArray, GNUZeroLineDirective,
780261991Sdim                            GNUZeroVariadicMacroArguments]>;
781234353Sdim// A warning group for warnings about code that clang accepts but gcc doesn't.
782234353Sdimdef GccCompat : DiagGroup<"gcc-compat">;
783218893Sdim
784296417Sdim// Warnings for Microsoft extensions.
785296417Sdimdef MicrosoftCharize : DiagGroup<"microsoft-charize">;
786296417Sdimdef MicrosoftInclude : DiagGroup<"microsoft-include">;
787296417Sdimdef MicrosoftCppMacro : DiagGroup<"microsoft-cpp-macro">;
788296417Sdimdef MicrosoftFixedEnum : DiagGroup<"microsoft-fixed-enum">;
789296417Sdimdef MicrosoftSealed : DiagGroup<"microsoft-sealed">;
790296417Sdimdef MicrosoftUnqualifiedFriend : DiagGroup<"microsoft-unqualified-friend">;
791296417Sdimdef MicrosoftExceptionSpec : DiagGroup<"microsoft-exception-spec">;
792296417Sdimdef MicrosoftUsingDecl : DiagGroup<"microsoft-using-decl">;
793296417Sdimdef MicrosoftMutableReference : DiagGroup<"microsoft-mutable-reference">;
794296417Sdimdef MicrosoftPureDefinition : DiagGroup<"microsoft-pure-definition">;
795296417Sdimdef MicrosoftUnionMemberReference : DiagGroup<
796296417Sdim    "microsoft-union-member-reference">;
797296417Sdimdef MicrosoftExplicitConstructorCall : DiagGroup<
798296417Sdim    "microsoft-explicit-constructor-call">;
799296417Sdimdef MicrosoftEnumValue : DiagGroup<"microsoft-enum-value">;
800296417Sdimdef MicrosoftDefaultArgRedefinition :
801296417Sdim    DiagGroup<"microsoft-default-arg-redefinition">;
802296417Sdimdef MicrosoftTemplate : DiagGroup<"microsoft-template">;
803309124Sdimdef MicrosoftInconsistentDllImport : DiagGroup<"inconsistent-dllimport">;
804296417Sdimdef MicrosoftRedeclareStatic : DiagGroup<"microsoft-redeclare-static">;
805296417Sdimdef MicrosoftEnumForwardReference :
806296417Sdim    DiagGroup<"microsoft-enum-forward-reference">;
807296417Sdimdef MicrosoftGoto : DiagGroup<"microsoft-goto">;
808296417Sdimdef MicrosoftFlexibleArray : DiagGroup<"microsoft-flexible-array">;
809296417Sdimdef MicrosoftExtraQualification : DiagGroup<"microsoft-extra-qualification">;
810296417Sdimdef MicrosoftCast : DiagGroup<"microsoft-cast">;
811296417Sdimdef MicrosoftConstInit : DiagGroup<"microsoft-const-init">;
812296417Sdimdef MicrosoftVoidPseudoDtor : DiagGroup<"microsoft-void-pseudo-dtor">;
813296417Sdimdef MicrosoftAnonTag : DiagGroup<"microsoft-anon-tag">;
814296417Sdimdef MicrosoftCommentPaste : DiagGroup<"microsoft-comment-paste">;
815296417Sdimdef MicrosoftEndOfFile : DiagGroup<"microsoft-end-of-file">;
816296417Sdim// Aliases.
817296417Sdimdef : DiagGroup<"msvc-include", [MicrosoftInclude]>;
818296417Sdim                // -Wmsvc-include = -Wmicrosoft-include
819224145Sdim
820296417Sdim// Warnings group for warnings about Microsoft extensions.
821296417Sdimdef Microsoft : DiagGroup<"microsoft",
822296417Sdim    [MicrosoftCharize, MicrosoftInclude, MicrosoftCppMacro, MicrosoftFixedEnum,
823296417Sdim     MicrosoftSealed, MicrosoftUnqualifiedFriend, MicrosoftExceptionSpec,
824296417Sdim     MicrosoftUsingDecl, MicrosoftMutableReference, MicrosoftPureDefinition,
825296417Sdim     MicrosoftUnionMemberReference, MicrosoftExplicitConstructorCall,
826296417Sdim     MicrosoftEnumValue, MicrosoftDefaultArgRedefinition, MicrosoftTemplate,
827296417Sdim     MicrosoftRedeclareStatic, MicrosoftEnumForwardReference, MicrosoftGoto,
828296417Sdim     MicrosoftFlexibleArray, MicrosoftExtraQualification, MicrosoftCast,
829296417Sdim     MicrosoftConstInit, MicrosoftVoidPseudoDtor, MicrosoftAnonTag,
830309124Sdim     MicrosoftCommentPaste, MicrosoftEndOfFile,
831309124Sdim     MicrosoftInconsistentDllImport]>;
832296417Sdim
833309124Sdimdef ClangClPch : DiagGroup<"clang-cl-pch">;
834309124Sdim
835224145Sdimdef ObjCNonUnifiedException : DiagGroup<"objc-nonunified-exceptions">;
836224145Sdim
837226633Sdimdef ObjCProtocolMethodImpl : DiagGroup<"objc-protocol-method-implementation">;
838234353Sdim
839249423Sdimdef ObjCNoPropertyAutoSynthesis : DiagGroup<"objc-property-synthesis">;
840249423Sdim
841234353Sdim// ObjC API warning groups.
842234353Sdimdef ObjCRedundantLiteralUse : DiagGroup<"objc-redundant-literal-use">;
843234353Sdimdef ObjCRedundantAPIUse : DiagGroup<"objc-redundant-api-use", [
844234353Sdim    ObjCRedundantLiteralUse
845234353Sdim  ]>;
846234353Sdim
847234353Sdimdef ObjCCocoaAPI : DiagGroup<"objc-cocoa-api", [
848234353Sdim    ObjCRedundantAPIUse
849234353Sdim  ]>;
850239462Sdim
851239462Sdimdef ObjCStringComparison : DiagGroup<"objc-string-compare">;
852261991Sdimdef ObjCStringConcatenation : DiagGroup<"objc-string-concatenation">;
853239462Sdimdef ObjCLiteralComparison : DiagGroup<"objc-literal-compare", [
854239462Sdim    ObjCStringComparison
855239462Sdim  ]>;
856243830Sdim
857243830Sdim// Inline ASM warnings.
858243830Sdimdef ASMOperandWidths : DiagGroup<"asm-operand-widths">;
859314564Sdimdef ASMIgnoredQualifier : DiagGroup<"asm-ignored-qualifier">;
860243830Sdimdef ASM : DiagGroup<"asm", [
861314564Sdim    ASMOperandWidths, ASMIgnoredQualifier
862243830Sdim  ]>;
863249423Sdim
864249423Sdim// OpenMP warnings.
865249423Sdimdef SourceUsesOpenMP : DiagGroup<"source-uses-openmp">;
866276479Sdimdef OpenMPClauses : DiagGroup<"openmp-clauses">;
867276479Sdimdef OpenMPLoopForm : DiagGroup<"openmp-loop-form">;
868309124Sdimdef OpenMPTarget : DiagGroup<"openmp-target">;
869276479Sdim
870276479Sdim// Backend warnings.
871276479Sdimdef BackendInlineAsm : DiagGroup<"inline-asm">;
872276479Sdimdef BackendFrameLargerThanEQ : DiagGroup<"frame-larger-than=">;
873276479Sdimdef BackendPlugin : DiagGroup<"backend-plugin">;
874276479Sdimdef RemarkBackendPlugin : DiagGroup<"remark-backend-plugin">;
875276479Sdimdef BackendOptimizationRemark : DiagGroup<"pass">;
876276479Sdimdef BackendOptimizationRemarkMissed : DiagGroup<"pass-missed">;
877276479Sdimdef BackendOptimizationRemarkAnalysis : DiagGroup<"pass-analysis">;
878276479Sdimdef BackendOptimizationFailure : DiagGroup<"pass-failed">;
879276479Sdim
880276479Sdim// Instrumentation based profiling warnings.
881276479Sdimdef ProfileInstrOutOfDate : DiagGroup<"profile-instr-out-of-date">;
882276479Sdimdef ProfileInstrUnprofiled : DiagGroup<"profile-instr-unprofiled">;
883276479Sdim
884280031Sdim// AddressSanitizer frontent instrumentation remarks.
885280031Sdimdef SanitizeAddressRemarks : DiagGroup<"sanitize-address">;
886280031Sdim
887280031Sdim// Issues with serialized diagnostics.
888280031Sdimdef SerializedDiagnostics : DiagGroup<"serialized-diagnostics">;
889280031Sdim
890276479Sdim// A warning group for warnings about code that clang accepts when
891276479Sdim// compiling CUDA C/C++ but which is not compatible with the CUDA spec.
892276479Sdimdef CudaCompat : DiagGroup<"cuda-compat">;
893280031Sdim
894280031Sdim// A warning group for things that will change semantics in the future.
895280031Sdimdef FutureCompat : DiagGroup<"future-compat">;
896296417Sdim
897296417Sdimdef InvalidOrNonExistentDirectory : DiagGroup<"invalid-or-nonexistent-directory">;
898296417Sdim
899296417Sdimdef OptionIgnored : DiagGroup<"option-ignored">;
900309124Sdim
901309124Sdimdef UnknownArgument : DiagGroup<"unknown-argument">;
902314564Sdim
903314564Sdim// A warning group for warnings about code that clang accepts when
904314564Sdim// compiling OpenCL C/C++ but which is not compatible with the SPIR spec.
905314564Sdimdef SpirCompat : DiagGroup<"spir-compat">;
906