Branch
Hash :
1ab24246
Author :
Date :
2025-08-11T20:11:51
manywarnings: update C warnings for GCC 15.2 This is merely changes to commentary; no changes to the flags passed to GCC. * build-aux/gcc-warning.spec: Add warnings introduced in GCC 15.2.
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 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423
# options to filter out, and why
--all-warnings alias for -Wall
--extra-warnings alias for -Wextra
-W alias for -Wextra
-WNSObject-attribute objc and objc++
-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 enabled by -Wextra
-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-undefined-behavior-ptrdiff 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-loop 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-overlapping-buffers 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-symbol-too-complex warns about compiler not about program
-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-undefined-behavior-strtok enabled by -fanalyzer
-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++26-extensions c++
-Wc++2a-compat c++
-Wc-binding-type fortran
-Wc11-c23-compat c compatibility
-Wc23-c2y-compat c compatibility
-Wc90-c99-compat c compatibility
-Wc99-c11-compat c compatibility
-Wcalloc-transposed-args enabled by -Wextra
-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
-Wcast-user-defined default
-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-distinct-pointer-types default
-Wcompare-reals fortran
-Wcomplain-wrong-lang default
-Wconditionally-supported c++ and objc++
-Wconversion FIXME maybe? too much noise; encourages bad changes
-Wcoverage-too-many-conditions default
-Wcoverage-too-many-paths default
-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
-Wdeclaration-missing-parameter-type default
-Wdefaulted-function-deleted default, c++ and objc++
-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++
-Wdeprecated-literal-operator c++ and objc++
-Wdeprecated-non-prototype c compatibility
-Wdeprecated-variadic-comma-omission c++ and objc+++ compatibility
-Wdesignated-init default
-Wdisabled-optimization warns about compiler not about program
-Wdiscarded-array-qualifiers default
-Wdiscarded-qualifiers default
-Wdo-subscript fortran
-Wdiv-by-zero default
-Wduplicate-decl-specifier enabled by -Wall
-Weffc++ c++
-Welaborated-enum-base default, c++11+
-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
-Wexternal-argument-mismatch fortran
-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-labels c and objc compatibility
-Wfree-nonheap-object default
-Wfunction-elimination fortran
-Wglobal-module default, c++ and objc++
-Whardened default
-Wheader-guard enabled by -Wall
-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?
-Wleading-whitespace= specific to project coding style
-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-musttail-local-addr enabled by -Wextra
-Wmaybe-uninitialized enabled by -Wall or -Wextra
-Wmemset-elt-size enabled by -Wall
-Wmemset-transposed-args enabled by -Wall
-Wmisleading-indentation enabled by -Wall
-Wmissing-parameter-name c and objc compatibility
-Wmismatched-dealloc default
-Wmismatched-new-delete default, c++ and objc++
-Wmismatched-special-enum d
-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++
-Wmusttail-local-addr default
-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
-Wnrvo c++ 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
-Wopenmp default
-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
-Wpragma-once-outside-header 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-mismatch 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-attribute=returns_nonnull https://gcc.gnu.org/PR114833
-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
-Wsystem-headers warns about system headers on macOS and #include_next in gnulib headers
-Wtabs fortran
-Wtarget-lifetime fortran
-Wtautological-compare enabled by -Wall
-Wtemplate-body default, c++ and objc++
-Wtemplate-id-cdtor default, c++ and objc++
-Wtemplate-names-tu-local enabled by -Wextra, c++
-Wtemplates c++ and objc++
-Wterminate c++ and objc++
-Wtraditional obsolescent
-Wtraditional-conversion obsolescent
-Wtrailing-whitespace specific to project coding style
-Wtrailing-whitespace= specific to project coding style
-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
-Wunterminated-string-initialization enabled by -Wextra
-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