Hash :
78f7aef9
Author :
Date :
2023-04-23T08:53:59
manywarnings: update C warnings for GCC 13 Adjust for C programs compiled by GCC 13. (A C++ expert still needs to look at manywarnings-c++.m4.) * build-aux/gcc-warning.spec: Add warnings introduced in GCC 13. * doc/manywarnings.texi (manywarnings): Document flex arrays. * m4/manywarnings.m4 (gl_MANYWARN_ALL_GCC): Add -fstrict-flex-arrays and -Wstrict-flex-arrays as these should be suitable for Gnulib-using code.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381
# options to filter out, and why
--all-warnings alias for -Wall
--extra-warnings alias for -Wextra
-W alias for -Wextra
-Wabi this is now a no-op
-Wabi-tag c++
-Wabi= c++
-Wabsolute-value enabled by -Wextra
-Waddress enabled by -Wall
-Waddress-of-packed-member default
-Waggregate-return obsolescent
-Waggressive-loop-optimizations default
-Waliasing fortran
-Walign-commons fortran
-Waligned-new=[none|global|all] c++
-Walloc-size-larger-than=<bytes> defaults to PTRDIFF_MAX
-Walloc-zero Gnulib fixes this problem
-Walloca we like alloca in small doses
-Walloca-larger-than=<number> FIXME: choose something sane?
-Wampersand fortran
-Wanalyzer-allocation-size enabled by -fanalyzer
-Wanalyzer-deref-before-check enabled by -fanalyzer
-Wanalyzer-double-fclose enabled by -fanalyzer
-Wanalyzer-double-free enabled by -fanalyzer
-Wanalyzer-exposure-through-output-file enabled by -fanalyzer
-Wanalyzer-exposure-through-uninit-copy enabled by -fanalyzer
-Wanalyzer-fd-access-mode-mismatch enabled by -fanalyzer
-Wanalyzer-fd-double-close enabled by -fanalyzer
-Wanalyzer-fd-leak enabled by -fanalyzer
-Wanalyzer-fd-phase-mismatch enabled by -fanalyzer
-Wanalyzer-fd-type-mismatch enabled by -fanalyzer
-Wanalyzer-fd-use-after-close enabled by -fanalyzer
-Wanalyzer-fd-use-without-check enabled by -fanalyzer
-Wanalyzer-file-leak enabled by -fanalyzer
-Wanalyzer-free-of-non-heap enabled by -fanalyzer
-Wanalyzer-imprecise-fp-arithmetic enabled by -fanalyzer
-Wanalyzer-infinite-recursion enabled by -fanalyzer
-Wanalyzer-jump-through-null enabled by -fanalyzer
-Wanalyzer-malloc-leak enabled by -fanalyzer
-Wanalyzer-mismatching-deallocation enabled by -fanalyzer
-Wanalyzer-null-argument enabled by -fanalyzer
-Wanalyzer-null-dereference enabled by -fanalyzer
-Wanalyzer-out-of-bounds enabled by -fanalyzer
-Wanalyzer-possible-null-argument enabled by -fanalyzer
-Wanalyzer-possible-null-dereference enabled by -fanalyzer
-Wanalyzer-putenv-of-auto-var enabled by -fanalyzer
-Wanalyzer-shift-count-negative enabled by -fanalyzer
-Wanalyzer-shift-count-overflow enabled by -fanalyzer
-Wanalyzer-stale-setjmp-buffer implied by -fanalyzer
-Wanalyzer-tainted-allocation-size FIXME requires -fanalyzer-checker=taint
-Wanalyzer-tainted-array-index FIXME requires -fanalyzer-checker=taint
-Wanalyzer-tainted-assertion FIXME requires -fanalyzer-checker=taint
-Wanalyzer-tainted-divisor FIXME requires -fanalyzer-checker=taint
-Wanalyzer-tainted-offset FIXME requires -fanalyzer-checker=taint
-Wanalyzer-tainted-size FIXME requires -fanalyzer-checker=taint
-Wanalyzer-va-arg-type-mismatch enabled by -fanalyzer
-Wanalyzer-va-list-exhausted enabled by -fanalyzer
-Wanalyzer-va-list-leak enabled by -fanalyzer
-Wanalyzer-va-list-use-after-va-end enabled by -fanalyzer
-Wanalyzer-too-complex enabled by -fanalyzer
-Wanalyzer-unsafe-call-within-signal-handler enabled by -fanalyzer
-Wanalyzer-use-after-free enabled by -fanalyzer
-Wanalyzer-use-of-pointer-in-stale-stack-frame enabled by -fanalyzer
-Wanalyzer-use-of-uninitialized-value enabled by -fanalyzer
-Wanalyzer-write-to-const enabled by -fanalyzer
-Wanalyzer-write-to-string-literal enabled by -fanalyzer
-Warray-bounds covered by -Warray-bounds=
-Warray-bounds=<0,2> handled specially by gl_MANYWARN_ALL_GCC
-Warray-compare enabled by -Wall
-Warray-parameter enabled by -Wall
-Warray-parameter=<0,2> enabled by -Wall
-Warray-temporaries fortran
-Wassign-intercept objc/objc++
-Wattribute-alias covered by -Wattribute-alias=2
-Wattribute-alias=<0,2> handled specially by gl_MANYWARN_ALL_GCC
-Wattribute-warning default
-Wattributes default
-Wbidi-chars handled specially by gl_MANYWARN_ALL_GCC
-Wbidi-chars= handled specially by gl_MANYWARN_ALL_GCC
-Wbool-compare enabled by -Wall
-Wbool-operation enabled by -Wall
-Wbuiltin-declaration-mismatch default
-Wbuiltin-macro-redefined default
-Wc++-compat only useful for code meant to be compiled by a C++ compiler
-Wc++0x-compat c++
-Wc++11-compat c++
-Wc++11-extensions c++
-Wc++14-compat c++
-Wc++14-extensions c++
-Wc++17-compat c++
-Wc++17-extensions c++
-Wc++1z-compat c++
-Wc++20-compat c++
-Wc++20-extensions c++
-Wc++23-extensions c++
-Wc++2a-compat c++
-Wc-binding-type fortran
-Wc11-c2x-compat c compatibility
-Wc90-c99-compat c compatibility
-Wc99-c11-compat c compatibility
-Wcannot-profile default
-Wcast-align enabled by -Wcast-align=strict
-Wcast-function-type enabled by -Wextra
-Wcast-qual FIXME maybe? too much noise; encourages bad changes
-Wcast-result D
-Wcatch-value c++
-Wcatch-value=<0,3> c++
-Wchanges-meaning c++
-Wchar-subscripts enabled by -Wall
-Wcharacter-truncation fortran
-Wchkp deprecated
-Wclass-conversion c++ and objc++
-Wclass-memaccess c++
-Wclobbered enabled by -Wextra
-Wcomma-subscript c++ and objc++
-Wcomment enabled by -Wall
-Wcomments alias for -Wcomment
-Wcompare-reals fortran
-Wcomplain-wrong-lang default
-Wconditionally-supported c++ and objc++
-Wconversion FIXME maybe? too much noise; encourages bad changes
-Wconversion-extra fortran
-Wconversion-null c++ and objc++
-Wcoverage-invalid-line-number default if --coverage
-Wcoverage-mismatch default
-Wcpp default
-Wctad-maybe-unsupported c++ and objc++
-Wctor-dtor-privacy c++
-Wdangling-else enabled by -Wparentheses
-Wdangling-pointer enabled by -Wall
-Wdangling-pointer=<0,2> enabled by -Wall
-Wdangling-reference c++ and objc++
-Wdeclaration-after-statement needed only for pre-C99, so obsolete
-Wdelete-incomplete c++ and objc++
-Wdelete-non-virtual-dtor c++
-Wdeprecated default
-Wdeprecated-copy c++ and objc++
-Wdeprecated-copy-dtor c++ and objc++
-Wdeprecated-declarations default
-Wdeprecated-enum-enum-conversion c++ and objc++
-Wdeprecated-enum-float-conversion c++ and objc++
-Wdesignated-init default
-Wdiscarded-array-qualifiers default
-Wdiscarded-qualifiers default
-Wdo-subscript fortran
-Wdiv-by-zero default
-Wduplicate-decl-specifier enabled by -Wall
-Weffc++ c++
-Wempty-body enabled by -Wextra
-Wenum-compare enabled by -Wall
-Wenum-conversion enabled by -Wextra
-Wenum-int-mismatch enabled by -Wall
-Wendif-labels default
-Werror-implicit-function-declaration deprecated
-Wexceptions c++ and objc++
-Wexpansion-to-defined enabled by -Wextra
-Wextra-semi c++
-Wfloat-conversion FIXME maybe? borderline. some will want this
-Wfloat-equal FIXME maybe? borderline. some will want this
-Wformat covered by -Wformat=2
-Wformat-contains-nul default
-Wformat-diag enabled by -Wformat=2
-Wformat-extra-args enabled by -Wformat=2
-Wformat-nonliteral enabled by -Wformat=2
-Wformat-overflow<0,2> gcc --help=warnings artifact
-Wformat-overflow=<0,2> handled specially by gl_MANYWARN_ALL_GCC
-Wformat-security enabled by -Wformat=2
-Wformat-truncation covered by -Wformat-truncation=2
-Wformat-truncation=<0,2> handled specially by gl_MANYWARN_ALL_GCC
-Wformat-y2k enabled by -Wformat=2
-Wformat-zero-length enabled by -Wformat=2
-Wformat=<0,2> gcc --help=warnings artifact
-Wframe-address enabled by -Wall
-Wframe-larger-than=<byte-size> FIXME: choose something sane?
-Wfree-nonheap-object default
-Wfunction-elimination fortran
-Whsa default
-Wif-not-aligned default
-Wignored-attributes default
-Wignored-qualifiers enabled by -Wextra
-Wimplicit enabled by -Wall
-Wimplicit-fallthrough covered by -Wimplicit-fallthrough=2
-Wimplicit-fallthrough=<0,5> handled specially by gl_MANYWARN_ALL_GCC
-Wimplicit-function-declaration enabled by -Wimplicit
-Wimplicit-int enabled by -Wimplicit
-Wimplicit-interface fortran
-Wimplicit-procedure fortran
-Winaccessible-base c++ and objc++
-Wincompatible-pointer-types default
-Winfinite-recursion enabled by -Wall
-Winherited-variadic-ctor c++
-Winit-list-lifetime c++ and objc++
-Wint-conversion default
-Wint-in-bool-context enabled by -Wall
-Wint-to-pointer-cast default
-Winteger-division fortran
-Winterference-size c++
-Wintrinsic-shadow fortran
-Wintrinsics-std fortran
-Winvalid-constexpr c++
-Winvalid-imported-macros c++ and objc++
-Winvalid-memory-model default
-Winvalid-offsetof c++ and objc++
-Winvalid-utf8 enabled by -finput-charset=UTF-8
-Wjump-misses-init only useful for code meant to be compiled by a C++ compiler
-Wlarger-than- gcc --help=warnings artifact
-Wlarger-than=<byte-size> FIXME: choose something sane?
-Wline-truncation fortran
-Wliteral-suffix c++ and objc++
-Wlogical-not-parentheses enabled by -Wall
-Wlong-long obsolescent
-Wlto-type-mismatch c++ and objc++
-Wmain enabled by -Wall
-Wmaybe-uninitialized enabled by -Wall or -Wextra
-Wmemset-elt-size enabled by -Wall
-Wmemset-transposed-args enabled by -Wall
-Wmisleading-indentation enabled by -Wall
-Wmismatched-dealloc default
-Wmismatched-new-delete default, c++ and objc++
-Wmismatched-tags c++ and objc++
-Wmissing-attributes enabled by -Wall
-Wmissing-braces enabled by -Wall
-Wmissing-field-initializers enabled by -Wextra
-Wmissing-format-attribute obsolescent
-Wmissing-noreturn obsolescent
-Wmissing-parameter-type enabled by -Wextra
-Wmissing-profile default
-Wmissing-requires default, c++
-Wmissing-template-keyword default, c++
-Wmultichar default
-Wmultiple-inheritance c++ and objc++
-Wmultistatement-macros enabled by -Wall
-Wnamespaces c++
-Wnarrowing enabled by -Wall
-Wno-alloc-size-larger-than see -Walloc-size-larger-than
-Wno-alloca-larger-than see -Walloca-larger-than
-Wno-frame-larger-than see -Wframe-larger-than
-Wno-larger-than see -Wlarger-than
-Wno-stack-usage see -Wstack-usage
-Wno-vla-larger-than see -Wvla-larger-than
-Wnoexcept c++
-Wnoexcept-type c++
-Wnon-template-friend c++
-Wnon-virtual-dtor c++
-Wnonnull enabled by -Wall or -Wformat
-Wnonnull-compare enabled by -Wall
-Wnormalized default
-Wnormalized=[none|id|nfc|nfkc] defaults to nfc
-WNSObject-attribute objc and objc++
-Wobjc-root-class objc and objc++
-Wodr default
-Wold-style-cast c++ and objc++
-Wold-style-declaration enabled by -Wextra
-Wopenacc-parallelism OpenACC
-Woverflow default
-Woverloaded-virtual c++
-Woverloaded-virtual=<0,2> c++
-Woverride-init enabled by -Wextra
-Woverride-init-side-effects c++ and objc++
-Woverwrite-recursive fortran
-Wpacked-bitfield-compat default
-Wpacked-not-aligned enabled by -Wall
-Wpadded FIXME maybe? warns about "stabil" member in /usr/include/bits/timex.h
-Wparentheses enabled by -Wall
-Wpedantic FIXME: too strict?
-Wpessimizing-move c++ and objc++
-Wplacement-new c++
-Wplacement-new=<0,2> c++
-Wpmf-conversions c++ and objc++
-Wpointer-compare default
-Wpointer-sign enabled by -Wall
-Wpointer-to-int-cast default
-Wpragmas default
-Wprio-ctor-dtor c++
-Wproperty-assign-default objc++
-Wprotocol objc++
-Wpsabi default
-Wrange-loop-construct c++ and objc++
-Wreal-q-constant fortran
-Wrealloc-lhs fortran
-Wrealloc-lhs-all fortran
-Wredundant-decls FIXME maybe? many _gl_cxxalias_dummy FPs
-Wredundant-move c++ and objc++
-Wredundant-tags c++ and objc++
-Wregister c++ and objc++
-Wreorder c++ and objc++
-Wrestrict enabled by -Wall
-Wreturn-local-addr default
-Wreturn-type enabled by -Wall
-Wscalar-storage-order default
-Wselector objc and objc++
-Wsequence-point enabled by -Wall
-Wself-move c++ and objc++
-Wshadow-compatible-local covered by -Wshadow
-Wshadow-ivar objc
-Wshadow-local covered by -Wshadow
-Wshadow=compatible-local covered by -Wshadow
-Wshadow=global covered by -Wshadow
-Wshadow=local covered by -Wshadow
-Wshift-count-negative default
-Wshift-count-overflow default
-Wshift-negative-value enabled by -Wextra
-Wshift-overflow covered by -Wshift-overflow=2
-Wshift-overflow=<0,2> gcc --help=warnings artifact
-Wsign-compare enabled by -Wextra
-Wsign-conversion FIXME maybe? borderline. some will want this
-Wsign-promo c++ and objc++
-Wsized-deallocation c++ and objc++
-Wsizeof-array-argument default
-Wsizeof-array-div enabled by -Wall
-Wsizeof-pointer-div enabled by -Wall
-Wsizeof-pointer-memaccess enabled by -Wall
-Wstack-usage=<byte-size> FIXME: choose something sane?
-Wstrict-aliasing enabled by -Wall
-Wstrict-aliasing=<0,3> FIXME: choose something sane?
-Wstrict-null-sentinel c++ and objc++
-Wstrict-overflow=<0,5> FIXME: choose something sane?
-Wstrict-selector-match objc and objc++
-Wstring-compare enabled by -Wextra
-Wstringop-overflow covered by -Wstringop-overflow=2
-Wstringop-overflow=<0,4> defaults to 2
-Wstringop-overread default
-Wstringop-truncation default
-Wsubobject-linkage c++ and objc++
-Wsuggest-override c++ and objc++
-Wsurprising fortran
-Wswitch enabled by -Wall
-Wswitch-bool default
-Wswitch-default https://lists.gnu.org/r/bug-gnulib/2018-05/msg00179.html
-Wswitch-enum FIXME maybe? borderline. some will want this
-Wswitch-outside-range default
-Wswitch-unreachable default
-Wsynth deprecated
-Wtabs fortran
-Wtarget-lifetime fortran
-Wtautological-compare enabled by -Wall
-Wtemplates c++ and objc++
-Wterminate c++ and objc++
-Wtraditional obsolescent
-Wtraditional-conversion obsolescent
-Wtrigraphs enabled by -Wall
-Wtrivial-auto-var-init subsumed by -Wmaybe-uninitialized
-Wtsan default
-Wtype-limits enabled by -Wextra
-Wundeclared-selector objc and objc++
-Wundef FIXME maybe? too many false positives
-Wundefined-do-loop fortran
-Wunderflow fortran
-Wunicode default
-Wunreachable-code obsolescent no-op
-Wunsuffixed-float-constants triggers warning in gnulib's timespec.h
-Wunused enabled by -Wall
-Wunused-but-set-parameter enabled by -Wunused
-Wunused-but-set-variable enabled by -Wunused
-Wunused-const-variable covered by -Wunused-const-variable=2
-Wunused-const-variable=<0,2> gcc --help=warnings artifact
-Wunused-dummy-argument fortran
-Wunused-function enabled by -Wunused
-Wunused-label enabled by -Wunused
-Wunused-local-typedefs enabled by -Wunused
-Wunused-parameter enabled by -Wunused
-Wunused-result enabled by -Wunused
-Wunused-value enabled by -Wunused
-Wunused-variable enabled by -Wunused
-Wuse-after-free handled specially by gl_MANYWARN_ALL_GCC
-Wuse-after-free=<0,3> handled specially by gl_MANYWARN_ALL_GCC
-Wuse-without-only fortran
-Wuseless-cast c++ and objc++
-Wvarargs default
-Wvexing-parse c++ and objc++
-Wvirtual-inheritance c++
-Wvirtual-move-assign c++
-Wvla-larger-than=<number> handled specially by gl_MANYWARN_ALL_GCC
-Wvla-parameter enabled by -Wall
-Wvolatile c++ and objc++
-Wvolatile-register-var enabled by -Wall
-Wxor-used-as-pow default
-Wzero-as-null-pointer-constant c++ and objc++
-Wzero-length-bounds enabled by -Wall
-Wzerotrip fortran
-frequire-return-statement go