summaryrefslogtreecommitdiffabout
authorPaul Eggert <eggert@cs.ucla.edu>2020-07-02 00:00:51 (GMT)
committer Paul Eggert <eggert@cs.ucla.edu>2020-07-02 00:02:20 (GMT)
commit3831e2e9f355c557b0c0ed9712548b62feaf694f (patch) (side-by-side diff)
tree2a38806efe9b05f11f7bded34d04c584ced45fe6
parent59eb037fc92e23bd6c6034b2a3343ac81f1bd318 (diff)
downloadgnulib-master.tar.gz
gnulib-master.tar.bz2
manywarnings: improve port to GCC 10.1HEADmaster
* build-aux/gcc-warning.spec: Also list warnings that are default or are enabled by already-given flags. This lets us speed up checking for attributes, and makes the generated compilation commands shorter. Add -Wanalyzer-too-complex (too much noise). * m4/manywarnings.m4 (gl_MANYWARN_COMPLEMENT) (gl_MANYWARN_ALL_GCC): Use gl_AS_VAR_APPEND to append to shell variables that may have long values. (gl_MANYWARN_ALL_GCC): Omit flags that are default or are consequences of other flags, to speed up checking and shorten commands.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--ChangeLog12
-rw-r--r--build-aux/gcc-warning.spec144
-rw-r--r--m4/manywarnings.m4206
3 files changed, 181 insertions, 181 deletions
diff --git a/ChangeLog b/ChangeLog
index edb63b3..6115ab9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,2 +2,14 @@
+ manywarnings: improve port to GCC 10.1
+ * build-aux/gcc-warning.spec: Also list warnings that are default
+ or are enabled by already-given flags. This lets us speed up
+ checking for attributes, and makes the generated compilation
+ commands shorter. Add -Wanalyzer-too-complex (too much noise).
+ * m4/manywarnings.m4 (gl_MANYWARN_COMPLEMENT)
+ (gl_MANYWARN_ALL_GCC): Use gl_AS_VAR_APPEND to append
+ to shell variables that may have long values.
+ (gl_MANYWARN_ALL_GCC): Omit flags that are default or are
+ consequences of other flags, to speed up checking and
+ shorten commands.
+
tests: pacify gcc -fanalyzer on zerosize_ptr
diff --git a/build-aux/gcc-warning.spec b/build-aux/gcc-warning.spec
index 89a0bc7..6c0602b 100644
--- a/build-aux/gcc-warning.spec
+++ b/build-aux/gcc-warning.spec
@@ -3,2 +3,3 @@
--extra-warnings alias for -Wextra
+-W alias for -Wextra
-Wabi this is now a no-op
@@ -6,3 +7,7 @@
-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
@@ -10,3 +15,3 @@
-Waligned-new=[none|global|all] c++
--Walloc-size-larger-than=<bytes> handled specially by gl_MANYWARN_ALL_GCC
+-Walloc-size-larger-than=<bytes> defaults to PTRDIFF_MAX
-Walloc-zero Gnulib fixes this problem
@@ -15,2 +20,18 @@
-Wampersand fortran
+-Wanalyzer-double-fclose enabled by -fanalyzer
+-Wanalyzer-double-free enabled by -fanalyzer
+-Wanalyzer-exposure-through-output-file enabled by -fanalyzer
+-Wanalyzer-file-leak enabled by -fanalyzer
+-Wanalyzer-free-of-non-heap enabled by -fanalyzer
+-Wanalyzer-malloc-leak enabled by -fanalyzer
+-Wanalyzer-null-argument enabled by -fanalyzer
+-Wanalyzer-null-dereference enabled by -fanalyzer
+-Wanalyzer-possible-null-argument enabled by -fanalyzer
+-Wanalyzer-possible-null-dereference enabled by -fanalyzer
+-Wanalyzer-stale-setjmp-buffer implied by -fanalyzer
+-Wanalyzer-tainted-array-index FIXME maybe? too much noise
+-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
-Warray-bounds covered by -Warray-bounds=
@@ -21,2 +42,8 @@
-Wattribute-alias=<0,2> handled specially by gl_MANYWARN_ALL_GCC
+-Wattribute-warning default
+-Wattributes default
+-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
@@ -33,2 +60,5 @@
-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
@@ -37,2 +67,3 @@
-Wcatch-value=<0,3> c++
+-Wchar-subscripts enabled by -Wall
-Wcharacter-truncation fortran
@@ -41,3 +72,6 @@
-Wclass-memaccess c++
+-Wclobbered enabled by -Wextra
-Wcomma-subscript c++ and objc++
+-Wcomment enabled by -Wall
+-Wcomments alias for -Wcomment
-Wcompare-reals fortran
@@ -47,3 +81,6 @@
-Wconversion-null c++ and objc++
+-Wcoverage-mismatch default
+-Wcpp default
-Wctor-dtor-privacy c++
+-Wdangling-else enabled by -Wparentheses
-Wdeclaration-after-statement FIXME: do not want. others may
@@ -51,7 +88,19 @@
-Wdelete-non-virtual-dtor c++
+-Wdeprecated default
-Wdeprecated-copy c++ and objc++
-Wdeprecated-copy-dtor c++ and objc++
+-Wdeprecated-declarations default
+-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
+-Wendif-labels default
-Werror-implicit-function-declaration deprecated
+-Wexpansion-to-defined enabled by -Wextra
-Wextra-semi c++
@@ -60,11 +109,27 @@
-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
@@ -72,4 +137,8 @@
-Winaccessible-base c++ and objc++
+-Wincompatible-pointer-types default
-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
@@ -77,2 +146,3 @@
-Wintrinsics-std fortran
+-Winvalid-memory-model default
-Winvalid-offsetof c++ and objc++
@@ -83,9 +153,23 @@
-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-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
+-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
@@ -100,9 +184,18 @@
-Wnon-virtual-dtor c++
--Wnormalized covered by -Wnormalized=
--Wnormalized=[none|id|nfc|nfkc] handled specially by gl_MANYWARN_ALL_GCC
+-Wnonnull enabled by -Wall or -Wformat
+-Wnonnull-compare enabled by -Wall
+-Wnormalized default
+-Wnormalized=[none|id|nfc|nfkc] defaults to nfc
+-Wodr default
-Wold-style-cast c++ and objc++
+-Wold-style-declaration enabled by -Wextra
+-Woverflow default
-Woverloaded-virtual 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?
@@ -112,2 +205,6 @@
-Wpmf-conversions c++ and objc++
+-Wpointer-compare default
+-Wpointer-sign enabled by -Wall
+-Wpointer-to-int-cast default
+-Wpragmas default
-Wprio-ctor-dtor c++
@@ -115,2 +212,3 @@
-Wprotocol objc++
+-Wpsabi default
-Wreal-q-constant fortran
@@ -123,3 +221,8 @@
-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
-Wshadow-compatible-local covered by -Wshadow
@@ -130,2 +233,5 @@
-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
@@ -136,3 +242,7 @@
-Wsized-deallocation c++ and objc++
+-Wsizeof-array-argument default
+-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?
@@ -141,4 +251,6 @@
-Wstrict-selector-match objc and objc++
--Wstringop-overflow covered by -Wstringop-overflow=
--Wstringop-overflow=<0,4> handled specially by gl_MANYWARN_ALL_GCC
+-Wstring-compare enabled by -Wextra
+-Wstringop-overflow covered by -Wstringop-overflow=2
+-Wstringop-overflow=<0,4> defaults to 2
+-Wstringop-truncation default
-Wsubobject-linkage c++ and objc++
@@ -146,4 +258,8 @@
-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
@@ -151,2 +267,3 @@
-Wtarget-lifetime fortran
+-Wtautological-compare enabled by -Wall
-Wtemplates c++ and objc++
@@ -155,2 +272,4 @@
-Wtraditional-conversion obsolescent
+-Wtrigraphs enabled by -Wall
+-Wtype-limits enabled by -Wextra
-Wundeclared-selector objc and objc++
@@ -161,7 +280,18 @@
-Wunsuffixed-float-constants triggers warning in gnulib's timespec.h
--Wunused-const-variable covered by -Wunusec-const-variable=2
+-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-without-only fortran
-Wuseless-cast c++ and objc++
+-Wvarargs default
-Wvirtual-inheritance c++
@@ -170,3 +300,5 @@
-Wvolatile c++ and objc++
+-Wvolatile-register-var enabled by -Wall
-Wzero-as-null-pointer-constant c++ and objc++
+-Wzero-length-bounds enabled by -Wall
-Wzerotrip fortran
diff --git a/m4/manywarnings.m4 b/m4/manywarnings.m4
index 719bafb..d18da04 100644
--- a/m4/manywarnings.m4
+++ b/m4/manywarnings.m4
@@ -1,2 +1,2 @@
-# manywarnings.m4 serial 19
+# manywarnings.m4 serial 20
dnl Copyright (C) 2008-2020 Free Software Foundation, Inc.
@@ -23,3 +23,3 @@ AC_DEFUN([gl_MANYWARN_COMPLEMENT],
*)
- gl_warn_set="$gl_warn_set $gl_warn_item"
+ gl_AS_VAR_APPEND([gl_warn_set], [" $gl_warn_item"])
;;
@@ -51,3 +51,3 @@ m4_defun([gl_MANYWARN_ALL_GCC(C)],
- dnl Check if -W -Werror -Wno-missing-field-initializers is supported
+ dnl Check if -Wextra -Werror -Wno-missing-field-initializers is supported
dnl with the current $CC $CFLAGS $CPPFLAGS.
@@ -56,3 +56,3 @@ m4_defun([gl_MANYWARN_ALL_GCC(C)],
[gl_save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -W -Werror -Wno-missing-field-initializers"
+ CFLAGS="$CFLAGS -Wextra -Werror -Wno-missing-field-initializers"
AC_COMPILE_IFELSE(
@@ -70,3 +70,3 @@ m4_defun([gl_MANYWARN_ALL_GCC(C)],
[gl_save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -W -Werror"
+ CFLAGS="$CFLAGS -Wextra -Werror"
AC_COMPILE_IFELSE(
@@ -107,3 +107,3 @@ m4_defun([gl_MANYWARN_ALL_GCC(C)],
# comm -3 \
- # <((sed -n 's/^ *\(-[^ 0-9][^ ]*\) .*/\1/p' manywarnings.m4; \
+ # <((sed -n 's/^ *\(-[^ 0-9][^ ]*\).*/\1/p' manywarnings.m4; \
# awk '/^[^#]/ {print $1}' ../build-aux/gcc-warning.spec) | sort) \
@@ -111,53 +111,10 @@ m4_defun([gl_MANYWARN_ALL_GCC(C)],
- gl_manywarn_set=
- for gl_manywarn_item in -fno-common \
- -W \
- -Wabsolute-value \
- -Waddress \
- -Waddress-of-packed-member \
- -Waggressive-loop-optimizations \
+ $1=
+ for gl_manywarn_item in -fanalyzer -fno-common \
-Wall \
- -Wanalyzer-double-fclose \
- -Wanalyzer-double-free \
- -Wanalyzer-exposure-through-output-file \
- -Wanalyzer-file-leak \
- -Wanalyzer-free-of-non-heap \
- -Wanalyzer-malloc-leak \
- -Wanalyzer-null-argument \
- -Wanalyzer-null-dereference \
- -Wanalyzer-possible-null-argument \
- -Wanalyzer-possible-null-dereference \
- -Wanalyzer-stale-setjmp-buffer \
- -Wanalyzer-tainted-array-index \
- -Wanalyzer-too-complex \
- -Wanalyzer-unsafe-call-within-signal-handler \
- -Wanalyzer-use-after-free \
- -Wanalyzer-use-of-pointer-in-stale-stack-frame \
-Warith-conversion \
- -Wattribute-warning \
- -Wattributes \
-Wbad-function-cast \
- -Wbool-compare \
- -Wbool-operation \
- -Wbuiltin-declaration-mismatch \
- -Wbuiltin-macro-redefined \
- -Wcannot-profile \
- -Wcast-align \
-Wcast-align=strict \
- -Wcast-function-type \
- -Wchar-subscripts \
- -Wclobbered \
- -Wcomment \
- -Wcomments \
- -Wcoverage-mismatch \
- -Wcpp \
- -Wdangling-else \
-Wdate-time \
- -Wdeprecated \
- -Wdeprecated-declarations \
- -Wdesignated-init \
-Wdisabled-optimization \
- -Wdiscarded-array-qualifiers \
- -Wdiscarded-qualifiers \
- -Wdiv-by-zero \
-Wdouble-promotion \
@@ -165,91 +122,22 @@ m4_defun([gl_MANYWARN_ALL_GCC(C)],
-Wduplicated-cond \
- -Wduplicate-decl-specifier \
- -Wempty-body \
- -Wendif-labels \
- -Wenum-compare \
- -Wenum-conversion \
- -Wexpansion-to-defined \
-Wextra \
- -Wformat-contains-nul \
- -Wformat-diag \
- -Wformat-extra-args \
- -Wformat-nonliteral \
- -Wformat-security \
-Wformat-signedness \
- -Wformat-y2k \
- -Wformat-zero-length \
- -Wframe-address \
- -Wfree-nonheap-object \
- -Whsa \
- -Wif-not-aligned \
- -Wignored-attributes \
- -Wignored-qualifiers \
- -Wimplicit \
- -Wimplicit-function-declaration \
- -Wimplicit-int \
- -Wincompatible-pointer-types \
-Winit-self \
-Winline \
- -Wint-conversion \
- -Wint-in-bool-context \
- -Wint-to-pointer-cast \
- -Winvalid-memory-model \
-Winvalid-pch \
- -Wlogical-not-parentheses \
-Wlogical-op \
- -Wmain \
- -Wmaybe-uninitialized \
- -Wmemset-elt-size \
- -Wmemset-transposed-args \
- -Wmisleading-indentation \
- -Wmissing-attributes \
- -Wmissing-braces \
-Wmissing-declarations \
- -Wmissing-field-initializers \
-Wmissing-include-dirs \
- -Wmissing-parameter-type \
- -Wmissing-profile \
-Wmissing-prototypes \
- -Wmultichar \
- -Wmultistatement-macros \
- -Wnarrowing \
-Wnested-externs \
- -Wnonnull \
- -Wnonnull-compare \
-Wnull-dereference \
- -Wodr \
- -Wold-style-declaration \
-Wold-style-definition \
-Wopenmp-simd \
- -Woverflow \
-Woverlength-strings \
- -Woverride-init \
-Wpacked \
- -Wpacked-bitfield-compat \
- -Wpacked-not-aligned \
- -Wparentheses \
-Wpointer-arith \
- -Wpointer-compare \
- -Wpointer-sign \
- -Wpointer-to-int-cast \
- -Wpragmas \
- -Wpsabi \
- -Wrestrict \
- -Wreturn-local-addr \
- -Wreturn-type \
- -Wscalar-storage-order \
- -Wsequence-point \
-Wshadow \
- -Wshift-count-negative \
- -Wshift-count-overflow \
- -Wshift-negative-value \
- -Wsizeof-array-argument \
- -Wsizeof-pointer-div \
- -Wsizeof-pointer-memaccess \
-Wstack-protector \
- -Wstrict-aliasing \
-Wstrict-overflow \
-Wstrict-prototypes \
- -Wstring-compare \
- -Wstringop-truncation \
-Wsuggest-attribute=cold \
@@ -262,12 +150,5 @@ m4_defun([gl_MANYWARN_ALL_GCC(C)],
-Wsuggest-final-types \
- -Wswitch \
- -Wswitch-bool \
- -Wswitch-outside-range \
- -Wswitch-unreachable \
-Wsync-nand \
-Wsystem-headers \
- -Wtautological-compare \
-Wtrampolines \
- -Wtrigraphs \
- -Wtype-limits \
-Wuninitialized \
@@ -275,14 +156,3 @@ m4_defun([gl_MANYWARN_ALL_GCC(C)],
-Wunsafe-loop-optimizations \
- -Wunused \
- -Wunused-but-set-parameter \
- -Wunused-but-set-variable \
- -Wunused-function \
- -Wunused-label \
- -Wunused-local-typedefs \
-Wunused-macros \
- -Wunused-parameter \
- -Wunused-result \
- -Wunused-value \
- -Wunused-variable \
- -Wvarargs \
-Wvariadic-macros \
@@ -290,8 +160,6 @@ m4_defun([gl_MANYWARN_ALL_GCC(C)],
-Wvla \
- -Wvolatile-register-var \
-Wwrite-strings \
- -Wzero-length-bounds \
\
; do
- gl_manywarn_set="$gl_manywarn_set $gl_manywarn_item"
+ gl_AS_VAR_APPEND([$1], [" $gl_manywarn_item"])
done
@@ -300,31 +168,11 @@ m4_defun([gl_MANYWARN_ALL_GCC(C)],
# them here so that the above 'comm' command doesn't report a false match.
- # Would prefer "min (PTRDIFF_MAX, SIZE_MAX)", but it must be a literal.
- # Also, AC_COMPUTE_INT requires it to fit in a long; it is 2**63 on
- # the only platforms where it does not fit in a long, so make that
- # a special case.
- AC_MSG_CHECKING([max safe object size])
- AC_COMPUTE_INT([gl_alloc_max],
- [LONG_MAX < (PTRDIFF_MAX < (size_t) -1 ? PTRDIFF_MAX : (size_t) -1)
- ? -1
- : PTRDIFF_MAX < (size_t) -1 ? (long) PTRDIFF_MAX : (long) (size_t) -1],
- [[#include <limits.h>
- #include <stddef.h>
- #include <stdint.h>
- ]],
- [gl_alloc_max=2147483647])
- case $gl_alloc_max in
- -1) gl_alloc_max=9223372036854775807;;
- esac
- AC_MSG_RESULT([$gl_alloc_max])
- gl_manywarn_set="$gl_manywarn_set -Walloc-size-larger-than=$gl_alloc_max"
- gl_manywarn_set="$gl_manywarn_set -Warray-bounds=2"
- gl_manywarn_set="$gl_manywarn_set -Wattribute-alias=2"
- gl_manywarn_set="$gl_manywarn_set -Wformat-overflow=2"
- gl_manywarn_set="$gl_manywarn_set -Wformat-truncation=2"
- gl_manywarn_set="$gl_manywarn_set -Wimplicit-fallthrough=5"
- gl_manywarn_set="$gl_manywarn_set -Wnormalized=nfc"
- gl_manywarn_set="$gl_manywarn_set -Wshift-overflow=2"
- gl_manywarn_set="$gl_manywarn_set -Wstringop-overflow=2"
- gl_manywarn_set="$gl_manywarn_set -Wunused-const-variable=2"
- gl_manywarn_set="$gl_manywarn_set -Wvla-larger-than=4031"
+ gl_AS_VAR_APPEND([$1], [' -Warray-bounds=2'])
+ gl_AS_VAR_APPEND([$1], [' -Wattribute-alias=2'])
+ gl_AS_VAR_APPEND([$1], [' -Wformat-overflow=2'])
+ gl_AS_VAR_APPEND([$1], [' -Wformat=2'])
+ gl_AS_VAR_APPEND([$1], [' -Wformat-truncation=2'])
+ gl_AS_VAR_APPEND([$1], [' -Wimplicit-fallthrough=5'])
+ gl_AS_VAR_APPEND([$1], [' -Wshift-overflow=2'])
+ gl_AS_VAR_APPEND([$1], [' -Wunused-const-variable=2'])
+ gl_AS_VAR_APPEND([$1], [' -Wvla-larger-than=4031'])
@@ -335,4 +183,4 @@ m4_defun([gl_MANYWARN_ALL_GCC(C)],
'gcc (GCC) '4.[[0-7]].*)
- gl_manywarn_set="$gl_manywarn_set -fdiagnostics-show-option"
- gl_manywarn_set="$gl_manywarn_set -funit-at-a-time"
+ gl_AS_VAR_APPEND([$1], [' -fdiagnostics-show-option'])
+ gl_AS_VAR_APPEND([$1], [' -funit-at-a-time'])
;;
@@ -343,3 +191,3 @@ m4_defun([gl_MANYWARN_ALL_GCC(C)],
if test "$gl_cv_cc_nomfi_needed" = yes; then
- gl_manywarn_set="$gl_manywarn_set -Wno-missing-field-initializers"
+ gl_AS_VAR_APPEND([$1], [' -Wno-missing-field-initializers'])
fi
@@ -347,6 +195,14 @@ m4_defun([gl_MANYWARN_ALL_GCC(C)],
if test "$gl_cv_cc_uninitialized_supported" = no; then
- gl_manywarn_set="$gl_manywarn_set -Wno-uninitialized"
+ gl_AS_VAR_APPEND([$1], [' -Wno-uninitialized'])
fi
- $1=$gl_manywarn_set
+ # Some warnings have too many false alarms in GCC 10.1.
+ # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93695
+ gl_AS_VAR_APPEND([$1], [' -Wno-analyzer-double-free'])
+ # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94458
+ gl_AS_VAR_APPEND([$1], [' -Wno-analyzer-malloc-leak'])
+ # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94851
+ gl_AS_VAR_APPEND([$1], [' -Wno-analyzer-null-dereference'])
+ # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95758
+ gl_AS_VAR_APPEND([$1], [' -Wno-analyzer-use-after-free'])

Return to:

Send suggestions and report system problems to the System administrator.