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