DiagnosticGroups.td revision 243830
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 : DiagGroup<"address">; 22def AddressOfTemporary : DiagGroup<"address-of-temporary">; 23def : DiagGroup<"aggregate-return">; 24def AmbigMemberTemplate : DiagGroup<"ambiguous-member-template">; 25def Availability : DiagGroup<"availability">; 26def Section : DiagGroup<"section">; 27def AutoImport : DiagGroup<"auto-import">; 28def ConstantConversion : DiagGroup<"constant-conversion">; 29def LiteralConversion : DiagGroup<"literal-conversion">; 30def StringConversion : DiagGroup<"string-conversion">; 31def SignConversion : DiagGroup<"sign-conversion">; 32def BoolConversion : DiagGroup<"bool-conversion">; 33def IntConversion : DiagGroup<"int-conversion">; 34def EnumConversion : DiagGroup<"enum-conversion">; 35def NonLiteralNullConversion : DiagGroup<"non-literal-null-conversion">; 36def NullConversion : DiagGroup<"null-conversion">; 37def ImplicitConversionFloatingPointToBool : 38 DiagGroup<"implicit-conversion-floating-point-to-bool">; 39def BuiltinRequiresHeader : DiagGroup<"builtin-requires-header">; 40def CXXCompat: DiagGroup<"c++-compat">; 41def CastAlign : DiagGroup<"cast-align">; 42def : DiagGroup<"cast-qual">; 43def : DiagGroup<"char-align">; 44def Comment : DiagGroup<"comment">; 45def : DiagGroup<"ctor-dtor-privacy">; 46def DefaultArgSpecialMember : DiagGroup<"default-arg-special-member">; 47def GNUDesignator : DiagGroup<"gnu-designator">; 48 49def DeleteNonVirtualDtor : DiagGroup<"delete-non-virtual-dtor">; 50def AbstractFinalClass : DiagGroup<"abstract-final-class">; 51 52def DeprecatedDeclarations : DiagGroup<"deprecated-declarations">; 53def DeprecatedWritableStr : DiagGroup<"deprecated-writable-strings">; 54def Deprecated : DiagGroup<"deprecated", [ DeprecatedDeclarations] >, 55 DiagCategory<"Deprecations">; 56 57def DeprecatedImplementations :DiagGroup<"deprecated-implementations">; 58 59def : DiagGroup<"disabled-optimization">; 60def : DiagGroup<"discard-qual">; 61def : DiagGroup<"div-by-zero">; 62 63def DocumentationHTML : DiagGroup<"documentation-html">; 64def DocumentationPedantic : DiagGroup<"documentation-pedantic">; 65def DocumentationDeprecatedSync : DiagGroup<"documentation-deprecated-sync">; 66def Documentation : DiagGroup<"documentation", 67 [DocumentationHTML, 68 DocumentationDeprecatedSync]>; 69 70def EmptyBody : DiagGroup<"empty-body">; 71def ExtraTokens : DiagGroup<"extra-tokens">; 72def CXX11ExtraSemi : DiagGroup<"c++11-extra-semi">; 73def ExtraSemi : DiagGroup<"extra-semi", [CXX11ExtraSemi]>; 74 75def FormatExtraArgs : DiagGroup<"format-extra-args">; 76def FormatZeroLength : DiagGroup<"format-zero-length">; 77 78def CXX98CompatBindToTemporaryCopy : 79 DiagGroup<"c++98-compat-bind-to-temporary-copy">; 80def CXX98CompatLocalTypeTemplateArgs : 81 DiagGroup<"c++98-compat-local-type-template-args">; 82def CXX98CompatUnnamedTypeTemplateArgs : 83 DiagGroup<"c++98-compat-unnamed-type-template-args">; 84 85def CXX98Compat : DiagGroup<"c++98-compat", 86 [CXX98CompatBindToTemporaryCopy, 87 CXX98CompatLocalTypeTemplateArgs, 88 CXX98CompatUnnamedTypeTemplateArgs]>; 89// Warnings for C++11 features which are Extensions in C++98 mode. 90def CXX98CompatPedantic : DiagGroup<"c++98-compat-pedantic", [CXX98Compat]>; 91 92def CXX11Narrowing : DiagGroup<"c++11-narrowing">; 93 94// Original name of this warning in Clang 95def : DiagGroup<"c++0x-narrowing", [CXX11Narrowing]>; 96 97// Name of this warning in GCC 98def : DiagGroup<"narrowing", [CXX11Narrowing]>; 99 100def CXX11CompatReservedUserDefinedLiteral : 101 DiagGroup<"c++11-compat-reserved-user-defined-literal">; 102def ReservedUserDefinedLiteral : 103 DiagGroup<"reserved-user-defined-literal", 104 [CXX11CompatReservedUserDefinedLiteral]>; 105 106def CXX11Compat : DiagGroup<"c++11-compat", 107 [CXX11Narrowing, 108 CXX11CompatReservedUserDefinedLiteral]>; 109def : DiagGroup<"c++0x-compat", [CXX11Compat]>; 110 111def : DiagGroup<"effc++">; 112def DivZero : DiagGroup<"division-by-zero">; 113def ExitTimeDestructors : DiagGroup<"exit-time-destructors">; 114def FlexibleArrayExtensions : DiagGroup<"flexible-array-extensions">; 115def FourByteMultiChar : DiagGroup<"four-char-constants">; 116def GlobalConstructors : DiagGroup<"global-constructors">; 117def BitwiseOpParentheses: DiagGroup<"bitwise-op-parentheses">; 118def LogicalOpParentheses: DiagGroup<"logical-op-parentheses">; 119def ShiftOpParentheses: DiagGroup<"shift-op-parentheses">; 120def DanglingElse: DiagGroup<"dangling-else">; 121def IgnoredQualifiers : DiagGroup<"ignored-qualifiers">; 122def : DiagGroup<"import">; 123def IncompatiblePointerTypes : DiagGroup<"incompatible-pointer-types">; 124def IncompleteUmbrella : DiagGroup<"incomplete-umbrella">; 125def KNRPromotedParameter : DiagGroup<"knr-promoted-parameter">; 126def : DiagGroup<"init-self">; 127def : DiagGroup<"inline">; 128def : DiagGroup<"invalid-pch">; 129def LiteralRange : DiagGroup<"literal-range">; 130def LocalTypeTemplateArgs : DiagGroup<"local-type-template-args", 131 [CXX98CompatLocalTypeTemplateArgs]>; 132def MalformedWarningCheck : DiagGroup<"malformed-warning-check">; 133def Main : DiagGroup<"main">; 134def MainReturnType : DiagGroup<"main-return-type">; 135def MissingBraces : DiagGroup<"missing-braces">; 136def MissingDeclarations: DiagGroup<"missing-declarations">; 137def : DiagGroup<"missing-format-attribute">; 138def : DiagGroup<"missing-include-dirs">; 139def MultiChar : DiagGroup<"multichar">; 140def : DiagGroup<"nested-externs">; 141def CXX11LongLong : DiagGroup<"c++11-long-long">; 142def LongLong : DiagGroup<"long-long", [CXX11LongLong]>; 143def MismatchedParameterTypes : DiagGroup<"mismatched-parameter-types">; 144def MismatchedReturnTypes : DiagGroup<"mismatched-return-types">; 145def MismatchedTags : DiagGroup<"mismatched-tags">; 146def MissingFieldInitializers : DiagGroup<"missing-field-initializers">; 147def ModuleBuild : DiagGroup<"module-build">; 148def NullCharacter : DiagGroup<"null-character">; 149def NullDereference : DiagGroup<"null-dereference">; 150def InitializerOverrides : DiagGroup<"initializer-overrides">; 151def NonNull : DiagGroup<"nonnull">; 152def : DiagGroup<"nonportable-cfstrings">; 153def NonVirtualDtor : DiagGroup<"non-virtual-dtor">; 154def OveralignedType : DiagGroup<"over-aligned">; 155def : DiagGroup<"old-style-cast">; 156def : DiagGroup<"old-style-definition">; 157def OutOfLineDeclaration : DiagGroup<"out-of-line-declaration">; 158def : DiagGroup<"overflow">; 159def ForwardClassReceiver : DiagGroup<"receiver-forward-class">; 160def MethodAccess : DiagGroup<"objc-method-access">; 161def ObjCReceiver : DiagGroup<"receiver-expr">; 162def OverlengthStrings : DiagGroup<"overlength-strings">; 163def OverloadedVirtual : DiagGroup<"overloaded-virtual">; 164def PrivateExtern : DiagGroup<"private-extern">; 165def SelTypeCast : DiagGroup<"cast-of-sel-type">; 166def BadFunctionCast : DiagGroup<"bad-function-cast">; 167def ObjCPropertyImpl : DiagGroup<"objc-property-implementation">; 168def ObjCPropertyNoAttribute : DiagGroup<"objc-property-no-attribute">; 169def ObjCMissingSuperCalls : DiagGroup<"objc-missing-super-calls">; 170def ObjCRetainBlockProperty : DiagGroup<"objc-noncopy-retain-block-property">; 171def ObjCReadonlyPropertyHasSetter : DiagGroup<"objc-readonly-with-setter-property">; 172def ObjCRootClass : DiagGroup<"objc-root-class">; 173def Packed : DiagGroup<"packed">; 174def Padded : DiagGroup<"padded">; 175def PointerArith : DiagGroup<"pointer-arith">; 176def PoundWarning : DiagGroup<"#warnings">, 177 DiagCategory<"#warning Directive">; 178def PoundPragmaMessage : DiagGroup<"#pragma-messages">, 179 DiagCategory<"#pragma message Directive">; 180def : DiagGroup<"pointer-to-int-cast">; 181def : DiagGroup<"redundant-decls">; 182def ReturnTypeCLinkage : DiagGroup<"return-type-c-linkage">; 183def ReturnType : DiagGroup<"return-type", [ReturnTypeCLinkage]>; 184def BindToTemporaryCopy : DiagGroup<"bind-to-temporary-copy", 185 [CXX98CompatBindToTemporaryCopy]>; 186def SelfAssignmentField : DiagGroup<"self-assign-field">; 187def SelfAssignment : DiagGroup<"self-assign", [SelfAssignmentField]>; 188def SemiBeforeMethodBody : DiagGroup<"semicolon-before-method-body">; 189def Sentinel : DiagGroup<"sentinel">; 190def MissingMethodReturnType : DiagGroup<"missing-method-return-type">; 191def : DiagGroup<"sequence-point">; 192def Shadow : DiagGroup<"shadow">; 193def Shorten64To32 : DiagGroup<"shorten-64-to-32">; 194def : DiagGroup<"sign-promo">; 195def SignCompare : DiagGroup<"sign-compare">; 196def : DiagGroup<"stack-protector">; 197def : DiagGroup<"switch-default">; 198def : DiagGroup<"synth">; 199def SizeofArrayArgument : DiagGroup<"sizeof-array-argument">; 200def StringPlusInt : DiagGroup<"string-plus-int">; 201def StrncatSize : DiagGroup<"strncat-size">; 202def TautologicalOutOfRangeCompare : DiagGroup<"tautological-constant-out-of-range-compare">; 203def TautologicalCompare : DiagGroup<"tautological-compare", 204 [TautologicalOutOfRangeCompare]>; 205def HeaderHygiene : DiagGroup<"header-hygiene">; 206def DuplicateDeclSpecifier : DiagGroup<"duplicate-decl-specifier">; 207def CompareDistinctPointerType : DiagGroup<"compare-distinct-pointer-types">; 208 209// Preprocessor warnings. 210def AmbiguousMacro : DiagGroup<"ambiguous-macro">; 211 212// Just silence warnings about -Wstrict-aliasing for now. 213def : DiagGroup<"strict-aliasing=0">; 214def : DiagGroup<"strict-aliasing=1">; 215def : DiagGroup<"strict-aliasing=2">; 216def : DiagGroup<"strict-aliasing">; 217 218// Just silence warnings about -Wstrict-overflow for now. 219def : DiagGroup<"strict-overflow=0">; 220def : DiagGroup<"strict-overflow=1">; 221def : DiagGroup<"strict-overflow=2">; 222def : DiagGroup<"strict-overflow=3">; 223def : DiagGroup<"strict-overflow=4">; 224def : DiagGroup<"strict-overflow=5">; 225def : DiagGroup<"strict-overflow">; 226 227def InvalidOffsetof : DiagGroup<"invalid-offsetof">; 228def LambdaExtensions : DiagGroup<"lambda-extensions">; 229def : DiagGroup<"strict-prototypes">; 230def StrictSelector : DiagGroup<"strict-selector-match">; 231def MethodDuplicate : DiagGroup<"duplicate-method-match">; 232def CoveredSwitchDefault : DiagGroup<"covered-switch-default">; 233def SwitchEnum : DiagGroup<"switch-enum">; 234def Switch : DiagGroup<"switch">; 235def ImplicitFallthroughPerFunction : 236 DiagGroup<"implicit-fallthrough-per-function">; 237def ImplicitFallthrough : DiagGroup<"implicit-fallthrough", 238 [ImplicitFallthroughPerFunction]>; 239def InvalidPPToken : DiagGroup<"invalid-pp-token">; 240def Trigraphs : DiagGroup<"trigraphs">; 241 242def : DiagGroup<"type-limits">; 243def Unicode : DiagGroup<"unicode">; 244def UninitializedMaybe : DiagGroup<"conditional-uninitialized">; 245def UninitializedSometimes : DiagGroup<"sometimes-uninitialized">; 246def Uninitialized : DiagGroup<"uninitialized", [UninitializedSometimes]>; 247def UnknownPragmas : DiagGroup<"unknown-pragmas">; 248def NSobjectAttribute : DiagGroup<"NSObject-attribute">; 249def UnknownAttributes : DiagGroup<"attributes">; 250def IgnoredAttributes : DiagGroup<"ignored-attributes">; 251def UnnamedTypeTemplateArgs : DiagGroup<"unnamed-type-template-args", 252 [CXX98CompatUnnamedTypeTemplateArgs]>; 253def UnusedArgument : DiagGroup<"unused-argument">; 254def UnusedComparison : DiagGroup<"unused-comparison">; 255def UnusedExceptionParameter : DiagGroup<"unused-exception-parameter">; 256def UnneededInternalDecl : DiagGroup<"unneeded-internal-declaration">; 257def UnneededMemberFunction : DiagGroup<"unneeded-member-function">; 258def UnusedPrivateField : DiagGroup<"unused-private-field">; 259def UnusedFunction : DiagGroup<"unused-function", [UnneededInternalDecl]>; 260def UnusedMemberFunction : DiagGroup<"unused-member-function", 261 [UnneededMemberFunction]>; 262def UnusedLabel : DiagGroup<"unused-label">; 263def UnusedParameter : DiagGroup<"unused-parameter">; 264def UnusedResult : DiagGroup<"unused-result">; 265def UnusedValue : DiagGroup<"unused-value", [UnusedComparison, UnusedResult]>; 266def UnusedVariable : DiagGroup<"unused-variable">; 267def UsedButMarkedUnused : DiagGroup<"used-but-marked-unused">; 268def UserDefinedLiterals : DiagGroup<"user-defined-literals">; 269def ReadOnlySetterAttrs : DiagGroup<"readonly-setter-attrs">; 270def Reorder : DiagGroup<"reorder">; 271def UndeclaredSelector : DiagGroup<"undeclared-selector">; 272def ImplicitAtomic : DiagGroup<"implicit-atomic-properties">; 273def CustomAtomic : DiagGroup<"custom-atomic-properties">; 274def AtomicProperties : DiagGroup<"atomic-properties", 275 [ImplicitAtomic, CustomAtomic]>; 276// FIXME: Remove arc-abi once an Xcode is released that doesn't pass this flag. 277def : DiagGroup<"arc-abi">; 278def ARCUnsafeRetainedAssign : DiagGroup<"arc-unsafe-retained-assign">; 279def ARCRetainCycles : DiagGroup<"arc-retain-cycles">; 280def ARCNonPodMemAccess : DiagGroup<"arc-non-pod-memaccess">; 281def AutomaticReferenceCounting : DiagGroup<"arc", 282 [ARCUnsafeRetainedAssign, 283 ARCRetainCycles, 284 ARCNonPodMemAccess]>; 285def ARCRepeatedUseOfWeakMaybe : DiagGroup<"arc-maybe-repeated-use-of-weak">; 286def ARCRepeatedUseOfWeak : DiagGroup<"arc-repeated-use-of-weak", 287 [ARCRepeatedUseOfWeakMaybe]>; 288def Selector : DiagGroup<"selector">; 289def Protocol : DiagGroup<"protocol">; 290def SuperSubClassMismatch : DiagGroup<"super-class-method-mismatch">; 291def OverridingMethodMismatch : DiagGroup<"overriding-method-mismatch">; 292def VariadicMacros : DiagGroup<"variadic-macros">; 293def VectorConversion : DiagGroup<"vector-conversion">; // clang specific 294def VexingParse : DiagGroup<"vexing-parse">; 295def VLA : DiagGroup<"vla">; 296def VolatileRegisterVar : DiagGroup<"volatile-register-var">; 297def Visibility : DiagGroup<"visibility">; 298def ZeroLengthArray : DiagGroup<"zero-length-array">; 299 300// GCC calls -Wdeprecated-writable-strings -Wwrite-strings. 301def GCCWriteStrings : DiagGroup<"write-strings" , [DeprecatedWritableStr]>; 302 303def CharSubscript : DiagGroup<"char-subscripts">; 304def LargeByValueCopy : DiagGroup<"large-by-value-copy">; 305def DuplicateArgDecl : DiagGroup<"duplicate-method-arg">; 306 307// Aggregation warning settings. 308 309// -Widiomatic-parentheses contains warnings about 'idiomatic' 310// missing parentheses; it is off by default. We do not include it 311// in -Wparentheses because most users who use -Wparentheses explicitly 312// do not want these warnings. 313def ParenthesesOnEquality : DiagGroup<"parentheses-equality">; 314def Parentheses : DiagGroup<"parentheses", 315 [LogicalOpParentheses, 316 BitwiseOpParentheses, 317 ShiftOpParentheses, 318 ParenthesesOnEquality, 319 DanglingElse]>; 320 321// -Wconversion has its own warnings, but we split a few out for 322// legacy reasons: 323// - some people want just 64-to-32 warnings 324// - conversion warnings with constant sources are on by default 325// - conversion warnings for literals are on by default 326// - bool-to-pointer conversion warnings are on by default 327// - __null-to-integer conversion warnings are on by default 328def Conversion : DiagGroup<"conversion", 329 [BoolConversion, 330 ConstantConversion, 331 EnumConversion, 332 Shorten64To32, 333 IntConversion, 334 LiteralConversion, 335 NonLiteralNullConversion, // (1-1)->pointer (etc) 336 NullConversion, // NULL->non-pointer 337 SignConversion, 338 StringConversion]>, 339 DiagCategory<"Value Conversion Issue">; 340 341def Unused : DiagGroup<"unused", 342 [UnusedArgument, UnusedFunction, UnusedLabel, 343 // UnusedParameter, (matches GCC's behavior) 344 // UnusedMemberFunction, (clean-up llvm before enabling) 345 UnusedPrivateField, 346 UnusedValue, UnusedVariable]>, 347 DiagCategory<"Unused Entity Issue">; 348 349// Format settings. 350def FormatInvalidSpecifier : DiagGroup<"format-invalid-specifier">; 351def FormatSecurity : DiagGroup<"format-security">; 352def FormatNonStandard : DiagGroup<"format-non-iso">; 353def FormatY2K : DiagGroup<"format-y2k">; 354def Format : DiagGroup<"format", 355 [FormatExtraArgs, FormatZeroLength, NonNull, 356 FormatSecurity, FormatY2K, FormatInvalidSpecifier]>, 357 DiagCategory<"Format String Issue">; 358def FormatNonLiteral : DiagGroup<"format-nonliteral", [FormatSecurity]>; 359def Format2 : DiagGroup<"format=2", 360 [FormatNonLiteral, FormatSecurity, FormatY2K]>; 361 362def TypeSafety : DiagGroup<"type-safety">; 363 364def IntToPointerCast : DiagGroup<"int-to-pointer-cast">; 365 366def Extra : DiagGroup<"extra", [ 367 MissingFieldInitializers, 368 IgnoredQualifiers, 369 InitializerOverrides, 370 SemiBeforeMethodBody, 371 MissingMethodReturnType, 372 SignCompare, 373 UnusedParameter 374 ]>; 375 376def Most : DiagGroup<"most", [ 377 CharSubscript, 378 Comment, 379 DeleteNonVirtualDtor, 380 Format, 381 Implicit, 382 IntToPointerCast, 383 MismatchedTags, 384 MissingBraces, 385 MultiChar, 386 Reorder, 387 ReturnType, 388 SelfAssignment, 389 SizeofArrayArgument, 390 StringPlusInt, 391 Trigraphs, 392 Uninitialized, 393 UnknownPragmas, 394 Unused, 395 VolatileRegisterVar, 396 ObjCMissingSuperCalls, 397 OverloadedVirtual, 398 PrivateExtern, 399 SelTypeCast 400 ]>; 401 402// Thread Safety warnings 403def ThreadSafetyAttributes : DiagGroup<"thread-safety-attributes">; 404def ThreadSafetyAnalysis : DiagGroup<"thread-safety-analysis">; 405def ThreadSafetyPrecise : DiagGroup<"thread-safety-precise">; 406def ThreadSafety : DiagGroup<"thread-safety", 407 [ThreadSafetyAttributes, 408 ThreadSafetyAnalysis, 409 ThreadSafetyPrecise]>; 410 411// Note that putting warnings in -Wall will not disable them by default. If a 412// warning should be active _only_ when -Wall is passed in, mark it as 413// DefaultIgnore in addition to putting it here. 414def : DiagGroup<"all", [Most, Parentheses, Switch]>; 415 416// Warnings enabled by -pedantic. This is magically filled in by TableGen. 417def Pedantic : DiagGroup<"pedantic">; 418 419// Aliases. 420def : DiagGroup<"", [Extra]>; // -W = -Wextra 421def : DiagGroup<"endif-labels", [ExtraTokens]>; // -Wendif-labels=-Wendif-tokens 422def : DiagGroup<"comments", [Comment]>; // -Wcomments = -Wcomment 423def : DiagGroup<"conversion-null", 424 [NullConversion]>; // -Wconversion-null = -Wnull-conversion 425def : DiagGroup<"bool-conversions", 426 [BoolConversion]>; // -Wbool-conversions = -Wbool-conversion 427def : DiagGroup<"int-conversions", 428 [IntConversion]>; // -Wint-conversions = -Wint-conversion 429def : DiagGroup<"vector-conversions", 430 [VectorConversion]>; // -Wvector-conversions = -Wvector-conversion 431 432// A warning group for warnings that we want to have on by default in clang, 433// but which aren't on by default in GCC. 434def NonGCC : DiagGroup<"non-gcc", 435 [SignCompare, Conversion, LiteralRange]>; 436 437// A warning group for warnings about using C++11 features as extensions in 438// earlier C++ versions. 439def CXX11 : DiagGroup<"c++11-extensions", [CXX11ExtraSemi, CXX11LongLong]>; 440 441def : DiagGroup<"c++0x-extensions", [CXX11]>; 442def DelegatingCtorCycles : 443 DiagGroup<"delegating-ctor-cycles">; 444 445// A warning group for warnings about using C11 features as extensions. 446def C11 : DiagGroup<"c11-extensions">; 447 448// A warning group for warnings about using C99 features as extensions. 449def C99 : DiagGroup<"c99-extensions">; 450 451// A warning group for warnings about GCC extensions. 452def GNU : DiagGroup<"gnu", [GNUDesignator, VLA, ZeroLengthArray]>; 453// A warning group for warnings about code that clang accepts but gcc doesn't. 454def GccCompat : DiagGroup<"gcc-compat">; 455 456// A warning group for warnings about Microsoft extensions. 457def Microsoft : DiagGroup<"microsoft">; 458 459def ObjCNonUnifiedException : DiagGroup<"objc-nonunified-exceptions">; 460 461def ObjCProtocolMethodImpl : DiagGroup<"objc-protocol-method-implementation">; 462 463// ObjC API warning groups. 464def ObjCRedundantLiteralUse : DiagGroup<"objc-redundant-literal-use">; 465def ObjCRedundantAPIUse : DiagGroup<"objc-redundant-api-use", [ 466 ObjCRedundantLiteralUse 467 ]>; 468 469def ObjCCocoaAPI : DiagGroup<"objc-cocoa-api", [ 470 ObjCRedundantAPIUse 471 ]>; 472 473def ObjCStringComparison : DiagGroup<"objc-string-compare">; 474def ObjCLiteralComparison : DiagGroup<"objc-literal-compare", [ 475 ObjCStringComparison 476 ]>; 477 478// Inline ASM warnings. 479def ASMOperandWidths : DiagGroup<"asm-operand-widths">; 480def ASM : DiagGroup<"asm", [ 481 ASMOperandWidths 482 ]>; 483