1193326Sed//==--- DiagnosticGroups.td - Diagnostic Group Definitions ----------------===//
2193326Sed//
3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4353358Sdim// See https://llvm.org/LICENSE.txt for license information.
5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6193326Sed//
7193326Sed//===----------------------------------------------------------------------===//
8193326Sed
9193326Seddef ImplicitFunctionDeclare : DiagGroup<"implicit-function-declaration">;
10193326Seddef ImplicitInt : DiagGroup<"implicit-int">;
11193326Sed
12193326Sed// Aggregation warning settings.
13193326Seddef Implicit : DiagGroup<"implicit", [
14193326Sed    ImplicitFunctionDeclare,
15193326Sed    ImplicitInt
16193326Sed]>;
17193326Sed
18204643Srdivacky// Empty DiagGroups are recognized by clang but ignored.
19353358Sdimdef ODR : DiagGroup<"odr">;
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">;
30327952Sdimdef AutoDisableVptrSanitizer : DiagGroup<"auto-disable-vptr-sanitizer">;
31221345Sdimdef Availability : DiagGroup<"availability">;
32239462Sdimdef Section : DiagGroup<"section">;
33234353Sdimdef AutoImport : DiagGroup<"auto-import">;
34341825Sdimdef FrameworkHdrQuotedInclude : DiagGroup<"quoted-include-in-framework-header">;
35341825Sdimdef FrameworkIncludePrivateFromPublic :
36341825Sdim  DiagGroup<"framework-include-private-from-public">;
37341825Sdimdef FrameworkHdrAtImport : DiagGroup<"atimport-in-framework-header">;
38296417Sdimdef CXX14BinaryLiteral : DiagGroup<"c++14-binary-literal">;
39327952Sdimdef CXXPre14CompatBinaryLiteral : DiagGroup<"c++98-c++11-compat-binary-literal">;
40261991Sdimdef GNUBinaryLiteral : DiagGroup<"gnu-binary-literal">;
41327952Sdimdef BinaryLiteral : DiagGroup<"binary-literal", [CXX14BinaryLiteral,
42327952Sdim                                                 CXXPre14CompatBinaryLiteral,
43327952Sdim                                                 GNUBinaryLiteral]>;
44261991Sdimdef GNUCompoundLiteralInitializer : DiagGroup<"gnu-compound-literal-initializer">;
45251662Sdimdef BitFieldConstantConversion : DiagGroup<"bitfield-constant-conversion">;
46321369Sdimdef BitFieldEnumConversion : DiagGroup<"bitfield-enum-conversion">;
47296417Sdimdef BitFieldWidth : DiagGroup<"bitfield-width">;
48321369Sdimdef CoroutineMissingUnhandledException :
49321369Sdim  DiagGroup<"coroutine-missing-unhandled-exception">;
50321369Sdimdef Coroutine : DiagGroup<"coroutine", [CoroutineMissingUnhandledException]>;
51353358Sdimdef ObjCBoolConstantConversion : DiagGroup<"objc-bool-constant-conversion">;
52353358Sdimdef ConstantConversion : DiagGroup<"constant-conversion",
53353358Sdim                                   [BitFieldConstantConversion,
54353358Sdim                                    ObjCBoolConstantConversion]>;
55234353Sdimdef LiteralConversion : DiagGroup<"literal-conversion">;
56234353Sdimdef StringConversion : DiagGroup<"string-conversion">;
57234353Sdimdef SignConversion : DiagGroup<"sign-conversion">;
58276479Sdimdef PointerBoolConversion : DiagGroup<"pointer-bool-conversion">;
59276479Sdimdef UndefinedBoolConversion : DiagGroup<"undefined-bool-conversion">;
60276479Sdimdef BoolConversion : DiagGroup<"bool-conversion", [PointerBoolConversion,
61276479Sdim                                                   UndefinedBoolConversion]>;
62234353Sdimdef IntConversion : DiagGroup<"int-conversion">;
63360784Sdimdef DeprecatedEnumCompareConditional :
64360784Sdim  DiagGroup<"deprecated-enum-compare-conditional">;
65360784Sdimdef EnumCompareConditional : DiagGroup<"enum-compare-conditional",
66360784Sdim                                       [DeprecatedEnumCompareConditional]>;
67360784Sdimdef EnumCompareSwitch : DiagGroup<"enum-compare-switch">;
68360784Sdimdef DeprecatedEnumCompare : DiagGroup<"deprecated-enum-compare">;
69360784Sdimdef EnumCompare : DiagGroup<"enum-compare", [EnumCompareSwitch,
70360784Sdim                                             DeprecatedEnumCompare]>;
71360784Sdimdef DeprecatedAnonEnumEnumConversion : DiagGroup<"deprecated-anon-enum-enum-conversion">;
72360784Sdimdef DeprecatedEnumEnumConversion : DiagGroup<"deprecated-enum-enum-conversion">;
73360784Sdimdef DeprecatedEnumFloatConversion : DiagGroup<"deprecated-enum-float-conversion">;
74360784Sdimdef AnonEnumEnumConversion : DiagGroup<"anon-enum-enum-conversion",
75360784Sdim                                   [DeprecatedAnonEnumEnumConversion]>;
76360784Sdimdef EnumEnumConversion : DiagGroup<"enum-enum-conversion",
77360784Sdim                                   [DeprecatedEnumEnumConversion]>;
78360784Sdimdef EnumFloatConversion : DiagGroup<"enum-float-conversion",
79360784Sdim                                    [DeprecatedEnumFloatConversion]>;
80360784Sdimdef EnumConversion : DiagGroup<"enum-conversion",
81360784Sdim                               [EnumEnumConversion,
82360784Sdim                                EnumFloatConversion,
83360784Sdim                                EnumCompareConditional]>;
84360784Sdimdef ObjCSignedCharBoolImplicitIntConversion :
85360784Sdim  DiagGroup<"objc-signed-char-bool-implicit-int-conversion">;
86360784Sdimdef ImplicitIntConversion : DiagGroup<"implicit-int-conversion",
87360784Sdim                                     [ObjCSignedCharBoolImplicitIntConversion]>;
88360784Sdimdef ImplicitIntFloatConversion : DiagGroup<"implicit-int-float-conversion">;
89360784Sdimdef ObjCSignedCharBoolImplicitFloatConversion :
90360784Sdim  DiagGroup<"objc-signed-char-bool-implicit-float-conversion">;
91360784Sdimdef ImplicitFloatConversion : DiagGroup<"implicit-float-conversion",
92360784Sdim  [ImplicitIntFloatConversion,
93360784Sdim   ObjCSignedCharBoolImplicitFloatConversion]>;
94353358Sdimdef ImplicitFixedPointConversion : DiagGroup<"implicit-fixed-point-conversion">;
95309124Sdim
96309124Sdimdef FloatOverflowConversion : DiagGroup<"float-overflow-conversion">;
97309124Sdimdef FloatZeroConversion : DiagGroup<"float-zero-conversion">;
98309124Sdimdef FloatConversion :
99309124Sdim  DiagGroup<"float-conversion", [FloatOverflowConversion,
100309124Sdim                                 FloatZeroConversion]>;
101309124Sdim
102296417Sdimdef DoublePromotion : DiagGroup<"double-promotion">;
103276479Sdimdef EnumTooLarge : DiagGroup<"enum-too-large">;
104288943Sdimdef UnsupportedNan : DiagGroup<"unsupported-nan">;
105327952Sdimdef UnsupportedAbs : DiagGroup<"unsupported-abs">;
106309124Sdimdef UnsupportedCB : DiagGroup<"unsupported-cb">;
107327952Sdimdef UnsupportedGPOpt : DiagGroup<"unsupported-gpopt">;
108341825Sdimdef UnsupportedTargetOpt : DiagGroup<"unsupported-target-opt">;
109239462Sdimdef NonLiteralNullConversion : DiagGroup<"non-literal-null-conversion">;
110234353Sdimdef NullConversion : DiagGroup<"null-conversion">;
111243830Sdimdef ImplicitConversionFloatingPointToBool :
112243830Sdim  DiagGroup<"implicit-conversion-floating-point-to-bool">;
113276479Sdimdef ObjCLiteralConversion : DiagGroup<"objc-literal-conversion">;
114276479Sdimdef MacroRedefined : DiagGroup<"macro-redefined">;
115249423Sdimdef BuiltinMacroRedefined : DiagGroup<"builtin-macro-redefined">;
116227737Sdimdef BuiltinRequiresHeader : DiagGroup<"builtin-requires-header">;
117249423Sdimdef C99Compat : DiagGroup<"c99-compat">;
118212904Sdimdef CXXCompat: DiagGroup<"c++-compat">;
119261991Sdimdef ExternCCompat : DiagGroup<"extern-c-compat">;
120261991Sdimdef KeywordCompat : DiagGroup<"keyword-compat">;
121261991Sdimdef GNUCaseRange : DiagGroup<"gnu-case-range">;
122212904Sdimdef CastAlign : DiagGroup<"cast-align">;
123280031Sdimdef CastQual : DiagGroup<"cast-qual">;
124193326Seddef : DiagGroup<"char-align">;
125193326Seddef Comment : DiagGroup<"comment">;
126261991Sdimdef GNUComplexInteger : DiagGroup<"gnu-complex-integer">;
127261991Sdimdef GNUConditionalOmittedOperand : DiagGroup<"gnu-conditional-omitted-operand">;
128249423Sdimdef ConfigMacros : DiagGroup<"config-macros">;
129199482Srdivackydef : DiagGroup<"ctor-dtor-privacy">;
130261991Sdimdef GNUStringLiteralOperatorTemplate :
131261991Sdim  DiagGroup<"gnu-string-literal-operator-template">;
132309124Sdimdef UndefinedVarTemplate : DiagGroup<"undefined-var-template">;
133309124Sdimdef UndefinedFuncTemplate : DiagGroup<"undefined-func-template">;
134327952Sdimdef MissingNoEscape : DiagGroup<"missing-noescape">;
135212904Sdim
136360784Sdimdef DefaultedFunctionDeleted : DiagGroup<"defaulted-function-deleted">;
137280031Sdimdef DeleteIncomplete : DiagGroup<"delete-incomplete">;
138344779Sdimdef DeleteNonAbstractNonVirtualDtor : DiagGroup<"delete-non-abstract-non-virtual-dtor">;
139344779Sdimdef DeleteAbstractNonVirtualDtor : DiagGroup<"delete-abstract-non-virtual-dtor">;
140344779Sdimdef DeleteNonVirtualDtor : DiagGroup<"delete-non-virtual-dtor",
141344779Sdim                                     [DeleteNonAbstractNonVirtualDtor,
142344779Sdim                                      DeleteAbstractNonVirtualDtor]>;
143243830Sdimdef AbstractFinalClass : DiagGroup<"abstract-final-class">;
144360784Sdimdef FinalDtorNonFinalClass : DiagGroup<"final-dtor-non-final-class">;
145223017Sdim
146261991Sdimdef CXX11CompatDeprecatedWritableStr :
147261991Sdim  DiagGroup<"c++11-compat-deprecated-writable-strings">;
148261991Sdim
149360784Sdimdef DeprecatedArrayCompare : DiagGroup<"deprecated-array-compare">;
150296417Sdimdef DeprecatedAttributes : DiagGroup<"deprecated-attributes">;
151360784Sdimdef DeprecatedCommaSubscript : DiagGroup<"deprecated-comma-subscript">;
152360784Sdimdef DeprecatedCopy : DiagGroup<"deprecated-copy">;
153360784Sdimdef DeprecatedCopyDtor : DiagGroup<"deprecated-copy-dtor">;
154212904Sdimdef DeprecatedDeclarations : DiagGroup<"deprecated-declarations">;
155276479Sdimdef UnavailableDeclarations : DiagGroup<"unavailable-declarations">;
156321369Sdimdef UnguardedAvailabilityNew : DiagGroup<"unguarded-availability-new">;
157321369Sdimdef UnguardedAvailability : DiagGroup<"unguarded-availability",
158321369Sdim                                      [UnguardedAvailabilityNew]>;
159314564Sdim// partial-availability is an alias of unguarded-availability.
160314564Sdimdef : DiagGroup<"partial-availability", [UnguardedAvailability]>;
161314564Sdimdef DeprecatedDynamicExceptionSpec
162314564Sdim    : DiagGroup<"deprecated-dynamic-exception-spec">;
163261991Sdimdef DeprecatedImplementations :DiagGroup<"deprecated-implementations">;
164261991Sdimdef DeprecatedIncrementBool : DiagGroup<"deprecated-increment-bool">;
165261991Sdimdef DeprecatedRegister : DiagGroup<"deprecated-register">;
166341825Sdimdef DeprecatedThisCapture : DiagGroup<"deprecated-this-capture">;
167360784Sdimdef DeprecatedVolatile : DiagGroup<"deprecated-volatile">;
168261991Sdimdef DeprecatedWritableStr : DiagGroup<"deprecated-writable-strings",
169261991Sdim                                      [CXX11CompatDeprecatedWritableStr]>;
170276479Sdim// FIXME: Why is DeprecatedImplementations not in this group?
171360784Sdimdef Deprecated : DiagGroup<"deprecated", [DeprecatedAnonEnumEnumConversion,
172360784Sdim                                          DeprecatedArrayCompare,
173360784Sdim                                          DeprecatedAttributes,
174360784Sdim                                          DeprecatedCommaSubscript,
175360784Sdim                                          DeprecatedCopy,
176360784Sdim                                          DeprecatedCopyDtor,
177296417Sdim                                          DeprecatedDeclarations,
178314564Sdim                                          DeprecatedDynamicExceptionSpec,
179360784Sdim                                          DeprecatedEnumCompare,
180360784Sdim                                          DeprecatedEnumCompareConditional,
181360784Sdim                                          DeprecatedEnumEnumConversion,
182360784Sdim                                          DeprecatedEnumFloatConversion,
183261991Sdim                                          DeprecatedIncrementBool,
184276479Sdim                                          DeprecatedRegister,
185341825Sdim                                          DeprecatedThisCapture,
186360784Sdim                                          DeprecatedVolatile,
187276479Sdim                                          DeprecatedWritableStr]>,
188212904Sdim                 DiagCategory<"Deprecations">;
189212904Sdim
190360784Sdimdef CXX20Designator : DiagGroup<"c++20-designator">;
191360784Sdim// Allow -Wno-c99-designator to be used to turn off all warnings on valid C99
192360784Sdim// designators (including the warning controlled by -Wc++20-designator).
193360784Sdimdef C99Designator : DiagGroup<"c99-designator", [CXX20Designator]>;
194360784Sdimdef GNUDesignator : DiagGroup<"gnu-designator">;
195360784Sdim
196314564Sdimdef DynamicExceptionSpec
197314564Sdim    : DiagGroup<"dynamic-exception-spec", [DeprecatedDynamicExceptionSpec]>;
198314564Sdim
199296417Sdimdef LibLTO : DiagGroup<"liblto">;
200193326Seddef : DiagGroup<"disabled-optimization">;
201193326Seddef : DiagGroup<"discard-qual">;
202314564Sdimdef DivZero : DiagGroup<"division-by-zero">;
203314564Sdimdef : DiagGroup<"div-by-zero", [DivZero]>;
204243830Sdim
205239462Sdimdef DocumentationHTML : DiagGroup<"documentation-html">;
206251662Sdimdef DocumentationUnknownCommand : DiagGroup<"documentation-unknown-command">;
207251662Sdimdef DocumentationPedantic : DiagGroup<"documentation-pedantic",
208251662Sdim                                      [DocumentationUnknownCommand]>;
209243830Sdimdef DocumentationDeprecatedSync : DiagGroup<"documentation-deprecated-sync">;
210243830Sdimdef Documentation : DiagGroup<"documentation",
211243830Sdim                              [DocumentationHTML,
212243830Sdim                               DocumentationDeprecatedSync]>;
213243830Sdim
214193380Seddef EmptyBody : DiagGroup<"empty-body">;
215288943Sdimdef Exceptions : DiagGroup<"exceptions">;
216288943Sdim
217261991Sdimdef GNUEmptyInitializer : DiagGroup<"gnu-empty-initializer">;
218261991Sdimdef GNUEmptyStruct : DiagGroup<"gnu-empty-struct">;
219193326Seddef ExtraTokens : DiagGroup<"extra-tokens">;
220341825Sdimdef CXX98CompatExtraSemi : DiagGroup<"c++98-compat-extra-semi">;
221239462Sdimdef CXX11ExtraSemi : DiagGroup<"c++11-extra-semi">;
222344779Sdimdef EmptyInitStatement : DiagGroup<"empty-init-stmt">;
223353358Sdimdef ExportUnnamed : DiagGroup<"export-unnamed">;
224344779Sdimdef ExtraSemiStmt : DiagGroup<"extra-semi-stmt", [EmptyInitStatement]>;
225341825Sdimdef ExtraSemi : DiagGroup<"extra-semi", [CXX98CompatExtraSemi,
226341825Sdim                                         CXX11ExtraSemi]>;
227193326Sed
228261991Sdimdef GNUFlexibleArrayInitializer : DiagGroup<"gnu-flexible-array-initializer">;
229261991Sdimdef GNUFlexibleArrayUnionMember : DiagGroup<"gnu-flexible-array-union-member">;
230261991Sdimdef GNUFoldingConstant : DiagGroup<"gnu-folding-constant">;
231193326Seddef FormatExtraArgs : DiagGroup<"format-extra-args">;
232193326Seddef FormatZeroLength : DiagGroup<"format-zero-length">;
233322740Sdim
234322740Sdimdef InvalidIOSDeploymentTarget : DiagGroup<"invalid-ios-deployment-target">;
235322740Sdim
236322740Sdimdef CXX17CompatMangling : DiagGroup<"c++17-compat-mangling">;
237322740Sdimdef : DiagGroup<"c++1z-compat-mangling", [CXX17CompatMangling]>;
238321369Sdim// Name of this warning in GCC.
239322740Sdimdef NoexceptType : DiagGroup<"noexcept-type", [CXX17CompatMangling]>;
240193326Sed
241251662Sdim// Warnings for C++1y code which is not compatible with prior C++ standards.
242280031Sdimdef CXXPre14Compat : DiagGroup<"c++98-c++11-compat">;
243280031Sdimdef CXXPre14CompatPedantic : DiagGroup<"c++98-c++11-compat-pedantic",
244327952Sdim                                       [CXXPre14Compat,
245327952Sdim                                        CXXPre14CompatBinaryLiteral]>;
246327952Sdimdef CXXPre17Compat : DiagGroup<"c++98-c++11-c++14-compat">;
247327952Sdimdef CXXPre17CompatPedantic : DiagGroup<"c++98-c++11-c++14-compat-pedantic",
248327952Sdim                                       [CXXPre17Compat]>;
249360784Sdimdef CXXPre20Compat : DiagGroup<"c++98-c++11-c++14-c++17-compat">;
250360784Sdimdef CXXPre20CompatPedantic : DiagGroup<"c++98-c++11-c++14-c++17-compat-pedantic",
251360784Sdim                                       [CXXPre20Compat]>;
252251662Sdim
253234353Sdimdef CXX98CompatBindToTemporaryCopy :
254234353Sdim  DiagGroup<"c++98-compat-bind-to-temporary-copy">;
255234353Sdimdef CXX98CompatLocalTypeTemplateArgs :
256234353Sdim  DiagGroup<"c++98-compat-local-type-template-args">;
257234353Sdimdef CXX98CompatUnnamedTypeTemplateArgs :
258234353Sdim  DiagGroup<"c++98-compat-unnamed-type-template-args">;
259234353Sdim
260234353Sdimdef CXX98Compat : DiagGroup<"c++98-compat",
261280031Sdim                            [CXX98CompatLocalTypeTemplateArgs,
262251662Sdim                             CXX98CompatUnnamedTypeTemplateArgs,
263280031Sdim                             CXXPre14Compat,
264327952Sdim                             CXXPre17Compat,
265360784Sdim                             CXXPre20Compat]>;
266226633Sdim// Warnings for C++11 features which are Extensions in C++98 mode.
267251662Sdimdef CXX98CompatPedantic : DiagGroup<"c++98-compat-pedantic",
268251662Sdim                                    [CXX98Compat,
269280031Sdim                                     CXX98CompatBindToTemporaryCopy,
270341825Sdim                                     CXX98CompatExtraSemi,
271280031Sdim                                     CXXPre14CompatPedantic,
272327952Sdim                                     CXXPre17CompatPedantic,
273360784Sdim                                     CXXPre20CompatPedantic]>;
274208600Srdivacky
275226633Sdimdef CXX11Narrowing : DiagGroup<"c++11-narrowing">;
276234353Sdim
277321369Sdimdef CXX11WarnOverrideDestructor :
278321369Sdim  DiagGroup<"inconsistent-missing-destructor-override">;
279280031Sdimdef CXX11WarnOverrideMethod : DiagGroup<"inconsistent-missing-override">;
280280031Sdim
281234353Sdim// Original name of this warning in Clang
282226633Sdimdef : DiagGroup<"c++0x-narrowing", [CXX11Narrowing]>;
283226633Sdim
284234353Sdim// Name of this warning in GCC
285234353Sdimdef : DiagGroup<"narrowing", [CXX11Narrowing]>;
286234353Sdim
287234353Sdimdef CXX11CompatReservedUserDefinedLiteral :
288234353Sdim  DiagGroup<"c++11-compat-reserved-user-defined-literal">;
289234353Sdimdef ReservedUserDefinedLiteral :
290234353Sdim  DiagGroup<"reserved-user-defined-literal",
291234353Sdim            [CXX11CompatReservedUserDefinedLiteral]>;
292234353Sdim
293234353Sdimdef CXX11Compat : DiagGroup<"c++11-compat",
294234353Sdim                            [CXX11Narrowing,
295251662Sdim                             CXX11CompatReservedUserDefinedLiteral,
296261991Sdim                             CXX11CompatDeprecatedWritableStr,
297280031Sdim                             CXXPre14Compat,
298327952Sdim                             CXXPre17Compat,
299360784Sdim                             CXXPre20Compat]>;
300226633Sdimdef : DiagGroup<"c++0x-compat", [CXX11Compat]>;
301251662Sdimdef CXX11CompatPedantic : DiagGroup<"c++11-compat-pedantic",
302327952Sdim                                    [CXX11Compat,
303327952Sdim                                     CXXPre14CompatPedantic,
304327952Sdim                                     CXXPre17CompatPedantic,
305360784Sdim                                     CXXPre20CompatPedantic]>;
306226633Sdim
307327952Sdimdef CXX14Compat : DiagGroup<"c++14-compat", [CXXPre17Compat,
308360784Sdim                                             CXXPre20Compat]>;
309276479Sdimdef CXX14CompatPedantic : DiagGroup<"c++14-compat-pedantic",
310327952Sdim                                    [CXX14Compat,
311327952Sdim                                     CXXPre17CompatPedantic,
312360784Sdim                                     CXXPre20CompatPedantic]>;
313276479Sdim
314322740Sdimdef CXX17Compat : DiagGroup<"c++17-compat", [DeprecatedRegister,
315321369Sdim                                             DeprecatedIncrementBool,
316327952Sdim                                             CXX17CompatMangling,
317360784Sdim                                             CXXPre20Compat]>;
318327952Sdimdef CXX17CompatPedantic : DiagGroup<"c++17-compat-pedantic",
319327952Sdim                                    [CXX17Compat,
320360784Sdim                                     CXXPre20CompatPedantic]>;
321322740Sdimdef : DiagGroup<"c++1z-compat", [CXX17Compat]>;
322296417Sdim
323360784Sdimdef CXX20Compat : DiagGroup<"c++20-compat">;
324360784Sdimdef CXX20CompatPedantic : DiagGroup<"c++20-compat-pedantic",
325360784Sdim                                    [CXX20Compat]>;
326360784Sdimdef : DiagGroup<"c++2a-compat", [CXX20Compat]>;
327360784Sdimdef : DiagGroup<"c++2a-compat-pedantic", [CXX20CompatPedantic]>;
328327952Sdim
329221345Sdimdef ExitTimeDestructors : DiagGroup<"exit-time-destructors">;
330234353Sdimdef FlexibleArrayExtensions : DiagGroup<"flexible-array-extensions">;
331193326Seddef FourByteMultiChar : DiagGroup<"four-char-constants">;
332212904Sdimdef GlobalConstructors : DiagGroup<"global-constructors">;
333360784Sdimdef BitwiseConditionalParentheses: DiagGroup<"bitwise-conditional-parentheses">;
334224145Sdimdef BitwiseOpParentheses: DiagGroup<"bitwise-op-parentheses">;
335218893Sdimdef LogicalOpParentheses: DiagGroup<"logical-op-parentheses">;
336261991Sdimdef LogicalNotParentheses: DiagGroup<"logical-not-parentheses">;
337243830Sdimdef ShiftOpParentheses: DiagGroup<"shift-op-parentheses">;
338251662Sdimdef OverloadedShiftOpParentheses: DiagGroup<"overloaded-shift-op-parentheses">;
339234353Sdimdef DanglingElse: DiagGroup<"dangling-else">;
340249423Sdimdef DanglingField : DiagGroup<"dangling-field">;
341341825Sdimdef DanglingInitializerList : DiagGroup<"dangling-initializer-list">;
342360784Sdimdef DanglingGsl : DiagGroup<"dangling-gsl">;
343341825Sdimdef ReturnStackAddress : DiagGroup<"return-stack-address">;
344341825Sdimdef Dangling : DiagGroup<"dangling", [DanglingField,
345341825Sdim                                      DanglingInitializerList,
346360784Sdim                                      DanglingGsl,
347341825Sdim                                      ReturnStackAddress]>;
348249423Sdimdef DistributedObjectModifiers : DiagGroup<"distributed-object-modifiers">;
349309124Sdimdef ExpansionToDefined : DiagGroup<"expansion-to-defined">;
350288943Sdimdef FlagEnum : DiagGroup<"flag-enum">;
351296417Sdimdef IncrementBool : DiagGroup<"increment-bool", [DeprecatedIncrementBool]>;
352276479Sdimdef InfiniteRecursion : DiagGroup<"infinite-recursion">;
353344779Sdimdef PureVirtualCallFromCtorDtor: DiagGroup<"call-to-pure-virtual-from-ctor-dtor">;
354261991Sdimdef GNUImaginaryConstant : DiagGroup<"gnu-imaginary-constant">;
355210299Seddef IgnoredQualifiers : DiagGroup<"ignored-qualifiers">;
356198092Srdivackydef : DiagGroup<"import">;
357296417Sdimdef GNUIncludeNext : DiagGroup<"gnu-include-next">;
358276479Sdimdef IncompatibleMSStruct : DiagGroup<"incompatible-ms-struct">;
359341825Sdimdef IncompatiblePointerTypesDiscardsQualifiers
360249423Sdim  : DiagGroup<"incompatible-pointer-types-discards-qualifiers">;
361314564Sdimdef IncompatibleFunctionPointerTypes
362314564Sdim  : DiagGroup<"incompatible-function-pointer-types">;
363249423Sdimdef IncompatiblePointerTypes
364249423Sdim  : DiagGroup<"incompatible-pointer-types",
365314564Sdim    [IncompatiblePointerTypesDiscardsQualifiers,
366314564Sdim     IncompatibleFunctionPointerTypes]>;
367234353Sdimdef IncompleteUmbrella : DiagGroup<"incomplete-umbrella">;
368341825Sdimdef IncompleteFrameworkModuleDeclaration
369341825Sdim  : DiagGroup<"incomplete-framework-module-declaration">;
370276479Sdimdef NonModularIncludeInFrameworkModule
371276479Sdim  : DiagGroup<"non-modular-include-in-framework-module">;
372276479Sdimdef NonModularIncludeInModule : DiagGroup<"non-modular-include-in-module",
373276479Sdim                                          [NonModularIncludeInFrameworkModule]>;
374280031Sdimdef IncompleteModule : DiagGroup<"incomplete-module",
375280031Sdim    [IncompleteUmbrella, NonModularIncludeInModule]>;
376314564Sdimdef PrivateModule : DiagGroup<"private-module">;
377280031Sdim
378296417Sdimdef CXX11InlineNamespace : DiagGroup<"c++11-inline-namespace">;
379249423Sdimdef InvalidNoreturn : DiagGroup<"invalid-noreturn">;
380249423Sdimdef InvalidSourceEncoding : DiagGroup<"invalid-source-encoding">;
381234353Sdimdef KNRPromotedParameter : DiagGroup<"knr-promoted-parameter">;
382193326Seddef : DiagGroup<"init-self">;
383193326Seddef : DiagGroup<"inline">;
384194613Seddef : DiagGroup<"invalid-pch">;
385261991Sdimdef GNULabelsAsValue : DiagGroup<"gnu-label-as-value">;
386204962Srdivackydef LiteralRange : DiagGroup<"literal-range">;
387234353Sdimdef LocalTypeTemplateArgs : DiagGroup<"local-type-template-args",
388234353Sdim                                      [CXX98CompatLocalTypeTemplateArgs]>;
389360784Sdimdef RangeLoopConstruct : DiagGroup<"range-loop-construct">;
390360784Sdimdef RangeLoopBindReference : DiagGroup<"range-loop-bind-reference">;
391360784Sdimdef RangeLoopAnalysis : DiagGroup<"range-loop-analysis",
392360784Sdim                                  [RangeLoopConstruct, RangeLoopBindReference]>;
393288943Sdimdef ForLoopAnalysis : DiagGroup<"for-loop-analysis">;
394288943Sdimdef LoopAnalysis : DiagGroup<"loop-analysis", [ForLoopAnalysis,
395288943Sdim                                               RangeLoopAnalysis]>;
396226633Sdimdef MalformedWarningCheck : DiagGroup<"malformed-warning-check">;
397226633Sdimdef Main : DiagGroup<"main">;
398234353Sdimdef MainReturnType : DiagGroup<"main-return-type">;
399314564Sdimdef MaxUnsignedZero : DiagGroup<"max-unsigned-zero">;
400204962Srdivackydef MissingBraces : DiagGroup<"missing-braces">;
401212904Sdimdef MissingDeclarations: DiagGroup<"missing-declarations">;
402193326Seddef : DiagGroup<"missing-format-attribute">;
403198954Srdivackydef : DiagGroup<"missing-include-dirs">;
404249423Sdimdef MissingNoreturn : DiagGroup<"missing-noreturn">;
405193326Seddef MultiChar : DiagGroup<"multichar">;
406193326Seddef : DiagGroup<"nested-externs">;
407243830Sdimdef CXX11LongLong : DiagGroup<"c++11-long-long">;
408243830Sdimdef LongLong : DiagGroup<"long-long", [CXX11LongLong]>;
409288943Sdimdef ImplicitlyUnsignedLiteral : DiagGroup<"implicitly-unsigned-literal">;
410249423Sdimdef MethodSignatures : DiagGroup<"method-signatures">;
411243830Sdimdef MismatchedParameterTypes : DiagGroup<"mismatched-parameter-types">;
412243830Sdimdef MismatchedReturnTypes : DiagGroup<"mismatched-return-types">;
413193326Seddef MismatchedTags : DiagGroup<"mismatched-tags">;
414205219Srdivackydef MissingFieldInitializers : DiagGroup<"missing-field-initializers">;
415280031Sdimdef ModuleBuild : DiagGroup<"module-build">;
416353358Sdimdef ModuleImport : DiagGroup<"module-import">;
417249423Sdimdef ModuleConflict : DiagGroup<"module-conflict">;
418296417Sdimdef ModuleFileExtension : DiagGroup<"module-file-extension">;
419261991Sdimdef NewlineEOF : DiagGroup<"newline-eof">;
420288943Sdimdef Nullability : DiagGroup<"nullability">;
421288943Sdimdef NullabilityDeclSpec : DiagGroup<"nullability-declspec">;
422314564Sdimdef NullabilityInferredOnNestedType : DiagGroup<"nullability-inferred-on-nested-type">;
423288943Sdimdef NullableToNonNullConversion : DiagGroup<"nullable-to-nonnull-conversion">;
424314564Sdimdef NullabilityCompletenessOnArrays : DiagGroup<"nullability-completeness-on-arrays">;
425314564Sdimdef NullabilityCompleteness : DiagGroup<"nullability-completeness",
426314564Sdim                                        [NullabilityCompletenessOnArrays]>;
427249423Sdimdef NullArithmetic : DiagGroup<"null-arithmetic">;
428234353Sdimdef NullCharacter : DiagGroup<"null-character">;
429218893Sdimdef NullDereference : DiagGroup<"null-dereference">;
430210299Seddef InitializerOverrides : DiagGroup<"initializer-overrides">;
431344779Sdim// For compatibility with GCC; -Woverride-init = -Winitializer-overrides
432344779Sdimdef : DiagGroup<"override-init", [InitializerOverrides]>;
433193326Seddef NonNull : DiagGroup<"nonnull">;
434249423Sdimdef NonPODVarargs : DiagGroup<"non-pod-varargs">;
435276479Sdimdef ClassVarargs : DiagGroup<"class-varargs", [NonPODVarargs]>;
436193326Seddef : DiagGroup<"nonportable-cfstrings">;
437218893Sdimdef NonVirtualDtor : DiagGroup<"non-virtual-dtor">;
438327952Sdimdef NullPointerArithmetic : DiagGroup<"null-pointer-arithmetic">;
439314564Sdimdef : DiagGroup<"effc++", [NonVirtualDtor]>;
440234353Sdimdef OveralignedType : DiagGroup<"over-aligned">;
441276479Sdimdef OldStyleCast : DiagGroup<"old-style-cast">;
442193326Seddef : DiagGroup<"old-style-definition">;
443212904Sdimdef OutOfLineDeclaration : DiagGroup<"out-of-line-declaration">;
444198092Srdivackydef : DiagGroup<"overflow">;
445239462Sdimdef ForwardClassReceiver : DiagGroup<"receiver-forward-class">;
446239462Sdimdef MethodAccess : DiagGroup<"objc-method-access">;
447239462Sdimdef ObjCReceiver : DiagGroup<"receiver-expr">;
448276479Sdimdef OperatorNewReturnsNull : DiagGroup<"new-returns-null">;
449212904Sdimdef OverlengthStrings : DiagGroup<"overlength-strings">;
450218893Sdimdef OverloadedVirtual : DiagGroup<"overloaded-virtual">;
451239462Sdimdef PrivateExtern : DiagGroup<"private-extern">;
452239462Sdimdef SelTypeCast : DiagGroup<"cast-of-sel-type">;
453276479Sdimdef FunctionDefInObjCContainer : DiagGroup<"function-def-in-objc-container">;
454243830Sdimdef BadFunctionCast : DiagGroup<"bad-function-cast">;
455234353Sdimdef ObjCPropertyImpl : DiagGroup<"objc-property-implementation">;
456239462Sdimdef ObjCPropertyNoAttribute : DiagGroup<"objc-property-no-attribute">;
457344779Sdimdef ObjCPropertyAssignOnObjectType : DiagGroup<"objc-property-assign-on-object-type">;
458288943Sdimdef ObjCProtocolQualifiers : DiagGroup<"objc-protocol-qualifiers">;
459226633Sdimdef ObjCMissingSuperCalls : DiagGroup<"objc-missing-super-calls">;
460276479Sdimdef ObjCDesignatedInit : DiagGroup<"objc-designated-initializers">;
461226633Sdimdef ObjCRetainBlockProperty : DiagGroup<"objc-noncopy-retain-block-property">;
462234353Sdimdef ObjCReadonlyPropertyHasSetter : DiagGroup<"objc-readonly-with-setter-property">;
463261991Sdimdef ObjCInvalidIBOutletProperty : DiagGroup<"invalid-iboutlet">;
464234353Sdimdef ObjCRootClass : DiagGroup<"objc-root-class">;
465261991Sdimdef ObjCPointerIntrospectPerformSelector : DiagGroup<"deprecated-objc-pointer-introspection-performSelector">;
466261991Sdimdef ObjCPointerIntrospect : DiagGroup<"deprecated-objc-pointer-introspection", [ObjCPointerIntrospectPerformSelector]>;
467280031Sdimdef ObjCMultipleMethodNames : DiagGroup<"objc-multiple-method-names">;
468327952Sdimdef ObjCFlexibleArray : DiagGroup<"objc-flexible-array">;
469353358Sdimdef ObjCBoxing : DiagGroup<"objc-boxing">;
470314564Sdimdef OpenCLUnsupportedRGBA: DiagGroup<"opencl-unsupported-rgba">;
471353358Sdimdef UnderalignedExceptionObject : DiagGroup<"underaligned-exception-object">;
472249423Sdimdef DeprecatedObjCIsaUsage : DiagGroup<"deprecated-objc-isa-usage">;
473280031Sdimdef ExplicitInitializeCall : DiagGroup<"explicit-initialize-call">;
474218893Sdimdef Packed : DiagGroup<"packed">;
475218893Sdimdef Padded : DiagGroup<"padded">;
476341825Sdim
477288943Sdimdef PessimizingMove : DiagGroup<"pessimizing-move">;
478341825Sdimdef ReturnStdMoveInCXX11 : DiagGroup<"return-std-move-in-c++11">;
479341825Sdimdef ReturnStdMove : DiagGroup<"return-std-move">;
480341825Sdim
481198092Srdivackydef PointerArith : DiagGroup<"pointer-arith">;
482276479Sdimdef PoundWarning : DiagGroup<"#warnings">;
483234353Sdimdef PoundPragmaMessage : DiagGroup<"#pragma-messages">,
484221345Sdim                         DiagCategory<"#pragma message Directive">;
485193326Seddef : DiagGroup<"pointer-to-int-cast">;
486193326Seddef : DiagGroup<"redundant-decls">;
487261991Sdimdef RedeclaredClassMember : DiagGroup<"redeclared-class-member">;
488261991Sdimdef GNURedeclaredEnum : DiagGroup<"gnu-redeclared-enum">;
489288943Sdimdef RedundantMove : DiagGroup<"redundant-move">;
490296417Sdimdef Register : DiagGroup<"register", [DeprecatedRegister]>;
491234353Sdimdef ReturnTypeCLinkage : DiagGroup<"return-type-c-linkage">;
492234353Sdimdef ReturnType : DiagGroup<"return-type", [ReturnTypeCLinkage]>;
493234353Sdimdef BindToTemporaryCopy : DiagGroup<"bind-to-temporary-copy",
494234353Sdim                                    [CXX98CompatBindToTemporaryCopy]>;
495239462Sdimdef SelfAssignmentField : DiagGroup<"self-assign-field">;
496341825Sdimdef SelfAssignmentOverloaded : DiagGroup<"self-assign-overloaded">;
497341825Sdimdef SelfAssignment : DiagGroup<"self-assign", [SelfAssignmentOverloaded, SelfAssignmentField]>;
498280031Sdimdef SelfMove : DiagGroup<"self-move">;
499199482Srdivackydef SemiBeforeMethodBody : DiagGroup<"semicolon-before-method-body">;
500226633Sdimdef Sentinel : DiagGroup<"sentinel">;
501226633Sdimdef MissingMethodReturnType : DiagGroup<"missing-method-return-type">;
502309124Sdim
503321369Sdimdef ShadowField : DiagGroup<"shadow-field">;
504309124Sdimdef ShadowFieldInConstructorModified : DiagGroup<"shadow-field-in-constructor-modified">;
505309124Sdimdef ShadowFieldInConstructor : DiagGroup<"shadow-field-in-constructor",
506309124Sdim                                         [ShadowFieldInConstructorModified]>;
507314564Sdimdef ShadowIvar : DiagGroup<"shadow-ivar">;
508314564Sdimdef ShadowUncapturedLocal : DiagGroup<"shadow-uncaptured-local">;
509309124Sdim
510309124Sdim// -Wshadow-all is a catch-all for all shadowing. -Wshadow is just the
511309124Sdim// shadowing that we think is unsafe.
512314564Sdimdef Shadow : DiagGroup<"shadow", [ShadowFieldInConstructorModified,
513314564Sdim                                  ShadowIvar]>;
514314564Sdimdef ShadowAll : DiagGroup<"shadow-all", [Shadow, ShadowFieldInConstructor,
515321369Sdim                                         ShadowUncapturedLocal, ShadowField]>;
516309124Sdim
517243830Sdimdef Shorten64To32 : DiagGroup<"shorten-64-to-32">;
518210299Seddef : DiagGroup<"sign-promo">;
519199482Srdivackydef SignCompare : DiagGroup<"sign-compare">;
520212904Sdimdef : DiagGroup<"stack-protector">;
521212904Sdimdef : DiagGroup<"switch-default">;
522199482Srdivackydef : DiagGroup<"synth">;
523224145Sdimdef SizeofArrayArgument : DiagGroup<"sizeof-array-argument">;
524249423Sdimdef SizeofArrayDecay : DiagGroup<"sizeof-array-decay">;
525249423Sdimdef SizeofPointerMemaccess : DiagGroup<"sizeof-pointer-memaccess">;
526341825Sdimdef MemsetTransposedArgs : DiagGroup<"memset-transposed-args">;
527341825Sdimdef DynamicClassMemaccess : DiagGroup<"dynamic-class-memaccess">;
528341825Sdimdef NonTrivialMemaccess : DiagGroup<"nontrivial-memaccess">;
529341825Sdimdef SuspiciousBzero : DiagGroup<"suspicious-bzero">;
530341825Sdimdef SuspiciousMemaccess : DiagGroup<"suspicious-memaccess",
531341825Sdim  [SizeofPointerMemaccess, DynamicClassMemaccess,
532341825Sdim   NonTrivialMemaccess, MemsetTransposedArgs, SuspiciousBzero]>;
533249423Sdimdef StaticInInline : DiagGroup<"static-in-inline">;
534249423Sdimdef StaticLocalInInline : DiagGroup<"static-local-in-inline">;
535249423Sdimdef GNUStaticFloatInit : DiagGroup<"gnu-static-float-init">;
536249423Sdimdef StaticFloatInit : DiagGroup<"static-float-init", [GNUStaticFloatInit]>;
537261991Sdimdef GNUStatementExpression : DiagGroup<"gnu-statement-expression">;
538276479Sdimdef StringCompare : DiagGroup<"string-compare">;
539234353Sdimdef StringPlusInt : DiagGroup<"string-plus-int">;
540261991Sdimdef StringPlusChar : DiagGroup<"string-plus-char">;
541234353Sdimdef StrncatSize : DiagGroup<"strncat-size">;
542360784Sdimdef IntInBoolContext : DiagGroup<"int-in-bool-context">;
543327952Sdimdef TautologicalTypeLimitCompare : DiagGroup<"tautological-type-limit-compare">;
544327952Sdimdef TautologicalUnsignedZeroCompare : DiagGroup<"tautological-unsigned-zero-compare">;
545327952Sdimdef TautologicalUnsignedEnumZeroCompare : DiagGroup<"tautological-unsigned-enum-zero-compare">;
546327952Sdimdef TautologicalInRangeCompare : DiagGroup<"tautological-constant-in-range-compare",
547327952Sdim                                           [TautologicalTypeLimitCompare,
548327952Sdim                                            TautologicalUnsignedZeroCompare,
549327952Sdim                                            TautologicalUnsignedEnumZeroCompare]>;
550353358Sdim// For compatibility with GCC; -Wtype-limits = -Wtautological-constant-in-range-compare
551353358Sdimdef TypeLimits : DiagGroup<"type-limits", [TautologicalInRangeCompare]>;
552243830Sdimdef TautologicalOutOfRangeCompare : DiagGroup<"tautological-constant-out-of-range-compare">;
553327952Sdimdef TautologicalConstantCompare : DiagGroup<"tautological-constant-compare",
554328381Sdim                                            [TautologicalOutOfRangeCompare]>;
555276479Sdimdef TautologicalPointerCompare : DiagGroup<"tautological-pointer-compare">;
556276479Sdimdef TautologicalOverlapCompare : DiagGroup<"tautological-overlap-compare">;
557360784Sdimdef TautologicalBitwiseCompare : DiagGroup<"tautological-bitwise-compare">;
558276479Sdimdef TautologicalUndefinedCompare : DiagGroup<"tautological-undefined-compare">;
559353358Sdimdef TautologicalObjCBoolCompare : DiagGroup<"tautological-objc-bool-compare">;
560243830Sdimdef TautologicalCompare : DiagGroup<"tautological-compare",
561327952Sdim                                    [TautologicalConstantCompare,
562276479Sdim                                     TautologicalPointerCompare,
563276479Sdim                                     TautologicalOverlapCompare,
564360784Sdim                                     TautologicalBitwiseCompare,
565353358Sdim                                     TautologicalUndefinedCompare,
566353358Sdim                                     TautologicalObjCBoolCompare]>;
567221345Sdimdef HeaderHygiene : DiagGroup<"header-hygiene">;
568243830Sdimdef DuplicateDeclSpecifier : DiagGroup<"duplicate-decl-specifier">;
569243830Sdimdef CompareDistinctPointerType : DiagGroup<"compare-distinct-pointer-types">;
570261991Sdimdef GNUUnionCast : DiagGroup<"gnu-union-cast">;
571261991Sdimdef GNUVariableSizedTypeNotAtEnd : DiagGroup<"gnu-variable-sized-type-not-at-end">;
572261991Sdimdef Varargs : DiagGroup<"varargs">;
573360784Sdimdef XorUsedAsPow : DiagGroup<"xor-used-as-pow">;
574193326Sed
575249423Sdimdef Unsequenced : DiagGroup<"unsequenced">;
576249423Sdim// GCC name for -Wunsequenced
577249423Sdimdef : DiagGroup<"sequence-point", [Unsequenced]>;
578249423Sdim
579198092Srdivacky// Preprocessor warnings.
580243830Sdimdef AmbiguousMacro : DiagGroup<"ambiguous-macro">;
581280031Sdimdef KeywordAsMacro : DiagGroup<"keyword-macro">;
582280031Sdimdef ReservedIdAsMacro : DiagGroup<"reserved-id-macro">;
583198092Srdivacky
584199990Srdivacky// Just silence warnings about -Wstrict-aliasing for now.
585193326Seddef : DiagGroup<"strict-aliasing=0">;
586193326Seddef : DiagGroup<"strict-aliasing=1">;
587193326Seddef : DiagGroup<"strict-aliasing=2">;
588193326Seddef : DiagGroup<"strict-aliasing">;
589193326Sed
590199990Srdivacky// Just silence warnings about -Wstrict-overflow for now.
591193326Seddef : DiagGroup<"strict-overflow=0">;
592193326Seddef : DiagGroup<"strict-overflow=1">;
593193326Seddef : DiagGroup<"strict-overflow=2">;
594199990Srdivackydef : DiagGroup<"strict-overflow=3">;
595199990Srdivackydef : DiagGroup<"strict-overflow=4">;
596199990Srdivackydef : DiagGroup<"strict-overflow=5">;
597193326Seddef : DiagGroup<"strict-overflow">;
598193326Sed
599193326Seddef InvalidOffsetof : DiagGroup<"invalid-offsetof">;
600193326Seddef : DiagGroup<"strict-prototypes">;
601212904Sdimdef StrictSelector : DiagGroup<"strict-selector-match">;
602234353Sdimdef MethodDuplicate : DiagGroup<"duplicate-method-match">;
603280031Sdimdef ObjCCStringFormat : DiagGroup<"cstring-format-directive">;
604234353Sdimdef CoveredSwitchDefault : DiagGroup<"covered-switch-default">;
605276479Sdimdef SwitchBool     : DiagGroup<"switch-bool">;
606203955Srdivackydef SwitchEnum     : DiagGroup<"switch-enum">;
607234353Sdimdef Switch         : DiagGroup<"switch">;
608239462Sdimdef ImplicitFallthroughPerFunction :
609239462Sdim  DiagGroup<"implicit-fallthrough-per-function">;
610239462Sdimdef ImplicitFallthrough  : DiagGroup<"implicit-fallthrough",
611239462Sdim                                     [ImplicitFallthroughPerFunction]>;
612239462Sdimdef InvalidPPToken : DiagGroup<"invalid-pp-token">;
613207632Srdivackydef Trigraphs      : DiagGroup<"trigraphs">;
614193326Sed
615193326Seddef : DiagGroup<"type-limits">;
616249423Sdimdef UndefinedReinterpretCast : DiagGroup<"undefined-reinterpret-cast">;
617249423Sdimdef ReinterpretBaseClass : DiagGroup<"reinterpret-base-class">;
618234353Sdimdef Unicode  : DiagGroup<"unicode">;
619221345Sdimdef UninitializedMaybe : DiagGroup<"conditional-uninitialized">;
620239462Sdimdef UninitializedSometimes : DiagGroup<"sometimes-uninitialized">;
621249423Sdimdef UninitializedStaticSelfInit : DiagGroup<"static-self-init">;
622249423Sdimdef Uninitialized  : DiagGroup<"uninitialized", [UninitializedSometimes,
623249423Sdim                                                 UninitializedStaticSelfInit]>;
624314564Sdimdef IgnoredPragmaIntrinsic : DiagGroup<"ignored-pragma-intrinsic">;
625341825Sdim// #pragma optimize is often used to avoid to work around MSVC codegen bugs or
626341825Sdim// to disable inlining. It's not completely clear what alternative to suggest
627341825Sdim// (#pragma clang optimize, noinline) so suggest nothing for now.
628341825Sdimdef IgnoredPragmaOptimize : DiagGroup<"ignored-pragma-optimize">;
629193326Seddef UnknownPragmas : DiagGroup<"unknown-pragmas">;
630341825Sdimdef IgnoredPragmas : DiagGroup<"ignored-pragmas",
631341825Sdim    [IgnoredPragmaIntrinsic, IgnoredPragmaOptimize]>;
632321369Sdimdef PragmaClangAttribute : DiagGroup<"pragma-clang-attribute">;
633327952Sdimdef PragmaPackSuspiciousInclude : DiagGroup<"pragma-pack-suspicious-include">;
634327952Sdimdef PragmaPack : DiagGroup<"pragma-pack", [PragmaPackSuspiciousInclude]>;
635321369Sdimdef Pragmas : DiagGroup<"pragmas", [UnknownPragmas, IgnoredPragmas,
636327952Sdim                                    PragmaClangAttribute, PragmaPack]>;
637249423Sdimdef UnknownWarningOption : DiagGroup<"unknown-warning-option">;
638234353Sdimdef NSobjectAttribute : DiagGroup<"NSObject-attribute">;
639327952Sdimdef NSConsumedMismatch : DiagGroup<"nsconsumed-mismatch">;
640327952Sdimdef NSReturnsMismatch : DiagGroup<"nsreturns-mismatch">;
641327952Sdim
642288943Sdimdef IndependentClassAttribute : DiagGroup<"IndependentClass-attribute">;
643276479Sdimdef UnknownAttributes : DiagGroup<"unknown-attributes">;
644234353Sdimdef IgnoredAttributes : DiagGroup<"ignored-attributes">;
645276479Sdimdef Attributes : DiagGroup<"attributes", [UnknownAttributes,
646276479Sdim                                          IgnoredAttributes]>;
647288943Sdimdef UnknownSanitizers : DiagGroup<"unknown-sanitizers">;
648234353Sdimdef UnnamedTypeTemplateArgs : DiagGroup<"unnamed-type-template-args",
649234353Sdim                                        [CXX98CompatUnnamedTypeTemplateArgs]>;
650261991Sdimdef UnsupportedFriend : DiagGroup<"unsupported-friend">;
651193725Seddef UnusedArgument : DiagGroup<"unused-argument">;
652276479Sdimdef UnusedCommandLineArgument : DiagGroup<"unused-command-line-argument">;
653280031Sdimdef IgnoredOptimizationArgument : DiagGroup<"ignored-optimization-argument">;
654280031Sdimdef InvalidCommandLineArgument : DiagGroup<"invalid-command-line-argument",
655280031Sdim                                           [IgnoredOptimizationArgument]>;
656226633Sdimdef UnusedComparison : DiagGroup<"unused-comparison">;
657207619Srdivackydef UnusedExceptionParameter : DiagGroup<"unused-exception-parameter">;
658221345Sdimdef UnneededInternalDecl : DiagGroup<"unneeded-internal-declaration">;
659221345Sdimdef UnneededMemberFunction : DiagGroup<"unneeded-member-function">;
660239462Sdimdef UnusedPrivateField : DiagGroup<"unused-private-field">;
661221345Sdimdef UnusedFunction : DiagGroup<"unused-function", [UnneededInternalDecl]>;
662321369Sdimdef UnusedTemplate : DiagGroup<"unused-template", [UnneededInternalDecl]>;
663221345Sdimdef UnusedMemberFunction : DiagGroup<"unused-member-function",
664221345Sdim                                     [UnneededMemberFunction]>;
665193725Seddef UnusedLabel : DiagGroup<"unused-label">;
666321369Sdimdef UnusedLambdaCapture : DiagGroup<"unused-lambda-capture">;
667193725Seddef UnusedParameter : DiagGroup<"unused-parameter">;
668226633Sdimdef UnusedResult : DiagGroup<"unused-result">;
669280031Sdimdef PotentiallyEvaluatedExpression : DiagGroup<"potentially-evaluated-expression">;
670280031Sdimdef UnevaluatedExpression : DiagGroup<"unevaluated-expression",
671280031Sdim                                      [PotentiallyEvaluatedExpression]>;
672280031Sdimdef UnusedValue : DiagGroup<"unused-value", [UnusedComparison, UnusedResult,
673280031Sdim                                             UnevaluatedExpression]>;
674261991Sdimdef UnusedConstVariable : DiagGroup<"unused-const-variable">;
675261991Sdimdef UnusedVariable : DiagGroup<"unused-variable",
676261991Sdim                               [UnusedConstVariable]>;
677280031Sdimdef UnusedLocalTypedef : DiagGroup<"unused-local-typedef">;
678261991Sdimdef UnusedPropertyIvar :  DiagGroup<"unused-property-ivar">;
679280031Sdimdef UnusedGetterReturnValue : DiagGroup<"unused-getter-return-value">;
680218893Sdimdef UsedButMarkedUnused : DiagGroup<"used-but-marked-unused">;
681226633Sdimdef UserDefinedLiterals : DiagGroup<"user-defined-literals">;
682314564Sdimdef UserDefinedWarnings : DiagGroup<"user-defined-warnings">;
683360784Sdimdef ReorderCtor : DiagGroup<"reorder-ctor">;
684360784Sdimdef ReorderInitList : DiagGroup<"reorder-init-list">;
685360784Sdimdef Reorder : DiagGroup<"reorder", [ReorderCtor, ReorderInitList]>;
686194613Seddef UndeclaredSelector : DiagGroup<"undeclared-selector">;
687218893Sdimdef ImplicitAtomic : DiagGroup<"implicit-atomic-properties">;
688218893Sdimdef CustomAtomic : DiagGroup<"custom-atomic-properties">;
689218893Sdimdef AtomicProperties : DiagGroup<"atomic-properties",
690218893Sdim                                 [ImplicitAtomic, CustomAtomic]>;
691224145Sdimdef ARCUnsafeRetainedAssign : DiagGroup<"arc-unsafe-retained-assign">;
692224145Sdimdef ARCRetainCycles : DiagGroup<"arc-retain-cycles">;
693224145Sdimdef ARCNonPodMemAccess : DiagGroup<"arc-non-pod-memaccess">;
694224145Sdimdef AutomaticReferenceCounting : DiagGroup<"arc",
695243830Sdim                                           [ARCUnsafeRetainedAssign,
696224145Sdim                                            ARCRetainCycles,
697224145Sdim                                            ARCNonPodMemAccess]>;
698243830Sdimdef ARCRepeatedUseOfWeakMaybe : DiagGroup<"arc-maybe-repeated-use-of-weak">;
699243830Sdimdef ARCRepeatedUseOfWeak : DiagGroup<"arc-repeated-use-of-weak",
700243830Sdim                                     [ARCRepeatedUseOfWeakMaybe]>;
701314564Sdimdef BlockCaptureAutoReleasing : DiagGroup<"block-capture-autoreleasing">;
702261991Sdimdef ObjCBridge : DiagGroup<"bridge-cast">;
703261991Sdim
704276479Sdimdef DeallocInCategory:DiagGroup<"dealloc-in-category">;
705261991Sdimdef SelectorTypeMismatch : DiagGroup<"selector-type-mismatch">;
706261991Sdimdef Selector : DiagGroup<"selector", [SelectorTypeMismatch]>;
707206084Srdivackydef Protocol : DiagGroup<"protocol">;
708344779Sdim// No longer in use, preserve for backwards compatibility.
709344779Sdimdef : DiagGroup<"at-protocol">;
710280031Sdimdef PropertyAccessDotSyntax: DiagGroup<"property-access-dot-syntax">;
711280031Sdimdef PropertyAttr : DiagGroup<"property-attribute-mismatch">;
712198092Srdivackydef SuperSubClassMismatch : DiagGroup<"super-class-method-mismatch">;
713226633Sdimdef OverridingMethodMismatch : DiagGroup<"overriding-method-mismatch">;
714200583Srdivackydef VariadicMacros : DiagGroup<"variadic-macros">;
715234353Sdimdef VectorConversion : DiagGroup<"vector-conversion">;      // clang specific
716234353Sdimdef VexingParse : DiagGroup<"vexing-parse">;
717208600Srdivackydef VLA : DiagGroup<"vla">;
718249423Sdimdef VLAExtension : DiagGroup<"vla-extension">;
719193326Seddef VolatileRegisterVar : DiagGroup<"volatile-register-var">;
720234353Sdimdef Visibility : DiagGroup<"visibility">;
721243830Sdimdef ZeroLengthArray : DiagGroup<"zero-length-array">;
722261991Sdimdef GNUZeroLineDirective : DiagGroup<"gnu-zero-line-directive">;
723261991Sdimdef GNUZeroVariadicMacroArguments : DiagGroup<"gnu-zero-variadic-macro-arguments">;
724276479Sdimdef Fallback : DiagGroup<"fallback">;
725360784Sdimdef MisleadingIndentation : DiagGroup<"misleading-indentation">;
726221345Sdim
727276479Sdim// This covers both the deprecated case (in C++98)
728276479Sdim// and the extension case (in C++11 onwards).
729276479Sdimdef WritableStrings : DiagGroup<"writable-strings", [DeprecatedWritableStr]>;
730276479Sdim
731221345Sdim// GCC calls -Wdeprecated-writable-strings -Wwrite-strings.
732276479Sdim//
733276479Sdim// Bizarrely, this warning flag enables -fconst-strings in C. This is
734276479Sdim// GCC-compatible, but really weird.
735276479Sdim//
736276479Sdim// FIXME: Should this affect C++11 (where this is an error,
737276479Sdim//        not just deprecated) or not?
738276479Sdimdef GCCWriteStrings : DiagGroup<"write-strings" , [WritableStrings]>;
739221345Sdim
740198092Srdivackydef CharSubscript : DiagGroup<"char-subscripts">;
741218893Sdimdef LargeByValueCopy : DiagGroup<"large-by-value-copy">;
742221345Sdimdef DuplicateArgDecl : DiagGroup<"duplicate-method-arg">;
743314564Sdimdef SignedEnumBitfield : DiagGroup<"signed-enum-bitfield">;
744193326Sed
745276479Sdim// Unreachable code warning groups.
746276479Sdim//
747276479Sdim//  The goal is make -Wunreachable-code on by default, in -Wall, or at
748276479Sdim//  least actively used, with more noisy versions of the warning covered
749276479Sdim//  under separate flags.
750276479Sdim//
751276479Sdimdef UnreachableCodeLoopIncrement : DiagGroup<"unreachable-code-loop-increment">;
752276479Sdimdef UnreachableCode : DiagGroup<"unreachable-code",
753276479Sdim                                [UnreachableCodeLoopIncrement]>;
754276479Sdimdef UnreachableCodeBreak : DiagGroup<"unreachable-code-break">;
755276479Sdimdef UnreachableCodeReturn : DiagGroup<"unreachable-code-return">;
756276479Sdimdef UnreachableCodeAggressive : DiagGroup<"unreachable-code-aggressive",
757276479Sdim                                    [UnreachableCode,
758276479Sdim                                     UnreachableCodeBreak,
759276479Sdim                                     UnreachableCodeReturn]>;
760276479Sdim
761193326Sed// Aggregation warning settings.
762193326Sed
763276479Sdim// Populate -Waddress with warnings from other groups.
764276479Sdimdef : DiagGroup<"address", [PointerBoolConversion,
765276479Sdim                            StringCompare,
766276479Sdim                            TautologicalPointerCompare]>;
767276479Sdim
768199482Srdivacky// -Widiomatic-parentheses contains warnings about 'idiomatic'
769221345Sdim// missing parentheses;  it is off by default.  We do not include it
770221345Sdim// in -Wparentheses because most users who use -Wparentheses explicitly
771221345Sdim// do not want these warnings.
772226633Sdimdef ParenthesesOnEquality : DiagGroup<"parentheses-equality">;
773218893Sdimdef Parentheses : DiagGroup<"parentheses",
774224145Sdim                            [LogicalOpParentheses,
775261991Sdim                             LogicalNotParentheses,
776360784Sdim                             BitwiseConditionalParentheses,
777226633Sdim                             BitwiseOpParentheses,
778243830Sdim                             ShiftOpParentheses,
779251662Sdim                             OverloadedShiftOpParentheses,
780234353Sdim                             ParenthesesOnEquality,
781234353Sdim                             DanglingElse]>;
782193326Sed
783218893Sdim// -Wconversion has its own warnings, but we split a few out for
784218893Sdim// legacy reasons:
785218893Sdim//   - some people want just 64-to-32 warnings
786218893Sdim//   - conversion warnings with constant sources are on by default
787218893Sdim//   - conversion warnings for literals are on by default
788218893Sdim//   - bool-to-pointer conversion warnings are on by default
789234353Sdim//   - __null-to-integer conversion warnings are on by default
790199482Srdivackydef Conversion : DiagGroup<"conversion",
791243830Sdim                           [BoolConversion,
792234353Sdim                            ConstantConversion,
793243830Sdim                            EnumConversion,
794321369Sdim                            BitFieldEnumConversion,
795276479Sdim                            FloatConversion,
796243830Sdim                            Shorten64To32,
797243830Sdim                            IntConversion,
798344779Sdim                            ImplicitIntConversion,
799344779Sdim                            ImplicitFloatConversion,
800234353Sdim                            LiteralConversion,
801243830Sdim                            NonLiteralNullConversion, // (1-1)->pointer (etc)
802243830Sdim                            NullConversion, // NULL->non-pointer
803276479Sdim                            ObjCLiteralConversion,
804234353Sdim                            SignConversion,
805243830Sdim                            StringConversion]>,
806208600Srdivacky                 DiagCategory<"Value Conversion Issue">;
807199482Srdivacky
808193725Seddef Unused : DiagGroup<"unused",
809193725Sed                       [UnusedArgument, UnusedFunction, UnusedLabel,
810207619Srdivacky                        // UnusedParameter, (matches GCC's behavior)
811321369Sdim                        // UnusedTemplate, (clean-up libc++ before enabling)
812212904Sdim                        // UnusedMemberFunction, (clean-up llvm before enabling)
813321369Sdim                        UnusedPrivateField, UnusedLambdaCapture,
814321369Sdim                        UnusedLocalTypedef, UnusedValue, UnusedVariable,
815321369Sdim                        UnusedPropertyIvar]>,
816208600Srdivacky                        DiagCategory<"Unused Entity Issue">;
817193725Sed
818193326Sed// Format settings.
819226633Sdimdef FormatInvalidSpecifier : DiagGroup<"format-invalid-specifier">;
820219077Sdimdef FormatSecurity : DiagGroup<"format-security">;
821234353Sdimdef FormatNonStandard : DiagGroup<"format-non-iso">;
822224145Sdimdef FormatY2K : DiagGroup<"format-y2k">;
823288943Sdimdef FormatPedantic : DiagGroup<"format-pedantic">;
824360784Sdimdef FormatTypeConfusion : DiagGroup<"format-type-confusion">;
825219077Sdimdef Format : DiagGroup<"format",
826219077Sdim                       [FormatExtraArgs, FormatZeroLength, NonNull,
827226633Sdim                        FormatSecurity, FormatY2K, FormatInvalidSpecifier]>,
828208600Srdivacky             DiagCategory<"Format String Issue">;
829276479Sdimdef FormatNonLiteral : DiagGroup<"format-nonliteral">;
830193326Seddef Format2 : DiagGroup<"format=2",
831193326Sed                        [FormatNonLiteral, FormatSecurity, FormatY2K]>;
832193326Sed
833239462Sdimdef TypeSafety : DiagGroup<"type-safety">;
834239462Sdim
835314564Sdimdef IncompatibleExceptionSpec : DiagGroup<"incompatible-exception-spec">;
836314564Sdim
837261991Sdimdef IntToVoidPointerCast : DiagGroup<"int-to-void-pointer-cast">;
838261991Sdimdef IntToPointerCast : DiagGroup<"int-to-pointer-cast",
839261991Sdim                                 [IntToVoidPointerCast]>;
840243830Sdim
841341825Sdimdef Move : DiagGroup<"move", [
842341825Sdim    PessimizingMove,
843341825Sdim    RedundantMove,
844341825Sdim    ReturnStdMove,
845341825Sdim    SelfMove
846341825Sdim  ]>;
847288943Sdim
848194613Seddef Extra : DiagGroup<"extra", [
849360784Sdim    DeprecatedCopy,
850205219Srdivacky    MissingFieldInitializers,
851210299Sed    IgnoredQualifiers,
852210299Sed    InitializerOverrides,
853199482Srdivacky    SemiBeforeMethodBody,
854226633Sdim    MissingMethodReturnType,
855199482Srdivacky    SignCompare,
856327952Sdim    UnusedParameter,
857344779Sdim    NullPointerArithmetic,
858344779Sdim    EmptyInitStatement
859194613Sed  ]>;
860193326Sed
861193326Seddef Most : DiagGroup<"most", [
862207619Srdivacky    CharSubscript,
863193326Sed    Comment,
864223017Sdim    DeleteNonVirtualDtor,
865360784Sdim    Format,
866296417Sdim    ForLoopAnalysis,
867193326Sed    Implicit,
868288943Sdim    InfiniteRecursion,
869360784Sdim    IntInBoolContext,
870193326Sed    MismatchedTags,
871204962Srdivacky    MissingBraces,
872288943Sdim    Move,
873193326Sed    MultiChar,
874360784Sdim    RangeLoopConstruct,
875207619Srdivacky    Reorder,
876198092Srdivacky    ReturnType,
877218893Sdim    SelfAssignment,
878280031Sdim    SelfMove,
879224145Sdim    SizeofArrayArgument,
880249423Sdim    SizeofArrayDecay,
881234353Sdim    StringPlusInt,
882360784Sdim    TautologicalCompare,
883193326Sed    Trigraphs,
884193326Sed    Uninitialized,
885193326Sed    UnknownPragmas,
886207619Srdivacky    Unused,
887218893Sdim    VolatileRegisterVar,
888226633Sdim    ObjCMissingSuperCalls,
889276479Sdim    ObjCDesignatedInit,
890327952Sdim    ObjCFlexibleArray,
891239462Sdim    OverloadedVirtual,
892239462Sdim    PrivateExtern,
893261991Sdim    SelTypeCast,
894314564Sdim    ExternCCompat,
895314564Sdim    UserDefinedWarnings
896193326Sed ]>;
897193326Sed
898341825Sdim// Thread Safety warnings
899239462Sdimdef ThreadSafetyAttributes : DiagGroup<"thread-safety-attributes">;
900243830Sdimdef ThreadSafetyAnalysis   : DiagGroup<"thread-safety-analysis">;
901243830Sdimdef ThreadSafetyPrecise    : DiagGroup<"thread-safety-precise">;
902280031Sdimdef ThreadSafetyReference  : DiagGroup<"thread-safety-reference">;
903280031Sdimdef ThreadSafetyNegative   : DiagGroup<"thread-safety-negative">;
904243830Sdimdef ThreadSafety : DiagGroup<"thread-safety",
905341825Sdim                             [ThreadSafetyAttributes,
906243830Sdim                              ThreadSafetyAnalysis,
907280031Sdim                              ThreadSafetyPrecise,
908280031Sdim                              ThreadSafetyReference]>;
909280031Sdimdef ThreadSafetyVerbose : DiagGroup<"thread-safety-verbose">;
910249423Sdimdef ThreadSafetyBeta : DiagGroup<"thread-safety-beta">;
911226633Sdim
912261991Sdim// Uniqueness Analysis warnings
913261991Sdimdef Consumed       : DiagGroup<"consumed">;
914261991Sdim
915234353Sdim// Note that putting warnings in -Wall will not disable them by default. If a
916234353Sdim// warning should be active _only_ when -Wall is passed in, mark it as
917234353Sdim// DefaultIgnore in addition to putting it here.
918360784Sdimdef All : DiagGroup<"all", [Most, Parentheses, Switch, SwitchBool, MisleadingIndentation]>;
919193326Sed
920296417Sdim// Warnings that should be in clang-cl /w4.
921296417Sdimdef : DiagGroup<"CL4", [All, Extra]>;
922296417Sdim
923239462Sdim// Warnings enabled by -pedantic.  This is magically filled in by TableGen.
924239462Sdimdef Pedantic : DiagGroup<"pedantic">;
925239462Sdim
926193326Sed// Aliases.
927201361Srdivackydef : DiagGroup<"", [Extra]>;                   // -W = -Wextra
928261991Sdimdef : DiagGroup<"endif-labels", [ExtraTokens]>; // -Wendif-labels=-Wextra-tokens
929321369Sdimdef : DiagGroup<"cpp", [PoundWarning]>;         // -Wcpp = -W#warnings
930201361Srdivackydef : DiagGroup<"comments", [Comment]>;         // -Wcomments = -Wcomment
931234353Sdimdef : DiagGroup<"conversion-null",
932234353Sdim                [NullConversion]>; // -Wconversion-null = -Wnull-conversion
933234353Sdimdef : DiagGroup<"bool-conversions",
934234353Sdim                [BoolConversion]>; // -Wbool-conversions  = -Wbool-conversion
935234353Sdimdef : DiagGroup<"int-conversions",
936234353Sdim                [IntConversion]>; // -Wint-conversions = -Wint-conversion
937234353Sdimdef : DiagGroup<"vector-conversions",
938234353Sdim                [VectorConversion]>; // -Wvector-conversions = -Wvector-conversion
939280031Sdimdef : DiagGroup<"unused-local-typedefs", [UnusedLocalTypedef]>;
940280031Sdim                // -Wunused-local-typedefs = -Wunused-local-typedef
941193326Sed
942199482Srdivacky// A warning group for warnings that we want to have on by default in clang,
943199482Srdivacky// but which aren't on by default in GCC.
944199482Srdivackydef NonGCC : DiagGroup<"non-gcc",
945204962Srdivacky    [SignCompare, Conversion, LiteralRange]>;
946206084Srdivacky
947226633Sdim// A warning group for warnings about using C++11 features as extensions in
948218893Sdim// earlier C++ versions.
949296417Sdimdef CXX11 : DiagGroup<"c++11-extensions", [CXX11ExtraSemi, CXX11InlineNamespace,
950296417Sdim                                           CXX11LongLong]>;
951243830Sdim
952280031Sdim// A warning group for warnings about using C++14 features as extensions in
953251662Sdim// earlier C++ versions.
954296417Sdimdef CXX14 : DiagGroup<"c++14-extensions", [CXX14BinaryLiteral]>;
955251662Sdim
956327952Sdim// A warning group for warnings about using C++17 features as extensions in
957276479Sdim// earlier C++ versions.
958322740Sdimdef CXX17 : DiagGroup<"c++17-extensions">;
959276479Sdim
960360784Sdim// A warning group for warnings about using C++20 features as extensions in
961327952Sdim// earlier C++ versions.
962360784Sdimdef CXX20 : DiagGroup<"c++20-extensions", [CXX20Designator]>;
963327952Sdim
964226633Sdimdef : DiagGroup<"c++0x-extensions", [CXX11]>;
965280031Sdimdef : DiagGroup<"c++1y-extensions", [CXX14]>;
966322740Sdimdef : DiagGroup<"c++1z-extensions", [CXX17]>;
967360784Sdimdef : DiagGroup<"c++2a-extensions", [CXX20]>;
968280031Sdim
969223017Sdimdef DelegatingCtorCycles :
970223017Sdim  DiagGroup<"delegating-ctor-cycles">;
971218893Sdim
972234353Sdim// A warning group for warnings about using C11 features as extensions.
973234353Sdimdef C11 : DiagGroup<"c11-extensions">;
974226633Sdim
975234353Sdim// A warning group for warnings about using C99 features as extensions.
976360784Sdimdef C99 : DiagGroup<"c99-extensions", [C99Designator]>;
977234353Sdim
978206084Srdivacky// A warning group for warnings about GCC extensions.
979261991Sdimdef GNU : DiagGroup<"gnu", [GNUAlignofExpression, GNUAnonymousStruct,
980296417Sdim                            GNUAutoType,
981261991Sdim                            GNUBinaryLiteral, GNUCaseRange,
982261991Sdim                            GNUComplexInteger, GNUCompoundLiteralInitializer,
983261991Sdim                            GNUConditionalOmittedOperand, GNUDesignator,
984261991Sdim                            GNUEmptyInitializer, GNUEmptyStruct,
985261991Sdim                            VLAExtension, GNUFlexibleArrayInitializer,
986261991Sdim                            GNUFlexibleArrayUnionMember, GNUFoldingConstant,
987296417Sdim                            GNUImaginaryConstant, GNUIncludeNext,
988296417Sdim                            GNULabelsAsValue,
989261991Sdim                            RedeclaredClassMember, GNURedeclaredEnum,
990261991Sdim                            GNUStatementExpression, GNUStaticFloatInit,
991261991Sdim                            GNUStringLiteralOperatorTemplate,
992261991Sdim                            GNUUnionCast, GNUVariableSizedTypeNotAtEnd,
993261991Sdim                            ZeroLengthArray, GNUZeroLineDirective,
994261991Sdim                            GNUZeroVariadicMacroArguments]>;
995234353Sdim// A warning group for warnings about code that clang accepts but gcc doesn't.
996234353Sdimdef GccCompat : DiagGroup<"gcc-compat">;
997218893Sdim
998296417Sdim// Warnings for Microsoft extensions.
999296417Sdimdef MicrosoftCharize : DiagGroup<"microsoft-charize">;
1000353358Sdimdef MicrosoftDrectveSection : DiagGroup<"microsoft-drectve-section">;
1001296417Sdimdef MicrosoftInclude : DiagGroup<"microsoft-include">;
1002296417Sdimdef MicrosoftCppMacro : DiagGroup<"microsoft-cpp-macro">;
1003296417Sdimdef MicrosoftFixedEnum : DiagGroup<"microsoft-fixed-enum">;
1004296417Sdimdef MicrosoftSealed : DiagGroup<"microsoft-sealed">;
1005296417Sdimdef MicrosoftUnqualifiedFriend : DiagGroup<"microsoft-unqualified-friend">;
1006296417Sdimdef MicrosoftExceptionSpec : DiagGroup<"microsoft-exception-spec">;
1007296417Sdimdef MicrosoftUsingDecl : DiagGroup<"microsoft-using-decl">;
1008296417Sdimdef MicrosoftMutableReference : DiagGroup<"microsoft-mutable-reference">;
1009296417Sdimdef MicrosoftPureDefinition : DiagGroup<"microsoft-pure-definition">;
1010296417Sdimdef MicrosoftUnionMemberReference : DiagGroup<
1011296417Sdim    "microsoft-union-member-reference">;
1012296417Sdimdef MicrosoftExplicitConstructorCall : DiagGroup<
1013296417Sdim    "microsoft-explicit-constructor-call">;
1014296417Sdimdef MicrosoftEnumValue : DiagGroup<"microsoft-enum-value">;
1015296417Sdimdef MicrosoftDefaultArgRedefinition :
1016296417Sdim    DiagGroup<"microsoft-default-arg-redefinition">;
1017360784Sdimdef MicrosoftTemplateShadow : DiagGroup<"microsoft-template-shadow">;
1018360784Sdimdef MicrosoftTemplate : DiagGroup<"microsoft-template", [MicrosoftTemplateShadow]>;
1019309124Sdimdef MicrosoftInconsistentDllImport : DiagGroup<"inconsistent-dllimport">;
1020296417Sdimdef MicrosoftRedeclareStatic : DiagGroup<"microsoft-redeclare-static">;
1021296417Sdimdef MicrosoftEnumForwardReference :
1022296417Sdim    DiagGroup<"microsoft-enum-forward-reference">;
1023296417Sdimdef MicrosoftGoto : DiagGroup<"microsoft-goto">;
1024296417Sdimdef MicrosoftFlexibleArray : DiagGroup<"microsoft-flexible-array">;
1025296417Sdimdef MicrosoftExtraQualification : DiagGroup<"microsoft-extra-qualification">;
1026296417Sdimdef MicrosoftCast : DiagGroup<"microsoft-cast">;
1027296417Sdimdef MicrosoftConstInit : DiagGroup<"microsoft-const-init">;
1028296417Sdimdef MicrosoftVoidPseudoDtor : DiagGroup<"microsoft-void-pseudo-dtor">;
1029296417Sdimdef MicrosoftAnonTag : DiagGroup<"microsoft-anon-tag">;
1030296417Sdimdef MicrosoftCommentPaste : DiagGroup<"microsoft-comment-paste">;
1031296417Sdimdef MicrosoftEndOfFile : DiagGroup<"microsoft-end-of-file">;
1032327952Sdimdef MicrosoftInaccessibleBase : DiagGroup<"microsoft-inaccessible-base">;
1033296417Sdim// Aliases.
1034296417Sdimdef : DiagGroup<"msvc-include", [MicrosoftInclude]>;
1035296417Sdim                // -Wmsvc-include = -Wmicrosoft-include
1036224145Sdim
1037296417Sdim// Warnings group for warnings about Microsoft extensions.
1038296417Sdimdef Microsoft : DiagGroup<"microsoft",
1039353358Sdim    [MicrosoftCharize, MicrosoftDrectveSection, MicrosoftInclude,
1040353358Sdim     MicrosoftCppMacro, MicrosoftFixedEnum, MicrosoftSealed,
1041353358Sdim     MicrosoftUnqualifiedFriend, MicrosoftExceptionSpec, MicrosoftUsingDecl,
1042353358Sdim     MicrosoftMutableReference, MicrosoftPureDefinition,
1043296417Sdim     MicrosoftUnionMemberReference, MicrosoftExplicitConstructorCall,
1044296417Sdim     MicrosoftEnumValue, MicrosoftDefaultArgRedefinition, MicrosoftTemplate,
1045296417Sdim     MicrosoftRedeclareStatic, MicrosoftEnumForwardReference, MicrosoftGoto,
1046296417Sdim     MicrosoftFlexibleArray, MicrosoftExtraQualification, MicrosoftCast,
1047296417Sdim     MicrosoftConstInit, MicrosoftVoidPseudoDtor, MicrosoftAnonTag,
1048309124Sdim     MicrosoftCommentPaste, MicrosoftEndOfFile,
1049309124Sdim     MicrosoftInconsistentDllImport]>;
1050296417Sdim
1051309124Sdimdef ClangClPch : DiagGroup<"clang-cl-pch">;
1052309124Sdim
1053224145Sdimdef ObjCNonUnifiedException : DiagGroup<"objc-nonunified-exceptions">;
1054224145Sdim
1055226633Sdimdef ObjCProtocolMethodImpl : DiagGroup<"objc-protocol-method-implementation">;
1056234353Sdim
1057249423Sdimdef ObjCNoPropertyAutoSynthesis : DiagGroup<"objc-property-synthesis">;
1058249423Sdim
1059234353Sdim// ObjC API warning groups.
1060234353Sdimdef ObjCRedundantLiteralUse : DiagGroup<"objc-redundant-literal-use">;
1061234353Sdimdef ObjCRedundantAPIUse : DiagGroup<"objc-redundant-api-use", [
1062234353Sdim    ObjCRedundantLiteralUse
1063234353Sdim  ]>;
1064234353Sdim
1065234353Sdimdef ObjCCocoaAPI : DiagGroup<"objc-cocoa-api", [
1066234353Sdim    ObjCRedundantAPIUse
1067234353Sdim  ]>;
1068239462Sdim
1069239462Sdimdef ObjCStringComparison : DiagGroup<"objc-string-compare">;
1070261991Sdimdef ObjCStringConcatenation : DiagGroup<"objc-string-concatenation">;
1071239462Sdimdef ObjCLiteralComparison : DiagGroup<"objc-literal-compare", [
1072239462Sdim    ObjCStringComparison
1073239462Sdim  ]>;
1074243830Sdim
1075360784Sdimdef ObjCSignedCharBool : DiagGroup<"objc-signed-char-bool",
1076360784Sdim  [ObjCSignedCharBoolImplicitIntConversion,
1077360784Sdim   ObjCSignedCharBoolImplicitFloatConversion,
1078360784Sdim   ObjCBoolConstantConversion,
1079360784Sdim   TautologicalObjCBoolCompare]>;
1080360784Sdim
1081243830Sdim// Inline ASM warnings.
1082243830Sdimdef ASMOperandWidths : DiagGroup<"asm-operand-widths">;
1083314564Sdimdef ASMIgnoredQualifier : DiagGroup<"asm-ignored-qualifier">;
1084243830Sdimdef ASM : DiagGroup<"asm", [
1085314564Sdim    ASMOperandWidths, ASMIgnoredQualifier
1086243830Sdim  ]>;
1087249423Sdim
1088249423Sdim// OpenMP warnings.
1089249423Sdimdef SourceUsesOpenMP : DiagGroup<"source-uses-openmp">;
1090276479Sdimdef OpenMPClauses : DiagGroup<"openmp-clauses">;
1091276479Sdimdef OpenMPLoopForm : DiagGroup<"openmp-loop-form">;
1092360784Sdimdef OpenMPMapping : DiagGroup<"openmp-mapping">;
1093360784Sdimdef OpenMPTarget : DiagGroup<"openmp-target", [OpenMPMapping]>;
1094360784Sdimdef OpenMP : DiagGroup<"openmp", [
1095360784Sdim    SourceUsesOpenMP, OpenMPClauses, OpenMPLoopForm, OpenMPTarget, OpenMPMapping
1096360784Sdim  ]>;
1097276479Sdim
1098276479Sdim// Backend warnings.
1099276479Sdimdef BackendInlineAsm : DiagGroup<"inline-asm">;
1100276479Sdimdef BackendFrameLargerThanEQ : DiagGroup<"frame-larger-than=">;
1101276479Sdimdef BackendPlugin : DiagGroup<"backend-plugin">;
1102276479Sdimdef RemarkBackendPlugin : DiagGroup<"remark-backend-plugin">;
1103276479Sdimdef BackendOptimizationRemark : DiagGroup<"pass">;
1104276479Sdimdef BackendOptimizationRemarkMissed : DiagGroup<"pass-missed">;
1105276479Sdimdef BackendOptimizationRemarkAnalysis : DiagGroup<"pass-analysis">;
1106276479Sdimdef BackendOptimizationFailure : DiagGroup<"pass-failed">;
1107276479Sdim
1108276479Sdim// Instrumentation based profiling warnings.
1109321369Sdimdef ProfileInstrMissing : DiagGroup<"profile-instr-missing">;
1110276479Sdimdef ProfileInstrOutOfDate : DiagGroup<"profile-instr-out-of-date">;
1111276479Sdimdef ProfileInstrUnprofiled : DiagGroup<"profile-instr-unprofiled">;
1112360784Sdimdef MisExpect : DiagGroup<"misexpect">;
1113276479Sdim
1114321369Sdim// AddressSanitizer frontend instrumentation remarks.
1115280031Sdimdef SanitizeAddressRemarks : DiagGroup<"sanitize-address">;
1116280031Sdim
1117280031Sdim// Issues with serialized diagnostics.
1118280031Sdimdef SerializedDiagnostics : DiagGroup<"serialized-diagnostics">;
1119280031Sdim
1120276479Sdim// A warning group for warnings about code that clang accepts when
1121276479Sdim// compiling CUDA C/C++ but which is not compatible with the CUDA spec.
1122276479Sdimdef CudaCompat : DiagGroup<"cuda-compat">;
1123280031Sdim
1124360784Sdim// Warning about unknown CUDA SDK version.
1125360784Sdimdef CudaUnknownVersion: DiagGroup<"unknown-cuda-version">;
1126360784Sdim
1127360784Sdim// A warning group for warnings about features supported by HIP but
1128360784Sdim// ignored by CUDA.
1129360784Sdimdef HIPOnly : DiagGroup<"hip-only">;
1130360784Sdim
1131353358Sdim// Warnings which cause linking of the runtime libraries like
1132353358Sdim// libc and the CRT to be skipped.
1133353358Sdimdef AVRRtlibLinkingQuirks : DiagGroup<"avr-rtlib-linking-quirks">;
1134353358Sdim
1135280031Sdim// A warning group for things that will change semantics in the future.
1136280031Sdimdef FutureCompat : DiagGroup<"future-compat">;
1137296417Sdim
1138296417Sdimdef InvalidOrNonExistentDirectory : DiagGroup<"invalid-or-nonexistent-directory">;
1139296417Sdim
1140296417Sdimdef OptionIgnored : DiagGroup<"option-ignored">;
1141309124Sdim
1142309124Sdimdef UnknownArgument : DiagGroup<"unknown-argument">;
1143314564Sdim
1144314564Sdim// A warning group for warnings about code that clang accepts when
1145314564Sdim// compiling OpenCL C/C++ but which is not compatible with the SPIR spec.
1146314564Sdimdef SpirCompat : DiagGroup<"spir-compat">;
1147328753Sdim
1148328753Sdim// Warning for the experimental-isel options.
1149328753Sdimdef ExperimentalISel : DiagGroup<"experimental-isel">;
1150341825Sdim
1151341825Sdim// A warning group specifically for warnings related to function
1152341825Sdim// multiversioning.
1153341825Sdimdef FunctionMultiVersioning : DiagGroup<"function-multiversion">;
1154344779Sdim
1155344779Sdimdef NoDeref : DiagGroup<"noderef">;
1156344779Sdim
1157344779Sdim// A group for cross translation unit static analysis related warnings.
1158344779Sdimdef CrossTU : DiagGroup<"ctu">;
1159353358Sdim
1160353358Sdimdef CTADMaybeUnsupported : DiagGroup<"ctad-maybe-unsupported">;
1161353358Sdim
1162353358Sdimdef FortifySource : DiagGroup<"fortify-source">;
1163