DiagnosticGroups.td revision 263508
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 GNUAlignofExpression : DiagGroup<"gnu-alignof-expression">; 25def AmbigMemberTemplate : DiagGroup<"ambiguous-member-template">; 26def GNUAnonymousStruct : DiagGroup<"gnu-anonymous-struct">; 27def ArrayBounds : DiagGroup<"array-bounds">; 28def ArrayBoundsPointerArithmetic : DiagGroup<"array-bounds-pointer-arithmetic">; 29def Availability : DiagGroup<"availability">; 30def Section : DiagGroup<"section">; 31def AutoImport : DiagGroup<"auto-import">; 32def GNUBinaryLiteral : DiagGroup<"gnu-binary-literal">; 33def GNUCompoundLiteralInitializer : DiagGroup<"gnu-compound-literal-initializer">; 34def BitFieldConstantConversion : DiagGroup<"bitfield-constant-conversion">; 35def ConstantConversion : 36 DiagGroup<"constant-conversion", [ BitFieldConstantConversion ] >; 37def LiteralConversion : DiagGroup<"literal-conversion">; 38def StringConversion : DiagGroup<"string-conversion">; 39def SignConversion : DiagGroup<"sign-conversion">; 40def BoolConversion : DiagGroup<"bool-conversion">; 41def IntConversion : DiagGroup<"int-conversion">; 42def EnumConversion : DiagGroup<"enum-conversion">; 43def NonLiteralNullConversion : DiagGroup<"non-literal-null-conversion">; 44def NullConversion : DiagGroup<"null-conversion">; 45def ImplicitConversionFloatingPointToBool : 46 DiagGroup<"implicit-conversion-floating-point-to-bool">; 47def BadArrayNewLength : DiagGroup<"bad-array-new-length">; 48def BuiltinMacroRedefined : DiagGroup<"builtin-macro-redefined">; 49def BuiltinRequiresHeader : DiagGroup<"builtin-requires-header">; 50def C99Compat : DiagGroup<"c99-compat">; 51def CXXCompat: DiagGroup<"c++-compat">; 52def ExternCCompat : DiagGroup<"extern-c-compat">; 53def KeywordCompat : DiagGroup<"keyword-compat">; 54def GNUCaseRange : DiagGroup<"gnu-case-range">; 55def CastAlign : DiagGroup<"cast-align">; 56def : DiagGroup<"cast-qual">; 57def : DiagGroup<"char-align">; 58def Comment : DiagGroup<"comment">; 59def GNUComplexInteger : DiagGroup<"gnu-complex-integer">; 60def GNUConditionalOmittedOperand : DiagGroup<"gnu-conditional-omitted-operand">; 61def ConfigMacros : DiagGroup<"config-macros">; 62def : DiagGroup<"ctor-dtor-privacy">; 63def GNUDesignator : DiagGroup<"gnu-designator">; 64def GNUStringLiteralOperatorTemplate : 65 DiagGroup<"gnu-string-literal-operator-template">; 66 67def DeleteNonVirtualDtor : DiagGroup<"delete-non-virtual-dtor">; 68def AbstractFinalClass : DiagGroup<"abstract-final-class">; 69 70def CXX11CompatDeprecatedWritableStr : 71 DiagGroup<"c++11-compat-deprecated-writable-strings">; 72 73def DeprecatedDeclarations : DiagGroup<"deprecated-declarations">; 74def DeprecatedImplementations :DiagGroup<"deprecated-implementations">; 75def DeprecatedIncrementBool : DiagGroup<"deprecated-increment-bool">; 76def DeprecatedRegister : DiagGroup<"deprecated-register">; 77def DeprecatedWritableStr : DiagGroup<"deprecated-writable-strings", 78 [CXX11CompatDeprecatedWritableStr]>; 79// FIXME: Why are DeprecatedImplementations and DeprecatedWritableStr 80// not in this group? 81def Deprecated : DiagGroup<"deprecated", [DeprecatedDeclarations, 82 DeprecatedIncrementBool, 83 DeprecatedRegister]>, 84 DiagCategory<"Deprecations">; 85 86def : DiagGroup<"disabled-optimization">; 87def : DiagGroup<"discard-qual">; 88def : DiagGroup<"div-by-zero">; 89 90def DocumentationHTML : DiagGroup<"documentation-html">; 91def DocumentationUnknownCommand : DiagGroup<"documentation-unknown-command">; 92def DocumentationPedantic : DiagGroup<"documentation-pedantic", 93 [DocumentationUnknownCommand]>; 94def DocumentationDeprecatedSync : DiagGroup<"documentation-deprecated-sync">; 95def Documentation : DiagGroup<"documentation", 96 [DocumentationHTML, 97 DocumentationDeprecatedSync]>; 98 99def EmptyBody : DiagGroup<"empty-body">; 100def GNUEmptyInitializer : DiagGroup<"gnu-empty-initializer">; 101def GNUEmptyStruct : DiagGroup<"gnu-empty-struct">; 102def ExtraTokens : DiagGroup<"extra-tokens">; 103def CXX11ExtraSemi : DiagGroup<"c++11-extra-semi">; 104def ExtraSemi : DiagGroup<"extra-semi", [CXX11ExtraSemi]>; 105 106def GNUFlexibleArrayInitializer : DiagGroup<"gnu-flexible-array-initializer">; 107def GNUFlexibleArrayUnionMember : DiagGroup<"gnu-flexible-array-union-member">; 108def GNUFoldingConstant : DiagGroup<"gnu-folding-constant">; 109def FormatExtraArgs : DiagGroup<"format-extra-args">; 110def FormatZeroLength : DiagGroup<"format-zero-length">; 111 112// Warnings for C++1y code which is not compatible with prior C++ standards. 113def CXXPre1yCompat : DiagGroup<"c++98-c++11-compat">; 114def CXXPre1yCompatPedantic : DiagGroup<"c++98-c++11-compat-pedantic", 115 [CXXPre1yCompat]>; 116 117def CXX98CompatBindToTemporaryCopy : 118 DiagGroup<"c++98-compat-bind-to-temporary-copy">; 119def CXX98CompatLocalTypeTemplateArgs : 120 DiagGroup<"c++98-compat-local-type-template-args">; 121def CXX98CompatUnnamedTypeTemplateArgs : 122 DiagGroup<"c++98-compat-unnamed-type-template-args">; 123 124def CXX98Compat : DiagGroup<"c++98-compat", 125 [CXX98CompatBindToTemporaryCopy, 126 CXX98CompatLocalTypeTemplateArgs, 127 CXX98CompatUnnamedTypeTemplateArgs, 128 CXXPre1yCompat]>; 129// Warnings for C++11 features which are Extensions in C++98 mode. 130def CXX98CompatPedantic : DiagGroup<"c++98-compat-pedantic", 131 [CXX98Compat, 132 CXXPre1yCompatPedantic]>; 133 134def CXX11Narrowing : DiagGroup<"c++11-narrowing">; 135 136// Original name of this warning in Clang 137def : DiagGroup<"c++0x-narrowing", [CXX11Narrowing]>; 138 139// Name of this warning in GCC 140def : DiagGroup<"narrowing", [CXX11Narrowing]>; 141 142def CXX11CompatReservedUserDefinedLiteral : 143 DiagGroup<"c++11-compat-reserved-user-defined-literal">; 144def ReservedUserDefinedLiteral : 145 DiagGroup<"reserved-user-defined-literal", 146 [CXX11CompatReservedUserDefinedLiteral]>; 147 148def CXX11Compat : DiagGroup<"c++11-compat", 149 [CXX11Narrowing, 150 CXX11CompatReservedUserDefinedLiteral, 151 CXX11CompatDeprecatedWritableStr, 152 CXXPre1yCompat]>; 153def : DiagGroup<"c++0x-compat", [CXX11Compat]>; 154def CXX11CompatPedantic : DiagGroup<"c++11-compat-pedantic", 155 [CXXPre1yCompatPedantic]>; 156 157def : DiagGroup<"effc++">; 158def DivZero : DiagGroup<"division-by-zero">; 159def ExitTimeDestructors : DiagGroup<"exit-time-destructors">; 160def FlexibleArrayExtensions : DiagGroup<"flexible-array-extensions">; 161def FourByteMultiChar : DiagGroup<"four-char-constants">; 162def GlobalConstructors : DiagGroup<"global-constructors">; 163def BitwiseOpParentheses: DiagGroup<"bitwise-op-parentheses">; 164def LogicalOpParentheses: DiagGroup<"logical-op-parentheses">; 165def LogicalNotParentheses: DiagGroup<"logical-not-parentheses">; 166def ShiftOpParentheses: DiagGroup<"shift-op-parentheses">; 167def OverloadedShiftOpParentheses: DiagGroup<"overloaded-shift-op-parentheses">; 168def DanglingElse: DiagGroup<"dangling-else">; 169def DanglingField : DiagGroup<"dangling-field">; 170def DistributedObjectModifiers : DiagGroup<"distributed-object-modifiers">; 171def GNUImaginaryConstant : DiagGroup<"gnu-imaginary-constant">; 172def IgnoredQualifiers : DiagGroup<"ignored-qualifiers">; 173def : DiagGroup<"import">; 174def IncompatiblePointerTypesDiscardsQualifiers 175 : DiagGroup<"incompatible-pointer-types-discards-qualifiers">; 176def IncompatiblePointerTypes 177 : DiagGroup<"incompatible-pointer-types", 178 [IncompatiblePointerTypesDiscardsQualifiers]>; 179def IncompleteUmbrella : DiagGroup<"incomplete-umbrella">; 180def IncompleteModule : DiagGroup<"incomplete-module", [IncompleteUmbrella]>; 181def InvalidNoreturn : DiagGroup<"invalid-noreturn">; 182def InvalidSourceEncoding : DiagGroup<"invalid-source-encoding">; 183def KNRPromotedParameter : DiagGroup<"knr-promoted-parameter">; 184def : DiagGroup<"init-self">; 185def : DiagGroup<"inline">; 186def : DiagGroup<"invalid-pch">; 187def GNULabelsAsValue : DiagGroup<"gnu-label-as-value">; 188def LiteralRange : DiagGroup<"literal-range">; 189def LocalTypeTemplateArgs : DiagGroup<"local-type-template-args", 190 [CXX98CompatLocalTypeTemplateArgs]>; 191def LoopAnalysis : DiagGroup<"loop-analysis">; 192def MalformedWarningCheck : DiagGroup<"malformed-warning-check">; 193def Main : DiagGroup<"main">; 194def MainReturnType : DiagGroup<"main-return-type">; 195def MissingBraces : DiagGroup<"missing-braces">; 196def MissingDeclarations: DiagGroup<"missing-declarations">; 197def : DiagGroup<"missing-format-attribute">; 198def : DiagGroup<"missing-include-dirs">; 199def MissingNoreturn : DiagGroup<"missing-noreturn">; 200def MultiChar : DiagGroup<"multichar">; 201def : DiagGroup<"nested-externs">; 202def CXX11LongLong : DiagGroup<"c++11-long-long">; 203def LongLong : DiagGroup<"long-long", [CXX11LongLong]>; 204def MethodSignatures : DiagGroup<"method-signatures">; 205def MismatchedParameterTypes : DiagGroup<"mismatched-parameter-types">; 206def MismatchedReturnTypes : DiagGroup<"mismatched-return-types">; 207def MismatchedTags : DiagGroup<"mismatched-tags">; 208def MissingFieldInitializers : DiagGroup<"missing-field-initializers">; 209def ModuleConflict : DiagGroup<"module-conflict">; 210def NewlineEOF : DiagGroup<"newline-eof">; 211def NullArithmetic : DiagGroup<"null-arithmetic">; 212def NullCharacter : DiagGroup<"null-character">; 213def NullDereference : DiagGroup<"null-dereference">; 214def InitializerOverrides : DiagGroup<"initializer-overrides">; 215def NonNull : DiagGroup<"nonnull">; 216def NonPODVarargs : DiagGroup<"non-pod-varargs">; 217def : DiagGroup<"nonportable-cfstrings">; 218def NonVirtualDtor : DiagGroup<"non-virtual-dtor">; 219def OveralignedType : DiagGroup<"over-aligned">; 220def : DiagGroup<"old-style-cast">; 221def : DiagGroup<"old-style-definition">; 222def OutOfLineDeclaration : DiagGroup<"out-of-line-declaration">; 223def : DiagGroup<"overflow">; 224def ForwardClassReceiver : DiagGroup<"receiver-forward-class">; 225def MethodAccess : DiagGroup<"objc-method-access">; 226def ObjCReceiver : DiagGroup<"receiver-expr">; 227def OverlengthStrings : DiagGroup<"overlength-strings">; 228def OverloadedVirtual : DiagGroup<"overloaded-virtual">; 229def PrivateExtern : DiagGroup<"private-extern">; 230def SelTypeCast : DiagGroup<"cast-of-sel-type">; 231def BadFunctionCast : DiagGroup<"bad-function-cast">; 232def ObjCPropertyImpl : DiagGroup<"objc-property-implementation">; 233def ObjCPropertyNoAttribute : DiagGroup<"objc-property-no-attribute">; 234def ObjCMissingSuperCalls : DiagGroup<"objc-missing-super-calls">; 235def ObjCRetainBlockProperty : DiagGroup<"objc-noncopy-retain-block-property">; 236def ObjCReadonlyPropertyHasSetter : DiagGroup<"objc-readonly-with-setter-property">; 237def ObjCInvalidIBOutletProperty : DiagGroup<"invalid-iboutlet">; 238def ObjCRootClass : DiagGroup<"objc-root-class">; 239def ObjCPointerIntrospectPerformSelector : DiagGroup<"deprecated-objc-pointer-introspection-performSelector">; 240def ObjCPointerIntrospect : DiagGroup<"deprecated-objc-pointer-introspection", [ObjCPointerIntrospectPerformSelector]>; 241def DeprecatedObjCIsaUsage : DiagGroup<"deprecated-objc-isa-usage">; 242def Packed : DiagGroup<"packed">; 243def Padded : DiagGroup<"padded">; 244def PointerArith : DiagGroup<"pointer-arith">; 245def PoundWarning : DiagGroup<"#warnings">, 246 DiagCategory<"#warning Directive">; 247def PoundPragmaMessage : DiagGroup<"#pragma-messages">, 248 DiagCategory<"#pragma message Directive">; 249def : DiagGroup<"pointer-to-int-cast">; 250def : DiagGroup<"redundant-decls">; 251def RedeclaredClassMember : DiagGroup<"redeclared-class-member">; 252def GNURedeclaredEnum : DiagGroup<"gnu-redeclared-enum">; 253def ReturnStackAddress : DiagGroup<"return-stack-address">; 254def ReturnTypeCLinkage : DiagGroup<"return-type-c-linkage">; 255def ReturnType : DiagGroup<"return-type", [ReturnTypeCLinkage]>; 256def BindToTemporaryCopy : DiagGroup<"bind-to-temporary-copy", 257 [CXX98CompatBindToTemporaryCopy]>; 258def SelfAssignmentField : DiagGroup<"self-assign-field">; 259def SelfAssignment : DiagGroup<"self-assign", [SelfAssignmentField]>; 260def SemiBeforeMethodBody : DiagGroup<"semicolon-before-method-body">; 261def Sentinel : DiagGroup<"sentinel">; 262def MissingMethodReturnType : DiagGroup<"missing-method-return-type">; 263def Shadow : DiagGroup<"shadow">; 264def Shorten64To32 : DiagGroup<"shorten-64-to-32">; 265def : DiagGroup<"sign-promo">; 266def SignCompare : DiagGroup<"sign-compare">; 267def : DiagGroup<"stack-protector">; 268def : DiagGroup<"switch-default">; 269def : DiagGroup<"synth">; 270def SizeofArrayArgument : DiagGroup<"sizeof-array-argument">; 271def SizeofArrayDecay : DiagGroup<"sizeof-array-decay">; 272def SizeofPointerMemaccess : DiagGroup<"sizeof-pointer-memaccess">; 273def StaticInInline : DiagGroup<"static-in-inline">; 274def StaticLocalInInline : DiagGroup<"static-local-in-inline">; 275def GNUStaticFloatInit : DiagGroup<"gnu-static-float-init">; 276def StaticFloatInit : DiagGroup<"static-float-init", [GNUStaticFloatInit]>; 277def GNUStatementExpression : DiagGroup<"gnu-statement-expression">; 278def StringPlusInt : DiagGroup<"string-plus-int">; 279def StringPlusChar : DiagGroup<"string-plus-char">; 280def StrncatSize : DiagGroup<"strncat-size">; 281def TautologicalOutOfRangeCompare : DiagGroup<"tautological-constant-out-of-range-compare">; 282def TautologicalCompare : DiagGroup<"tautological-compare", 283 [TautologicalOutOfRangeCompare]>; 284def HeaderHygiene : DiagGroup<"header-hygiene">; 285def DuplicateDeclSpecifier : DiagGroup<"duplicate-decl-specifier">; 286def CompareDistinctPointerType : DiagGroup<"compare-distinct-pointer-types">; 287def GNUUnionCast : DiagGroup<"gnu-union-cast">; 288def GNUVariableSizedTypeNotAtEnd : DiagGroup<"gnu-variable-sized-type-not-at-end">; 289def Varargs : DiagGroup<"varargs">; 290 291def Unsequenced : DiagGroup<"unsequenced">; 292// GCC name for -Wunsequenced 293def : DiagGroup<"sequence-point", [Unsequenced]>; 294 295// Preprocessor warnings. 296def AmbiguousMacro : DiagGroup<"ambiguous-macro">; 297 298// Just silence warnings about -Wstrict-aliasing for now. 299def : DiagGroup<"strict-aliasing=0">; 300def : DiagGroup<"strict-aliasing=1">; 301def : DiagGroup<"strict-aliasing=2">; 302def : DiagGroup<"strict-aliasing">; 303 304// Just silence warnings about -Wstrict-overflow for now. 305def : DiagGroup<"strict-overflow=0">; 306def : DiagGroup<"strict-overflow=1">; 307def : DiagGroup<"strict-overflow=2">; 308def : DiagGroup<"strict-overflow=3">; 309def : DiagGroup<"strict-overflow=4">; 310def : DiagGroup<"strict-overflow=5">; 311def : DiagGroup<"strict-overflow">; 312 313def InvalidOffsetof : DiagGroup<"invalid-offsetof">; 314def : DiagGroup<"strict-prototypes">; 315def StrictSelector : DiagGroup<"strict-selector-match">; 316def MethodDuplicate : DiagGroup<"duplicate-method-match">; 317def CoveredSwitchDefault : DiagGroup<"covered-switch-default">; 318def SwitchEnum : DiagGroup<"switch-enum">; 319def Switch : DiagGroup<"switch">; 320def ImplicitFallthroughPerFunction : 321 DiagGroup<"implicit-fallthrough-per-function">; 322def ImplicitFallthrough : DiagGroup<"implicit-fallthrough", 323 [ImplicitFallthroughPerFunction]>; 324def InvalidPPToken : DiagGroup<"invalid-pp-token">; 325def Trigraphs : DiagGroup<"trigraphs">; 326 327def : DiagGroup<"type-limits">; 328def UndefinedReinterpretCast : DiagGroup<"undefined-reinterpret-cast">; 329def ReinterpretBaseClass : DiagGroup<"reinterpret-base-class">; 330def Unicode : DiagGroup<"unicode">; 331def UninitializedMaybe : DiagGroup<"conditional-uninitialized">; 332def UninitializedSometimes : DiagGroup<"sometimes-uninitialized">; 333def UninitializedStaticSelfInit : DiagGroup<"static-self-init">; 334def Uninitialized : DiagGroup<"uninitialized", [UninitializedSometimes, 335 UninitializedStaticSelfInit]>; 336def UnknownPragmas : DiagGroup<"unknown-pragmas">; 337def UnknownWarningOption : DiagGroup<"unknown-warning-option">; 338def NSobjectAttribute : DiagGroup<"NSObject-attribute">; 339def UnknownAttributes : DiagGroup<"attributes">; 340def IgnoredAttributes : DiagGroup<"ignored-attributes">; 341def UnnamedTypeTemplateArgs : DiagGroup<"unnamed-type-template-args", 342 [CXX98CompatUnnamedTypeTemplateArgs]>; 343def UnsupportedFriend : DiagGroup<"unsupported-friend">; 344def UnusedArgument : DiagGroup<"unused-argument">; 345def UnusedSanitizeArgument : DiagGroup<"unused-sanitize-argument">; 346def UnusedCommandLineArgument : DiagGroup<"unused-command-line-argument", 347 [UnusedSanitizeArgument]>; 348def InvalidCommandLineArgument : DiagGroup<"invalid-command-line-argument">; 349def UnusedComparison : DiagGroup<"unused-comparison">; 350def UnusedExceptionParameter : DiagGroup<"unused-exception-parameter">; 351def UnneededInternalDecl : DiagGroup<"unneeded-internal-declaration">; 352def UnneededMemberFunction : DiagGroup<"unneeded-member-function">; 353def UnusedPrivateField : DiagGroup<"unused-private-field">; 354def UnusedFunction : DiagGroup<"unused-function", [UnneededInternalDecl]>; 355def UnusedMemberFunction : DiagGroup<"unused-member-function", 356 [UnneededMemberFunction]>; 357def UnusedLabel : DiagGroup<"unused-label">; 358def UnusedParameter : DiagGroup<"unused-parameter">; 359def UnusedResult : DiagGroup<"unused-result">; 360def UnusedValue : DiagGroup<"unused-value", [UnusedComparison, UnusedResult]>; 361def UnusedConstVariable : DiagGroup<"unused-const-variable">; 362def UnusedVariable : DiagGroup<"unused-variable", 363 [UnusedConstVariable]>; 364def UnusedPropertyIvar : DiagGroup<"unused-property-ivar">; 365def UsedButMarkedUnused : DiagGroup<"used-but-marked-unused">; 366def UserDefinedLiterals : DiagGroup<"user-defined-literals">; 367def ReadOnlySetterAttrs : DiagGroup<"readonly-setter-attrs">; 368def Reorder : DiagGroup<"reorder">; 369def UndeclaredSelector : DiagGroup<"undeclared-selector">; 370def ImplicitAtomic : DiagGroup<"implicit-atomic-properties">; 371def CustomAtomic : DiagGroup<"custom-atomic-properties">; 372def AtomicProperties : DiagGroup<"atomic-properties", 373 [ImplicitAtomic, CustomAtomic]>; 374// FIXME: Remove arc-abi once an Xcode is released that doesn't pass this flag. 375def : DiagGroup<"arc-abi">; 376def ARCUnsafeRetainedAssign : DiagGroup<"arc-unsafe-retained-assign">; 377def ARCRetainCycles : DiagGroup<"arc-retain-cycles">; 378def ARCNonPodMemAccess : DiagGroup<"arc-non-pod-memaccess">; 379def AutomaticReferenceCounting : DiagGroup<"arc", 380 [ARCUnsafeRetainedAssign, 381 ARCRetainCycles, 382 ARCNonPodMemAccess]>; 383def ARCRepeatedUseOfWeakMaybe : DiagGroup<"arc-maybe-repeated-use-of-weak">; 384def ARCRepeatedUseOfWeak : DiagGroup<"arc-repeated-use-of-weak", 385 [ARCRepeatedUseOfWeakMaybe]>; 386def ObjCBridge : DiagGroup<"bridge-cast">; 387 388def SelectorTypeMismatch : DiagGroup<"selector-type-mismatch">; 389def Selector : DiagGroup<"selector", [SelectorTypeMismatch]>; 390def Protocol : DiagGroup<"protocol">; 391def SuperSubClassMismatch : DiagGroup<"super-class-method-mismatch">; 392def OverridingMethodMismatch : DiagGroup<"overriding-method-mismatch">; 393def VariadicMacros : DiagGroup<"variadic-macros">; 394def VectorConversion : DiagGroup<"vector-conversion">; // clang specific 395def VexingParse : DiagGroup<"vexing-parse">; 396def VLA : DiagGroup<"vla">; 397def VLAExtension : DiagGroup<"vla-extension">; 398def VolatileRegisterVar : DiagGroup<"volatile-register-var">; 399def Visibility : DiagGroup<"visibility">; 400def ZeroLengthArray : DiagGroup<"zero-length-array">; 401def GNUZeroLineDirective : DiagGroup<"gnu-zero-line-directive">; 402def GNUZeroVariadicMacroArguments : DiagGroup<"gnu-zero-variadic-macro-arguments">; 403 404// GCC calls -Wdeprecated-writable-strings -Wwrite-strings. 405def GCCWriteStrings : DiagGroup<"write-strings" , [DeprecatedWritableStr]>; 406 407def CharSubscript : DiagGroup<"char-subscripts">; 408def LargeByValueCopy : DiagGroup<"large-by-value-copy">; 409def DuplicateArgDecl : DiagGroup<"duplicate-method-arg">; 410 411// Aggregation warning settings. 412 413// -Widiomatic-parentheses contains warnings about 'idiomatic' 414// missing parentheses; it is off by default. We do not include it 415// in -Wparentheses because most users who use -Wparentheses explicitly 416// do not want these warnings. 417def ParenthesesOnEquality : DiagGroup<"parentheses-equality">; 418def Parentheses : DiagGroup<"parentheses", 419 [LogicalOpParentheses, 420 LogicalNotParentheses, 421 BitwiseOpParentheses, 422 ShiftOpParentheses, 423 OverloadedShiftOpParentheses, 424 ParenthesesOnEquality, 425 DanglingElse]>; 426 427// -Wconversion has its own warnings, but we split a few out for 428// legacy reasons: 429// - some people want just 64-to-32 warnings 430// - conversion warnings with constant sources are on by default 431// - conversion warnings for literals are on by default 432// - bool-to-pointer conversion warnings are on by default 433// - __null-to-integer conversion warnings are on by default 434def Conversion : DiagGroup<"conversion", 435 [BoolConversion, 436 ConstantConversion, 437 EnumConversion, 438 Shorten64To32, 439 IntConversion, 440 LiteralConversion, 441 NonLiteralNullConversion, // (1-1)->pointer (etc) 442 NullConversion, // NULL->non-pointer 443 SignConversion, 444 StringConversion]>, 445 DiagCategory<"Value Conversion Issue">; 446 447def Unused : DiagGroup<"unused", 448 [UnusedArgument, UnusedFunction, UnusedLabel, 449 // UnusedParameter, (matches GCC's behavior) 450 // UnusedMemberFunction, (clean-up llvm before enabling) 451 UnusedPrivateField, 452 UnusedValue, UnusedVariable, UnusedPropertyIvar]>, 453 DiagCategory<"Unused Entity Issue">; 454 455// Format settings. 456def FormatInvalidSpecifier : DiagGroup<"format-invalid-specifier">; 457def FormatSecurity : DiagGroup<"format-security">; 458def FormatNonStandard : DiagGroup<"format-non-iso">; 459def FormatY2K : DiagGroup<"format-y2k">; 460def Format : DiagGroup<"format", 461 [FormatExtraArgs, FormatZeroLength, NonNull, 462 FormatSecurity, FormatY2K, FormatInvalidSpecifier]>, 463 DiagCategory<"Format String Issue">; 464def FormatNonLiteral : DiagGroup<"format-nonliteral", [FormatSecurity]>; 465def Format2 : DiagGroup<"format=2", 466 [FormatNonLiteral, FormatSecurity, FormatY2K]>; 467 468def TypeSafety : DiagGroup<"type-safety">; 469 470def IntToVoidPointerCast : DiagGroup<"int-to-void-pointer-cast">; 471def IntToPointerCast : DiagGroup<"int-to-pointer-cast", 472 [IntToVoidPointerCast]>; 473 474def Extra : DiagGroup<"extra", [ 475 MissingFieldInitializers, 476 IgnoredQualifiers, 477 InitializerOverrides, 478 SemiBeforeMethodBody, 479 MissingMethodReturnType, 480 SignCompare, 481 UnusedParameter 482 ]>; 483 484def Most : DiagGroup<"most", [ 485 CharSubscript, 486 Comment, 487 DeleteNonVirtualDtor, 488 Format, 489 Implicit, 490 MismatchedTags, 491 MissingBraces, 492 MultiChar, 493 Reorder, 494 ReturnType, 495 SelfAssignment, 496 SizeofArrayArgument, 497 SizeofArrayDecay, 498 StringPlusInt, 499 Trigraphs, 500 Uninitialized, 501 UnknownPragmas, 502 Unused, 503 VolatileRegisterVar, 504 ObjCMissingSuperCalls, 505 OverloadedVirtual, 506 PrivateExtern, 507 SelTypeCast, 508 ExternCCompat 509 ]>; 510 511// Thread Safety warnings 512def ThreadSafetyAttributes : DiagGroup<"thread-safety-attributes">; 513def ThreadSafetyAnalysis : DiagGroup<"thread-safety-analysis">; 514def ThreadSafetyPrecise : DiagGroup<"thread-safety-precise">; 515def ThreadSafety : DiagGroup<"thread-safety", 516 [ThreadSafetyAttributes, 517 ThreadSafetyAnalysis, 518 ThreadSafetyPrecise]>; 519def ThreadSafetyBeta : DiagGroup<"thread-safety-beta">; 520 521// Uniqueness Analysis warnings 522def Consumed : DiagGroup<"consumed">; 523 524// Note that putting warnings in -Wall will not disable them by default. If a 525// warning should be active _only_ when -Wall is passed in, mark it as 526// DefaultIgnore in addition to putting it here. 527def : DiagGroup<"all", [Most, Parentheses, Switch]>; 528 529// Warnings enabled by -pedantic. This is magically filled in by TableGen. 530def Pedantic : DiagGroup<"pedantic">; 531 532// Aliases. 533def : DiagGroup<"", [Extra]>; // -W = -Wextra 534def : DiagGroup<"endif-labels", [ExtraTokens]>; // -Wendif-labels=-Wextra-tokens 535def : DiagGroup<"comments", [Comment]>; // -Wcomments = -Wcomment 536def : DiagGroup<"conversion-null", 537 [NullConversion]>; // -Wconversion-null = -Wnull-conversion 538def : DiagGroup<"bool-conversions", 539 [BoolConversion]>; // -Wbool-conversions = -Wbool-conversion 540def : DiagGroup<"int-conversions", 541 [IntConversion]>; // -Wint-conversions = -Wint-conversion 542def : DiagGroup<"vector-conversions", 543 [VectorConversion]>; // -Wvector-conversions = -Wvector-conversion 544 545// A warning group for warnings that we want to have on by default in clang, 546// but which aren't on by default in GCC. 547def NonGCC : DiagGroup<"non-gcc", 548 [SignCompare, Conversion, LiteralRange]>; 549 550// A warning group for warnings about using C++11 features as extensions in 551// earlier C++ versions. 552def CXX11 : DiagGroup<"c++11-extensions", [CXX11ExtraSemi, CXX11LongLong]>; 553 554// A warning group for warnings about using C++1y features as extensions in 555// earlier C++ versions. 556def CXX1y : DiagGroup<"c++1y-extensions">; 557 558def : DiagGroup<"c++0x-extensions", [CXX11]>; 559def DelegatingCtorCycles : 560 DiagGroup<"delegating-ctor-cycles">; 561 562// A warning group for warnings about using C11 features as extensions. 563def C11 : DiagGroup<"c11-extensions">; 564 565// A warning group for warnings about using C99 features as extensions. 566def C99 : DiagGroup<"c99-extensions">; 567 568// A warning group for warnings about GCC extensions. 569def GNU : DiagGroup<"gnu", [GNUAlignofExpression, GNUAnonymousStruct, 570 GNUBinaryLiteral, GNUCaseRange, 571 GNUComplexInteger, GNUCompoundLiteralInitializer, 572 GNUConditionalOmittedOperand, GNUDesignator, 573 GNUEmptyInitializer, GNUEmptyStruct, 574 VLAExtension, GNUFlexibleArrayInitializer, 575 GNUFlexibleArrayUnionMember, GNUFoldingConstant, 576 GNUImaginaryConstant, GNULabelsAsValue, 577 RedeclaredClassMember, GNURedeclaredEnum, 578 GNUStatementExpression, GNUStaticFloatInit, 579 GNUStringLiteralOperatorTemplate, 580 GNUUnionCast, GNUVariableSizedTypeNotAtEnd, 581 ZeroLengthArray, GNUZeroLineDirective, 582 GNUZeroVariadicMacroArguments]>; 583// A warning group for warnings about code that clang accepts but gcc doesn't. 584def GccCompat : DiagGroup<"gcc-compat">; 585 586// A warning group for warnings about Microsoft extensions. 587def Microsoft : DiagGroup<"microsoft">; 588 589def ObjCNonUnifiedException : DiagGroup<"objc-nonunified-exceptions">; 590 591def ObjCProtocolMethodImpl : DiagGroup<"objc-protocol-method-implementation">; 592 593def ObjCNoPropertyAutoSynthesis : DiagGroup<"objc-property-synthesis">; 594 595// ObjC API warning groups. 596def ObjCRedundantLiteralUse : DiagGroup<"objc-redundant-literal-use">; 597def ObjCRedundantAPIUse : DiagGroup<"objc-redundant-api-use", [ 598 ObjCRedundantLiteralUse 599 ]>; 600 601def ObjCCocoaAPI : DiagGroup<"objc-cocoa-api", [ 602 ObjCRedundantAPIUse 603 ]>; 604 605def ObjCStringComparison : DiagGroup<"objc-string-compare">; 606def ObjCStringConcatenation : DiagGroup<"objc-string-concatenation">; 607def ObjCLiteralComparison : DiagGroup<"objc-literal-compare", [ 608 ObjCStringComparison 609 ]>; 610 611def ObjCLiteralMissingAtSign : DiagGroup<"objc-literal-missing-atsign">; 612 613// Inline ASM warnings. 614def ASMOperandWidths : DiagGroup<"asm-operand-widths">; 615def ASM : DiagGroup<"asm", [ 616 ASMOperandWidths 617 ]>; 618 619// OpenMP warnings. 620def SourceUsesOpenMP : DiagGroup<"source-uses-openmp">; 621