DiagnosticGroups.td revision 280031
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">;
27249423Sdimdef ArrayBounds : DiagGroup<"array-bounds">;
28249423Sdimdef ArrayBoundsPointerArithmetic : DiagGroup<"array-bounds-pointer-arithmetic">;
29221345Sdimdef Availability : DiagGroup<"availability">;
30239462Sdimdef Section : DiagGroup<"section">;
31234353Sdimdef AutoImport : DiagGroup<"auto-import">;
32261991Sdimdef GNUBinaryLiteral : DiagGroup<"gnu-binary-literal">;
33261991Sdimdef GNUCompoundLiteralInitializer : DiagGroup<"gnu-compound-literal-initializer">;
34251662Sdimdef BitFieldConstantConversion : DiagGroup<"bitfield-constant-conversion">;
35251662Sdimdef ConstantConversion :
36251662Sdim  DiagGroup<"constant-conversion", [ BitFieldConstantConversion ] >;
37234353Sdimdef LiteralConversion : DiagGroup<"literal-conversion">;
38234353Sdimdef StringConversion : DiagGroup<"string-conversion">;
39234353Sdimdef SignConversion : DiagGroup<"sign-conversion">;
40276479Sdimdef PointerBoolConversion : DiagGroup<"pointer-bool-conversion">;
41276479Sdimdef UndefinedBoolConversion : DiagGroup<"undefined-bool-conversion">;
42276479Sdimdef BoolConversion : DiagGroup<"bool-conversion", [PointerBoolConversion,
43276479Sdim                                                   UndefinedBoolConversion]>;
44234353Sdimdef IntConversion : DiagGroup<"int-conversion">;
45243830Sdimdef EnumConversion : DiagGroup<"enum-conversion">;
46276479Sdimdef FloatConversion : DiagGroup<"float-conversion">;
47276479Sdimdef EnumTooLarge : DiagGroup<"enum-too-large">;
48239462Sdimdef NonLiteralNullConversion : DiagGroup<"non-literal-null-conversion">;
49234353Sdimdef NullConversion : DiagGroup<"null-conversion">;
50243830Sdimdef ImplicitConversionFloatingPointToBool :
51243830Sdim  DiagGroup<"implicit-conversion-floating-point-to-bool">;
52276479Sdimdef ObjCLiteralConversion : DiagGroup<"objc-literal-conversion">;
53249423Sdimdef BadArrayNewLength : DiagGroup<"bad-array-new-length">;
54276479Sdimdef MacroRedefined : DiagGroup<"macro-redefined">;
55249423Sdimdef BuiltinMacroRedefined : DiagGroup<"builtin-macro-redefined">;
56227737Sdimdef BuiltinRequiresHeader : DiagGroup<"builtin-requires-header">;
57249423Sdimdef C99Compat : DiagGroup<"c99-compat">;
58212904Sdimdef CXXCompat: DiagGroup<"c++-compat">;
59261991Sdimdef ExternCCompat : DiagGroup<"extern-c-compat">;
60261991Sdimdef KeywordCompat : DiagGroup<"keyword-compat">;
61261991Sdimdef GNUCaseRange : DiagGroup<"gnu-case-range">;
62212904Sdimdef CastAlign : DiagGroup<"cast-align">;
63280031Sdimdef CastQual : DiagGroup<"cast-qual">;
64193326Seddef : DiagGroup<"char-align">;
65193326Seddef Comment : DiagGroup<"comment">;
66261991Sdimdef GNUComplexInteger : DiagGroup<"gnu-complex-integer">;
67261991Sdimdef GNUConditionalOmittedOperand : DiagGroup<"gnu-conditional-omitted-operand">;
68249423Sdimdef ConfigMacros : DiagGroup<"config-macros">;
69199482Srdivackydef : DiagGroup<"ctor-dtor-privacy">;
70206084Srdivackydef GNUDesignator : DiagGroup<"gnu-designator">;
71261991Sdimdef GNUStringLiteralOperatorTemplate :
72261991Sdim  DiagGroup<"gnu-string-literal-operator-template">;
73212904Sdim
74280031Sdimdef DeleteIncomplete : DiagGroup<"delete-incomplete">;
75223017Sdimdef DeleteNonVirtualDtor : DiagGroup<"delete-non-virtual-dtor">;
76243830Sdimdef AbstractFinalClass : DiagGroup<"abstract-final-class">;
77223017Sdim
78261991Sdimdef CXX11CompatDeprecatedWritableStr :
79261991Sdim  DiagGroup<"c++11-compat-deprecated-writable-strings">;
80261991Sdim
81212904Sdimdef DeprecatedDeclarations : DiagGroup<"deprecated-declarations">;
82276479Sdimdef UnavailableDeclarations : DiagGroup<"unavailable-declarations">;
83261991Sdimdef DeprecatedImplementations :DiagGroup<"deprecated-implementations">;
84261991Sdimdef DeprecatedIncrementBool : DiagGroup<"deprecated-increment-bool">;
85261991Sdimdef DeprecatedRegister : DiagGroup<"deprecated-register">;
86261991Sdimdef DeprecatedWritableStr : DiagGroup<"deprecated-writable-strings",
87261991Sdim                                      [CXX11CompatDeprecatedWritableStr]>;
88276479Sdim// FIXME: Why is DeprecatedImplementations not in this group?
89261991Sdimdef Deprecated : DiagGroup<"deprecated", [DeprecatedDeclarations,
90261991Sdim                                          DeprecatedIncrementBool,
91276479Sdim                                          DeprecatedRegister,
92276479Sdim                                          DeprecatedWritableStr]>,
93212904Sdim                 DiagCategory<"Deprecations">;
94212904Sdim
95193326Seddef : DiagGroup<"disabled-optimization">;
96193326Seddef : DiagGroup<"discard-qual">;
97194613Seddef : DiagGroup<"div-by-zero">;
98243830Sdim
99239462Sdimdef DocumentationHTML : DiagGroup<"documentation-html">;
100251662Sdimdef DocumentationUnknownCommand : DiagGroup<"documentation-unknown-command">;
101251662Sdimdef DocumentationPedantic : DiagGroup<"documentation-pedantic",
102251662Sdim                                      [DocumentationUnknownCommand]>;
103243830Sdimdef DocumentationDeprecatedSync : DiagGroup<"documentation-deprecated-sync">;
104243830Sdimdef Documentation : DiagGroup<"documentation",
105243830Sdim                              [DocumentationHTML,
106243830Sdim                               DocumentationDeprecatedSync]>;
107243830Sdim
108193380Seddef EmptyBody : DiagGroup<"empty-body">;
109261991Sdimdef GNUEmptyInitializer : DiagGroup<"gnu-empty-initializer">;
110261991Sdimdef GNUEmptyStruct : DiagGroup<"gnu-empty-struct">;
111193326Seddef ExtraTokens : DiagGroup<"extra-tokens">;
112239462Sdimdef CXX11ExtraSemi : DiagGroup<"c++11-extra-semi">;
113239462Sdimdef ExtraSemi : DiagGroup<"extra-semi", [CXX11ExtraSemi]>;
114193326Sed
115261991Sdimdef GNUFlexibleArrayInitializer : DiagGroup<"gnu-flexible-array-initializer">;
116261991Sdimdef GNUFlexibleArrayUnionMember : DiagGroup<"gnu-flexible-array-union-member">;
117261991Sdimdef GNUFoldingConstant : DiagGroup<"gnu-folding-constant">;
118193326Seddef FormatExtraArgs : DiagGroup<"format-extra-args">;
119193326Seddef FormatZeroLength : DiagGroup<"format-zero-length">;
120193326Sed
121251662Sdim// Warnings for C++1y code which is not compatible with prior C++ standards.
122280031Sdimdef CXXPre14Compat : DiagGroup<"c++98-c++11-compat">;
123280031Sdimdef CXXPre14CompatPedantic : DiagGroup<"c++98-c++11-compat-pedantic",
124280031Sdim                                       [CXXPre14Compat]>;
125276479Sdimdef CXXPre1zCompat : DiagGroup<"c++98-c++11-c++14-compat">;
126276479Sdimdef CXXPre1zCompatPedantic : DiagGroup<"c++98-c++11-c++14-compat-pedantic",
127276479Sdim                                       [CXXPre1zCompat]>;
128251662Sdim
129234353Sdimdef CXX98CompatBindToTemporaryCopy :
130234353Sdim  DiagGroup<"c++98-compat-bind-to-temporary-copy">;
131234353Sdimdef CXX98CompatLocalTypeTemplateArgs :
132234353Sdim  DiagGroup<"c++98-compat-local-type-template-args">;
133234353Sdimdef CXX98CompatUnnamedTypeTemplateArgs :
134234353Sdim  DiagGroup<"c++98-compat-unnamed-type-template-args">;
135234353Sdim
136234353Sdimdef CXX98Compat : DiagGroup<"c++98-compat",
137280031Sdim                            [CXX98CompatLocalTypeTemplateArgs,
138251662Sdim                             CXX98CompatUnnamedTypeTemplateArgs,
139280031Sdim                             CXXPre14Compat,
140276479Sdim                             CXXPre1zCompat]>;
141226633Sdim// Warnings for C++11 features which are Extensions in C++98 mode.
142251662Sdimdef CXX98CompatPedantic : DiagGroup<"c++98-compat-pedantic",
143251662Sdim                                    [CXX98Compat,
144280031Sdim                                     CXX98CompatBindToTemporaryCopy,
145280031Sdim                                     CXXPre14CompatPedantic,
146276479Sdim                                     CXXPre1zCompatPedantic]>;
147208600Srdivacky
148226633Sdimdef CXX11Narrowing : DiagGroup<"c++11-narrowing">;
149234353Sdim
150280031Sdimdef CXX11WarnOverrideMethod : DiagGroup<"inconsistent-missing-override">;
151280031Sdim
152234353Sdim// Original name of this warning in Clang
153226633Sdimdef : DiagGroup<"c++0x-narrowing", [CXX11Narrowing]>;
154226633Sdim
155234353Sdim// Name of this warning in GCC
156234353Sdimdef : DiagGroup<"narrowing", [CXX11Narrowing]>;
157234353Sdim
158234353Sdimdef CXX11CompatReservedUserDefinedLiteral :
159234353Sdim  DiagGroup<"c++11-compat-reserved-user-defined-literal">;
160234353Sdimdef ReservedUserDefinedLiteral :
161234353Sdim  DiagGroup<"reserved-user-defined-literal",
162234353Sdim            [CXX11CompatReservedUserDefinedLiteral]>;
163234353Sdim
164234353Sdimdef CXX11Compat : DiagGroup<"c++11-compat",
165234353Sdim                            [CXX11Narrowing,
166251662Sdim                             CXX11CompatReservedUserDefinedLiteral,
167261991Sdim                             CXX11CompatDeprecatedWritableStr,
168280031Sdim                             CXXPre14Compat,
169276479Sdim                             CXXPre1zCompat]>;
170226633Sdimdef : DiagGroup<"c++0x-compat", [CXX11Compat]>;
171251662Sdimdef CXX11CompatPedantic : DiagGroup<"c++11-compat-pedantic",
172280031Sdim                                    [CXXPre14CompatPedantic,
173276479Sdim                                     CXXPre1zCompatPedantic]>;
174226633Sdim
175276479Sdimdef CXX14Compat : DiagGroup<"c++14-compat", [CXXPre1zCompat]>;
176276479Sdimdef CXX14CompatPedantic : DiagGroup<"c++14-compat-pedantic",
177276479Sdim                                    [CXXPre1zCompatPedantic]>;
178276479Sdim
179212904Sdimdef : DiagGroup<"effc++">;
180239462Sdimdef DivZero : DiagGroup<"division-by-zero">;
181221345Sdimdef ExitTimeDestructors : DiagGroup<"exit-time-destructors">;
182234353Sdimdef FlexibleArrayExtensions : DiagGroup<"flexible-array-extensions">;
183193326Seddef FourByteMultiChar : DiagGroup<"four-char-constants">;
184212904Sdimdef GlobalConstructors : DiagGroup<"global-constructors">;
185224145Sdimdef BitwiseOpParentheses: DiagGroup<"bitwise-op-parentheses">;
186218893Sdimdef LogicalOpParentheses: DiagGroup<"logical-op-parentheses">;
187261991Sdimdef LogicalNotParentheses: DiagGroup<"logical-not-parentheses">;
188243830Sdimdef ShiftOpParentheses: DiagGroup<"shift-op-parentheses">;
189251662Sdimdef OverloadedShiftOpParentheses: DiagGroup<"overloaded-shift-op-parentheses">;
190234353Sdimdef DanglingElse: DiagGroup<"dangling-else">;
191249423Sdimdef DanglingField : DiagGroup<"dangling-field">;
192249423Sdimdef DistributedObjectModifiers : DiagGroup<"distributed-object-modifiers">;
193276479Sdimdef InfiniteRecursion : DiagGroup<"infinite-recursion">;
194261991Sdimdef GNUImaginaryConstant : DiagGroup<"gnu-imaginary-constant">;
195210299Seddef IgnoredQualifiers : DiagGroup<"ignored-qualifiers">;
196198092Srdivackydef : DiagGroup<"import">;
197276479Sdimdef IncompatibleMSStruct : DiagGroup<"incompatible-ms-struct">;
198249423Sdimdef IncompatiblePointerTypesDiscardsQualifiers 
199249423Sdim  : DiagGroup<"incompatible-pointer-types-discards-qualifiers">;
200249423Sdimdef IncompatiblePointerTypes
201249423Sdim  : DiagGroup<"incompatible-pointer-types",
202249423Sdim    [IncompatiblePointerTypesDiscardsQualifiers]>;
203234353Sdimdef IncompleteUmbrella : DiagGroup<"incomplete-umbrella">;
204276479Sdimdef NonModularIncludeInFrameworkModule
205276479Sdim  : DiagGroup<"non-modular-include-in-framework-module">;
206276479Sdimdef NonModularIncludeInModule : DiagGroup<"non-modular-include-in-module",
207276479Sdim                                          [NonModularIncludeInFrameworkModule]>;
208280031Sdimdef IncompleteModule : DiagGroup<"incomplete-module",
209280031Sdim    [IncompleteUmbrella, NonModularIncludeInModule]>;
210280031Sdim
211249423Sdimdef InvalidNoreturn : DiagGroup<"invalid-noreturn">;
212249423Sdimdef InvalidSourceEncoding : DiagGroup<"invalid-source-encoding">;
213234353Sdimdef KNRPromotedParameter : DiagGroup<"knr-promoted-parameter">;
214193326Seddef : DiagGroup<"init-self">;
215193326Seddef : DiagGroup<"inline">;
216194613Seddef : DiagGroup<"invalid-pch">;
217261991Sdimdef GNULabelsAsValue : DiagGroup<"gnu-label-as-value">;
218204962Srdivackydef LiteralRange : DiagGroup<"literal-range">;
219234353Sdimdef LocalTypeTemplateArgs : DiagGroup<"local-type-template-args",
220234353Sdim                                      [CXX98CompatLocalTypeTemplateArgs]>;
221261991Sdimdef LoopAnalysis : DiagGroup<"loop-analysis">;
222226633Sdimdef MalformedWarningCheck : DiagGroup<"malformed-warning-check">;
223226633Sdimdef Main : DiagGroup<"main">;
224234353Sdimdef MainReturnType : DiagGroup<"main-return-type">;
225204962Srdivackydef MissingBraces : DiagGroup<"missing-braces">;
226212904Sdimdef MissingDeclarations: DiagGroup<"missing-declarations">;
227193326Seddef : DiagGroup<"missing-format-attribute">;
228198954Srdivackydef : DiagGroup<"missing-include-dirs">;
229249423Sdimdef MissingNoreturn : DiagGroup<"missing-noreturn">;
230193326Seddef MultiChar : DiagGroup<"multichar">;
231193326Seddef : DiagGroup<"nested-externs">;
232243830Sdimdef CXX11LongLong : DiagGroup<"c++11-long-long">;
233243830Sdimdef LongLong : DiagGroup<"long-long", [CXX11LongLong]>;
234249423Sdimdef MethodSignatures : DiagGroup<"method-signatures">;
235243830Sdimdef MismatchedParameterTypes : DiagGroup<"mismatched-parameter-types">;
236243830Sdimdef MismatchedReturnTypes : DiagGroup<"mismatched-return-types">;
237193326Seddef MismatchedTags : DiagGroup<"mismatched-tags">;
238205219Srdivackydef MissingFieldInitializers : DiagGroup<"missing-field-initializers">;
239280031Sdimdef ModuleBuild : DiagGroup<"module-build">;
240249423Sdimdef ModuleConflict : DiagGroup<"module-conflict">;
241261991Sdimdef NewlineEOF : DiagGroup<"newline-eof">;
242249423Sdimdef NullArithmetic : DiagGroup<"null-arithmetic">;
243234353Sdimdef NullCharacter : DiagGroup<"null-character">;
244218893Sdimdef NullDereference : DiagGroup<"null-dereference">;
245210299Seddef InitializerOverrides : DiagGroup<"initializer-overrides">;
246193326Seddef NonNull : DiagGroup<"nonnull">;
247249423Sdimdef NonPODVarargs : DiagGroup<"non-pod-varargs">;
248276479Sdimdef ClassVarargs : DiagGroup<"class-varargs", [NonPODVarargs]>;
249193326Seddef : DiagGroup<"nonportable-cfstrings">;
250218893Sdimdef NonVirtualDtor : DiagGroup<"non-virtual-dtor">;
251234353Sdimdef OveralignedType : DiagGroup<"over-aligned">;
252276479Sdimdef OldStyleCast : DiagGroup<"old-style-cast">;
253193326Seddef : DiagGroup<"old-style-definition">;
254212904Sdimdef OutOfLineDeclaration : DiagGroup<"out-of-line-declaration">;
255198092Srdivackydef : DiagGroup<"overflow">;
256239462Sdimdef ForwardClassReceiver : DiagGroup<"receiver-forward-class">;
257239462Sdimdef MethodAccess : DiagGroup<"objc-method-access">;
258239462Sdimdef ObjCReceiver : DiagGroup<"receiver-expr">;
259276479Sdimdef OperatorNewReturnsNull : DiagGroup<"new-returns-null">;
260212904Sdimdef OverlengthStrings : DiagGroup<"overlength-strings">;
261218893Sdimdef OverloadedVirtual : DiagGroup<"overloaded-virtual">;
262239462Sdimdef PrivateExtern : DiagGroup<"private-extern">;
263239462Sdimdef SelTypeCast : DiagGroup<"cast-of-sel-type">;
264276479Sdimdef FunctionDefInObjCContainer : DiagGroup<"function-def-in-objc-container">;
265243830Sdimdef BadFunctionCast : DiagGroup<"bad-function-cast">;
266234353Sdimdef ObjCPropertyImpl : DiagGroup<"objc-property-implementation">;
267239462Sdimdef ObjCPropertyNoAttribute : DiagGroup<"objc-property-no-attribute">;
268226633Sdimdef ObjCMissingSuperCalls : DiagGroup<"objc-missing-super-calls">;
269276479Sdimdef ObjCDesignatedInit : DiagGroup<"objc-designated-initializers">;
270226633Sdimdef ObjCRetainBlockProperty : DiagGroup<"objc-noncopy-retain-block-property">;
271234353Sdimdef ObjCReadonlyPropertyHasSetter : DiagGroup<"objc-readonly-with-setter-property">;
272261991Sdimdef ObjCInvalidIBOutletProperty : DiagGroup<"invalid-iboutlet">;
273234353Sdimdef ObjCRootClass : DiagGroup<"objc-root-class">;
274261991Sdimdef ObjCPointerIntrospectPerformSelector : DiagGroup<"deprecated-objc-pointer-introspection-performSelector">;
275261991Sdimdef ObjCPointerIntrospect : DiagGroup<"deprecated-objc-pointer-introspection", [ObjCPointerIntrospectPerformSelector]>;
276280031Sdimdef ObjCMultipleMethodNames : DiagGroup<"objc-multiple-method-names">;
277249423Sdimdef DeprecatedObjCIsaUsage : DiagGroup<"deprecated-objc-isa-usage">;
278280031Sdimdef ExplicitInitializeCall : DiagGroup<"explicit-initialize-call">;
279218893Sdimdef Packed : DiagGroup<"packed">;
280218893Sdimdef Padded : DiagGroup<"padded">;
281198092Srdivackydef PointerArith : DiagGroup<"pointer-arith">;
282276479Sdimdef PoundWarning : DiagGroup<"#warnings">;
283234353Sdimdef PoundPragmaMessage : DiagGroup<"#pragma-messages">,
284221345Sdim                         DiagCategory<"#pragma message Directive">;
285193326Seddef : DiagGroup<"pointer-to-int-cast">;
286193326Seddef : DiagGroup<"redundant-decls">;
287261991Sdimdef RedeclaredClassMember : DiagGroup<"redeclared-class-member">;
288261991Sdimdef GNURedeclaredEnum : DiagGroup<"gnu-redeclared-enum">;
289249423Sdimdef ReturnStackAddress : DiagGroup<"return-stack-address">;
290234353Sdimdef ReturnTypeCLinkage : DiagGroup<"return-type-c-linkage">;
291234353Sdimdef ReturnType : DiagGroup<"return-type", [ReturnTypeCLinkage]>;
292234353Sdimdef BindToTemporaryCopy : DiagGroup<"bind-to-temporary-copy",
293234353Sdim                                    [CXX98CompatBindToTemporaryCopy]>;
294239462Sdimdef SelfAssignmentField : DiagGroup<"self-assign-field">;
295239462Sdimdef SelfAssignment : DiagGroup<"self-assign", [SelfAssignmentField]>;
296280031Sdimdef SelfMove : DiagGroup<"self-move">;
297199482Srdivackydef SemiBeforeMethodBody : DiagGroup<"semicolon-before-method-body">;
298226633Sdimdef Sentinel : DiagGroup<"sentinel">;
299226633Sdimdef MissingMethodReturnType : DiagGroup<"missing-method-return-type">;
300205408Srdivackydef Shadow : DiagGroup<"shadow">;
301243830Sdimdef Shorten64To32 : DiagGroup<"shorten-64-to-32">;
302210299Seddef : DiagGroup<"sign-promo">;
303199482Srdivackydef SignCompare : DiagGroup<"sign-compare">;
304212904Sdimdef : DiagGroup<"stack-protector">;
305212904Sdimdef : DiagGroup<"switch-default">;
306199482Srdivackydef : DiagGroup<"synth">;
307224145Sdimdef SizeofArrayArgument : DiagGroup<"sizeof-array-argument">;
308249423Sdimdef SizeofArrayDecay : DiagGroup<"sizeof-array-decay">;
309249423Sdimdef SizeofPointerMemaccess : DiagGroup<"sizeof-pointer-memaccess">;
310249423Sdimdef StaticInInline : DiagGroup<"static-in-inline">;
311249423Sdimdef StaticLocalInInline : DiagGroup<"static-local-in-inline">;
312249423Sdimdef GNUStaticFloatInit : DiagGroup<"gnu-static-float-init">;
313249423Sdimdef StaticFloatInit : DiagGroup<"static-float-init", [GNUStaticFloatInit]>;
314261991Sdimdef GNUStatementExpression : DiagGroup<"gnu-statement-expression">;
315276479Sdimdef StringCompare : DiagGroup<"string-compare">;
316234353Sdimdef StringPlusInt : DiagGroup<"string-plus-int">;
317261991Sdimdef StringPlusChar : DiagGroup<"string-plus-char">;
318234353Sdimdef StrncatSize : DiagGroup<"strncat-size">;
319243830Sdimdef TautologicalOutOfRangeCompare : DiagGroup<"tautological-constant-out-of-range-compare">;
320276479Sdimdef TautologicalPointerCompare : DiagGroup<"tautological-pointer-compare">;
321276479Sdimdef TautologicalOverlapCompare : DiagGroup<"tautological-overlap-compare">;
322276479Sdimdef TautologicalUndefinedCompare : DiagGroup<"tautological-undefined-compare">;
323243830Sdimdef TautologicalCompare : DiagGroup<"tautological-compare",
324276479Sdim                                    [TautologicalOutOfRangeCompare,
325276479Sdim                                     TautologicalPointerCompare,
326276479Sdim                                     TautologicalOverlapCompare,
327276479Sdim                                     TautologicalUndefinedCompare]>;
328221345Sdimdef HeaderHygiene : DiagGroup<"header-hygiene">;
329243830Sdimdef DuplicateDeclSpecifier : DiagGroup<"duplicate-decl-specifier">;
330243830Sdimdef CompareDistinctPointerType : DiagGroup<"compare-distinct-pointer-types">;
331261991Sdimdef GNUUnionCast : DiagGroup<"gnu-union-cast">;
332261991Sdimdef GNUVariableSizedTypeNotAtEnd : DiagGroup<"gnu-variable-sized-type-not-at-end">;
333261991Sdimdef Varargs : DiagGroup<"varargs">;
334193326Sed
335249423Sdimdef Unsequenced : DiagGroup<"unsequenced">;
336249423Sdim// GCC name for -Wunsequenced
337249423Sdimdef : DiagGroup<"sequence-point", [Unsequenced]>;
338249423Sdim
339198092Srdivacky// Preprocessor warnings.
340243830Sdimdef AmbiguousMacro : DiagGroup<"ambiguous-macro">;
341280031Sdimdef KeywordAsMacro : DiagGroup<"keyword-macro">;
342280031Sdimdef ReservedIdAsMacro : DiagGroup<"reserved-id-macro">;
343198092Srdivacky
344199990Srdivacky// Just silence warnings about -Wstrict-aliasing for now.
345193326Seddef : DiagGroup<"strict-aliasing=0">;
346193326Seddef : DiagGroup<"strict-aliasing=1">;
347193326Seddef : DiagGroup<"strict-aliasing=2">;
348193326Seddef : DiagGroup<"strict-aliasing">;
349193326Sed
350199990Srdivacky// Just silence warnings about -Wstrict-overflow for now.
351193326Seddef : DiagGroup<"strict-overflow=0">;
352193326Seddef : DiagGroup<"strict-overflow=1">;
353193326Seddef : DiagGroup<"strict-overflow=2">;
354199990Srdivackydef : DiagGroup<"strict-overflow=3">;
355199990Srdivackydef : DiagGroup<"strict-overflow=4">;
356199990Srdivackydef : DiagGroup<"strict-overflow=5">;
357193326Seddef : DiagGroup<"strict-overflow">;
358193326Sed
359193326Seddef InvalidOffsetof : DiagGroup<"invalid-offsetof">;
360193326Seddef : DiagGroup<"strict-prototypes">;
361212904Sdimdef StrictSelector : DiagGroup<"strict-selector-match">;
362234353Sdimdef MethodDuplicate : DiagGroup<"duplicate-method-match">;
363280031Sdimdef ObjCCStringFormat : DiagGroup<"cstring-format-directive">;
364234353Sdimdef CoveredSwitchDefault : DiagGroup<"covered-switch-default">;
365276479Sdimdef SwitchBool     : DiagGroup<"switch-bool">;
366203955Srdivackydef SwitchEnum     : DiagGroup<"switch-enum">;
367234353Sdimdef Switch         : DiagGroup<"switch">;
368239462Sdimdef ImplicitFallthroughPerFunction :
369239462Sdim  DiagGroup<"implicit-fallthrough-per-function">;
370239462Sdimdef ImplicitFallthrough  : DiagGroup<"implicit-fallthrough",
371239462Sdim                                     [ImplicitFallthroughPerFunction]>;
372239462Sdimdef InvalidPPToken : DiagGroup<"invalid-pp-token">;
373207632Srdivackydef Trigraphs      : DiagGroup<"trigraphs">;
374193326Sed
375193326Seddef : DiagGroup<"type-limits">;
376249423Sdimdef UndefinedReinterpretCast : DiagGroup<"undefined-reinterpret-cast">;
377249423Sdimdef ReinterpretBaseClass : DiagGroup<"reinterpret-base-class">;
378234353Sdimdef Unicode  : DiagGroup<"unicode">;
379221345Sdimdef UninitializedMaybe : DiagGroup<"conditional-uninitialized">;
380239462Sdimdef UninitializedSometimes : DiagGroup<"sometimes-uninitialized">;
381249423Sdimdef UninitializedStaticSelfInit : DiagGroup<"static-self-init">;
382249423Sdimdef Uninitialized  : DiagGroup<"uninitialized", [UninitializedSometimes,
383249423Sdim                                                 UninitializedStaticSelfInit]>;
384193326Seddef UnknownPragmas : DiagGroup<"unknown-pragmas">;
385276479Sdimdef IgnoredPragmas : DiagGroup<"ignored-pragmas">;
386276479Sdimdef Pragmas : DiagGroup<"pragmas", [UnknownPragmas, IgnoredPragmas]>;
387249423Sdimdef UnknownWarningOption : DiagGroup<"unknown-warning-option">;
388234353Sdimdef NSobjectAttribute : DiagGroup<"NSObject-attribute">;
389276479Sdimdef UnknownAttributes : DiagGroup<"unknown-attributes">;
390234353Sdimdef IgnoredAttributes : DiagGroup<"ignored-attributes">;
391276479Sdimdef Attributes : DiagGroup<"attributes", [UnknownAttributes,
392276479Sdim                                          IgnoredAttributes]>;
393234353Sdimdef UnnamedTypeTemplateArgs : DiagGroup<"unnamed-type-template-args",
394234353Sdim                                        [CXX98CompatUnnamedTypeTemplateArgs]>;
395261991Sdimdef UnsupportedFriend : DiagGroup<"unsupported-friend">;
396193725Seddef UnusedArgument : DiagGroup<"unused-argument">;
397276479Sdimdef UnusedCommandLineArgument : DiagGroup<"unused-command-line-argument">;
398280031Sdimdef IgnoredOptimizationArgument : DiagGroup<"ignored-optimization-argument">;
399280031Sdimdef InvalidCommandLineArgument : DiagGroup<"invalid-command-line-argument",
400280031Sdim                                           [IgnoredOptimizationArgument]>;
401226633Sdimdef UnusedComparison : DiagGroup<"unused-comparison">;
402207619Srdivackydef UnusedExceptionParameter : DiagGroup<"unused-exception-parameter">;
403221345Sdimdef UnneededInternalDecl : DiagGroup<"unneeded-internal-declaration">;
404221345Sdimdef UnneededMemberFunction : DiagGroup<"unneeded-member-function">;
405239462Sdimdef UnusedPrivateField : DiagGroup<"unused-private-field">;
406221345Sdimdef UnusedFunction : DiagGroup<"unused-function", [UnneededInternalDecl]>;
407221345Sdimdef UnusedMemberFunction : DiagGroup<"unused-member-function",
408221345Sdim                                     [UnneededMemberFunction]>;
409193725Seddef UnusedLabel : DiagGroup<"unused-label">;
410193725Seddef UnusedParameter : DiagGroup<"unused-parameter">;
411226633Sdimdef UnusedResult : DiagGroup<"unused-result">;
412280031Sdimdef PotentiallyEvaluatedExpression : DiagGroup<"potentially-evaluated-expression">;
413280031Sdimdef UnevaluatedExpression : DiagGroup<"unevaluated-expression",
414280031Sdim                                      [PotentiallyEvaluatedExpression]>;
415280031Sdimdef UnusedValue : DiagGroup<"unused-value", [UnusedComparison, UnusedResult,
416280031Sdim                                             UnevaluatedExpression]>;
417261991Sdimdef UnusedConstVariable : DiagGroup<"unused-const-variable">;
418261991Sdimdef UnusedVariable : DiagGroup<"unused-variable",
419261991Sdim                               [UnusedConstVariable]>;
420280031Sdimdef UnusedLocalTypedef : DiagGroup<"unused-local-typedef">;
421261991Sdimdef UnusedPropertyIvar :  DiagGroup<"unused-property-ivar">;
422280031Sdimdef UnusedGetterReturnValue : DiagGroup<"unused-getter-return-value">;
423218893Sdimdef UsedButMarkedUnused : DiagGroup<"used-but-marked-unused">;
424226633Sdimdef UserDefinedLiterals : DiagGroup<"user-defined-literals">;
425198092Srdivackydef Reorder : DiagGroup<"reorder">;
426194613Seddef UndeclaredSelector : DiagGroup<"undeclared-selector">;
427218893Sdimdef ImplicitAtomic : DiagGroup<"implicit-atomic-properties">;
428218893Sdimdef CustomAtomic : DiagGroup<"custom-atomic-properties">;
429218893Sdimdef AtomicProperties : DiagGroup<"atomic-properties",
430218893Sdim                                 [ImplicitAtomic, CustomAtomic]>;
431224145Sdimdef ARCUnsafeRetainedAssign : DiagGroup<"arc-unsafe-retained-assign">;
432224145Sdimdef ARCRetainCycles : DiagGroup<"arc-retain-cycles">;
433224145Sdimdef ARCNonPodMemAccess : DiagGroup<"arc-non-pod-memaccess">;
434224145Sdimdef AutomaticReferenceCounting : DiagGroup<"arc",
435243830Sdim                                           [ARCUnsafeRetainedAssign,
436224145Sdim                                            ARCRetainCycles,
437224145Sdim                                            ARCNonPodMemAccess]>;
438243830Sdimdef ARCRepeatedUseOfWeakMaybe : DiagGroup<"arc-maybe-repeated-use-of-weak">;
439243830Sdimdef ARCRepeatedUseOfWeak : DiagGroup<"arc-repeated-use-of-weak",
440243830Sdim                                     [ARCRepeatedUseOfWeakMaybe]>;
441261991Sdimdef ObjCBridge : DiagGroup<"bridge-cast">;
442261991Sdim
443276479Sdimdef DeallocInCategory:DiagGroup<"dealloc-in-category">;
444261991Sdimdef SelectorTypeMismatch : DiagGroup<"selector-type-mismatch">;
445261991Sdimdef Selector : DiagGroup<"selector", [SelectorTypeMismatch]>;
446206084Srdivackydef Protocol : DiagGroup<"protocol">;
447280031Sdimdef AtProtocol : DiagGroup<"at-protocol">;
448280031Sdimdef PropertyAccessDotSyntax: DiagGroup<"property-access-dot-syntax">;
449280031Sdimdef PropertyAttr : DiagGroup<"property-attribute-mismatch">;
450198092Srdivackydef SuperSubClassMismatch : DiagGroup<"super-class-method-mismatch">;
451226633Sdimdef OverridingMethodMismatch : DiagGroup<"overriding-method-mismatch">;
452200583Srdivackydef VariadicMacros : DiagGroup<"variadic-macros">;
453234353Sdimdef VectorConversion : DiagGroup<"vector-conversion">;      // clang specific
454234353Sdimdef VexingParse : DiagGroup<"vexing-parse">;
455208600Srdivackydef VLA : DiagGroup<"vla">;
456249423Sdimdef VLAExtension : DiagGroup<"vla-extension">;
457193326Seddef VolatileRegisterVar : DiagGroup<"volatile-register-var">;
458234353Sdimdef Visibility : DiagGroup<"visibility">;
459243830Sdimdef ZeroLengthArray : DiagGroup<"zero-length-array">;
460261991Sdimdef GNUZeroLineDirective : DiagGroup<"gnu-zero-line-directive">;
461261991Sdimdef GNUZeroVariadicMacroArguments : DiagGroup<"gnu-zero-variadic-macro-arguments">;
462276479Sdimdef Fallback : DiagGroup<"fallback">;
463221345Sdim
464276479Sdim// This covers both the deprecated case (in C++98)
465276479Sdim// and the extension case (in C++11 onwards).
466276479Sdimdef WritableStrings : DiagGroup<"writable-strings", [DeprecatedWritableStr]>;
467276479Sdim
468221345Sdim// GCC calls -Wdeprecated-writable-strings -Wwrite-strings.
469276479Sdim//
470276479Sdim// Bizarrely, this warning flag enables -fconst-strings in C. This is
471276479Sdim// GCC-compatible, but really weird.
472276479Sdim//
473276479Sdim// FIXME: Should this affect C++11 (where this is an error,
474276479Sdim//        not just deprecated) or not?
475276479Sdimdef GCCWriteStrings : DiagGroup<"write-strings" , [WritableStrings]>;
476221345Sdim
477198092Srdivackydef CharSubscript : DiagGroup<"char-subscripts">;
478218893Sdimdef LargeByValueCopy : DiagGroup<"large-by-value-copy">;
479221345Sdimdef DuplicateArgDecl : DiagGroup<"duplicate-method-arg">;
480193326Sed
481276479Sdim// Unreachable code warning groups.
482276479Sdim//
483276479Sdim//  The goal is make -Wunreachable-code on by default, in -Wall, or at
484276479Sdim//  least actively used, with more noisy versions of the warning covered
485276479Sdim//  under separate flags.
486276479Sdim//
487276479Sdimdef UnreachableCodeLoopIncrement : DiagGroup<"unreachable-code-loop-increment">;
488276479Sdimdef UnreachableCode : DiagGroup<"unreachable-code",
489276479Sdim                                [UnreachableCodeLoopIncrement]>;
490276479Sdimdef UnreachableCodeBreak : DiagGroup<"unreachable-code-break">;
491276479Sdimdef UnreachableCodeReturn : DiagGroup<"unreachable-code-return">;
492276479Sdimdef UnreachableCodeAggressive : DiagGroup<"unreachable-code-aggressive",
493276479Sdim                                    [UnreachableCode,
494276479Sdim                                     UnreachableCodeBreak,
495276479Sdim                                     UnreachableCodeReturn]>;
496276479Sdim
497193326Sed// Aggregation warning settings.
498193326Sed
499276479Sdim// Populate -Waddress with warnings from other groups.
500276479Sdimdef : DiagGroup<"address", [PointerBoolConversion,
501276479Sdim                            StringCompare,
502276479Sdim                            TautologicalPointerCompare]>;
503276479Sdim
504199482Srdivacky// -Widiomatic-parentheses contains warnings about 'idiomatic'
505221345Sdim// missing parentheses;  it is off by default.  We do not include it
506221345Sdim// in -Wparentheses because most users who use -Wparentheses explicitly
507221345Sdim// do not want these warnings.
508226633Sdimdef ParenthesesOnEquality : DiagGroup<"parentheses-equality">;
509218893Sdimdef Parentheses : DiagGroup<"parentheses",
510224145Sdim                            [LogicalOpParentheses,
511261991Sdim                             LogicalNotParentheses,
512226633Sdim                             BitwiseOpParentheses,
513243830Sdim                             ShiftOpParentheses,
514251662Sdim                             OverloadedShiftOpParentheses,
515234353Sdim                             ParenthesesOnEquality,
516234353Sdim                             DanglingElse]>;
517193326Sed
518218893Sdim// -Wconversion has its own warnings, but we split a few out for
519218893Sdim// legacy reasons:
520218893Sdim//   - some people want just 64-to-32 warnings
521218893Sdim//   - conversion warnings with constant sources are on by default
522218893Sdim//   - conversion warnings for literals are on by default
523218893Sdim//   - bool-to-pointer conversion warnings are on by default
524234353Sdim//   - __null-to-integer conversion warnings are on by default
525199482Srdivackydef Conversion : DiagGroup<"conversion",
526243830Sdim                           [BoolConversion,
527234353Sdim                            ConstantConversion,
528243830Sdim                            EnumConversion,
529276479Sdim                            FloatConversion,
530243830Sdim                            Shorten64To32,
531243830Sdim                            IntConversion,
532234353Sdim                            LiteralConversion,
533243830Sdim                            NonLiteralNullConversion, // (1-1)->pointer (etc)
534243830Sdim                            NullConversion, // NULL->non-pointer
535276479Sdim                            ObjCLiteralConversion,
536234353Sdim                            SignConversion,
537243830Sdim                            StringConversion]>,
538208600Srdivacky                 DiagCategory<"Value Conversion Issue">;
539199482Srdivacky
540193725Seddef Unused : DiagGroup<"unused",
541193725Sed                       [UnusedArgument, UnusedFunction, UnusedLabel,
542207619Srdivacky                        // UnusedParameter, (matches GCC's behavior)
543212904Sdim                        // UnusedMemberFunction, (clean-up llvm before enabling)
544280031Sdim                        UnusedPrivateField, UnusedLocalTypedef,
545261991Sdim                        UnusedValue, UnusedVariable, UnusedPropertyIvar]>,
546208600Srdivacky                        DiagCategory<"Unused Entity Issue">;
547193725Sed
548193326Sed// Format settings.
549226633Sdimdef FormatInvalidSpecifier : DiagGroup<"format-invalid-specifier">;
550219077Sdimdef FormatSecurity : DiagGroup<"format-security">;
551234353Sdimdef FormatNonStandard : DiagGroup<"format-non-iso">;
552224145Sdimdef FormatY2K : DiagGroup<"format-y2k">;
553219077Sdimdef Format : DiagGroup<"format",
554219077Sdim                       [FormatExtraArgs, FormatZeroLength, NonNull,
555226633Sdim                        FormatSecurity, FormatY2K, FormatInvalidSpecifier]>,
556208600Srdivacky             DiagCategory<"Format String Issue">;
557276479Sdimdef FormatNonLiteral : DiagGroup<"format-nonliteral">;
558193326Seddef Format2 : DiagGroup<"format=2",
559193326Sed                        [FormatNonLiteral, FormatSecurity, FormatY2K]>;
560193326Sed
561239462Sdimdef TypeSafety : DiagGroup<"type-safety">;
562239462Sdim
563261991Sdimdef IntToVoidPointerCast : DiagGroup<"int-to-void-pointer-cast">;
564261991Sdimdef IntToPointerCast : DiagGroup<"int-to-pointer-cast",
565261991Sdim                                 [IntToVoidPointerCast]>;
566243830Sdim
567194613Seddef Extra : DiagGroup<"extra", [
568205219Srdivacky    MissingFieldInitializers,
569210299Sed    IgnoredQualifiers,
570210299Sed    InitializerOverrides,
571199482Srdivacky    SemiBeforeMethodBody,
572226633Sdim    MissingMethodReturnType,
573199482Srdivacky    SignCompare,
574194613Sed    UnusedParameter
575194613Sed  ]>;
576193326Sed
577193326Seddef Most : DiagGroup<"most", [
578207619Srdivacky    CharSubscript,
579193326Sed    Comment,
580223017Sdim    DeleteNonVirtualDtor,
581193326Sed    Format,
582193326Sed    Implicit,
583193326Sed    MismatchedTags,
584204962Srdivacky    MissingBraces,
585193326Sed    MultiChar,
586207619Srdivacky    Reorder,
587198092Srdivacky    ReturnType,
588218893Sdim    SelfAssignment,
589280031Sdim    SelfMove,
590224145Sdim    SizeofArrayArgument,
591249423Sdim    SizeofArrayDecay,
592234353Sdim    StringPlusInt,
593193326Sed    Trigraphs,
594193326Sed    Uninitialized,
595193326Sed    UnknownPragmas,
596207619Srdivacky    Unused,
597218893Sdim    VolatileRegisterVar,
598226633Sdim    ObjCMissingSuperCalls,
599276479Sdim    ObjCDesignatedInit,
600239462Sdim    OverloadedVirtual,
601239462Sdim    PrivateExtern,
602261991Sdim    SelTypeCast,
603261991Sdim    ExternCCompat
604193326Sed ]>;
605193326Sed
606226633Sdim// Thread Safety warnings 
607239462Sdimdef ThreadSafetyAttributes : DiagGroup<"thread-safety-attributes">;
608243830Sdimdef ThreadSafetyAnalysis   : DiagGroup<"thread-safety-analysis">;
609243830Sdimdef ThreadSafetyPrecise    : DiagGroup<"thread-safety-precise">;
610280031Sdimdef ThreadSafetyReference  : DiagGroup<"thread-safety-reference">;
611280031Sdimdef ThreadSafetyNegative   : DiagGroup<"thread-safety-negative">;
612243830Sdimdef ThreadSafety : DiagGroup<"thread-safety",
613243830Sdim                             [ThreadSafetyAttributes, 
614243830Sdim                              ThreadSafetyAnalysis,
615280031Sdim                              ThreadSafetyPrecise,
616280031Sdim                              ThreadSafetyReference]>;
617280031Sdimdef ThreadSafetyVerbose : DiagGroup<"thread-safety-verbose">;
618249423Sdimdef ThreadSafetyBeta : DiagGroup<"thread-safety-beta">;
619226633Sdim
620261991Sdim// Uniqueness Analysis warnings
621261991Sdimdef Consumed       : DiagGroup<"consumed">;
622261991Sdim
623234353Sdim// Note that putting warnings in -Wall will not disable them by default. If a
624234353Sdim// warning should be active _only_ when -Wall is passed in, mark it as
625234353Sdim// DefaultIgnore in addition to putting it here.
626276479Sdimdef : DiagGroup<"all", [Most, Parentheses, Switch, SwitchBool]>;
627193326Sed
628239462Sdim// Warnings enabled by -pedantic.  This is magically filled in by TableGen.
629239462Sdimdef Pedantic : DiagGroup<"pedantic">;
630239462Sdim
631193326Sed// Aliases.
632201361Srdivackydef : DiagGroup<"", [Extra]>;                   // -W = -Wextra
633261991Sdimdef : DiagGroup<"endif-labels", [ExtraTokens]>; // -Wendif-labels=-Wextra-tokens
634201361Srdivackydef : DiagGroup<"comments", [Comment]>;         // -Wcomments = -Wcomment
635234353Sdimdef : DiagGroup<"conversion-null",
636234353Sdim                [NullConversion]>; // -Wconversion-null = -Wnull-conversion
637234353Sdimdef : DiagGroup<"bool-conversions",
638234353Sdim                [BoolConversion]>; // -Wbool-conversions  = -Wbool-conversion
639234353Sdimdef : DiagGroup<"int-conversions",
640234353Sdim                [IntConversion]>; // -Wint-conversions = -Wint-conversion
641234353Sdimdef : DiagGroup<"vector-conversions",
642234353Sdim                [VectorConversion]>; // -Wvector-conversions = -Wvector-conversion
643280031Sdimdef : DiagGroup<"unused-local-typedefs", [UnusedLocalTypedef]>;
644280031Sdim                // -Wunused-local-typedefs = -Wunused-local-typedef
645193326Sed
646199482Srdivacky// A warning group for warnings that we want to have on by default in clang,
647199482Srdivacky// but which aren't on by default in GCC.
648199482Srdivackydef NonGCC : DiagGroup<"non-gcc",
649204962Srdivacky    [SignCompare, Conversion, LiteralRange]>;
650206084Srdivacky
651226633Sdim// A warning group for warnings about using C++11 features as extensions in
652218893Sdim// earlier C++ versions.
653243830Sdimdef CXX11 : DiagGroup<"c++11-extensions", [CXX11ExtraSemi, CXX11LongLong]>;
654243830Sdim
655280031Sdim// A warning group for warnings about using C++14 features as extensions in
656251662Sdim// earlier C++ versions.
657280031Sdimdef CXX14 : DiagGroup<"c++14-extensions">;
658251662Sdim
659276479Sdim// A warning group for warnings about using C++1z features as extensions in
660276479Sdim// earlier C++ versions.
661276479Sdimdef CXX1z : DiagGroup<"c++1z-extensions">;
662276479Sdim
663226633Sdimdef : DiagGroup<"c++0x-extensions", [CXX11]>;
664280031Sdimdef : DiagGroup<"c++1y-extensions", [CXX14]>;
665280031Sdim
666223017Sdimdef DelegatingCtorCycles :
667223017Sdim  DiagGroup<"delegating-ctor-cycles">;
668218893Sdim
669234353Sdim// A warning group for warnings about using C11 features as extensions.
670234353Sdimdef C11 : DiagGroup<"c11-extensions">;
671226633Sdim
672234353Sdim// A warning group for warnings about using C99 features as extensions.
673234353Sdimdef C99 : DiagGroup<"c99-extensions">;
674234353Sdim
675206084Srdivacky// A warning group for warnings about GCC extensions.
676261991Sdimdef GNU : DiagGroup<"gnu", [GNUAlignofExpression, GNUAnonymousStruct,
677261991Sdim                            GNUBinaryLiteral, GNUCaseRange,
678261991Sdim                            GNUComplexInteger, GNUCompoundLiteralInitializer,
679261991Sdim                            GNUConditionalOmittedOperand, GNUDesignator,
680261991Sdim                            GNUEmptyInitializer, GNUEmptyStruct,
681261991Sdim                            VLAExtension, GNUFlexibleArrayInitializer,
682261991Sdim                            GNUFlexibleArrayUnionMember, GNUFoldingConstant,
683261991Sdim                            GNUImaginaryConstant, GNULabelsAsValue,
684261991Sdim                            RedeclaredClassMember, GNURedeclaredEnum,
685261991Sdim                            GNUStatementExpression, GNUStaticFloatInit,
686261991Sdim                            GNUStringLiteralOperatorTemplate,
687261991Sdim                            GNUUnionCast, GNUVariableSizedTypeNotAtEnd,
688261991Sdim                            ZeroLengthArray, GNUZeroLineDirective,
689261991Sdim                            GNUZeroVariadicMacroArguments]>;
690234353Sdim// A warning group for warnings about code that clang accepts but gcc doesn't.
691234353Sdimdef GccCompat : DiagGroup<"gcc-compat">;
692218893Sdim
693218893Sdim// A warning group for warnings about Microsoft extensions.
694218893Sdimdef Microsoft : DiagGroup<"microsoft">;
695224145Sdim
696224145Sdimdef ObjCNonUnifiedException : DiagGroup<"objc-nonunified-exceptions">;
697224145Sdim
698226633Sdimdef ObjCProtocolMethodImpl : DiagGroup<"objc-protocol-method-implementation">;
699234353Sdim
700249423Sdimdef ObjCNoPropertyAutoSynthesis : DiagGroup<"objc-property-synthesis">;
701249423Sdim
702234353Sdim// ObjC API warning groups.
703234353Sdimdef ObjCRedundantLiteralUse : DiagGroup<"objc-redundant-literal-use">;
704234353Sdimdef ObjCRedundantAPIUse : DiagGroup<"objc-redundant-api-use", [
705234353Sdim    ObjCRedundantLiteralUse
706234353Sdim  ]>;
707234353Sdim
708234353Sdimdef ObjCCocoaAPI : DiagGroup<"objc-cocoa-api", [
709234353Sdim    ObjCRedundantAPIUse
710234353Sdim  ]>;
711239462Sdim
712239462Sdimdef ObjCStringComparison : DiagGroup<"objc-string-compare">;
713261991Sdimdef ObjCStringConcatenation : DiagGroup<"objc-string-concatenation">;
714239462Sdimdef ObjCLiteralComparison : DiagGroup<"objc-literal-compare", [
715239462Sdim    ObjCStringComparison
716239462Sdim  ]>;
717243830Sdim
718243830Sdim// Inline ASM warnings.
719243830Sdimdef ASMOperandWidths : DiagGroup<"asm-operand-widths">;
720243830Sdimdef ASM : DiagGroup<"asm", [
721243830Sdim    ASMOperandWidths
722243830Sdim  ]>;
723249423Sdim
724249423Sdim// OpenMP warnings.
725249423Sdimdef SourceUsesOpenMP : DiagGroup<"source-uses-openmp">;
726276479Sdimdef OpenMPClauses : DiagGroup<"openmp-clauses">;
727276479Sdimdef OpenMPLoopForm : DiagGroup<"openmp-loop-form">;
728276479Sdim
729276479Sdim// Backend warnings.
730276479Sdimdef BackendInlineAsm : DiagGroup<"inline-asm">;
731276479Sdimdef BackendFrameLargerThanEQ : DiagGroup<"frame-larger-than=">;
732276479Sdimdef BackendPlugin : DiagGroup<"backend-plugin">;
733276479Sdimdef RemarkBackendPlugin : DiagGroup<"remark-backend-plugin">;
734276479Sdimdef BackendOptimizationRemark : DiagGroup<"pass">;
735276479Sdimdef BackendOptimizationRemarkMissed : DiagGroup<"pass-missed">;
736276479Sdimdef BackendOptimizationRemarkAnalysis : DiagGroup<"pass-analysis">;
737276479Sdimdef BackendOptimizationFailure : DiagGroup<"pass-failed">;
738276479Sdim
739276479Sdim// Instrumentation based profiling warnings.
740276479Sdimdef ProfileInstrOutOfDate : DiagGroup<"profile-instr-out-of-date">;
741276479Sdimdef ProfileInstrUnprofiled : DiagGroup<"profile-instr-unprofiled">;
742276479Sdim
743280031Sdim// AddressSanitizer frontent instrumentation remarks.
744280031Sdimdef SanitizeAddressRemarks : DiagGroup<"sanitize-address">;
745280031Sdim
746280031Sdim// Issues with serialized diagnostics.
747280031Sdimdef SerializedDiagnostics : DiagGroup<"serialized-diagnostics">;
748280031Sdim
749276479Sdim// A warning group for warnings about code that clang accepts when
750276479Sdim// compiling CUDA C/C++ but which is not compatible with the CUDA spec.
751276479Sdimdef CudaCompat : DiagGroup<"cuda-compat">;
752280031Sdim
753280031Sdim// A warning group for things that will change semantics in the future.
754280031Sdimdef FutureCompat : DiagGroup<"future-compat">;
755