1//==--- DiagnosticGroups.td - Diagnostic Group Definitions ----------------===// 2// 3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4// See https://llvm.org/LICENSE.txt for license information. 5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6// 7//===----------------------------------------------------------------------===// 8 9def ImplicitFunctionDeclare : DiagGroup<"implicit-function-declaration">; 10def ImplicitInt : DiagGroup<"implicit-int">; 11 12// Aggregation warning settings. 13def Implicit : DiagGroup<"implicit", [ 14 ImplicitFunctionDeclare, 15 ImplicitInt 16]>; 17 18// Empty DiagGroups are recognized by clang but ignored. 19def ODR : DiagGroup<"odr">; 20def : DiagGroup<"abi">; 21def AbsoluteValue : DiagGroup<"absolute-value">; 22def MisspelledAssumption : DiagGroup<"misspelled-assumption">; 23def UnknownAssumption : DiagGroup<"unknown-assumption">; 24def AddressOfTemporary : DiagGroup<"address-of-temporary">; 25def : DiagGroup<"aggregate-return">; 26def GNUAlignofExpression : DiagGroup<"gnu-alignof-expression">; 27def AmbigMemberTemplate : DiagGroup<"ambiguous-member-template">; 28def GNUAnonymousStruct : DiagGroup<"gnu-anonymous-struct">; 29def GNUAutoType : DiagGroup<"gnu-auto-type">; 30def ArrayBounds : DiagGroup<"array-bounds">; 31def ArrayBoundsPointerArithmetic : DiagGroup<"array-bounds-pointer-arithmetic">; 32def AutoDisableVptrSanitizer : DiagGroup<"auto-disable-vptr-sanitizer">; 33def Availability : DiagGroup<"availability">; 34def Section : DiagGroup<"section">; 35def AutoImport : DiagGroup<"auto-import">; 36def FrameworkHdrQuotedInclude : DiagGroup<"quoted-include-in-framework-header">; 37def FrameworkIncludePrivateFromPublic : 38 DiagGroup<"framework-include-private-from-public">; 39def FrameworkHdrAtImport : DiagGroup<"atimport-in-framework-header">; 40def CXX14BinaryLiteral : DiagGroup<"c++14-binary-literal">; 41def CXXPre14CompatBinaryLiteral : DiagGroup<"c++98-c++11-compat-binary-literal">; 42def GNUBinaryLiteral : DiagGroup<"gnu-binary-literal">; 43def BinaryLiteral : DiagGroup<"binary-literal", [CXX14BinaryLiteral, 44 CXXPre14CompatBinaryLiteral, 45 GNUBinaryLiteral]>; 46def GNUCompoundLiteralInitializer : DiagGroup<"gnu-compound-literal-initializer">; 47def BitFieldConstantConversion : DiagGroup<"bitfield-constant-conversion">; 48def BitFieldEnumConversion : DiagGroup<"bitfield-enum-conversion">; 49def BitFieldWidth : DiagGroup<"bitfield-width">; 50def CompoundTokenSplitByMacro : DiagGroup<"compound-token-split-by-macro">; 51def CompoundTokenSplitBySpace : DiagGroup<"compound-token-split-by-space">; 52def CompoundTokenSplit : DiagGroup<"compound-token-split", 53 [CompoundTokenSplitByMacro, 54 CompoundTokenSplitBySpace]>; 55def CoroutineMissingUnhandledException : 56 DiagGroup<"coroutine-missing-unhandled-exception">; 57def Coroutine : DiagGroup<"coroutine", [CoroutineMissingUnhandledException]>; 58def ObjCBoolConstantConversion : DiagGroup<"objc-bool-constant-conversion">; 59def ConstantConversion : DiagGroup<"constant-conversion", 60 [BitFieldConstantConversion, 61 ObjCBoolConstantConversion]>; 62def LiteralConversion : DiagGroup<"literal-conversion">; 63def StringConversion : DiagGroup<"string-conversion">; 64def SignConversion : DiagGroup<"sign-conversion">; 65def PointerBoolConversion : DiagGroup<"pointer-bool-conversion">; 66def UndefinedBoolConversion : DiagGroup<"undefined-bool-conversion">; 67def BoolConversion : DiagGroup<"bool-conversion", [PointerBoolConversion, 68 UndefinedBoolConversion]>; 69def IntConversion : DiagGroup<"int-conversion">; 70def ClassConversion: DiagGroup<"class-conversion">; 71def DeprecatedEnumCompareConditional : 72 DiagGroup<"deprecated-enum-compare-conditional">; 73def EnumCompareConditional : DiagGroup<"enum-compare-conditional", 74 [DeprecatedEnumCompareConditional]>; 75def EnumCompareSwitch : DiagGroup<"enum-compare-switch">; 76def DeprecatedEnumCompare : DiagGroup<"deprecated-enum-compare">; 77def EnumCompare : DiagGroup<"enum-compare", [EnumCompareSwitch, 78 DeprecatedEnumCompare]>; 79def DeprecatedAnonEnumEnumConversion : DiagGroup<"deprecated-anon-enum-enum-conversion">; 80def DeprecatedEnumEnumConversion : DiagGroup<"deprecated-enum-enum-conversion">; 81def DeprecatedEnumFloatConversion : DiagGroup<"deprecated-enum-float-conversion">; 82def AnonEnumEnumConversion : DiagGroup<"anon-enum-enum-conversion", 83 [DeprecatedAnonEnumEnumConversion]>; 84def EnumEnumConversion : DiagGroup<"enum-enum-conversion", 85 [DeprecatedEnumEnumConversion]>; 86def EnumFloatConversion : DiagGroup<"enum-float-conversion", 87 [DeprecatedEnumFloatConversion]>; 88def EnumConversion : DiagGroup<"enum-conversion", 89 [EnumEnumConversion, 90 EnumFloatConversion, 91 EnumCompareConditional]>; 92def ObjCSignedCharBoolImplicitIntConversion : 93 DiagGroup<"objc-signed-char-bool-implicit-int-conversion">; 94def ImplicitIntConversion : DiagGroup<"implicit-int-conversion", 95 [ObjCSignedCharBoolImplicitIntConversion]>; 96def ImplicitConstIntFloatConversion : DiagGroup<"implicit-const-int-float-conversion">; 97def ImplicitIntFloatConversion : DiagGroup<"implicit-int-float-conversion", 98 [ImplicitConstIntFloatConversion]>; 99def ObjCSignedCharBoolImplicitFloatConversion : 100 DiagGroup<"objc-signed-char-bool-implicit-float-conversion">; 101def ImplicitFloatConversion : DiagGroup<"implicit-float-conversion", 102 [ImplicitIntFloatConversion, 103 ObjCSignedCharBoolImplicitFloatConversion]>; 104def ImplicitFixedPointConversion : DiagGroup<"implicit-fixed-point-conversion">; 105 106def FloatOverflowConversion : DiagGroup<"float-overflow-conversion">; 107def FloatZeroConversion : DiagGroup<"float-zero-conversion">; 108def FloatConversion : 109 DiagGroup<"float-conversion", [FloatOverflowConversion, 110 FloatZeroConversion]>; 111 112def FrameAddress : DiagGroup<"frame-address">; 113def FreeNonHeapObject : DiagGroup<"free-nonheap-object">; 114def DoublePromotion : DiagGroup<"double-promotion">; 115def EnumTooLarge : DiagGroup<"enum-too-large">; 116def UnsupportedNan : DiagGroup<"unsupported-nan">; 117def UnsupportedAbs : DiagGroup<"unsupported-abs">; 118def UnsupportedFPOpt : DiagGroup<"unsupported-floating-point-opt">; 119def UnsupportedCB : DiagGroup<"unsupported-cb">; 120def UnsupportedGPOpt : DiagGroup<"unsupported-gpopt">; 121def UnsupportedTargetOpt : DiagGroup<"unsupported-target-opt">; 122def NonLiteralNullConversion : DiagGroup<"non-literal-null-conversion">; 123def NullConversion : DiagGroup<"null-conversion">; 124def ImplicitConversionFloatingPointToBool : 125 DiagGroup<"implicit-conversion-floating-point-to-bool">; 126def ObjCLiteralConversion : DiagGroup<"objc-literal-conversion">; 127def MacroRedefined : DiagGroup<"macro-redefined">; 128def BuiltinMacroRedefined : DiagGroup<"builtin-macro-redefined">; 129def BuiltinRequiresHeader : DiagGroup<"builtin-requires-header">; 130def C99Compat : DiagGroup<"c99-compat">; 131def CXXCompat: DiagGroup<"c++-compat">; 132def ExternCCompat : DiagGroup<"extern-c-compat">; 133def KeywordCompat : DiagGroup<"keyword-compat">; 134def GNUCaseRange : DiagGroup<"gnu-case-range">; 135def CastAlign : DiagGroup<"cast-align">; 136def CastQual : DiagGroup<"cast-qual">; 137def : DiagGroup<"char-align">; 138def Comment : DiagGroup<"comment">; 139def GNUComplexInteger : DiagGroup<"gnu-complex-integer">; 140def GNUConditionalOmittedOperand : DiagGroup<"gnu-conditional-omitted-operand">; 141def ConfigMacros : DiagGroup<"config-macros">; 142def : DiagGroup<"ctor-dtor-privacy">; 143def GNUStringLiteralOperatorTemplate : 144 DiagGroup<"gnu-string-literal-operator-template">; 145def UndefinedVarTemplate : DiagGroup<"undefined-var-template">; 146def UndefinedFuncTemplate : DiagGroup<"undefined-func-template">; 147def MissingNoEscape : DiagGroup<"missing-noescape">; 148 149def DefaultedFunctionDeleted : DiagGroup<"defaulted-function-deleted">; 150def DeleteIncomplete : DiagGroup<"delete-incomplete">; 151def DeleteNonAbstractNonVirtualDtor : DiagGroup<"delete-non-abstract-non-virtual-dtor">; 152def DeleteAbstractNonVirtualDtor : DiagGroup<"delete-abstract-non-virtual-dtor">; 153def DeleteNonVirtualDtor : DiagGroup<"delete-non-virtual-dtor", 154 [DeleteNonAbstractNonVirtualDtor, 155 DeleteAbstractNonVirtualDtor]>; 156def AbstractFinalClass : DiagGroup<"abstract-final-class">; 157def FinalDtorNonFinalClass : DiagGroup<"final-dtor-non-final-class">; 158 159def CXX11CompatDeprecatedWritableStr : 160 DiagGroup<"c++11-compat-deprecated-writable-strings">; 161 162def DeprecatedArrayCompare : DiagGroup<"deprecated-array-compare">; 163def DeprecatedAttributes : DiagGroup<"deprecated-attributes">; 164def DeprecatedCommaSubscript : DiagGroup<"deprecated-comma-subscript">; 165def DeprecatedCopyWithUserProvidedCopy : DiagGroup<"deprecated-copy-with-user-provided-copy">; 166def DeprecatedCopyWithUserProvidedDtor : DiagGroup<"deprecated-copy-with-user-provided-dtor">; 167def DeprecatedCopy : DiagGroup<"deprecated-copy", [DeprecatedCopyWithUserProvidedCopy]>; 168def DeprecatedCopyWithDtor : DiagGroup<"deprecated-copy-with-dtor", [DeprecatedCopyWithUserProvidedDtor]>; 169// For compatibility with GCC. 170def : DiagGroup<"deprecated-copy-dtor", [DeprecatedCopyWithDtor]>; 171def DeprecatedDeclarations : DiagGroup<"deprecated-declarations">; 172def UnavailableDeclarations : DiagGroup<"unavailable-declarations">; 173def UnguardedAvailabilityNew : DiagGroup<"unguarded-availability-new">; 174def UnguardedAvailability : DiagGroup<"unguarded-availability", 175 [UnguardedAvailabilityNew]>; 176// partial-availability is an alias of unguarded-availability. 177def : DiagGroup<"partial-availability", [UnguardedAvailability]>; 178def DeprecatedDynamicExceptionSpec 179 : DiagGroup<"deprecated-dynamic-exception-spec">; 180def DeprecatedImplementations :DiagGroup<"deprecated-implementations">; 181def DeprecatedIncrementBool : DiagGroup<"deprecated-increment-bool">; 182def DeprecatedRegister : DiagGroup<"deprecated-register">; 183def DeprecatedThisCapture : DiagGroup<"deprecated-this-capture">; 184def DeprecatedVolatile : DiagGroup<"deprecated-volatile">; 185def DeprecatedWritableStr : DiagGroup<"deprecated-writable-strings", 186 [CXX11CompatDeprecatedWritableStr]>; 187// FIXME: Why is DeprecatedImplementations not in this group? 188def Deprecated : DiagGroup<"deprecated", [DeprecatedAnonEnumEnumConversion, 189 DeprecatedArrayCompare, 190 DeprecatedAttributes, 191 DeprecatedCommaSubscript, 192 DeprecatedCopy, 193 DeprecatedCopyWithDtor, 194 DeprecatedDeclarations, 195 DeprecatedDynamicExceptionSpec, 196 DeprecatedEnumCompare, 197 DeprecatedEnumCompareConditional, 198 DeprecatedEnumEnumConversion, 199 DeprecatedEnumFloatConversion, 200 DeprecatedIncrementBool, 201 DeprecatedRegister, 202 DeprecatedThisCapture, 203 DeprecatedVolatile, 204 DeprecatedWritableStr]>, 205 DiagCategory<"Deprecations">; 206 207def CXX20Designator : DiagGroup<"c++20-designator">; 208// Allow -Wno-c99-designator to be used to turn off all warnings on valid C99 209// designators (including the warning controlled by -Wc++20-designator). 210def C99Designator : DiagGroup<"c99-designator", [CXX20Designator]>; 211def GNUDesignator : DiagGroup<"gnu-designator">; 212def DtorName : DiagGroup<"dtor-name">; 213 214def DynamicExceptionSpec 215 : DiagGroup<"dynamic-exception-spec", [DeprecatedDynamicExceptionSpec]>; 216 217def LibLTO : DiagGroup<"liblto">; 218def : DiagGroup<"disabled-optimization">; 219def : DiagGroup<"discard-qual">; 220def DivZero : DiagGroup<"division-by-zero">; 221def : DiagGroup<"div-by-zero", [DivZero]>; 222 223def DocumentationHTML : DiagGroup<"documentation-html">; 224def DocumentationUnknownCommand : DiagGroup<"documentation-unknown-command">; 225def DocumentationPedantic : DiagGroup<"documentation-pedantic", 226 [DocumentationUnknownCommand]>; 227def DocumentationDeprecatedSync : DiagGroup<"documentation-deprecated-sync">; 228def Documentation : DiagGroup<"documentation", 229 [DocumentationHTML, 230 DocumentationDeprecatedSync]>; 231 232def EmptyBody : DiagGroup<"empty-body">; 233def Exceptions : DiagGroup<"exceptions">; 234 235def GNUEmptyInitializer : DiagGroup<"gnu-empty-initializer">; 236def GNUEmptyStruct : DiagGroup<"gnu-empty-struct">; 237def ExtraTokens : DiagGroup<"extra-tokens">; 238def CXX98CompatExtraSemi : DiagGroup<"c++98-compat-extra-semi">; 239def CXX11ExtraSemi : DiagGroup<"c++11-extra-semi">; 240def EmptyInitStatement : DiagGroup<"empty-init-stmt">; 241def ExportUnnamed : DiagGroup<"export-unnamed">; 242def ExtraSemiStmt : DiagGroup<"extra-semi-stmt", [EmptyInitStatement]>; 243def ExtraSemi : DiagGroup<"extra-semi", [CXX98CompatExtraSemi, 244 CXX11ExtraSemi]>; 245 246def GNUFlexibleArrayInitializer : DiagGroup<"gnu-flexible-array-initializer">; 247def GNUFlexibleArrayUnionMember : DiagGroup<"gnu-flexible-array-union-member">; 248def GNUFoldingConstant : DiagGroup<"gnu-folding-constant">; 249def FormatInsufficientArgs : DiagGroup<"format-insufficient-args">; 250def FormatExtraArgs : DiagGroup<"format-extra-args">; 251def FormatZeroLength : DiagGroup<"format-zero-length">; 252 253def InvalidIOSDeploymentTarget : DiagGroup<"invalid-ios-deployment-target">; 254 255def CXX17CompatMangling : DiagGroup<"c++17-compat-mangling">; 256def : DiagGroup<"c++1z-compat-mangling", [CXX17CompatMangling]>; 257// Name of this warning in GCC. 258def NoexceptType : DiagGroup<"noexcept-type", [CXX17CompatMangling]>; 259 260// Warnings for C code which is not compatible with previous C standards. 261def CPre2xCompat : DiagGroup<"pre-c2x-compat">; 262def CPre2xCompatPedantic : DiagGroup<"pre-c2x-compat-pedantic", 263 [CPre2xCompat]>; 264 265// Warnings for C++ code which is not compatible with previous C++ standards. 266def CXXPre14Compat : DiagGroup<"pre-c++14-compat">; 267def : DiagGroup<"c++98-c++11-compat", [CXXPre14Compat]>; 268def CXXPre14CompatPedantic : DiagGroup<"pre-c++14-compat-pedantic", 269 [CXXPre14Compat, 270 CXXPre14CompatBinaryLiteral]>; 271def : DiagGroup<"c++98-c++11-compat-pedantic", [CXXPre14CompatPedantic]>; 272def CXXPre17Compat : DiagGroup<"pre-c++17-compat">; 273def : DiagGroup<"c++98-c++11-c++14-compat", [CXXPre17Compat]>; 274def CXXPre17CompatPedantic : DiagGroup<"pre-c++17-compat-pedantic", 275 [CXXPre17Compat]>; 276def : DiagGroup<"c++98-c++11-c++14-compat-pedantic", 277 [CXXPre17CompatPedantic]>; 278def CXXPre20Compat : DiagGroup<"pre-c++20-compat">; 279def : DiagGroup<"c++98-c++11-c++14-c++17-compat", [CXXPre20Compat]>; 280def CXXPre20CompatPedantic : DiagGroup<"pre-c++20-compat-pedantic", 281 [CXXPre20Compat]>; 282def : DiagGroup<"c++98-c++11-c++14-c++17-compat-pedantic", 283 [CXXPre20CompatPedantic]>; 284def CXXPre2bCompat : DiagGroup<"pre-c++2b-compat">; 285def CXXPre2bCompatPedantic : 286 DiagGroup<"pre-c++2b-compat-pedantic", [CXXPre2bCompat]>; 287 288def CXX98CompatBindToTemporaryCopy : 289 DiagGroup<"c++98-compat-bind-to-temporary-copy">; 290def CXX98CompatLocalTypeTemplateArgs : 291 DiagGroup<"c++98-compat-local-type-template-args">; 292def CXX98CompatUnnamedTypeTemplateArgs : 293 DiagGroup<"c++98-compat-unnamed-type-template-args">; 294 295def CXX98Compat : DiagGroup<"c++98-compat", 296 [CXX98CompatLocalTypeTemplateArgs, 297 CXX98CompatUnnamedTypeTemplateArgs, 298 CXXPre14Compat, 299 CXXPre17Compat, 300 CXXPre20Compat, 301 CXXPre2bCompat]>; 302// Warnings for C++11 features which are Extensions in C++98 mode. 303def CXX98CompatPedantic : DiagGroup<"c++98-compat-pedantic", 304 [CXX98Compat, 305 CXX98CompatBindToTemporaryCopy, 306 CXX98CompatExtraSemi, 307 CXXPre14CompatPedantic, 308 CXXPre17CompatPedantic, 309 CXXPre20CompatPedantic, 310 CXXPre2bCompatPedantic]>; 311 312def CXX11Narrowing : DiagGroup<"c++11-narrowing">; 313 314def CXX11WarnInconsistentOverrideDestructor : 315 DiagGroup<"inconsistent-missing-destructor-override">; 316def CXX11WarnInconsistentOverrideMethod : 317 DiagGroup<"inconsistent-missing-override">; 318def CXX11WarnSuggestOverrideDestructor : DiagGroup<"suggest-destructor-override">; 319def CXX11WarnSuggestOverride : DiagGroup<"suggest-override">; 320 321// Original name of this warning in Clang 322def : DiagGroup<"c++0x-narrowing", [CXX11Narrowing]>; 323 324// Name of this warning in GCC 325def : DiagGroup<"narrowing", [CXX11Narrowing]>; 326 327def CXX11CompatReservedUserDefinedLiteral : 328 DiagGroup<"c++11-compat-reserved-user-defined-literal">; 329def ReservedUserDefinedLiteral : 330 DiagGroup<"reserved-user-defined-literal", 331 [CXX11CompatReservedUserDefinedLiteral]>; 332 333def CXX11Compat : DiagGroup<"c++11-compat", 334 [CXX11Narrowing, 335 CXX11CompatReservedUserDefinedLiteral, 336 CXX11CompatDeprecatedWritableStr, 337 CXXPre14Compat, 338 CXXPre17Compat, 339 CXXPre20Compat, 340 CXXPre2bCompat]>; 341def : DiagGroup<"c++0x-compat", [CXX11Compat]>; 342def CXX11CompatPedantic : DiagGroup<"c++11-compat-pedantic", 343 [CXX11Compat, 344 CXXPre14CompatPedantic, 345 CXXPre17CompatPedantic, 346 CXXPre20CompatPedantic, 347 CXXPre2bCompatPedantic]>; 348 349def CXX14Compat : DiagGroup<"c++14-compat", [CXXPre17Compat, 350 CXXPre20Compat, 351 CXXPre2bCompat]>; 352def CXX14CompatPedantic : DiagGroup<"c++14-compat-pedantic", 353 [CXX14Compat, 354 CXXPre17CompatPedantic, 355 CXXPre20CompatPedantic, 356 CXXPre2bCompatPedantic]>; 357 358def CXX17Compat : DiagGroup<"c++17-compat", [DeprecatedRegister, 359 DeprecatedIncrementBool, 360 CXX17CompatMangling, 361 CXXPre20Compat, 362 CXXPre2bCompat]>; 363def CXX17CompatPedantic : DiagGroup<"c++17-compat-pedantic", 364 [CXX17Compat, 365 CXXPre20CompatPedantic, 366 CXXPre2bCompatPedantic]>; 367def : DiagGroup<"c++1z-compat", [CXX17Compat]>; 368 369def CXX20Compat : DiagGroup<"c++20-compat", [CXXPre2bCompat]>; 370def CXX20CompatPedantic : DiagGroup<"c++20-compat-pedantic", 371 [CXX20Compat, 372 CXXPre2bCompatPedantic]>; 373def : DiagGroup<"c++2a-compat", [CXX20Compat]>; 374def : DiagGroup<"c++2a-compat-pedantic", [CXX20CompatPedantic]>; 375 376def ExitTimeDestructors : DiagGroup<"exit-time-destructors">; 377def FlexibleArrayExtensions : DiagGroup<"flexible-array-extensions">; 378def FourByteMultiChar : DiagGroup<"four-char-constants">; 379def GlobalConstructors : DiagGroup<"global-constructors">; 380def BitwiseConditionalParentheses: DiagGroup<"bitwise-conditional-parentheses">; 381def BitwiseOpParentheses: DiagGroup<"bitwise-op-parentheses">; 382def LogicalOpParentheses: DiagGroup<"logical-op-parentheses">; 383def LogicalNotParentheses: DiagGroup<"logical-not-parentheses">; 384def ShiftOpParentheses: DiagGroup<"shift-op-parentheses">; 385def OverloadedShiftOpParentheses: DiagGroup<"overloaded-shift-op-parentheses">; 386def DanglingElse: DiagGroup<"dangling-else">; 387def DanglingField : DiagGroup<"dangling-field">; 388def DanglingInitializerList : DiagGroup<"dangling-initializer-list">; 389def DanglingGsl : DiagGroup<"dangling-gsl">; 390def ReturnStackAddress : DiagGroup<"return-stack-address">; 391def Dangling : DiagGroup<"dangling", [DanglingField, 392 DanglingInitializerList, 393 DanglingGsl, 394 ReturnStackAddress]>; 395def DistributedObjectModifiers : DiagGroup<"distributed-object-modifiers">; 396def ExcessInitializers : DiagGroup<"excess-initializers">; 397def ExpansionToDefined : DiagGroup<"expansion-to-defined">; 398def FlagEnum : DiagGroup<"flag-enum">; 399def IncrementBool : DiagGroup<"increment-bool", [DeprecatedIncrementBool]>; 400def InfiniteRecursion : DiagGroup<"infinite-recursion">; 401def PureVirtualCallFromCtorDtor: DiagGroup<"call-to-pure-virtual-from-ctor-dtor">; 402def GNUImaginaryConstant : DiagGroup<"gnu-imaginary-constant">; 403def IgnoredQualifiers : DiagGroup<"ignored-qualifiers">; 404def : DiagGroup<"import">; 405def GNUIncludeNext : DiagGroup<"gnu-include-next">; 406def IncompatibleMSStruct : DiagGroup<"incompatible-ms-struct">; 407def IncompatiblePointerTypesDiscardsQualifiers 408 : DiagGroup<"incompatible-pointer-types-discards-qualifiers">; 409def IncompatibleFunctionPointerTypes 410 : DiagGroup<"incompatible-function-pointer-types">; 411def IncompatiblePointerTypes 412 : DiagGroup<"incompatible-pointer-types", 413 [IncompatiblePointerTypesDiscardsQualifiers, 414 IncompatibleFunctionPointerTypes]>; 415def IncompleteUmbrella : DiagGroup<"incomplete-umbrella">; 416def IncompleteFrameworkModuleDeclaration 417 : DiagGroup<"incomplete-framework-module-declaration">; 418def NonModularIncludeInFrameworkModule 419 : DiagGroup<"non-modular-include-in-framework-module">; 420def NonModularIncludeInModule : DiagGroup<"non-modular-include-in-module", 421 [NonModularIncludeInFrameworkModule]>; 422def IncompleteModule : DiagGroup<"incomplete-module", 423 [IncompleteUmbrella, NonModularIncludeInModule]>; 424def PrivateModule : DiagGroup<"private-module">; 425 426def CXX11InlineNamespace : DiagGroup<"c++11-inline-namespace">; 427def InlineNamespaceReopenedNoninline 428 : DiagGroup<"inline-namespace-reopened-noninline">; 429def InvalidNoreturn : DiagGroup<"invalid-noreturn">; 430def InvalidSourceEncoding : DiagGroup<"invalid-source-encoding">; 431def KNRPromotedParameter : DiagGroup<"knr-promoted-parameter">; 432def : DiagGroup<"init-self">; 433def : DiagGroup<"inline">; 434def : DiagGroup<"invalid-pch">; 435def GNULabelsAsValue : DiagGroup<"gnu-label-as-value">; 436def LiteralRange : DiagGroup<"literal-range">; 437def LocalTypeTemplateArgs : DiagGroup<"local-type-template-args", 438 [CXX98CompatLocalTypeTemplateArgs]>; 439def RangeLoopConstruct : DiagGroup<"range-loop-construct">; 440def RangeLoopBindReference : DiagGroup<"range-loop-bind-reference">; 441def RangeLoopAnalysis : DiagGroup<"range-loop-analysis", 442 [RangeLoopConstruct, RangeLoopBindReference]>; 443def ForLoopAnalysis : DiagGroup<"for-loop-analysis">; 444def LoopAnalysis : DiagGroup<"loop-analysis", [ForLoopAnalysis, 445 RangeLoopAnalysis]>; 446def MalformedWarningCheck : DiagGroup<"malformed-warning-check">; 447def Main : DiagGroup<"main">; 448def MainReturnType : DiagGroup<"main-return-type">; 449def MaxUnsignedZero : DiagGroup<"max-unsigned-zero">; 450def MissingBraces : DiagGroup<"missing-braces">; 451def MissingDeclarations: DiagGroup<"missing-declarations">; 452def : DiagGroup<"missing-format-attribute">; 453def : DiagGroup<"missing-include-dirs">; 454def MissingNoreturn : DiagGroup<"missing-noreturn">; 455def MultiChar : DiagGroup<"multichar">; 456def : DiagGroup<"nested-externs">; 457def CXX11LongLong : DiagGroup<"c++11-long-long">; 458def LongLong : DiagGroup<"long-long", [CXX11LongLong]>; 459def ImplicitlyUnsignedLiteral : DiagGroup<"implicitly-unsigned-literal">; 460def MethodSignatures : DiagGroup<"method-signatures">; 461def MismatchedParameterTypes : DiagGroup<"mismatched-parameter-types">; 462def MismatchedReturnTypes : DiagGroup<"mismatched-return-types">; 463def MismatchedTags : DiagGroup<"mismatched-tags">; 464def MissingFieldInitializers : DiagGroup<"missing-field-initializers">; 465def ModuleBuild : DiagGroup<"module-build">; 466def ModuleImport : DiagGroup<"module-import">; 467def ModuleConflict : DiagGroup<"module-conflict">; 468def ModuleFileExtension : DiagGroup<"module-file-extension">; 469def RoundTripCC1Args : DiagGroup<"round-trip-cc1-args">; 470def NewlineEOF : DiagGroup<"newline-eof">; 471def Nullability : DiagGroup<"nullability">; 472def NullabilityDeclSpec : DiagGroup<"nullability-declspec">; 473def NullabilityInferredOnNestedType : DiagGroup<"nullability-inferred-on-nested-type">; 474def NullableToNonNullConversion : DiagGroup<"nullable-to-nonnull-conversion">; 475def NullabilityCompletenessOnArrays : DiagGroup<"nullability-completeness-on-arrays">; 476def NullabilityCompleteness : DiagGroup<"nullability-completeness", 477 [NullabilityCompletenessOnArrays]>; 478def NullArithmetic : DiagGroup<"null-arithmetic">; 479def NullCharacter : DiagGroup<"null-character">; 480def NullDereference : DiagGroup<"null-dereference">; 481def InitializerOverrides : DiagGroup<"initializer-overrides">; 482// For compatibility with GCC; -Woverride-init = -Winitializer-overrides 483def : DiagGroup<"override-init", [InitializerOverrides]>; 484def NonNull : DiagGroup<"nonnull">; 485def NonPODVarargs : DiagGroup<"non-pod-varargs">; 486def ClassVarargs : DiagGroup<"class-varargs", [NonPODVarargs]>; 487def : DiagGroup<"nonportable-cfstrings">; 488def NonVirtualDtor : DiagGroup<"non-virtual-dtor">; 489def NullPointerArithmetic : DiagGroup<"null-pointer-arithmetic">; 490def : DiagGroup<"effc++", [NonVirtualDtor]>; 491def OveralignedType : DiagGroup<"over-aligned">; 492def OldStyleCast : DiagGroup<"old-style-cast">; 493def : DiagGroup<"old-style-definition">; 494def OutOfLineDeclaration : DiagGroup<"out-of-line-declaration">; 495def : DiagGroup<"overflow">; 496def ForwardClassReceiver : DiagGroup<"receiver-forward-class">; 497def MethodAccess : DiagGroup<"objc-method-access">; 498def ObjCReceiver : DiagGroup<"receiver-expr">; 499def OperatorNewReturnsNull : DiagGroup<"new-returns-null">; 500def OverlengthStrings : DiagGroup<"overlength-strings">; 501def OverloadedVirtual : DiagGroup<"overloaded-virtual">; 502def PrivateExtern : DiagGroup<"private-extern">; 503def SelTypeCast : DiagGroup<"cast-of-sel-type">; 504def FunctionDefInObjCContainer : DiagGroup<"function-def-in-objc-container">; 505def BadFunctionCast : DiagGroup<"bad-function-cast">; 506def CastFunctionType : DiagGroup<"cast-function-type">; 507def ObjCPropertyImpl : DiagGroup<"objc-property-implementation">; 508def ObjCPropertyNoAttribute : DiagGroup<"objc-property-no-attribute">; 509def ObjCPropertyAssignOnObjectType : DiagGroup<"objc-property-assign-on-object-type">; 510def ObjCProtocolQualifiers : DiagGroup<"objc-protocol-qualifiers">; 511def ObjCMissingSuperCalls : DiagGroup<"objc-missing-super-calls">; 512def ObjCDesignatedInit : DiagGroup<"objc-designated-initializers">; 513def ObjCRetainBlockProperty : DiagGroup<"objc-noncopy-retain-block-property">; 514def ObjCReadonlyPropertyHasSetter : DiagGroup<"objc-readonly-with-setter-property">; 515def ObjCInvalidIBOutletProperty : DiagGroup<"invalid-iboutlet">; 516def ObjCRootClass : DiagGroup<"objc-root-class">; 517def ObjCPointerIntrospectPerformSelector : DiagGroup<"deprecated-objc-pointer-introspection-performSelector">; 518def ObjCPointerIntrospect : DiagGroup<"deprecated-objc-pointer-introspection", [ObjCPointerIntrospectPerformSelector]>; 519def ObjCMultipleMethodNames : DiagGroup<"objc-multiple-method-names">; 520def ObjCFlexibleArray : DiagGroup<"objc-flexible-array">; 521def ObjCBoxing : DiagGroup<"objc-boxing">; 522def CompletionHandler : DiagGroup<"completion-handler">; 523def CalledOnceParameter : DiagGroup<"called-once-parameter", [CompletionHandler]>; 524def OpenCLUnsupportedRGBA: DiagGroup<"opencl-unsupported-rgba">; 525def UnderalignedExceptionObject : DiagGroup<"underaligned-exception-object">; 526def DeprecatedObjCIsaUsage : DiagGroup<"deprecated-objc-isa-usage">; 527def ExplicitInitializeCall : DiagGroup<"explicit-initialize-call">; 528def Packed : DiagGroup<"packed">; 529def Padded : DiagGroup<"padded">; 530 531def PessimizingMove : DiagGroup<"pessimizing-move">; 532def ReturnStdMove : DiagGroup<"return-std-move">; 533 534def PointerArith : DiagGroup<"pointer-arith">; 535def PoundWarning : DiagGroup<"#warnings">; 536def PoundPragmaMessage : DiagGroup<"#pragma-messages">, 537 DiagCategory<"#pragma message Directive">; 538def : DiagGroup<"redundant-decls">; 539def RedeclaredClassMember : DiagGroup<"redeclared-class-member">; 540def GNURedeclaredEnum : DiagGroup<"gnu-redeclared-enum">; 541def RedundantMove : DiagGroup<"redundant-move">; 542def Register : DiagGroup<"register", [DeprecatedRegister]>; 543def ReturnTypeCLinkage : DiagGroup<"return-type-c-linkage">; 544def ReturnType : DiagGroup<"return-type", [ReturnTypeCLinkage]>; 545def BindToTemporaryCopy : DiagGroup<"bind-to-temporary-copy", 546 [CXX98CompatBindToTemporaryCopy]>; 547def SelfAssignmentField : DiagGroup<"self-assign-field">; 548def SelfAssignmentOverloaded : DiagGroup<"self-assign-overloaded">; 549def SelfAssignment : DiagGroup<"self-assign", [SelfAssignmentOverloaded, SelfAssignmentField]>; 550def SelfMove : DiagGroup<"self-move">; 551def SemiBeforeMethodBody : DiagGroup<"semicolon-before-method-body">; 552def Sentinel : DiagGroup<"sentinel">; 553def MissingMethodReturnType : DiagGroup<"missing-method-return-type">; 554 555def ShadowField : DiagGroup<"shadow-field">; 556def ShadowFieldInConstructorModified : DiagGroup<"shadow-field-in-constructor-modified">; 557def ShadowFieldInConstructor : DiagGroup<"shadow-field-in-constructor", 558 [ShadowFieldInConstructorModified]>; 559def ShadowIvar : DiagGroup<"shadow-ivar">; 560def ShadowUncapturedLocal : DiagGroup<"shadow-uncaptured-local">; 561 562// -Wshadow-all is a catch-all for all shadowing. -Wshadow is just the 563// shadowing that we think is unsafe. 564def Shadow : DiagGroup<"shadow", [ShadowFieldInConstructorModified, 565 ShadowIvar]>; 566def ShadowAll : DiagGroup<"shadow-all", [Shadow, ShadowFieldInConstructor, 567 ShadowUncapturedLocal, ShadowField]>; 568 569def Shorten64To32 : DiagGroup<"shorten-64-to-32">; 570def : DiagGroup<"sign-promo">; 571def SignCompare : DiagGroup<"sign-compare">; 572def : DiagGroup<"switch-default">; 573def : DiagGroup<"synth">; 574def SizeofArrayArgument : DiagGroup<"sizeof-array-argument">; 575def SizeofArrayDecay : DiagGroup<"sizeof-array-decay">; 576def SizeofPointerMemaccess : DiagGroup<"sizeof-pointer-memaccess">; 577def MemsetTransposedArgs : DiagGroup<"memset-transposed-args">; 578def DynamicClassMemaccess : DiagGroup<"dynamic-class-memaccess">; 579def NonTrivialMemaccess : DiagGroup<"nontrivial-memaccess">; 580def SuspiciousBzero : DiagGroup<"suspicious-bzero">; 581def SuspiciousMemaccess : DiagGroup<"suspicious-memaccess", 582 [SizeofPointerMemaccess, DynamicClassMemaccess, 583 NonTrivialMemaccess, MemsetTransposedArgs, SuspiciousBzero]>; 584def StaticInInline : DiagGroup<"static-in-inline">; 585def StaticLocalInInline : DiagGroup<"static-local-in-inline">; 586def GNUStaticFloatInit : DiagGroup<"gnu-static-float-init">; 587def StaticFloatInit : DiagGroup<"static-float-init", [GNUStaticFloatInit]>; 588def GNUStatementExpression : DiagGroup<"gnu-statement-expression">; 589def StringConcatation : DiagGroup<"string-concatenation">; 590def StringCompare : DiagGroup<"string-compare">; 591def StringPlusInt : DiagGroup<"string-plus-int">; 592def StringPlusChar : DiagGroup<"string-plus-char">; 593def StrncatSize : DiagGroup<"strncat-size">; 594def SwiftNameAttribute : DiagGroup<"swift-name-attribute">; 595def IntInBoolContext : DiagGroup<"int-in-bool-context">; 596def TautologicalTypeLimitCompare : DiagGroup<"tautological-type-limit-compare">; 597def TautologicalUnsignedZeroCompare : DiagGroup<"tautological-unsigned-zero-compare">; 598def TautologicalUnsignedCharZeroCompare : DiagGroup<"tautological-unsigned-char-zero-compare">; 599def TautologicalUnsignedEnumZeroCompare : DiagGroup<"tautological-unsigned-enum-zero-compare">; 600// For compatibility with GCC. Tautological comparison warnings for constants 601// that are an extremal value of the type. 602def TypeLimits : DiagGroup<"type-limits", [TautologicalTypeLimitCompare, 603 TautologicalUnsignedZeroCompare, 604 TautologicalUnsignedCharZeroCompare, 605 TautologicalUnsignedEnumZeroCompare]>; 606// Additional tautological comparison warnings based on the expression, not 607// only on its type. 608def TautologicalValueRangeCompare : DiagGroup<"tautological-value-range-compare">; 609def TautologicalInRangeCompare : DiagGroup<"tautological-constant-in-range-compare", 610 [TypeLimits, TautologicalValueRangeCompare]>; 611def TautologicalOutOfRangeCompare : DiagGroup<"tautological-constant-out-of-range-compare">; 612def TautologicalConstantCompare : DiagGroup<"tautological-constant-compare", 613 [TautologicalOutOfRangeCompare]>; 614def TautologicalPointerCompare : DiagGroup<"tautological-pointer-compare">; 615def TautologicalOverlapCompare : DiagGroup<"tautological-overlap-compare">; 616def TautologicalBitwiseCompare : DiagGroup<"tautological-bitwise-compare">; 617def TautologicalUndefinedCompare : DiagGroup<"tautological-undefined-compare">; 618def TautologicalObjCBoolCompare : DiagGroup<"tautological-objc-bool-compare">; 619def TautologicalCompare : DiagGroup<"tautological-compare", 620 [TautologicalConstantCompare, 621 TautologicalPointerCompare, 622 TautologicalOverlapCompare, 623 TautologicalBitwiseCompare, 624 TautologicalUndefinedCompare, 625 TautologicalObjCBoolCompare]>; 626def HeaderHygiene : DiagGroup<"header-hygiene">; 627def DuplicateDeclSpecifier : DiagGroup<"duplicate-decl-specifier">; 628def CompareDistinctPointerType : DiagGroup<"compare-distinct-pointer-types">; 629def GNUUnionCast : DiagGroup<"gnu-union-cast">; 630def GNUVariableSizedTypeNotAtEnd : DiagGroup<"gnu-variable-sized-type-not-at-end">; 631def Varargs : DiagGroup<"varargs">; 632def XorUsedAsPow : DiagGroup<"xor-used-as-pow">; 633 634def Unsequenced : DiagGroup<"unsequenced">; 635// GCC name for -Wunsequenced 636def : DiagGroup<"sequence-point", [Unsequenced]>; 637 638// Preprocessor warnings. 639def AmbiguousMacro : DiagGroup<"ambiguous-macro">; 640def KeywordAsMacro : DiagGroup<"keyword-macro">; 641def ReservedIdAsMacro : DiagGroup<"reserved-macro-identifier">; 642def ReservedIdAsMacroAlias : DiagGroup<"reserved-id-macro", [ReservedIdAsMacro]>; 643 644// Just silence warnings about -Wstrict-aliasing for now. 645def : DiagGroup<"strict-aliasing=0">; 646def : DiagGroup<"strict-aliasing=1">; 647def : DiagGroup<"strict-aliasing=2">; 648def : DiagGroup<"strict-aliasing">; 649 650// Just silence warnings about -Wstrict-overflow for now. 651def : DiagGroup<"strict-overflow=0">; 652def : DiagGroup<"strict-overflow=1">; 653def : DiagGroup<"strict-overflow=2">; 654def : DiagGroup<"strict-overflow=3">; 655def : DiagGroup<"strict-overflow=4">; 656def : DiagGroup<"strict-overflow=5">; 657def : DiagGroup<"strict-overflow">; 658 659def InvalidOffsetof : DiagGroup<"invalid-offsetof">; 660def StrictSelector : DiagGroup<"strict-selector-match">; 661def MethodDuplicate : DiagGroup<"duplicate-method-match">; 662def ObjCCStringFormat : DiagGroup<"cstring-format-directive">; 663def CoveredSwitchDefault : DiagGroup<"covered-switch-default">; 664def SwitchBool : DiagGroup<"switch-bool">; 665def SwitchEnum : DiagGroup<"switch-enum">; 666def Switch : DiagGroup<"switch">; 667def ImplicitFallthroughPerFunction : 668 DiagGroup<"implicit-fallthrough-per-function">; 669def ImplicitFallthrough : DiagGroup<"implicit-fallthrough", 670 [ImplicitFallthroughPerFunction]>; 671def InvalidPPToken : DiagGroup<"invalid-pp-token">; 672def Trigraphs : DiagGroup<"trigraphs">; 673 674def UndefinedReinterpretCast : DiagGroup<"undefined-reinterpret-cast">; 675def ReinterpretBaseClass : DiagGroup<"reinterpret-base-class">; 676def Unicode : DiagGroup<"unicode">; 677def UninitializedMaybe : DiagGroup<"conditional-uninitialized">; 678def UninitializedSometimes : DiagGroup<"sometimes-uninitialized">; 679def UninitializedStaticSelfInit : DiagGroup<"static-self-init">; 680def UninitializedConstReference : DiagGroup<"uninitialized-const-reference">; 681def Uninitialized : DiagGroup<"uninitialized", [UninitializedSometimes, 682 UninitializedStaticSelfInit, 683 UninitializedConstReference]>; 684def IgnoredPragmaIntrinsic : DiagGroup<"ignored-pragma-intrinsic">; 685// #pragma optimize is often used to avoid to work around MSVC codegen bugs or 686// to disable inlining. It's not completely clear what alternative to suggest 687// (#pragma clang optimize, noinline) so suggest nothing for now. 688def IgnoredPragmaOptimize : DiagGroup<"ignored-pragma-optimize">; 689def UnknownPragmas : DiagGroup<"unknown-pragmas">; 690def IgnoredPragmas : DiagGroup<"ignored-pragmas", 691 [IgnoredPragmaIntrinsic, IgnoredPragmaOptimize]>; 692def PragmaClangAttribute : DiagGroup<"pragma-clang-attribute">; 693def PragmaPackSuspiciousInclude : DiagGroup<"pragma-pack-suspicious-include">; 694def PragmaPack : DiagGroup<"pragma-pack", [PragmaPackSuspiciousInclude]>; 695def Pragmas : DiagGroup<"pragmas", [UnknownPragmas, IgnoredPragmas, 696 PragmaClangAttribute, PragmaPack]>; 697def UnknownWarningOption : DiagGroup<"unknown-warning-option">; 698def NSobjectAttribute : DiagGroup<"NSObject-attribute">; 699def NSConsumedMismatch : DiagGroup<"nsconsumed-mismatch">; 700def NSReturnsMismatch : DiagGroup<"nsreturns-mismatch">; 701 702def IndependentClassAttribute : DiagGroup<"IndependentClass-attribute">; 703def UnknownAttributes : DiagGroup<"unknown-attributes">; 704def IgnoredAttributes : DiagGroup<"ignored-attributes">; 705def Attributes : DiagGroup<"attributes", [UnknownAttributes, 706 IgnoredAttributes]>; 707def UnknownSanitizers : DiagGroup<"unknown-sanitizers">; 708def UnnamedTypeTemplateArgs : DiagGroup<"unnamed-type-template-args", 709 [CXX98CompatUnnamedTypeTemplateArgs]>; 710def UnsupportedFriend : DiagGroup<"unsupported-friend">; 711def UnusedArgument : DiagGroup<"unused-argument">; 712def UnusedCommandLineArgument : DiagGroup<"unused-command-line-argument">; 713def IgnoredOptimizationArgument : DiagGroup<"ignored-optimization-argument">; 714def InvalidCommandLineArgument : DiagGroup<"invalid-command-line-argument", 715 [IgnoredOptimizationArgument]>; 716def UnusedComparison : DiagGroup<"unused-comparison">; 717def UnusedExceptionParameter : DiagGroup<"unused-exception-parameter">; 718def UnneededInternalDecl : DiagGroup<"unneeded-internal-declaration">; 719def UnneededMemberFunction : DiagGroup<"unneeded-member-function">; 720def UnusedPrivateField : DiagGroup<"unused-private-field">; 721def UnusedFunction : DiagGroup<"unused-function", [UnneededInternalDecl]>; 722def UnusedTemplate : DiagGroup<"unused-template", [UnneededInternalDecl]>; 723def UnusedMemberFunction : DiagGroup<"unused-member-function", 724 [UnneededMemberFunction]>; 725def UnusedLabel : DiagGroup<"unused-label">; 726def UnusedLambdaCapture : DiagGroup<"unused-lambda-capture">; 727def UnusedParameter : DiagGroup<"unused-parameter">; 728def UnusedResult : DiagGroup<"unused-result">; 729def PotentiallyEvaluatedExpression : DiagGroup<"potentially-evaluated-expression">; 730def UnevaluatedExpression : DiagGroup<"unevaluated-expression", 731 [PotentiallyEvaluatedExpression]>; 732def UnusedValue : DiagGroup<"unused-value", [UnusedComparison, UnusedResult, 733 UnevaluatedExpression]>; 734def UnusedConstVariable : DiagGroup<"unused-const-variable">; 735def UnusedVariable : DiagGroup<"unused-variable", 736 [UnusedConstVariable]>; 737def UnusedLocalTypedef : DiagGroup<"unused-local-typedef">; 738def UnusedPropertyIvar : DiagGroup<"unused-property-ivar">; 739def UnusedGetterReturnValue : DiagGroup<"unused-getter-return-value">; 740def UsedButMarkedUnused : DiagGroup<"used-but-marked-unused">; 741def UserDefinedLiterals : DiagGroup<"user-defined-literals">; 742def UserDefinedWarnings : DiagGroup<"user-defined-warnings">; 743def ReorderCtor : DiagGroup<"reorder-ctor">; 744def ReorderInitList : DiagGroup<"reorder-init-list">; 745def Reorder : DiagGroup<"reorder", [ReorderCtor, ReorderInitList]>; 746def UndeclaredSelector : DiagGroup<"undeclared-selector">; 747def ImplicitAtomic : DiagGroup<"implicit-atomic-properties">; 748def AtomicAlignment : DiagGroup<"atomic-alignment">; 749def CustomAtomic : DiagGroup<"custom-atomic-properties">; 750def AtomicProperties : DiagGroup<"atomic-properties", 751 [ImplicitAtomic, CustomAtomic]>; 752def ARCUnsafeRetainedAssign : DiagGroup<"arc-unsafe-retained-assign">; 753def ARCRetainCycles : DiagGroup<"arc-retain-cycles">; 754def ARCNonPodMemAccess : DiagGroup<"arc-non-pod-memaccess">; 755def AutomaticReferenceCounting : DiagGroup<"arc", 756 [ARCUnsafeRetainedAssign, 757 ARCRetainCycles, 758 ARCNonPodMemAccess]>; 759def ARCRepeatedUseOfWeakMaybe : DiagGroup<"arc-maybe-repeated-use-of-weak">; 760def ARCRepeatedUseOfWeak : DiagGroup<"arc-repeated-use-of-weak", 761 [ARCRepeatedUseOfWeakMaybe]>; 762def BlockCaptureAutoReleasing : DiagGroup<"block-capture-autoreleasing">; 763def ObjCBridge : DiagGroup<"bridge-cast">; 764 765def DeallocInCategory:DiagGroup<"dealloc-in-category">; 766def SelectorTypeMismatch : DiagGroup<"selector-type-mismatch">; 767def Selector : DiagGroup<"selector", [SelectorTypeMismatch]>; 768def Protocol : DiagGroup<"protocol">; 769// No longer in use, preserve for backwards compatibility. 770def : DiagGroup<"at-protocol">; 771def PropertyAccessDotSyntax: DiagGroup<"property-access-dot-syntax">; 772def PropertyAttr : DiagGroup<"property-attribute-mismatch">; 773def SuperSubClassMismatch : DiagGroup<"super-class-method-mismatch">; 774def OverridingMethodMismatch : DiagGroup<"overriding-method-mismatch">; 775def VariadicMacros : DiagGroup<"variadic-macros">; 776def VectorConversion : DiagGroup<"vector-conversion">; // clang specific 777def VexingParse : DiagGroup<"vexing-parse">; 778def VLAExtension : DiagGroup<"vla-extension">; 779def VLA : DiagGroup<"vla", [VLAExtension]>; 780def VolatileRegisterVar : DiagGroup<"volatile-register-var">; 781def Visibility : DiagGroup<"visibility">; 782def ZeroLengthArray : DiagGroup<"zero-length-array">; 783def GNUZeroLineDirective : DiagGroup<"gnu-zero-line-directive">; 784def GNUZeroVariadicMacroArguments : DiagGroup<"gnu-zero-variadic-macro-arguments">; 785def MisleadingIndentation : DiagGroup<"misleading-indentation">; 786 787// This covers both the deprecated case (in C++98) 788// and the extension case (in C++11 onwards). 789def WritableStrings : DiagGroup<"writable-strings", [DeprecatedWritableStr]>; 790 791// GCC calls -Wdeprecated-writable-strings -Wwrite-strings. 792// 793// Bizarrely, this warning flag enables -fconst-strings in C. This is 794// GCC-compatible, but really weird. 795// 796// FIXME: Should this affect C++11 (where this is an error, 797// not just deprecated) or not? 798def GCCWriteStrings : DiagGroup<"write-strings" , [WritableStrings]>; 799 800def CharSubscript : DiagGroup<"char-subscripts">; 801def LargeByValueCopy : DiagGroup<"large-by-value-copy">; 802def DuplicateArgDecl : DiagGroup<"duplicate-method-arg">; 803def SignedEnumBitfield : DiagGroup<"signed-enum-bitfield">; 804 805def ReservedIdentifier : DiagGroup<"reserved-identifier", 806 [ReservedIdAsMacro]>; 807 808// Unreachable code warning groups. 809// 810// The goal is make -Wunreachable-code on by default, in -Wall, or at 811// least actively used, with more noisy versions of the warning covered 812// under separate flags. 813// 814def UnreachableCodeLoopIncrement : DiagGroup<"unreachable-code-loop-increment">; 815def UnreachableCode : DiagGroup<"unreachable-code", 816 [UnreachableCodeLoopIncrement]>; 817def UnreachableCodeBreak : DiagGroup<"unreachable-code-break">; 818def UnreachableCodeReturn : DiagGroup<"unreachable-code-return">; 819def UnreachableCodeAggressive : DiagGroup<"unreachable-code-aggressive", 820 [UnreachableCode, 821 UnreachableCodeBreak, 822 UnreachableCodeReturn]>; 823 824// Aggregation warning settings. 825 826// Populate -Waddress with warnings from other groups. 827def : DiagGroup<"address", [PointerBoolConversion, 828 StringCompare, 829 TautologicalPointerCompare]>; 830 831// -Widiomatic-parentheses contains warnings about 'idiomatic' 832// missing parentheses; it is off by default. We do not include it 833// in -Wparentheses because most users who use -Wparentheses explicitly 834// do not want these warnings. 835def ParenthesesOnEquality : DiagGroup<"parentheses-equality">; 836def Parentheses : DiagGroup<"parentheses", 837 [LogicalOpParentheses, 838 LogicalNotParentheses, 839 BitwiseConditionalParentheses, 840 BitwiseOpParentheses, 841 ShiftOpParentheses, 842 OverloadedShiftOpParentheses, 843 ParenthesesOnEquality, 844 DanglingElse]>; 845 846// -Wconversion has its own warnings, but we split a few out for 847// legacy reasons: 848// - some people want just 64-to-32 warnings 849// - conversion warnings with constant sources are on by default 850// - conversion warnings for literals are on by default 851// - bool-to-pointer conversion warnings are on by default 852// - __null-to-integer conversion warnings are on by default 853def Conversion : DiagGroup<"conversion", 854 [BoolConversion, 855 ConstantConversion, 856 EnumConversion, 857 BitFieldEnumConversion, 858 FloatConversion, 859 Shorten64To32, 860 IntConversion, 861 ImplicitIntConversion, 862 ImplicitFloatConversion, 863 LiteralConversion, 864 NonLiteralNullConversion, // (1-1)->pointer (etc) 865 NullConversion, // NULL->non-pointer 866 ObjCLiteralConversion, 867 SignConversion, 868 StringConversion]>, 869 DiagCategory<"Value Conversion Issue">; 870 871def Unused : DiagGroup<"unused", 872 [UnusedArgument, UnusedFunction, UnusedLabel, 873 // UnusedParameter, (matches GCC's behavior) 874 // UnusedTemplate, (clean-up libc++ before enabling) 875 // UnusedMemberFunction, (clean-up llvm before enabling) 876 UnusedPrivateField, UnusedLambdaCapture, 877 UnusedLocalTypedef, UnusedValue, UnusedVariable, 878 UnusedPropertyIvar]>, 879 DiagCategory<"Unused Entity Issue">; 880 881// Format settings. 882def FormatInvalidSpecifier : DiagGroup<"format-invalid-specifier">; 883def FormatSecurity : DiagGroup<"format-security">; 884def FormatNonStandard : DiagGroup<"format-non-iso">; 885def FormatY2K : DiagGroup<"format-y2k">; 886def FormatPedantic : DiagGroup<"format-pedantic">; 887def FormatTypeConfusion : DiagGroup<"format-type-confusion">; 888def Format : DiagGroup<"format", 889 [FormatExtraArgs, FormatZeroLength, NonNull, 890 FormatSecurity, FormatY2K, FormatInvalidSpecifier, 891 FormatInsufficientArgs]>, 892 DiagCategory<"Format String Issue">; 893def FormatNonLiteral : DiagGroup<"format-nonliteral">; 894def Format2 : DiagGroup<"format=2", 895 [FormatNonLiteral, FormatSecurity, FormatY2K]>; 896 897def TypeSafety : DiagGroup<"type-safety">; 898 899def IncompatibleExceptionSpec : DiagGroup<"incompatible-exception-spec">; 900 901def IntToVoidPointerCast : DiagGroup<"int-to-void-pointer-cast">; 902def IntToPointerCast : DiagGroup<"int-to-pointer-cast", 903 [IntToVoidPointerCast]>; 904def VoidPointerToEnumCast : DiagGroup<"void-pointer-to-enum-cast">; 905def VoidPointerToIntCast : DiagGroup<"void-pointer-to-int-cast", 906 [VoidPointerToEnumCast]>; 907def PointerToEnumCast : DiagGroup<"pointer-to-enum-cast", 908 [VoidPointerToEnumCast]>; 909def PointerToIntCast : DiagGroup<"pointer-to-int-cast", 910 [PointerToEnumCast, VoidPointerToIntCast]>; 911 912def FUseLdPath : DiagGroup<"fuse-ld-path">; 913 914def Move : DiagGroup<"move", [ 915 PessimizingMove, 916 RedundantMove, 917 ReturnStdMove, 918 SelfMove 919 ]>; 920 921def Extra : DiagGroup<"extra", [ 922 DeprecatedCopy, 923 MissingFieldInitializers, 924 IgnoredQualifiers, 925 InitializerOverrides, 926 SemiBeforeMethodBody, 927 MissingMethodReturnType, 928 SignCompare, 929 UnusedParameter, 930 NullPointerArithmetic, 931 EmptyInitStatement, 932 StringConcatation, 933 FUseLdPath, 934 ]>; 935 936def Most : DiagGroup<"most", [ 937 CharSubscript, 938 Comment, 939 DeleteNonVirtualDtor, 940 Format, 941 ForLoopAnalysis, 942 FrameAddress, 943 Implicit, 944 InfiniteRecursion, 945 IntInBoolContext, 946 MismatchedTags, 947 MissingBraces, 948 Move, 949 MultiChar, 950 RangeLoopConstruct, 951 Reorder, 952 ReturnType, 953 SelfAssignment, 954 SelfMove, 955 SizeofArrayArgument, 956 SizeofArrayDecay, 957 StringPlusInt, 958 TautologicalCompare, 959 Trigraphs, 960 Uninitialized, 961 UnknownPragmas, 962 Unused, 963 VolatileRegisterVar, 964 ObjCMissingSuperCalls, 965 ObjCDesignatedInit, 966 ObjCFlexibleArray, 967 OverloadedVirtual, 968 PrivateExtern, 969 SelTypeCast, 970 ExternCCompat, 971 UserDefinedWarnings 972 ]>; 973 974// Thread Safety warnings 975def ThreadSafetyAttributes : DiagGroup<"thread-safety-attributes">; 976def ThreadSafetyAnalysis : DiagGroup<"thread-safety-analysis">; 977def ThreadSafetyPrecise : DiagGroup<"thread-safety-precise">; 978def ThreadSafetyReference : DiagGroup<"thread-safety-reference">; 979def ThreadSafetyNegative : DiagGroup<"thread-safety-negative">; 980def ThreadSafety : DiagGroup<"thread-safety", 981 [ThreadSafetyAttributes, 982 ThreadSafetyAnalysis, 983 ThreadSafetyPrecise, 984 ThreadSafetyReference]>; 985def ThreadSafetyVerbose : DiagGroup<"thread-safety-verbose">; 986def ThreadSafetyBeta : DiagGroup<"thread-safety-beta">; 987 988// Uniqueness Analysis warnings 989def Consumed : DiagGroup<"consumed">; 990 991// Note that putting warnings in -Wall will not disable them by default. If a 992// warning should be active _only_ when -Wall is passed in, mark it as 993// DefaultIgnore in addition to putting it here. 994def All : DiagGroup<"all", [Most, Parentheses, Switch, SwitchBool, 995 MisleadingIndentation]>; 996 997// Warnings that should be in clang-cl /w4. 998def : DiagGroup<"CL4", [All, Extra]>; 999 1000// Warnings enabled by -pedantic. This is magically filled in by TableGen. 1001def Pedantic : DiagGroup<"pedantic">; 1002 1003// Aliases. 1004def : DiagGroup<"", [Extra]>; // -W = -Wextra 1005def : DiagGroup<"endif-labels", [ExtraTokens]>; // -Wendif-labels=-Wextra-tokens 1006def : DiagGroup<"cpp", [PoundWarning]>; // -Wcpp = -W#warnings 1007def : DiagGroup<"comments", [Comment]>; // -Wcomments = -Wcomment 1008def : DiagGroup<"conversion-null", 1009 [NullConversion]>; // -Wconversion-null = -Wnull-conversion 1010def : DiagGroup<"bool-conversions", 1011 [BoolConversion]>; // -Wbool-conversions = -Wbool-conversion 1012def : DiagGroup<"int-conversions", 1013 [IntConversion]>; // -Wint-conversions = -Wint-conversion 1014def : DiagGroup<"vector-conversions", 1015 [VectorConversion]>; // -Wvector-conversions = -Wvector-conversion 1016def : DiagGroup<"unused-local-typedefs", [UnusedLocalTypedef]>; 1017 // -Wunused-local-typedefs = -Wunused-local-typedef 1018 1019// A warning group for warnings that we want to have on by default in clang, 1020// but which aren't on by default in GCC. 1021def NonGCC : DiagGroup<"non-gcc", 1022 [SignCompare, Conversion, LiteralRange]>; 1023 1024// A warning group for warnings about using C++11 features as extensions in 1025// earlier C++ versions. 1026def CXX11 : DiagGroup<"c++11-extensions", [CXX11ExtraSemi, CXX11InlineNamespace, 1027 CXX11LongLong]>; 1028 1029// A warning group for warnings about using C++14 features as extensions in 1030// earlier C++ versions. 1031def CXX14 : DiagGroup<"c++14-extensions", [CXX14BinaryLiteral]>; 1032 1033// A warning group for warnings about using C++17 features as extensions in 1034// earlier C++ versions. 1035def CXX17 : DiagGroup<"c++17-extensions">; 1036 1037// A warning group for warnings about using C++20 features as extensions in 1038// earlier C++ versions. 1039def CXX20 : DiagGroup<"c++20-extensions", [CXX20Designator]>; 1040 1041// A warning group for warnings about using C++2b features as extensions in 1042// earlier C++ versions. 1043def CXX2b : DiagGroup<"c++2b-extensions">; 1044 1045def : DiagGroup<"c++0x-extensions", [CXX11]>; 1046def : DiagGroup<"c++1y-extensions", [CXX14]>; 1047def : DiagGroup<"c++1z-extensions", [CXX17]>; 1048def : DiagGroup<"c++2a-extensions", [CXX20]>; 1049 1050def DelegatingCtorCycles : 1051 DiagGroup<"delegating-ctor-cycles">; 1052 1053// A warning group for warnings about using C11 features as extensions. 1054def C11 : DiagGroup<"c11-extensions">; 1055 1056// A warning group for warnings about using C99 features as extensions. 1057def C99 : DiagGroup<"c99-extensions", [C99Designator]>; 1058 1059// A warning group for warnings about using C2x features as extensions. 1060def C2x : DiagGroup<"c2x-extensions">; 1061 1062// A warning group for warnings about GCC extensions. 1063def GNU : DiagGroup<"gnu", [GNUAlignofExpression, GNUAnonymousStruct, 1064 GNUAutoType, 1065 GNUBinaryLiteral, GNUCaseRange, 1066 GNUComplexInteger, GNUCompoundLiteralInitializer, 1067 GNUConditionalOmittedOperand, GNUDesignator, 1068 GNUEmptyInitializer, GNUEmptyStruct, 1069 VLAExtension, GNUFlexibleArrayInitializer, 1070 GNUFlexibleArrayUnionMember, GNUFoldingConstant, 1071 GNUImaginaryConstant, GNUIncludeNext, 1072 GNULabelsAsValue, 1073 RedeclaredClassMember, GNURedeclaredEnum, 1074 GNUStatementExpression, GNUStaticFloatInit, 1075 GNUStringLiteralOperatorTemplate, 1076 GNUUnionCast, GNUVariableSizedTypeNotAtEnd, 1077 ZeroLengthArray, GNUZeroLineDirective, 1078 GNUZeroVariadicMacroArguments]>; 1079// A warning group for warnings about code that clang accepts but gcc doesn't. 1080def GccCompat : DiagGroup<"gcc-compat">; 1081 1082// Warnings for Microsoft extensions. 1083def MicrosoftCharize : DiagGroup<"microsoft-charize">; 1084def MicrosoftDrectveSection : DiagGroup<"microsoft-drectve-section">; 1085def MicrosoftInclude : DiagGroup<"microsoft-include">; 1086def MicrosoftCppMacro : DiagGroup<"microsoft-cpp-macro">; 1087def MicrosoftFixedEnum : DiagGroup<"microsoft-fixed-enum">; 1088def MicrosoftSealed : DiagGroup<"microsoft-sealed">; 1089def MicrosoftUnqualifiedFriend : DiagGroup<"microsoft-unqualified-friend">; 1090def MicrosoftExceptionSpec : DiagGroup<"microsoft-exception-spec">; 1091def MicrosoftUsingDecl : DiagGroup<"microsoft-using-decl">; 1092def MicrosoftMutableReference : DiagGroup<"microsoft-mutable-reference">; 1093def MicrosoftPureDefinition : DiagGroup<"microsoft-pure-definition">; 1094def MicrosoftUnionMemberReference : DiagGroup< 1095 "microsoft-union-member-reference">; 1096def MicrosoftExplicitConstructorCall : DiagGroup< 1097 "microsoft-explicit-constructor-call">; 1098def MicrosoftEnumValue : DiagGroup<"microsoft-enum-value">; 1099def MicrosoftDefaultArgRedefinition : 1100 DiagGroup<"microsoft-default-arg-redefinition">; 1101def MicrosoftTemplateShadow : DiagGroup<"microsoft-template-shadow">; 1102def MicrosoftTemplate : DiagGroup<"microsoft-template", [MicrosoftTemplateShadow]>; 1103def MicrosoftInconsistentDllImport : DiagGroup<"inconsistent-dllimport">; 1104def MicrosoftRedeclareStatic : DiagGroup<"microsoft-redeclare-static">; 1105def MicrosoftEnumForwardReference : 1106 DiagGroup<"microsoft-enum-forward-reference">; 1107def MicrosoftGoto : DiagGroup<"microsoft-goto">; 1108def MicrosoftFlexibleArray : DiagGroup<"microsoft-flexible-array">; 1109def MicrosoftExtraQualification : DiagGroup<"microsoft-extra-qualification">; 1110def MicrosoftCast : DiagGroup<"microsoft-cast">; 1111def MicrosoftConstInit : DiagGroup<"microsoft-const-init">; 1112def MicrosoftVoidPseudoDtor : DiagGroup<"microsoft-void-pseudo-dtor">; 1113def MicrosoftAnonTag : DiagGroup<"microsoft-anon-tag">; 1114def MicrosoftCommentPaste : DiagGroup<"microsoft-comment-paste">; 1115def MicrosoftEndOfFile : DiagGroup<"microsoft-end-of-file">; 1116def MicrosoftInaccessibleBase : DiagGroup<"microsoft-inaccessible-base">; 1117def MicrosoftStaticAssert : DiagGroup<"microsoft-static-assert">; 1118 1119// Aliases. 1120def : DiagGroup<"msvc-include", [MicrosoftInclude]>; 1121 // -Wmsvc-include = -Wmicrosoft-include 1122 1123// Warnings group for warnings about Microsoft extensions. 1124def Microsoft : DiagGroup<"microsoft", 1125 [MicrosoftCharize, MicrosoftDrectveSection, MicrosoftInclude, 1126 MicrosoftCppMacro, MicrosoftFixedEnum, MicrosoftSealed, 1127 MicrosoftUnqualifiedFriend, MicrosoftExceptionSpec, MicrosoftUsingDecl, 1128 MicrosoftMutableReference, MicrosoftPureDefinition, 1129 MicrosoftUnionMemberReference, MicrosoftExplicitConstructorCall, 1130 MicrosoftEnumValue, MicrosoftDefaultArgRedefinition, MicrosoftTemplate, 1131 MicrosoftRedeclareStatic, MicrosoftEnumForwardReference, MicrosoftGoto, 1132 MicrosoftFlexibleArray, MicrosoftExtraQualification, MicrosoftCast, 1133 MicrosoftConstInit, MicrosoftVoidPseudoDtor, MicrosoftAnonTag, 1134 MicrosoftCommentPaste, MicrosoftEndOfFile, MicrosoftStaticAssert, 1135 MicrosoftInconsistentDllImport]>; 1136 1137def ClangClPch : DiagGroup<"clang-cl-pch">; 1138 1139def ObjCNonUnifiedException : DiagGroup<"objc-nonunified-exceptions">; 1140 1141def ObjCProtocolMethodImpl : DiagGroup<"objc-protocol-method-implementation">; 1142 1143def ObjCNoPropertyAutoSynthesis : DiagGroup<"objc-property-synthesis">; 1144 1145// ObjC API warning groups. 1146def ObjCRedundantLiteralUse : DiagGroup<"objc-redundant-literal-use">; 1147def ObjCRedundantAPIUse : DiagGroup<"objc-redundant-api-use", [ 1148 ObjCRedundantLiteralUse 1149 ]>; 1150 1151def ObjCCocoaAPI : DiagGroup<"objc-cocoa-api", [ 1152 ObjCRedundantAPIUse 1153 ]>; 1154 1155def ObjCStringComparison : DiagGroup<"objc-string-compare">; 1156def ObjCStringConcatenation : DiagGroup<"objc-string-concatenation">; 1157def ObjCLiteralComparison : DiagGroup<"objc-literal-compare", [ 1158 ObjCStringComparison 1159 ]>; 1160 1161def ObjCSignedCharBool : DiagGroup<"objc-signed-char-bool", 1162 [ObjCSignedCharBoolImplicitIntConversion, 1163 ObjCSignedCharBoolImplicitFloatConversion, 1164 ObjCBoolConstantConversion, 1165 TautologicalObjCBoolCompare]>; 1166 1167def ObjCPotentiallyDirectSelector : DiagGroup<"potentially-direct-selector">; 1168def ObjCStrictPotentiallyDirectSelector : 1169 DiagGroup<"strict-potentially-direct-selector", 1170 [ObjCPotentiallyDirectSelector]>; 1171 1172// Inline ASM warnings. 1173def ASMOperandWidths : DiagGroup<"asm-operand-widths">; 1174def ASM : DiagGroup<"asm", [ 1175 ASMOperandWidths 1176 ]>; 1177 1178// OpenMP warnings. 1179def SourceUsesOpenMP : DiagGroup<"source-uses-openmp">; 1180def OpenMPClauses : DiagGroup<"openmp-clauses">; 1181def OpenMPLoopForm : DiagGroup<"openmp-loop-form">; 1182def OpenMPMapping : DiagGroup<"openmp-mapping">; 1183def OpenMPTarget : DiagGroup<"openmp-target", [OpenMPMapping]>; 1184def OpenMP : DiagGroup<"openmp", [ 1185 SourceUsesOpenMP, OpenMPClauses, OpenMPLoopForm, OpenMPTarget, OpenMPMapping 1186 ]>; 1187 1188// Backend warnings. 1189def BackendInlineAsm : DiagGroup<"inline-asm">; 1190def BackendSourceMgr : DiagGroup<"source-mgr">; 1191def BackendFrameLargerThanEQ : DiagGroup<"frame-larger-than=">; 1192def BackendPlugin : DiagGroup<"backend-plugin">; 1193def RemarkBackendPlugin : DiagGroup<"remark-backend-plugin">; 1194def BackendOptimizationRemark : DiagGroup<"pass">; 1195def BackendOptimizationRemarkMissed : DiagGroup<"pass-missed">; 1196def BackendOptimizationRemarkAnalysis : DiagGroup<"pass-analysis">; 1197def BackendOptimizationFailure : DiagGroup<"pass-failed">; 1198 1199// Instrumentation based profiling warnings. 1200def ProfileInstrMissing : DiagGroup<"profile-instr-missing">; 1201def ProfileInstrOutOfDate : DiagGroup<"profile-instr-out-of-date">; 1202def ProfileInstrUnprofiled : DiagGroup<"profile-instr-unprofiled">; 1203 1204// AddressSanitizer frontend instrumentation remarks. 1205def SanitizeAddressRemarks : DiagGroup<"sanitize-address">; 1206 1207// Issues with serialized diagnostics. 1208def SerializedDiagnostics : DiagGroup<"serialized-diagnostics">; 1209 1210// A warning group for warnings about code that clang accepts when 1211// compiling CUDA C/C++ but which is not compatible with the CUDA spec. 1212def CudaCompat : DiagGroup<"cuda-compat">; 1213 1214// Warning about unknown CUDA SDK version. 1215def CudaUnknownVersion: DiagGroup<"unknown-cuda-version">; 1216 1217// A warning group for warnings about features supported by HIP but 1218// ignored by CUDA. 1219def HIPOnly : DiagGroup<"hip-only">; 1220 1221// Warnings which cause linking of the runtime libraries like 1222// libc and the CRT to be skipped. 1223def AVRRtlibLinkingQuirks : DiagGroup<"avr-rtlib-linking-quirks">; 1224 1225// A warning group for things that will change semantics in the future. 1226def FutureCompat : DiagGroup<"future-compat">; 1227 1228def InvalidOrNonExistentDirectory : DiagGroup<"invalid-or-nonexistent-directory">; 1229 1230def OptionIgnored : DiagGroup<"option-ignored">; 1231 1232def UnknownArgument : DiagGroup<"unknown-argument">; 1233 1234// A warning group for warnings about code that clang accepts when 1235// compiling OpenCL C/C++ but which is not compatible with the SPIR spec. 1236def SpirCompat : DiagGroup<"spir-compat">; 1237 1238// Warning for the GlobalISel options. 1239def GlobalISel : DiagGroup<"global-isel">; 1240 1241// A warning group specifically for warnings related to function 1242// multiversioning. 1243def FunctionMultiVersioning : DiagGroup<"function-multiversion">; 1244 1245def NoDeref : DiagGroup<"noderef">; 1246 1247// A group for cross translation unit static analysis related warnings. 1248def CrossTU : DiagGroup<"ctu">; 1249 1250def CTADMaybeUnsupported : DiagGroup<"ctad-maybe-unsupported">; 1251 1252def FortifySource : DiagGroup<"fortify-source">; 1253 1254def MaxTokens : DiagGroup<"max-tokens"> { 1255 code Documentation = [{ 1256The warning is issued if the number of pre-processor tokens exceeds 1257the token limit, which can be set in three ways: 1258 12591. As a limit at a specific point in a file, using the ``clang max_tokens_here`` 1260 pragma: 1261 1262 .. code-block: c++ 1263 #pragma clang max_tokens_here 1234 1264 12652. As a per-translation unit limit, using the ``-fmax-tokens=`` command-line 1266 flag: 1267 1268 .. code-block: console 1269 clang -c a.cpp -fmax-tokens=1234 1270 12713. As a per-translation unit limit using the ``clang max_tokens_total`` pragma, 1272 which works like and overrides the ``-fmax-tokens=`` flag: 1273 1274 .. code-block: c++ 1275 #pragma clang max_tokens_total 1234 1276 1277These limits can be helpful in limiting code growth through included files. 1278 1279Setting a token limit of zero means no limit. 1280 1281Note that the warning is disabled by default, so -Wmax-tokens must be used 1282in addition with the pragmas or -fmax-tokens flag to get any warnings. 1283}]; 1284} 1285 1286def WebAssemblyExceptionSpec : DiagGroup<"wasm-exception-spec">; 1287 1288def RTTI : DiagGroup<"rtti">; 1289 1290def OpenCLCoreFeaturesDiagGroup : DiagGroup<"pedantic-core-features">; 1291