DiagnosticGroups.td revision 210299
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 BoolConversions : DiagGroup<"bool-conversions">; 28def : DiagGroup<"c++-compat">; 29def : DiagGroup<"cast-align">; 30def : DiagGroup<"cast-qual">; 31def : DiagGroup<"char-align">; 32def Comment : DiagGroup<"comment">; 33def : DiagGroup<"ctor-dtor-privacy">; 34def : DiagGroup<"declaration-after-statement">; 35def GNUDesignator : DiagGroup<"gnu-designator">; 36def Deprecated : DiagGroup<"deprecated">; 37def : DiagGroup<"disabled-optimization">; 38def : DiagGroup<"discard-qual">; 39def : DiagGroup<"div-by-zero">; 40def EmptyBody : DiagGroup<"empty-body">; 41def ExtraTokens : DiagGroup<"extra-tokens">; 42 43def FormatExtraArgs : DiagGroup<"format-extra-args">; 44def FormatZeroLength : DiagGroup<"format-zero-length">; 45 46def CXXHexFloats : DiagGroup<"c++-hex-floats">; 47 48def : DiagGroup<"c++0x-compat", [CXXHexFloats]>; 49def FourByteMultiChar : DiagGroup<"four-char-constants">; 50def : DiagGroup<"idiomatic-parentheses">; 51def IgnoredQualifiers : DiagGroup<"ignored-qualifiers">; 52def : DiagGroup<"import">; 53def : DiagGroup<"init-self">; 54def : DiagGroup<"inline">; 55def : DiagGroup<"int-to-pointer-cast">; 56def : DiagGroup<"invalid-pch">; 57def LiteralRange : DiagGroup<"literal-range">; 58def : DiagGroup<"main">; 59def MissingBraces : DiagGroup<"missing-braces">; 60def : DiagGroup<"missing-declarations">; 61def : DiagGroup<"missing-format-attribute">; 62def : DiagGroup<"missing-include-dirs">; 63def : DiagGroup<"missing-noreturn">; 64def MultiChar : DiagGroup<"multichar">; 65def : DiagGroup<"nested-externs">; 66def : DiagGroup<"newline-eof">; 67def LongLong : DiagGroup<"long-long">; 68def MismatchedTags : DiagGroup<"mismatched-tags">; 69def MissingFieldInitializers : DiagGroup<"missing-field-initializers">; 70def InitializerOverrides : DiagGroup<"initializer-overrides">; 71def NonNull : DiagGroup<"nonnull">; 72def : DiagGroup<"nonportable-cfstrings">; 73def : DiagGroup<"non-virtual-dtor">; 74def : DiagGroup<"old-style-definition">; 75def : DiagGroup<"overflow">; 76def : DiagGroup<"overloaded-virtual">; 77def : DiagGroup<"packed">; 78def PointerArith : DiagGroup<"pointer-arith">; 79def PoundWarning : DiagGroup<"#warnings">, 80 DiagCategory<"#warning Directive">; 81def : DiagGroup<"pointer-to-int-cast">; 82def : DiagGroup<"redundant-decls">; 83def ReturnType : DiagGroup<"return-type">; 84def BindToTemporaryCopy : DiagGroup<"bind-to-temporary-copy">; 85def SemiBeforeMethodBody : DiagGroup<"semicolon-before-method-body">; 86def : DiagGroup<"sequence-point">; 87def Shadow : DiagGroup<"shadow">; 88def : DiagGroup<"shorten-64-to-32">; 89def : DiagGroup<"sign-promo">; 90def SignCompare : DiagGroup<"sign-compare">; 91def : DiagGroup<"synth">; 92 93// Preprocessor warnings. 94def : DiagGroup<"builtin-macro-redefined">; 95 96// Just silence warnings about -Wstrict-aliasing for now. 97def : DiagGroup<"strict-aliasing=0">; 98def : DiagGroup<"strict-aliasing=1">; 99def : DiagGroup<"strict-aliasing=2">; 100def : DiagGroup<"strict-aliasing">; 101 102// Just silence warnings about -Wstrict-overflow for now. 103def : DiagGroup<"strict-overflow=0">; 104def : DiagGroup<"strict-overflow=1">; 105def : DiagGroup<"strict-overflow=2">; 106def : DiagGroup<"strict-overflow=3">; 107def : DiagGroup<"strict-overflow=4">; 108def : DiagGroup<"strict-overflow=5">; 109def : DiagGroup<"strict-overflow">; 110 111def InvalidOffsetof : DiagGroup<"invalid-offsetof">; 112def : DiagGroup<"strict-prototypes">; 113def : DiagGroup<"strict-selector-match">; 114def SwitchEnum : DiagGroup<"switch-enum">; 115def Switch : DiagGroup<"switch", [SwitchEnum]>; 116def Trigraphs : DiagGroup<"trigraphs">; 117 118def : DiagGroup<"type-limits">; 119def Uninitialized : DiagGroup<"uninitialized">; 120def UnknownPragmas : DiagGroup<"unknown-pragmas">; 121def UnknownAttributes : DiagGroup<"unknown-attributes">; 122def UnusedArgument : DiagGroup<"unused-argument">; 123def UnusedExceptionParameter : DiagGroup<"unused-exception-parameter">; 124def UnusedFunction : DiagGroup<"unused-function">; 125def UnusedLabel : DiagGroup<"unused-label">; 126def UnusedParameter : DiagGroup<"unused-parameter">; 127def UnusedValue : DiagGroup<"unused-value">; 128def UnusedVariable : DiagGroup<"unused-variable">; 129def ReadOnlySetterAttrs : DiagGroup<"readonly-setter-attrs">; 130def Reorder : DiagGroup<"reorder">; 131def UndeclaredSelector : DiagGroup<"undeclared-selector">; 132def Protocol : DiagGroup<"protocol">; 133def SuperSubClassMismatch : DiagGroup<"super-class-method-mismatch">; 134def : DiagGroup<"variadic-macros">; 135def VariadicMacros : DiagGroup<"variadic-macros">; 136def VectorConversions : DiagGroup<"vector-conversions">; // clang specific 137def VLA : DiagGroup<"vla">; 138def VolatileRegisterVar : DiagGroup<"volatile-register-var">; 139def : DiagGroup<"write-strings">; 140def CharSubscript : DiagGroup<"char-subscripts">; 141 142// Aggregation warning settings. 143 144// -Widiomatic-parentheses contains warnings about 'idiomatic' 145// missing parentheses; it is off by default. 146def Parentheses : DiagGroup<"parentheses", [DiagGroup<"idiomatic-parentheses">]>; 147 148// -Wconversion has its own warnings, but we split this one out for 149// legacy reasons. 150def Conversion : DiagGroup<"conversion", 151 [DiagGroup<"shorten-64-to-32">, BoolConversions]>, 152 DiagCategory<"Value Conversion Issue">; 153 154def Unused : DiagGroup<"unused", 155 [UnusedArgument, UnusedFunction, UnusedLabel, 156 // UnusedParameter, (matches GCC's behavior) 157 UnusedValue, UnusedVariable]>, 158 DiagCategory<"Unused Entity Issue">; 159 160// Format settings. 161def Format : DiagGroup<"format", [FormatExtraArgs, FormatZeroLength, NonNull]>, 162 DiagCategory<"Format String Issue">; 163def FormatSecurity : DiagGroup<"format-security", [Format]>; 164def FormatNonLiteral : DiagGroup<"format-nonliteral", [FormatSecurity]>; 165def FormatY2K : DiagGroup<"format-y2k", [Format]>; 166def Format2 : DiagGroup<"format=2", 167 [FormatNonLiteral, FormatSecurity, FormatY2K]>; 168 169def Extra : DiagGroup<"extra", [ 170 MissingFieldInitializers, 171 IgnoredQualifiers, 172 InitializerOverrides, 173 SemiBeforeMethodBody, 174 SignCompare, 175 UnusedParameter 176 ]>; 177 178def Most : DiagGroup<"most", [ 179 CharSubscript, 180 Comment, 181 Format, 182 Implicit, 183 MismatchedTags, 184 MissingBraces, 185 MultiChar, 186 Reorder, 187 ReturnType, 188 Switch, 189 Trigraphs, 190 Uninitialized, 191 UnknownPragmas, 192 Unused, 193 VectorConversions, 194 VolatileRegisterVar 195 ]>; 196 197// -Wall is -Wmost -Wparentheses 198def : DiagGroup<"all", [Most, Parentheses]>; 199 200// Aliases. 201def : DiagGroup<"", [Extra]>; // -W = -Wextra 202def : DiagGroup<"endif-labels", [ExtraTokens]>; // -Wendif-labels=-Wendif-tokens 203def : DiagGroup<"comments", [Comment]>; // -Wcomments = -Wcomment 204 205// A warning group for warnings that we want to have on by default in clang, 206// but which aren't on by default in GCC. 207def NonGCC : DiagGroup<"non-gcc", 208 [SignCompare, Conversion, LiteralRange]>; 209 210// A warning group for warnings about GCC extensions. 211def GNU : DiagGroup<"gnu", [GNUDesignator, VLA]>; 212