• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1//==--- DiagnosticGroups.td - Diagnostic Group Definitions ----------------===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10def ImplicitFunctionDeclare : DiagGroup<"implicit-function-declaration">;
11def ImplicitInt : DiagGroup<"implicit-int">;
12
13// Aggregation warning settings.
14def Implicit : DiagGroup<"implicit", [
15    ImplicitFunctionDeclare,
16    ImplicitInt
17]>;
18
19// Empty DiagGroups are recognized by clang but ignored.
20def : DiagGroup<"abi">;
21def AbsoluteValue : DiagGroup<"absolute-value">;
22def AddressOfTemporary : DiagGroup<"address-of-temporary">;
23def : DiagGroup<"aggregate-return">;
24def GNUAlignofExpression : DiagGroup<"gnu-alignof-expression">;
25def AmbigMemberTemplate : DiagGroup<"ambiguous-member-template">;
26def GNUAnonymousStruct : DiagGroup<"gnu-anonymous-struct">;
27def GNUAutoType : DiagGroup<"gnu-auto-type">;
28def ArrayBounds : DiagGroup<"array-bounds">;
29def ArrayBoundsPointerArithmetic : DiagGroup<"array-bounds-pointer-arithmetic">;
30def Availability : DiagGroup<"availability">;
31def Section : DiagGroup<"section">;
32def AutoImport : DiagGroup<"auto-import">;
33def CXX14BinaryLiteral : DiagGroup<"c++14-binary-literal">;
34def GNUBinaryLiteral : DiagGroup<"gnu-binary-literal">;
35def GNUCompoundLiteralInitializer : DiagGroup<"gnu-compound-literal-initializer">;
36def BitFieldConstantConversion : DiagGroup<"bitfield-constant-conversion">;
37def BitFieldWidth : DiagGroup<"bitfield-width">;
38def ConstantConversion :
39  DiagGroup<"constant-conversion", [ BitFieldConstantConversion ] >;
40def LiteralConversion : DiagGroup<"literal-conversion">;
41def StringConversion : DiagGroup<"string-conversion">;
42def SignConversion : DiagGroup<"sign-conversion">;
43def PointerBoolConversion : DiagGroup<"pointer-bool-conversion">;
44def UndefinedBoolConversion : DiagGroup<"undefined-bool-conversion">;
45def BoolConversion : DiagGroup<"bool-conversion", [PointerBoolConversion,
46                                                   UndefinedBoolConversion]>;
47def IntConversion : DiagGroup<"int-conversion">;
48def EnumConversion : DiagGroup<"enum-conversion">;
49
50def FloatOverflowConversion : DiagGroup<"float-overflow-conversion">;
51def FloatZeroConversion : DiagGroup<"float-zero-conversion">;
52def FloatConversion :
53  DiagGroup<"float-conversion", [FloatOverflowConversion,
54                                 FloatZeroConversion]>;
55
56def DoublePromotion : DiagGroup<"double-promotion">;
57def EnumTooLarge : DiagGroup<"enum-too-large">;
58def UnsupportedNan : DiagGroup<"unsupported-nan">;
59def UnsupportedCB : DiagGroup<"unsupported-cb">;
60def NonLiteralNullConversion : DiagGroup<"non-literal-null-conversion">;
61def NullConversion : DiagGroup<"null-conversion">;
62def ImplicitConversionFloatingPointToBool :
63  DiagGroup<"implicit-conversion-floating-point-to-bool">;
64def ObjCLiteralConversion : DiagGroup<"objc-literal-conversion">;
65def BadArrayNewLength : DiagGroup<"bad-array-new-length">;
66def MacroRedefined : DiagGroup<"macro-redefined">;
67def BuiltinMacroRedefined : DiagGroup<"builtin-macro-redefined">;
68def BuiltinRequiresHeader : DiagGroup<"builtin-requires-header">;
69def C99Compat : DiagGroup<"c99-compat">;
70def CXXCompat: DiagGroup<"c++-compat">;
71def ExternCCompat : DiagGroup<"extern-c-compat">;
72def KeywordCompat : DiagGroup<"keyword-compat">;
73def GNUCaseRange : DiagGroup<"gnu-case-range">;
74def CastAlign : DiagGroup<"cast-align">;
75def CastQual : DiagGroup<"cast-qual">;
76def : DiagGroup<"char-align">;
77def Comment : DiagGroup<"comment">;
78def GNUComplexInteger : DiagGroup<"gnu-complex-integer">;
79def GNUConditionalOmittedOperand : DiagGroup<"gnu-conditional-omitted-operand">;
80def ConfigMacros : DiagGroup<"config-macros">;
81def : DiagGroup<"ctor-dtor-privacy">;
82def GNUDesignator : DiagGroup<"gnu-designator">;
83def GNUStringLiteralOperatorTemplate :
84  DiagGroup<"gnu-string-literal-operator-template">;
85def UndefinedVarTemplate : DiagGroup<"undefined-var-template">;
86def UndefinedFuncTemplate : DiagGroup<"undefined-func-template">;
87
88def DeleteIncomplete : DiagGroup<"delete-incomplete">;
89def DeleteNonVirtualDtor : DiagGroup<"delete-non-virtual-dtor">;
90def AbstractFinalClass : DiagGroup<"abstract-final-class">;
91
92def CXX11CompatDeprecatedWritableStr :
93  DiagGroup<"c++11-compat-deprecated-writable-strings">;
94
95def DeprecatedAttributes : DiagGroup<"deprecated-attributes">;
96def DeprecatedDeclarations : DiagGroup<"deprecated-declarations">;
97def UnavailableDeclarations : DiagGroup<"unavailable-declarations">;
98def PartialAvailability : DiagGroup<"partial-availability">;
99def DeprecatedImplementations :DiagGroup<"deprecated-implementations">;
100def DeprecatedIncrementBool : DiagGroup<"deprecated-increment-bool">;
101def DeprecatedRegister : DiagGroup<"deprecated-register">;
102def DeprecatedWritableStr : DiagGroup<"deprecated-writable-strings",
103                                      [CXX11CompatDeprecatedWritableStr]>;
104// FIXME: Why is DeprecatedImplementations not in this group?
105def Deprecated : DiagGroup<"deprecated", [DeprecatedAttributes,
106                                          DeprecatedDeclarations,
107                                          DeprecatedIncrementBool,
108                                          DeprecatedRegister,
109                                          DeprecatedWritableStr]>,
110                 DiagCategory<"Deprecations">;
111
112def LibLTO : DiagGroup<"liblto">;
113def : DiagGroup<"disabled-optimization">;
114def : DiagGroup<"discard-qual">;
115def : DiagGroup<"div-by-zero">;
116
117def DocumentationHTML : DiagGroup<"documentation-html">;
118def DocumentationUnknownCommand : DiagGroup<"documentation-unknown-command">;
119def DocumentationPedantic : DiagGroup<"documentation-pedantic",
120                                      [DocumentationUnknownCommand]>;
121def DocumentationDeprecatedSync : DiagGroup<"documentation-deprecated-sync">;
122def Documentation : DiagGroup<"documentation",
123                              [DocumentationHTML,
124                               DocumentationDeprecatedSync]>;
125
126def EmptyBody : DiagGroup<"empty-body">;
127def Exceptions : DiagGroup<"exceptions">;
128
129def GNUEmptyInitializer : DiagGroup<"gnu-empty-initializer">;
130def GNUEmptyStruct : DiagGroup<"gnu-empty-struct">;
131def ExtraTokens : DiagGroup<"extra-tokens">;
132def CXX11ExtraSemi : DiagGroup<"c++11-extra-semi">;
133def ExtraSemi : DiagGroup<"extra-semi", [CXX11ExtraSemi]>;
134
135def GNUFlexibleArrayInitializer : DiagGroup<"gnu-flexible-array-initializer">;
136def GNUFlexibleArrayUnionMember : DiagGroup<"gnu-flexible-array-union-member">;
137def GNUFoldingConstant : DiagGroup<"gnu-folding-constant">;
138def FormatExtraArgs : DiagGroup<"format-extra-args">;
139def FormatZeroLength : DiagGroup<"format-zero-length">;
140
141// Warnings for C++1y code which is not compatible with prior C++ standards.
142def CXXPre14Compat : DiagGroup<"c++98-c++11-compat">;
143def CXXPre14CompatPedantic : DiagGroup<"c++98-c++11-compat-pedantic",
144                                       [CXXPre14Compat]>;
145def CXXPre1zCompat : DiagGroup<"c++98-c++11-c++14-compat">;
146def CXXPre1zCompatPedantic : DiagGroup<"c++98-c++11-c++14-compat-pedantic",
147                                       [CXXPre1zCompat]>;
148
149def CXX98CompatBindToTemporaryCopy :
150  DiagGroup<"c++98-compat-bind-to-temporary-copy">;
151def CXX98CompatLocalTypeTemplateArgs :
152  DiagGroup<"c++98-compat-local-type-template-args">;
153def CXX98CompatUnnamedTypeTemplateArgs :
154  DiagGroup<"c++98-compat-unnamed-type-template-args">;
155
156def CXX98Compat : DiagGroup<"c++98-compat",
157                            [CXX98CompatLocalTypeTemplateArgs,
158                             CXX98CompatUnnamedTypeTemplateArgs,
159                             CXXPre14Compat,
160                             CXXPre1zCompat]>;
161// Warnings for C++11 features which are Extensions in C++98 mode.
162def CXX98CompatPedantic : DiagGroup<"c++98-compat-pedantic",
163                                    [CXX98Compat,
164                                     CXX98CompatBindToTemporaryCopy,
165                                     CXXPre14CompatPedantic,
166                                     CXXPre1zCompatPedantic]>;
167
168def CXX11Narrowing : DiagGroup<"c++11-narrowing">;
169
170def CXX11WarnOverrideMethod : DiagGroup<"inconsistent-missing-override">;
171
172// Original name of this warning in Clang
173def : DiagGroup<"c++0x-narrowing", [CXX11Narrowing]>;
174
175// Name of this warning in GCC
176def : DiagGroup<"narrowing", [CXX11Narrowing]>;
177
178def CXX11CompatReservedUserDefinedLiteral :
179  DiagGroup<"c++11-compat-reserved-user-defined-literal">;
180def ReservedUserDefinedLiteral :
181  DiagGroup<"reserved-user-defined-literal",
182            [CXX11CompatReservedUserDefinedLiteral]>;
183
184def CXX11Compat : DiagGroup<"c++11-compat",
185                            [CXX11Narrowing,
186                             CXX11CompatReservedUserDefinedLiteral,
187                             CXX11CompatDeprecatedWritableStr,
188                             CXXPre14Compat,
189                             CXXPre1zCompat]>;
190def : DiagGroup<"c++0x-compat", [CXX11Compat]>;
191def CXX11CompatPedantic : DiagGroup<"c++11-compat-pedantic",
192                                    [CXXPre14CompatPedantic,
193                                     CXXPre1zCompatPedantic]>;
194
195def CXX14Compat : DiagGroup<"c++14-compat", [CXXPre1zCompat]>;
196def CXX14CompatPedantic : DiagGroup<"c++14-compat-pedantic",
197                                    [CXXPre1zCompatPedantic]>;
198
199def CXX1zCompat : DiagGroup<"c++1z-compat", [DeprecatedRegister,
200                                             DeprecatedIncrementBool]>;
201
202def : DiagGroup<"effc++">;
203def DivZero : DiagGroup<"division-by-zero">;
204def ExitTimeDestructors : DiagGroup<"exit-time-destructors">;
205def FlexibleArrayExtensions : DiagGroup<"flexible-array-extensions">;
206def FourByteMultiChar : DiagGroup<"four-char-constants">;
207def GlobalConstructors : DiagGroup<"global-constructors">;
208def BitwiseOpParentheses: DiagGroup<"bitwise-op-parentheses">;
209def LogicalOpParentheses: DiagGroup<"logical-op-parentheses">;
210def LogicalNotParentheses: DiagGroup<"logical-not-parentheses">;
211def ShiftOpParentheses: DiagGroup<"shift-op-parentheses">;
212def OverloadedShiftOpParentheses: DiagGroup<"overloaded-shift-op-parentheses">;
213def DanglingElse: DiagGroup<"dangling-else">;
214def DanglingField : DiagGroup<"dangling-field">;
215def DistributedObjectModifiers : DiagGroup<"distributed-object-modifiers">;
216def ExpansionToDefined : DiagGroup<"expansion-to-defined">;
217def FlagEnum : DiagGroup<"flag-enum">;
218def IncrementBool : DiagGroup<"increment-bool", [DeprecatedIncrementBool]>;
219def InfiniteRecursion : DiagGroup<"infinite-recursion">;
220def GNUImaginaryConstant : DiagGroup<"gnu-imaginary-constant">;
221def IgnoredQualifiers : DiagGroup<"ignored-qualifiers">;
222def : DiagGroup<"import">;
223def GNUIncludeNext : DiagGroup<"gnu-include-next">;
224def IncompatibleMSStruct : DiagGroup<"incompatible-ms-struct">;
225def IncompatiblePointerTypesDiscardsQualifiers
226  : DiagGroup<"incompatible-pointer-types-discards-qualifiers">;
227def IncompatiblePointerTypes
228  : DiagGroup<"incompatible-pointer-types",
229    [IncompatiblePointerTypesDiscardsQualifiers]>;
230def IncompleteUmbrella : DiagGroup<"incomplete-umbrella">;
231def NonModularIncludeInFrameworkModule
232  : DiagGroup<"non-modular-include-in-framework-module">;
233def NonModularIncludeInModule : DiagGroup<"non-modular-include-in-module",
234                                          [NonModularIncludeInFrameworkModule]>;
235def IncompleteModule : DiagGroup<"incomplete-module",
236    [IncompleteUmbrella, NonModularIncludeInModule]>;
237
238def CXX11InlineNamespace : DiagGroup<"c++11-inline-namespace">;
239def InvalidNoreturn : DiagGroup<"invalid-noreturn">;
240def InvalidSourceEncoding : DiagGroup<"invalid-source-encoding">;
241def KNRPromotedParameter : DiagGroup<"knr-promoted-parameter">;
242def : DiagGroup<"init-self">;
243def : DiagGroup<"inline">;
244def : DiagGroup<"invalid-pch">;
245def GNULabelsAsValue : DiagGroup<"gnu-label-as-value">;
246def LiteralRange : DiagGroup<"literal-range">;
247def LocalTypeTemplateArgs : DiagGroup<"local-type-template-args",
248                                      [CXX98CompatLocalTypeTemplateArgs]>;
249def RangeLoopAnalysis : DiagGroup<"range-loop-analysis">;
250def ForLoopAnalysis : DiagGroup<"for-loop-analysis">;
251def LoopAnalysis : DiagGroup<"loop-analysis", [ForLoopAnalysis,
252                                               RangeLoopAnalysis]>;
253def MalformedWarningCheck : DiagGroup<"malformed-warning-check">;
254def Main : DiagGroup<"main">;
255def MainReturnType : DiagGroup<"main-return-type">;
256def MissingBraces : DiagGroup<"missing-braces">;
257def MissingDeclarations: DiagGroup<"missing-declarations">;
258def : DiagGroup<"missing-format-attribute">;
259def : DiagGroup<"missing-include-dirs">;
260def MissingNoreturn : DiagGroup<"missing-noreturn">;
261def MultiChar : DiagGroup<"multichar">;
262def : DiagGroup<"nested-externs">;
263def CXX11LongLong : DiagGroup<"c++11-long-long">;
264def LongLong : DiagGroup<"long-long", [CXX11LongLong]>;
265def ImplicitlyUnsignedLiteral : DiagGroup<"implicitly-unsigned-literal">;
266def MethodSignatures : DiagGroup<"method-signatures">;
267def MismatchedParameterTypes : DiagGroup<"mismatched-parameter-types">;
268def MismatchedReturnTypes : DiagGroup<"mismatched-return-types">;
269def MismatchedTags : DiagGroup<"mismatched-tags">;
270def MissingFieldInitializers : DiagGroup<"missing-field-initializers">;
271def ModuleBuild : DiagGroup<"module-build">;
272def ModuleConflict : DiagGroup<"module-conflict">;
273def ModuleFileExtension : DiagGroup<"module-file-extension">;
274def NewlineEOF : DiagGroup<"newline-eof">;
275def Nullability : DiagGroup<"nullability">;
276def NullabilityDeclSpec : DiagGroup<"nullability-declspec">;
277def NullableToNonNullConversion : DiagGroup<"nullable-to-nonnull-conversion">;
278def NullabilityCompleteness : DiagGroup<"nullability-completeness">;
279def NullArithmetic : DiagGroup<"null-arithmetic">;
280def NullCharacter : DiagGroup<"null-character">;
281def NullDereference : DiagGroup<"null-dereference">;
282def InitializerOverrides : DiagGroup<"initializer-overrides">;
283def NonNull : DiagGroup<"nonnull">;
284def NonPODVarargs : DiagGroup<"non-pod-varargs">;
285def ClassVarargs : DiagGroup<"class-varargs", [NonPODVarargs]>;
286def : DiagGroup<"nonportable-cfstrings">;
287def NonVirtualDtor : DiagGroup<"non-virtual-dtor">;
288def OveralignedType : DiagGroup<"over-aligned">;
289def OldStyleCast : DiagGroup<"old-style-cast">;
290def : DiagGroup<"old-style-definition">;
291def OutOfLineDeclaration : DiagGroup<"out-of-line-declaration">;
292def : DiagGroup<"overflow">;
293def ForwardClassReceiver : DiagGroup<"receiver-forward-class">;
294def MethodAccess : DiagGroup<"objc-method-access">;
295def ObjCReceiver : DiagGroup<"receiver-expr">;
296def OperatorNewReturnsNull : DiagGroup<"new-returns-null">;
297def OverlengthStrings : DiagGroup<"overlength-strings">;
298def OverloadedVirtual : DiagGroup<"overloaded-virtual">;
299def PrivateExtern : DiagGroup<"private-extern">;
300def SelTypeCast : DiagGroup<"cast-of-sel-type">;
301def FunctionDefInObjCContainer : DiagGroup<"function-def-in-objc-container">;
302def BadFunctionCast : DiagGroup<"bad-function-cast">;
303def ObjCPropertyImpl : DiagGroup<"objc-property-implementation">;
304def ObjCPropertyNoAttribute : DiagGroup<"objc-property-no-attribute">;
305def ObjCProtocolQualifiers : DiagGroup<"objc-protocol-qualifiers">;
306def ObjCMissingSuperCalls : DiagGroup<"objc-missing-super-calls">;
307def ObjCDesignatedInit : DiagGroup<"objc-designated-initializers">;
308def ObjCRetainBlockProperty : DiagGroup<"objc-noncopy-retain-block-property">;
309def ObjCReadonlyPropertyHasSetter : DiagGroup<"objc-readonly-with-setter-property">;
310def ObjCInvalidIBOutletProperty : DiagGroup<"invalid-iboutlet">;
311def ObjCRootClass : DiagGroup<"objc-root-class">;
312def ObjCPointerIntrospectPerformSelector : DiagGroup<"deprecated-objc-pointer-introspection-performSelector">;
313def ObjCPointerIntrospect : DiagGroup<"deprecated-objc-pointer-introspection", [ObjCPointerIntrospectPerformSelector]>;
314def ObjCMultipleMethodNames : DiagGroup<"objc-multiple-method-names">;
315def OpenCLUnsupportedRGBA: DiagGroup<"opencl-unsupported-rgba">;
316def DeprecatedObjCIsaUsage : DiagGroup<"deprecated-objc-isa-usage">;
317def ExplicitInitializeCall : DiagGroup<"explicit-initialize-call">;
318def Packed : DiagGroup<"packed">;
319def Padded : DiagGroup<"padded">;
320def PessimizingMove : DiagGroup<"pessimizing-move">;
321def PointerArith : DiagGroup<"pointer-arith">;
322def PoundWarning : DiagGroup<"#warnings">;
323def PoundPragmaMessage : DiagGroup<"#pragma-messages">,
324                         DiagCategory<"#pragma message Directive">;
325def : DiagGroup<"pointer-to-int-cast">;
326def : DiagGroup<"redundant-decls">;
327def RedeclaredClassMember : DiagGroup<"redeclared-class-member">;
328def GNURedeclaredEnum : DiagGroup<"gnu-redeclared-enum">;
329def RedundantMove : DiagGroup<"redundant-move">;
330def Register : DiagGroup<"register", [DeprecatedRegister]>;
331def ReturnStackAddress : DiagGroup<"return-stack-address">;
332def ReturnTypeCLinkage : DiagGroup<"return-type-c-linkage">;
333def ReturnType : DiagGroup<"return-type", [ReturnTypeCLinkage]>;
334def BindToTemporaryCopy : DiagGroup<"bind-to-temporary-copy",
335                                    [CXX98CompatBindToTemporaryCopy]>;
336def SelfAssignmentField : DiagGroup<"self-assign-field">;
337def SelfAssignment : DiagGroup<"self-assign", [SelfAssignmentField]>;
338def SelfMove : DiagGroup<"self-move">;
339def SemiBeforeMethodBody : DiagGroup<"semicolon-before-method-body">;
340def Sentinel : DiagGroup<"sentinel">;
341def MissingMethodReturnType : DiagGroup<"missing-method-return-type">;
342
343def ShadowFieldInConstructorModified : DiagGroup<"shadow-field-in-constructor-modified">;
344def ShadowFieldInConstructor : DiagGroup<"shadow-field-in-constructor",
345                                         [ShadowFieldInConstructorModified]>;
346
347// -Wshadow-all is a catch-all for all shadowing. -Wshadow is just the
348// shadowing that we think is unsafe.
349def Shadow : DiagGroup<"shadow", [ShadowFieldInConstructorModified]>;
350def ShadowAll : DiagGroup<"shadow-all", [Shadow, ShadowFieldInConstructor]>;
351
352def Shorten64To32 : DiagGroup<"shorten-64-to-32">;
353def : DiagGroup<"sign-promo">;
354def SignCompare : DiagGroup<"sign-compare">;
355def : DiagGroup<"stack-protector">;
356def : DiagGroup<"switch-default">;
357def : DiagGroup<"synth">;
358def SizeofArrayArgument : DiagGroup<"sizeof-array-argument">;
359def SizeofArrayDecay : DiagGroup<"sizeof-array-decay">;
360def SizeofPointerMemaccess : DiagGroup<"sizeof-pointer-memaccess">;
361def StaticInInline : DiagGroup<"static-in-inline">;
362def StaticLocalInInline : DiagGroup<"static-local-in-inline">;
363def GNUStaticFloatInit : DiagGroup<"gnu-static-float-init">;
364def StaticFloatInit : DiagGroup<"static-float-init", [GNUStaticFloatInit]>;
365def GNUStatementExpression : DiagGroup<"gnu-statement-expression">;
366def StringCompare : DiagGroup<"string-compare">;
367def StringPlusInt : DiagGroup<"string-plus-int">;
368def StringPlusChar : DiagGroup<"string-plus-char">;
369def StrncatSize : DiagGroup<"strncat-size">;
370def TautologicalOutOfRangeCompare : DiagGroup<"tautological-constant-out-of-range-compare">;
371def TautologicalPointerCompare : DiagGroup<"tautological-pointer-compare">;
372def TautologicalOverlapCompare : DiagGroup<"tautological-overlap-compare">;
373def TautologicalUndefinedCompare : DiagGroup<"tautological-undefined-compare">;
374def TautologicalCompare : DiagGroup<"tautological-compare",
375                                    [TautologicalOutOfRangeCompare,
376                                     TautologicalPointerCompare,
377                                     TautologicalOverlapCompare,
378                                     TautologicalUndefinedCompare]>;
379def HeaderHygiene : DiagGroup<"header-hygiene">;
380def DuplicateDeclSpecifier : DiagGroup<"duplicate-decl-specifier">;
381def CompareDistinctPointerType : DiagGroup<"compare-distinct-pointer-types">;
382def GNUUnionCast : DiagGroup<"gnu-union-cast">;
383def GNUVariableSizedTypeNotAtEnd : DiagGroup<"gnu-variable-sized-type-not-at-end">;
384def Varargs : DiagGroup<"varargs">;
385
386def Unsequenced : DiagGroup<"unsequenced">;
387// GCC name for -Wunsequenced
388def : DiagGroup<"sequence-point", [Unsequenced]>;
389
390// Preprocessor warnings.
391def AmbiguousMacro : DiagGroup<"ambiguous-macro">;
392def KeywordAsMacro : DiagGroup<"keyword-macro">;
393def ReservedIdAsMacro : DiagGroup<"reserved-id-macro">;
394
395// Just silence warnings about -Wstrict-aliasing for now.
396def : DiagGroup<"strict-aliasing=0">;
397def : DiagGroup<"strict-aliasing=1">;
398def : DiagGroup<"strict-aliasing=2">;
399def : DiagGroup<"strict-aliasing">;
400
401// Just silence warnings about -Wstrict-overflow for now.
402def : DiagGroup<"strict-overflow=0">;
403def : DiagGroup<"strict-overflow=1">;
404def : DiagGroup<"strict-overflow=2">;
405def : DiagGroup<"strict-overflow=3">;
406def : DiagGroup<"strict-overflow=4">;
407def : DiagGroup<"strict-overflow=5">;
408def : DiagGroup<"strict-overflow">;
409
410def InvalidOffsetof : DiagGroup<"invalid-offsetof">;
411def : DiagGroup<"strict-prototypes">;
412def StrictSelector : DiagGroup<"strict-selector-match">;
413def MethodDuplicate : DiagGroup<"duplicate-method-match">;
414def ObjCCStringFormat : DiagGroup<"cstring-format-directive">;
415def CoveredSwitchDefault : DiagGroup<"covered-switch-default">;
416def SwitchBool     : DiagGroup<"switch-bool">;
417def SwitchEnum     : DiagGroup<"switch-enum">;
418def Switch         : DiagGroup<"switch">;
419def ImplicitFallthroughPerFunction :
420  DiagGroup<"implicit-fallthrough-per-function">;
421def ImplicitFallthrough  : DiagGroup<"implicit-fallthrough",
422                                     [ImplicitFallthroughPerFunction]>;
423def InvalidPPToken : DiagGroup<"invalid-pp-token">;
424def Trigraphs      : DiagGroup<"trigraphs">;
425
426def : DiagGroup<"type-limits">;
427def UndefinedReinterpretCast : DiagGroup<"undefined-reinterpret-cast">;
428def ReinterpretBaseClass : DiagGroup<"reinterpret-base-class">;
429def Unicode  : DiagGroup<"unicode">;
430def UninitializedMaybe : DiagGroup<"conditional-uninitialized">;
431def UninitializedSometimes : DiagGroup<"sometimes-uninitialized">;
432def UninitializedStaticSelfInit : DiagGroup<"static-self-init">;
433def Uninitialized  : DiagGroup<"uninitialized", [UninitializedSometimes,
434                                                 UninitializedStaticSelfInit]>;
435def UnknownPragmas : DiagGroup<"unknown-pragmas">;
436def IgnoredPragmas : DiagGroup<"ignored-pragmas">;
437def Pragmas : DiagGroup<"pragmas", [UnknownPragmas, IgnoredPragmas]>;
438def UnknownWarningOption : DiagGroup<"unknown-warning-option">;
439def NSobjectAttribute : DiagGroup<"NSObject-attribute">;
440def IndependentClassAttribute : DiagGroup<"IndependentClass-attribute">;
441def UnknownAttributes : DiagGroup<"unknown-attributes">;
442def IgnoredAttributes : DiagGroup<"ignored-attributes">;
443def Attributes : DiagGroup<"attributes", [UnknownAttributes,
444                                          IgnoredAttributes]>;
445def UnknownSanitizers : DiagGroup<"unknown-sanitizers">;
446def UnnamedTypeTemplateArgs : DiagGroup<"unnamed-type-template-args",
447                                        [CXX98CompatUnnamedTypeTemplateArgs]>;
448def UnsupportedFriend : DiagGroup<"unsupported-friend">;
449def UnusedArgument : DiagGroup<"unused-argument">;
450def UnusedCommandLineArgument : DiagGroup<"unused-command-line-argument">;
451def IgnoredOptimizationArgument : DiagGroup<"ignored-optimization-argument">;
452def InvalidCommandLineArgument : DiagGroup<"invalid-command-line-argument",
453                                           [IgnoredOptimizationArgument]>;
454def UnusedComparison : DiagGroup<"unused-comparison">;
455def UnusedExceptionParameter : DiagGroup<"unused-exception-parameter">;
456def UnneededInternalDecl : DiagGroup<"unneeded-internal-declaration">;
457def UnneededMemberFunction : DiagGroup<"unneeded-member-function">;
458def UnusedPrivateField : DiagGroup<"unused-private-field">;
459def UnusedFunction : DiagGroup<"unused-function", [UnneededInternalDecl]>;
460def UnusedMemberFunction : DiagGroup<"unused-member-function",
461                                     [UnneededMemberFunction]>;
462def UnusedLabel : DiagGroup<"unused-label">;
463def UnusedParameter : DiagGroup<"unused-parameter">;
464def UnusedResult : DiagGroup<"unused-result">;
465def PotentiallyEvaluatedExpression : DiagGroup<"potentially-evaluated-expression">;
466def UnevaluatedExpression : DiagGroup<"unevaluated-expression",
467                                      [PotentiallyEvaluatedExpression]>;
468def UnusedValue : DiagGroup<"unused-value", [UnusedComparison, UnusedResult,
469                                             UnevaluatedExpression]>;
470def UnusedConstVariable : DiagGroup<"unused-const-variable">;
471def UnusedVariable : DiagGroup<"unused-variable",
472                               [UnusedConstVariable]>;
473def UnusedLocalTypedef : DiagGroup<"unused-local-typedef">;
474def UnusedPropertyIvar :  DiagGroup<"unused-property-ivar">;
475def UnusedGetterReturnValue : DiagGroup<"unused-getter-return-value">;
476def UsedButMarkedUnused : DiagGroup<"used-but-marked-unused">;
477def UserDefinedLiterals : DiagGroup<"user-defined-literals">;
478def Reorder : DiagGroup<"reorder">;
479def UndeclaredSelector : DiagGroup<"undeclared-selector">;
480def ImplicitAtomic : DiagGroup<"implicit-atomic-properties">;
481def CustomAtomic : DiagGroup<"custom-atomic-properties">;
482def AtomicProperties : DiagGroup<"atomic-properties",
483                                 [ImplicitAtomic, CustomAtomic]>;
484def ARCUnsafeRetainedAssign : DiagGroup<"arc-unsafe-retained-assign">;
485def ARCRetainCycles : DiagGroup<"arc-retain-cycles">;
486def ARCNonPodMemAccess : DiagGroup<"arc-non-pod-memaccess">;
487def AutomaticReferenceCounting : DiagGroup<"arc",
488                                           [ARCUnsafeRetainedAssign,
489                                            ARCRetainCycles,
490                                            ARCNonPodMemAccess]>;
491def ARCRepeatedUseOfWeakMaybe : DiagGroup<"arc-maybe-repeated-use-of-weak">;
492def ARCRepeatedUseOfWeak : DiagGroup<"arc-repeated-use-of-weak",
493                                     [ARCRepeatedUseOfWeakMaybe]>;
494def ObjCBridge : DiagGroup<"bridge-cast">;
495
496def DeallocInCategory:DiagGroup<"dealloc-in-category">;
497def SelectorTypeMismatch : DiagGroup<"selector-type-mismatch">;
498def Selector : DiagGroup<"selector", [SelectorTypeMismatch]>;
499def Protocol : DiagGroup<"protocol">;
500def AtProtocol : DiagGroup<"at-protocol">;
501def PropertyAccessDotSyntax: DiagGroup<"property-access-dot-syntax">;
502def PropertyAttr : DiagGroup<"property-attribute-mismatch">;
503def SuperSubClassMismatch : DiagGroup<"super-class-method-mismatch">;
504def OverridingMethodMismatch : DiagGroup<"overriding-method-mismatch">;
505def VariadicMacros : DiagGroup<"variadic-macros">;
506def VectorConversion : DiagGroup<"vector-conversion">;      // clang specific
507def VexingParse : DiagGroup<"vexing-parse">;
508def VLA : DiagGroup<"vla">;
509def VLAExtension : DiagGroup<"vla-extension">;
510def VolatileRegisterVar : DiagGroup<"volatile-register-var">;
511def Visibility : DiagGroup<"visibility">;
512def ZeroLengthArray : DiagGroup<"zero-length-array">;
513def GNUZeroLineDirective : DiagGroup<"gnu-zero-line-directive">;
514def GNUZeroVariadicMacroArguments : DiagGroup<"gnu-zero-variadic-macro-arguments">;
515def Fallback : DiagGroup<"fallback">;
516
517// This covers both the deprecated case (in C++98)
518// and the extension case (in C++11 onwards).
519def WritableStrings : DiagGroup<"writable-strings", [DeprecatedWritableStr]>;
520
521// GCC calls -Wdeprecated-writable-strings -Wwrite-strings.
522//
523// Bizarrely, this warning flag enables -fconst-strings in C. This is
524// GCC-compatible, but really weird.
525//
526// FIXME: Should this affect C++11 (where this is an error,
527//        not just deprecated) or not?
528def GCCWriteStrings : DiagGroup<"write-strings" , [WritableStrings]>;
529
530def CharSubscript : DiagGroup<"char-subscripts">;
531def LargeByValueCopy : DiagGroup<"large-by-value-copy">;
532def DuplicateArgDecl : DiagGroup<"duplicate-method-arg">;
533
534// Unreachable code warning groups.
535//
536//  The goal is make -Wunreachable-code on by default, in -Wall, or at
537//  least actively used, with more noisy versions of the warning covered
538//  under separate flags.
539//
540def UnreachableCodeLoopIncrement : DiagGroup<"unreachable-code-loop-increment">;
541def UnreachableCode : DiagGroup<"unreachable-code",
542                                [UnreachableCodeLoopIncrement]>;
543def UnreachableCodeBreak : DiagGroup<"unreachable-code-break">;
544def UnreachableCodeReturn : DiagGroup<"unreachable-code-return">;
545def UnreachableCodeAggressive : DiagGroup<"unreachable-code-aggressive",
546                                    [UnreachableCode,
547                                     UnreachableCodeBreak,
548                                     UnreachableCodeReturn]>;
549
550// Aggregation warning settings.
551
552// Populate -Waddress with warnings from other groups.
553def : DiagGroup<"address", [PointerBoolConversion,
554                            StringCompare,
555                            TautologicalPointerCompare]>;
556
557// -Widiomatic-parentheses contains warnings about 'idiomatic'
558// missing parentheses;  it is off by default.  We do not include it
559// in -Wparentheses because most users who use -Wparentheses explicitly
560// do not want these warnings.
561def ParenthesesOnEquality : DiagGroup<"parentheses-equality">;
562def Parentheses : DiagGroup<"parentheses",
563                            [LogicalOpParentheses,
564                             LogicalNotParentheses,
565                             BitwiseOpParentheses,
566                             ShiftOpParentheses,
567                             OverloadedShiftOpParentheses,
568                             ParenthesesOnEquality,
569                             DanglingElse]>;
570
571// -Wconversion has its own warnings, but we split a few out for
572// legacy reasons:
573//   - some people want just 64-to-32 warnings
574//   - conversion warnings with constant sources are on by default
575//   - conversion warnings for literals are on by default
576//   - bool-to-pointer conversion warnings are on by default
577//   - __null-to-integer conversion warnings are on by default
578def Conversion : DiagGroup<"conversion",
579                           [BoolConversion,
580                            ConstantConversion,
581                            EnumConversion,
582                            FloatConversion,
583                            Shorten64To32,
584                            IntConversion,
585                            LiteralConversion,
586                            NonLiteralNullConversion, // (1-1)->pointer (etc)
587                            NullConversion, // NULL->non-pointer
588                            ObjCLiteralConversion,
589                            SignConversion,
590                            StringConversion]>,
591                 DiagCategory<"Value Conversion Issue">;
592
593def Unused : DiagGroup<"unused",
594                       [UnusedArgument, UnusedFunction, UnusedLabel,
595                        // UnusedParameter, (matches GCC's behavior)
596                        // UnusedMemberFunction, (clean-up llvm before enabling)
597                        UnusedPrivateField, UnusedLocalTypedef,
598                        UnusedValue, UnusedVariable, UnusedPropertyIvar]>,
599                        DiagCategory<"Unused Entity Issue">;
600
601// Format settings.
602def FormatInvalidSpecifier : DiagGroup<"format-invalid-specifier">;
603def FormatSecurity : DiagGroup<"format-security">;
604def FormatNonStandard : DiagGroup<"format-non-iso">;
605def FormatY2K : DiagGroup<"format-y2k">;
606def FormatPedantic : DiagGroup<"format-pedantic">;
607def Format : DiagGroup<"format",
608                       [FormatExtraArgs, FormatZeroLength, NonNull,
609                        FormatSecurity, FormatY2K, FormatInvalidSpecifier]>,
610             DiagCategory<"Format String Issue">;
611def FormatNonLiteral : DiagGroup<"format-nonliteral">;
612def Format2 : DiagGroup<"format=2",
613                        [FormatNonLiteral, FormatSecurity, FormatY2K]>;
614
615def TypeSafety : DiagGroup<"type-safety">;
616
617def IntToVoidPointerCast : DiagGroup<"int-to-void-pointer-cast">;
618def IntToPointerCast : DiagGroup<"int-to-pointer-cast",
619                                 [IntToVoidPointerCast]>;
620
621def Move : DiagGroup<"move", [PessimizingMove, RedundantMove, SelfMove]>;
622
623def Extra : DiagGroup<"extra", [
624    MissingFieldInitializers,
625    IgnoredQualifiers,
626    InitializerOverrides,
627    SemiBeforeMethodBody,
628    MissingMethodReturnType,
629    SignCompare,
630    UnusedParameter
631  ]>;
632
633def Most : DiagGroup<"most", [
634    CharSubscript,
635    Comment,
636    DeleteNonVirtualDtor,
637    ForLoopAnalysis,
638    Format,
639    Implicit,
640    InfiniteRecursion,
641    MismatchedTags,
642    MissingBraces,
643    Move,
644    MultiChar,
645    Reorder,
646    ReturnType,
647    SelfAssignment,
648    SelfMove,
649    SizeofArrayArgument,
650    SizeofArrayDecay,
651    StringPlusInt,
652    Trigraphs,
653    Uninitialized,
654    UnknownPragmas,
655    Unused,
656    VolatileRegisterVar,
657    ObjCMissingSuperCalls,
658    ObjCDesignatedInit,
659    OverloadedVirtual,
660    PrivateExtern,
661    SelTypeCast,
662    ExternCCompat
663 ]>;
664
665// Thread Safety warnings
666def ThreadSafetyAttributes : DiagGroup<"thread-safety-attributes">;
667def ThreadSafetyAnalysis   : DiagGroup<"thread-safety-analysis">;
668def ThreadSafetyPrecise    : DiagGroup<"thread-safety-precise">;
669def ThreadSafetyReference  : DiagGroup<"thread-safety-reference">;
670def ThreadSafetyNegative   : DiagGroup<"thread-safety-negative">;
671def ThreadSafety : DiagGroup<"thread-safety",
672                             [ThreadSafetyAttributes,
673                              ThreadSafetyAnalysis,
674                              ThreadSafetyPrecise,
675                              ThreadSafetyReference]>;
676def ThreadSafetyVerbose : DiagGroup<"thread-safety-verbose">;
677def ThreadSafetyBeta : DiagGroup<"thread-safety-beta">;
678
679// Uniqueness Analysis warnings
680def Consumed       : DiagGroup<"consumed">;
681
682// Note that putting warnings in -Wall will not disable them by default. If a
683// warning should be active _only_ when -Wall is passed in, mark it as
684// DefaultIgnore in addition to putting it here.
685def All : DiagGroup<"all", [Most, Parentheses, Switch, SwitchBool]>;
686
687// Warnings that should be in clang-cl /w4.
688def : DiagGroup<"CL4", [All, Extra]>;
689
690// Warnings enabled by -pedantic.  This is magically filled in by TableGen.
691def Pedantic : DiagGroup<"pedantic">;
692
693// Aliases.
694def : DiagGroup<"", [Extra]>;                   // -W = -Wextra
695def : DiagGroup<"endif-labels", [ExtraTokens]>; // -Wendif-labels=-Wextra-tokens
696def : DiagGroup<"comments", [Comment]>;         // -Wcomments = -Wcomment
697def : DiagGroup<"conversion-null",
698                [NullConversion]>; // -Wconversion-null = -Wnull-conversion
699def : DiagGroup<"bool-conversions",
700                [BoolConversion]>; // -Wbool-conversions  = -Wbool-conversion
701def : DiagGroup<"int-conversions",
702                [IntConversion]>; // -Wint-conversions = -Wint-conversion
703def : DiagGroup<"vector-conversions",
704                [VectorConversion]>; // -Wvector-conversions = -Wvector-conversion
705def : DiagGroup<"unused-local-typedefs", [UnusedLocalTypedef]>;
706                // -Wunused-local-typedefs = -Wunused-local-typedef
707
708// A warning group for warnings that we want to have on by default in clang,
709// but which aren't on by default in GCC.
710def NonGCC : DiagGroup<"non-gcc",
711    [SignCompare, Conversion, LiteralRange]>;
712
713// A warning group for warnings about using C++11 features as extensions in
714// earlier C++ versions.
715def CXX11 : DiagGroup<"c++11-extensions", [CXX11ExtraSemi, CXX11InlineNamespace,
716                                           CXX11LongLong]>;
717
718// A warning group for warnings about using C++14 features as extensions in
719// earlier C++ versions.
720def CXX14 : DiagGroup<"c++14-extensions", [CXX14BinaryLiteral]>;
721
722// A warning group for warnings about using C++1z features as extensions in
723// earlier C++ versions.
724def CXX1z : DiagGroup<"c++1z-extensions">;
725
726def : DiagGroup<"c++0x-extensions", [CXX11]>;
727def : DiagGroup<"c++1y-extensions", [CXX14]>;
728
729def DelegatingCtorCycles :
730  DiagGroup<"delegating-ctor-cycles">;
731
732// A warning group for warnings about using C11 features as extensions.
733def C11 : DiagGroup<"c11-extensions">;
734
735// A warning group for warnings about using C99 features as extensions.
736def C99 : DiagGroup<"c99-extensions">;
737
738// A warning group for warnings about GCC extensions.
739def GNU : DiagGroup<"gnu", [GNUAlignofExpression, GNUAnonymousStruct,
740                            GNUAutoType,
741                            GNUBinaryLiteral, GNUCaseRange,
742                            GNUComplexInteger, GNUCompoundLiteralInitializer,
743                            GNUConditionalOmittedOperand, GNUDesignator,
744                            GNUEmptyInitializer, GNUEmptyStruct,
745                            VLAExtension, GNUFlexibleArrayInitializer,
746                            GNUFlexibleArrayUnionMember, GNUFoldingConstant,
747                            GNUImaginaryConstant, GNUIncludeNext,
748                            GNULabelsAsValue,
749                            RedeclaredClassMember, GNURedeclaredEnum,
750                            GNUStatementExpression, GNUStaticFloatInit,
751                            GNUStringLiteralOperatorTemplate,
752                            GNUUnionCast, GNUVariableSizedTypeNotAtEnd,
753                            ZeroLengthArray, GNUZeroLineDirective,
754                            GNUZeroVariadicMacroArguments]>;
755// A warning group for warnings about code that clang accepts but gcc doesn't.
756def GccCompat : DiagGroup<"gcc-compat">;
757
758// Warnings for Microsoft extensions.
759def MicrosoftCharize : DiagGroup<"microsoft-charize">;
760def MicrosoftInclude : DiagGroup<"microsoft-include">;
761def MicrosoftCppMacro : DiagGroup<"microsoft-cpp-macro">;
762def MicrosoftFixedEnum : DiagGroup<"microsoft-fixed-enum">;
763def MicrosoftSealed : DiagGroup<"microsoft-sealed">;
764def MicrosoftUnqualifiedFriend : DiagGroup<"microsoft-unqualified-friend">;
765def MicrosoftExceptionSpec : DiagGroup<"microsoft-exception-spec">;
766def MicrosoftUsingDecl : DiagGroup<"microsoft-using-decl">;
767def MicrosoftMutableReference : DiagGroup<"microsoft-mutable-reference">;
768def MicrosoftPureDefinition : DiagGroup<"microsoft-pure-definition">;
769def MicrosoftUnionMemberReference : DiagGroup<
770    "microsoft-union-member-reference">;
771def MicrosoftExplicitConstructorCall : DiagGroup<
772    "microsoft-explicit-constructor-call">;
773def MicrosoftEnumValue : DiagGroup<"microsoft-enum-value">;
774def MicrosoftDefaultArgRedefinition :
775    DiagGroup<"microsoft-default-arg-redefinition">;
776def MicrosoftTemplate : DiagGroup<"microsoft-template">;
777def MicrosoftInconsistentDllImport : DiagGroup<"inconsistent-dllimport">;
778def MicrosoftRedeclareStatic : DiagGroup<"microsoft-redeclare-static">;
779def MicrosoftEnumForwardReference :
780    DiagGroup<"microsoft-enum-forward-reference">;
781def MicrosoftGoto : DiagGroup<"microsoft-goto">;
782def MicrosoftFlexibleArray : DiagGroup<"microsoft-flexible-array">;
783def MicrosoftExtraQualification : DiagGroup<"microsoft-extra-qualification">;
784def MicrosoftCast : DiagGroup<"microsoft-cast">;
785def MicrosoftConstInit : DiagGroup<"microsoft-const-init">;
786def MicrosoftVoidPseudoDtor : DiagGroup<"microsoft-void-pseudo-dtor">;
787def MicrosoftAnonTag : DiagGroup<"microsoft-anon-tag">;
788def MicrosoftCommentPaste : DiagGroup<"microsoft-comment-paste">;
789def MicrosoftEndOfFile : DiagGroup<"microsoft-end-of-file">;
790// Aliases.
791def : DiagGroup<"msvc-include", [MicrosoftInclude]>;
792                // -Wmsvc-include = -Wmicrosoft-include
793
794// Warnings group for warnings about Microsoft extensions.
795def Microsoft : DiagGroup<"microsoft",
796    [MicrosoftCharize, MicrosoftInclude, MicrosoftCppMacro, MicrosoftFixedEnum,
797     MicrosoftSealed, MicrosoftUnqualifiedFriend, MicrosoftExceptionSpec,
798     MicrosoftUsingDecl, MicrosoftMutableReference, MicrosoftPureDefinition,
799     MicrosoftUnionMemberReference, MicrosoftExplicitConstructorCall,
800     MicrosoftEnumValue, MicrosoftDefaultArgRedefinition, MicrosoftTemplate,
801     MicrosoftRedeclareStatic, MicrosoftEnumForwardReference, MicrosoftGoto,
802     MicrosoftFlexibleArray, MicrosoftExtraQualification, MicrosoftCast,
803     MicrosoftConstInit, MicrosoftVoidPseudoDtor, MicrosoftAnonTag,
804     MicrosoftCommentPaste, MicrosoftEndOfFile,
805     MicrosoftInconsistentDllImport]>;
806
807def ClangClPch : DiagGroup<"clang-cl-pch">;
808
809def ObjCNonUnifiedException : DiagGroup<"objc-nonunified-exceptions">;
810
811def ObjCProtocolMethodImpl : DiagGroup<"objc-protocol-method-implementation">;
812
813def ObjCNoPropertyAutoSynthesis : DiagGroup<"objc-property-synthesis">;
814
815// ObjC API warning groups.
816def ObjCRedundantLiteralUse : DiagGroup<"objc-redundant-literal-use">;
817def ObjCRedundantAPIUse : DiagGroup<"objc-redundant-api-use", [
818    ObjCRedundantLiteralUse
819  ]>;
820
821def ObjCCocoaAPI : DiagGroup<"objc-cocoa-api", [
822    ObjCRedundantAPIUse
823  ]>;
824
825def ObjCStringComparison : DiagGroup<"objc-string-compare">;
826def ObjCStringConcatenation : DiagGroup<"objc-string-concatenation">;
827def ObjCLiteralComparison : DiagGroup<"objc-literal-compare", [
828    ObjCStringComparison
829  ]>;
830
831// Inline ASM warnings.
832def ASMOperandWidths : DiagGroup<"asm-operand-widths">;
833def ASM : DiagGroup<"asm", [
834    ASMOperandWidths
835  ]>;
836
837// OpenMP warnings.
838def SourceUsesOpenMP : DiagGroup<"source-uses-openmp">;
839def OpenMPClauses : DiagGroup<"openmp-clauses">;
840def OpenMPLoopForm : DiagGroup<"openmp-loop-form">;
841def OpenMPTarget : DiagGroup<"openmp-target">;
842
843// Backend warnings.
844def BackendInlineAsm : DiagGroup<"inline-asm">;
845def BackendFrameLargerThanEQ : DiagGroup<"frame-larger-than=">;
846def BackendPlugin : DiagGroup<"backend-plugin">;
847def RemarkBackendPlugin : DiagGroup<"remark-backend-plugin">;
848def BackendOptimizationRemark : DiagGroup<"pass">;
849def BackendOptimizationRemarkMissed : DiagGroup<"pass-missed">;
850def BackendOptimizationRemarkAnalysis : DiagGroup<"pass-analysis">;
851def BackendOptimizationFailure : DiagGroup<"pass-failed">;
852
853// Instrumentation based profiling warnings.
854def ProfileInstrOutOfDate : DiagGroup<"profile-instr-out-of-date">;
855def ProfileInstrUnprofiled : DiagGroup<"profile-instr-unprofiled">;
856
857// AddressSanitizer frontent instrumentation remarks.
858def SanitizeAddressRemarks : DiagGroup<"sanitize-address">;
859
860// Issues with serialized diagnostics.
861def SerializedDiagnostics : DiagGroup<"serialized-diagnostics">;
862
863// A warning group for warnings about code that clang accepts when
864// compiling CUDA C/C++ but which is not compatible with the CUDA spec.
865def CudaCompat : DiagGroup<"cuda-compat">;
866
867// A warning group for things that will change semantics in the future.
868def FutureCompat : DiagGroup<"future-compat">;
869
870def InvalidOrNonExistentDirectory : DiagGroup<"invalid-or-nonexistent-directory">;
871
872def OptionIgnored : DiagGroup<"option-ignored">;
873
874def UnknownArgument : DiagGroup<"unknown-argument">;
875