DiagnosticGroups.td revision 227737
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 : DiagGroup<"attributes">; 26def : DiagGroup<"bad-function-cast">; 27def Availability : DiagGroup<"availability">; 28def BoolConversions : DiagGroup<"bool-conversions">; 29def BuiltinRequiresHeader : DiagGroup<"builtin-requires-header">; 30def CXXCompat: DiagGroup<"c++-compat">; 31def CastAlign : DiagGroup<"cast-align">; 32def : DiagGroup<"cast-qual">; 33def : DiagGroup<"char-align">; 34def Comment : DiagGroup<"comment">; 35def : DiagGroup<"ctor-dtor-privacy">; 36def : DiagGroup<"declaration-after-statement">; 37def DefaultArgSpecialMember : DiagGroup<"default-arg-special-member">; 38def GNUDesignator : DiagGroup<"gnu-designator">; 39 40def DeleteNonVirtualDtor : DiagGroup<"delete-non-virtual-dtor">; 41 42def DeprecatedDeclarations : DiagGroup<"deprecated-declarations">; 43def DeprecatedWritableStr : DiagGroup<"deprecated-writable-strings">; 44def Deprecated : DiagGroup<"deprecated", [ DeprecatedDeclarations] >, 45 DiagCategory<"Deprecations">; 46 47def DeprecatedImplementations :DiagGroup<"deprecated-implementations">; 48 49def : DiagGroup<"disabled-optimization">; 50def : DiagGroup<"discard-qual">; 51def : DiagGroup<"div-by-zero">; 52def EmptyBody : DiagGroup<"empty-body">; 53def ExtraTokens : DiagGroup<"extra-tokens">; 54 55def FormatExtraArgs : DiagGroup<"format-extra-args">; 56def FormatZeroLength : DiagGroup<"format-zero-length">; 57 58def CXX98Compat : DiagGroup<"c++98-compat">; 59// Warnings for C++11 features which are Extensions in C++98 mode. 60def CXX98CompatPedantic : DiagGroup<"c++98-compat-pedantic", [CXX98Compat]>; 61 62def CXX11Narrowing : DiagGroup<"c++11-narrowing">; 63def : DiagGroup<"c++0x-narrowing", [CXX11Narrowing]>; 64 65def CXX11Compat : DiagGroup<"c++11-compat", [CXX11Narrowing]>; 66def : DiagGroup<"c++0x-compat", [CXX11Compat]>; 67 68def : DiagGroup<"effc++">; 69def ExitTimeDestructors : DiagGroup<"exit-time-destructors">; 70def FourByteMultiChar : DiagGroup<"four-char-constants">; 71def GlobalConstructors : DiagGroup<"global-constructors">; 72def : DiagGroup<"idiomatic-parentheses">; 73def BitwiseOpParentheses: DiagGroup<"bitwise-op-parentheses">; 74def LogicalOpParentheses: DiagGroup<"logical-op-parentheses">; 75def IgnoredQualifiers : DiagGroup<"ignored-qualifiers">; 76def : DiagGroup<"import">; 77def IncompatiblePointerTypes : DiagGroup<"incompatible-pointer-types">; 78def : DiagGroup<"init-self">; 79def : DiagGroup<"inline">; 80def : DiagGroup<"int-to-pointer-cast">; 81def : DiagGroup<"invalid-pch">; 82def LiteralRange : DiagGroup<"literal-range">; 83def LocalTypeTemplateArgs : DiagGroup<"local-type-template-args">; 84def MalformedWarningCheck : DiagGroup<"malformed-warning-check">; 85def Main : DiagGroup<"main">; 86def MissingBraces : DiagGroup<"missing-braces">; 87def MissingDeclarations: DiagGroup<"missing-declarations">; 88def : DiagGroup<"missing-format-attribute">; 89def : DiagGroup<"missing-include-dirs">; 90def : DiagGroup<"missing-noreturn">; 91def MultiChar : DiagGroup<"multichar">; 92def : DiagGroup<"nested-externs">; 93def : DiagGroup<"newline-eof">; 94def LongLong : DiagGroup<"long-long">; 95def MismatchedTags : DiagGroup<"mismatched-tags">; 96def MissingFieldInitializers : DiagGroup<"missing-field-initializers">; 97def ModuleBuild : DiagGroup<"module-build">; 98def NullDereference : DiagGroup<"null-dereference">; 99def InitializerOverrides : DiagGroup<"initializer-overrides">; 100def NonNull : DiagGroup<"nonnull">; 101def : DiagGroup<"nonportable-cfstrings">; 102def NonVirtualDtor : DiagGroup<"non-virtual-dtor">; 103def : DiagGroup<"old-style-cast">; 104def : DiagGroup<"old-style-definition">; 105def OutOfLineDeclaration : DiagGroup<"out-of-line-declaration">; 106def : DiagGroup<"overflow">; 107def OverlengthStrings : DiagGroup<"overlength-strings">; 108def OverloadedVirtual : DiagGroup<"overloaded-virtual">; 109def ObjCMissingSuperCalls : DiagGroup<"objc-missing-super-calls">; 110def ObjCRetainBlockProperty : DiagGroup<"objc-noncopy-retain-block-property">; 111def ObjCContinuationPropertyType :DiagGroup<"objc-continuation-property-type">; 112def Packed : DiagGroup<"packed">; 113def Padded : DiagGroup<"padded">; 114def PointerArith : DiagGroup<"pointer-arith">; 115def PoundWarning : DiagGroup<"#warnings">, 116 DiagCategory<"#warning Directive">; 117def PoundPragmaMessage : DiagGroup<"#pragma messages">, 118 DiagCategory<"#pragma message Directive">; 119def : DiagGroup<"pointer-to-int-cast">; 120def : DiagGroup<"redundant-decls">; 121def ReturnType : DiagGroup<"return-type">; 122def BindToTemporaryCopy : DiagGroup<"bind-to-temporary-copy">; 123def SelfAssignment : DiagGroup<"self-assign">; 124def SemiBeforeMethodBody : DiagGroup<"semicolon-before-method-body">; 125def Sentinel : DiagGroup<"sentinel">; 126def MissingMethodReturnType : DiagGroup<"missing-method-return-type">; 127def : DiagGroup<"sequence-point">; 128def Shadow : DiagGroup<"shadow">; 129def : DiagGroup<"shorten-64-to-32">; 130def : DiagGroup<"sign-promo">; 131def SignCompare : DiagGroup<"sign-compare">; 132def : DiagGroup<"stack-protector">; 133def : DiagGroup<"switch-default">; 134def : DiagGroup<"synth">; 135def SizeofArrayArgument : DiagGroup<"sizeof-array-argument">; 136def TautologicalCompare : DiagGroup<"tautological-compare">; 137def HeaderHygiene : DiagGroup<"header-hygiene">; 138 139// Preprocessor warnings. 140def : DiagGroup<"builtin-macro-redefined">; 141 142// Just silence warnings about -Wstrict-aliasing for now. 143def : DiagGroup<"strict-aliasing=0">; 144def : DiagGroup<"strict-aliasing=1">; 145def : DiagGroup<"strict-aliasing=2">; 146def : DiagGroup<"strict-aliasing">; 147 148// Just silence warnings about -Wstrict-overflow for now. 149def : DiagGroup<"strict-overflow=0">; 150def : DiagGroup<"strict-overflow=1">; 151def : DiagGroup<"strict-overflow=2">; 152def : DiagGroup<"strict-overflow=3">; 153def : DiagGroup<"strict-overflow=4">; 154def : DiagGroup<"strict-overflow=5">; 155def : DiagGroup<"strict-overflow">; 156 157def InvalidOffsetof : DiagGroup<"invalid-offsetof">; 158def : DiagGroup<"strict-prototypes">; 159def StrictSelector : DiagGroup<"strict-selector-match">; 160def SwitchEnum : DiagGroup<"switch-enum">; 161def Switch : DiagGroup<"switch", [SwitchEnum]>; 162def Trigraphs : DiagGroup<"trigraphs">; 163 164def : DiagGroup<"type-limits">; 165def Uninitialized : DiagGroup<"uninitialized">; 166def UninitializedMaybe : DiagGroup<"conditional-uninitialized">; 167def UnknownPragmas : DiagGroup<"unknown-pragmas">; 168def UnknownAttributes : DiagGroup<"attributes">; 169def UnnamedTypeTemplateArgs : DiagGroup<"unnamed-type-template-args">; 170def UnusedArgument : DiagGroup<"unused-argument">; 171def UnusedComparison : DiagGroup<"unused-comparison">; 172def UnusedExceptionParameter : DiagGroup<"unused-exception-parameter">; 173def UnneededInternalDecl : DiagGroup<"unneeded-internal-declaration">; 174def UnneededMemberFunction : DiagGroup<"unneeded-member-function">; 175def UnusedFunction : DiagGroup<"unused-function", [UnneededInternalDecl]>; 176def UnusedMemberFunction : DiagGroup<"unused-member-function", 177 [UnneededMemberFunction]>; 178def UnusedLabel : DiagGroup<"unused-label">; 179def UnusedParameter : DiagGroup<"unused-parameter">; 180def UnusedResult : DiagGroup<"unused-result">; 181def UnusedValue : DiagGroup<"unused-value", [UnusedComparison, UnusedResult]>; 182def UnusedVariable : DiagGroup<"unused-variable">; 183def UsedButMarkedUnused : DiagGroup<"used-but-marked-unused">; 184def UserDefinedLiterals : DiagGroup<"user-defined-literals">; 185def ReadOnlySetterAttrs : DiagGroup<"readonly-setter-attrs">; 186def Reorder : DiagGroup<"reorder">; 187def UndeclaredSelector : DiagGroup<"undeclared-selector">; 188def ImplicitAtomic : DiagGroup<"implicit-atomic-properties">; 189def CustomAtomic : DiagGroup<"custom-atomic-properties">; 190def AtomicProperties : DiagGroup<"atomic-properties", 191 [ImplicitAtomic, CustomAtomic]>; 192def AutomaticReferenceCountingABI : DiagGroup<"arc-abi">; 193def ARCUnsafeRetainedAssign : DiagGroup<"arc-unsafe-retained-assign">; 194def ARCRetainCycles : DiagGroup<"arc-retain-cycles">; 195def ARCNonPodMemAccess : DiagGroup<"arc-non-pod-memaccess">; 196def AutomaticReferenceCounting : DiagGroup<"arc", 197 [AutomaticReferenceCountingABI, 198 ARCUnsafeRetainedAssign, 199 ARCRetainCycles, 200 ARCNonPodMemAccess]>; 201def Selector : DiagGroup<"selector">; 202def NonfragileAbi2 : DiagGroup<"nonfragile-abi2">; 203def Protocol : DiagGroup<"protocol">; 204def SuperSubClassMismatch : DiagGroup<"super-class-method-mismatch">; 205def OverridingMethodMismatch : DiagGroup<"overriding-method-mismatch">; 206def : DiagGroup<"variadic-macros">; 207def VariadicMacros : DiagGroup<"variadic-macros">; 208def VectorConversions : DiagGroup<"vector-conversions">; // clang specific 209def VLA : DiagGroup<"vla">; 210def VolatileRegisterVar : DiagGroup<"volatile-register-var">; 211 212// GCC calls -Wdeprecated-writable-strings -Wwrite-strings. 213def GCCWriteStrings : DiagGroup<"write-strings" , [DeprecatedWritableStr]>; 214 215def CharSubscript : DiagGroup<"char-subscripts">; 216def LargeByValueCopy : DiagGroup<"large-by-value-copy">; 217def DuplicateArgDecl : DiagGroup<"duplicate-method-arg">; 218 219// Aggregation warning settings. 220 221// -Widiomatic-parentheses contains warnings about 'idiomatic' 222// missing parentheses; it is off by default. We do not include it 223// in -Wparentheses because most users who use -Wparentheses explicitly 224// do not want these warnings. 225def ParenthesesOnEquality : DiagGroup<"parentheses-equality">; 226def Parentheses : DiagGroup<"parentheses", 227 [LogicalOpParentheses, 228 BitwiseOpParentheses, 229 ParenthesesOnEquality]>; 230 231// -Wconversion has its own warnings, but we split a few out for 232// legacy reasons: 233// - some people want just 64-to-32 warnings 234// - conversion warnings with constant sources are on by default 235// - conversion warnings for literals are on by default 236// - bool-to-pointer conversion warnings are on by default 237def Conversion : DiagGroup<"conversion", 238 [DiagGroup<"shorten-64-to-32">, 239 DiagGroup<"constant-conversion">, 240 DiagGroup<"literal-conversion">, 241 DiagGroup<"string-conversion">, 242 DiagGroup<"sign-conversion">, 243 BoolConversions]>, 244 DiagCategory<"Value Conversion Issue">; 245 246def Unused : DiagGroup<"unused", 247 [UnusedArgument, UnusedFunction, UnusedLabel, 248 // UnusedParameter, (matches GCC's behavior) 249 // UnusedMemberFunction, (clean-up llvm before enabling) 250 UnusedValue, UnusedVariable]>, 251 DiagCategory<"Unused Entity Issue">; 252 253// Format settings. 254def FormatInvalidSpecifier : DiagGroup<"format-invalid-specifier">; 255def FormatSecurity : DiagGroup<"format-security">; 256def FormatY2K : DiagGroup<"format-y2k">; 257def Format : DiagGroup<"format", 258 [FormatExtraArgs, FormatZeroLength, NonNull, 259 FormatSecurity, FormatY2K, FormatInvalidSpecifier]>, 260 DiagCategory<"Format String Issue">; 261def FormatNonLiteral : DiagGroup<"format-nonliteral", [FormatSecurity]>; 262def Format2 : DiagGroup<"format=2", 263 [FormatNonLiteral, FormatSecurity, FormatY2K]>; 264 265def Extra : DiagGroup<"extra", [ 266 MissingFieldInitializers, 267 IgnoredQualifiers, 268 InitializerOverrides, 269 SemiBeforeMethodBody, 270 MissingMethodReturnType, 271 SignCompare, 272 UnusedParameter 273 ]>; 274 275def Most : DiagGroup<"most", [ 276 CharSubscript, 277 Comment, 278 DeleteNonVirtualDtor, 279 Format, 280 Implicit, 281 MismatchedTags, 282 MissingBraces, 283 MultiChar, 284 Reorder, 285 ReturnType, 286 SelfAssignment, 287 Switch, 288 SizeofArrayArgument, 289 Trigraphs, 290 Uninitialized, 291 UnknownPragmas, 292 Unused, 293 VolatileRegisterVar, 294 ObjCMissingSuperCalls, 295 OverloadedVirtual 296 ]>; 297 298// Thread Safety warnings 299def ThreadSafety : DiagGroup<"thread-safety">; 300 301// -Wall is -Wmost -Wparentheses -Wtop-level-comparison 302def : DiagGroup<"all", [Most, Parentheses]>; 303 304// Aliases. 305def : DiagGroup<"", [Extra]>; // -W = -Wextra 306def : DiagGroup<"endif-labels", [ExtraTokens]>; // -Wendif-labels=-Wendif-tokens 307def : DiagGroup<"comments", [Comment]>; // -Wcomments = -Wcomment 308 309// A warning group for warnings that we want to have on by default in clang, 310// but which aren't on by default in GCC. 311def NonGCC : DiagGroup<"non-gcc", 312 [SignCompare, Conversion, LiteralRange]>; 313 314// A warning group for warnings about using C++11 features as extensions in 315// earlier C++ versions. 316def CXX11 : DiagGroup<"c++11-extensions">; 317def : DiagGroup<"c++0x-extensions", [CXX11]>; 318def DelegatingCtorCycles : 319 DiagGroup<"delegating-ctor-cycles">; 320 321// A warning group for warnings about using C1X features as extensions. 322def C1X : DiagGroup<"c1x-extensions">; 323 324// A warning group for warnings about GCC extensions. 325def GNU : DiagGroup<"gnu", [GNUDesignator, VLA]>; 326 327// A warning group for warnings about Microsoft extensions. 328def Microsoft : DiagGroup<"microsoft">; 329 330def ObjCNonUnifiedException : DiagGroup<"objc-nonunified-exceptions">; 331 332def ObjCProtocolMethodImpl : DiagGroup<"objc-protocol-method-implementation">; 333