summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2023-04-23 08:53:59 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2023-04-23 08:54:38 -0700
commit78f7aef9304979d7796dd7d3fc5a2d92d1da0ca6 (patch)
tree03714fea3bc03322e07e77639e02529431536542
parente3b58d8270e8620639105bd0fddb50625b6e37a9 (diff)
downloadgnulib-78f7aef9304979d7796dd7d3fc5a2d92d1da0ca6.tar.gz
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.
-rw-r--r--ChangeLog9
-rw-r--r--build-aux/gcc-warning.spec30
-rw-r--r--doc/manywarnings.texi7
-rw-r--r--m4/manywarnings.m43
4 files changed, 48 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 5246e88037..ff1f6abca3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
2023-04-23 Paul Eggert <eggert@cs.ucla.edu>
+ 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.
+
manywarnings: bring doc up to date
* doc/manywarnings.texi: Bring doc up to date for GCC 12.
diff --git a/build-aux/gcc-warning.spec b/build-aux/gcc-warning.spec
index cbcbc87f9a..09350012ba 100644
--- a/build-aux/gcc-warning.spec
+++ b/build-aux/gcc-warning.spec
@@ -18,25 +18,45 @@
-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
@@ -85,6 +105,7 @@
-Wcast-result D
-Wcatch-value c++
-Wcatch-value=<0,3> c++
+-Wchanges-meaning c++
-Wchar-subscripts enabled by -Wall
-Wcharacter-truncation fortran
-Wchkp deprecated
@@ -95,6 +116,7 @@
-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
@@ -107,6 +129,7 @@
-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++
@@ -126,6 +149,7 @@
-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++
@@ -173,9 +197,11 @@
-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?
@@ -228,6 +254,7 @@
-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
@@ -263,6 +290,7 @@
-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
@@ -318,6 +346,7 @@
-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
@@ -345,6 +374,7 @@
-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
diff --git a/doc/manywarnings.texi b/doc/manywarnings.texi
index 32237dc67f..ea1b758cc0 100644
--- a/doc/manywarnings.texi
+++ b/doc/manywarnings.texi
@@ -80,6 +80,13 @@ The @code{-fanalyzer} option generates many false alarms about
@code{malloc} leaks, which @code{manywarnings} suppresses by also
using @option{-Wno-analyzer-malloc-leak}.
+@item -fstrict-flex-arrays
+The @code{manywarnings} module by default uses GCC's
+@option{-fstrict-flex-arrays} option if available, so that GCC can
+warn about nonportable usage of flexible array members.
+In a few cases this can help GCC generate better code,
+so it is not strictly a warning option.
+
@item -Wsign-compare
GCC and Clang generate too many false alarms with @option{-Wsign-compare},
and we don't recommend that warning. You can disable it by using
diff --git a/m4/manywarnings.m4 b/m4/manywarnings.m4
index f88dcc5f12..1d69116ddb 100644
--- a/m4/manywarnings.m4
+++ b/m4/manywarnings.m4
@@ -109,7 +109,7 @@ AC_DEFUN([gl_MANYWARN_ALL_GCC(C)],
# <(LC_ALL=C gcc --help=warnings | sed -n 's/^ \(-[^ ]*\) .*/\1/p' | sort)
$1=
- for gl_manywarn_item in -fanalyzer \
+ for gl_manywarn_item in -fanalyzer -fstrict-flex-arrays \
-Wall \
-Warith-conversion \
-Wbad-function-cast \
@@ -137,6 +137,7 @@ AC_DEFUN([gl_MANYWARN_ALL_GCC(C)],
-Wpointer-arith \
-Wshadow \
-Wstack-protector \
+ -Wstrict-flex-arrays \
-Wstrict-overflow \
-Wstrict-prototypes \
-Wsuggest-attribute=cold \