summaryrefslogtreecommitdiffstats
path: root/config
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@lbl.gov>2019-06-23 00:37:18 (GMT)
committerQuincey Koziol <koziol@lbl.gov>2019-06-23 00:37:18 (GMT)
commit60dee604cdf2532c61666cc405b1891658dbdd73 (patch)
tree36796235c2bba802a121865418b6b771f88b12bb /config
parentdf4ec243d4f22b28671f91ad04961cd178fdab70 (diff)
parent17ae90917856e4cbab5a2f1c597197ee98802fc7 (diff)
downloadhdf5-60dee604cdf2532c61666cc405b1891658dbdd73.zip
hdf5-60dee604cdf2532c61666cc405b1891658dbdd73.tar.gz
hdf5-60dee604cdf2532c61666cc405b1891658dbdd73.tar.bz2
Merge pull request #1764 in HDFFV/hdf5 from ~KOZIOL/hdf5:feature/update_gcc_flags to develop
Updated CMake bulids, too. * commit '17ae90917856e4cbab5a2f1c597197ee98802fc7': Update GCC 6 & 7 flags for CMake builds Move -Wnormalized down into GCC 6.x flags Add support for GCC 7.x warnings, update warnhist script to account for them, clean up warnings.
Diffstat (limited to 'config')
-rw-r--r--config/cmake/HDFCompilerFlags.cmake7
-rw-r--r--config/gnu-flags52
2 files changed, 54 insertions, 5 deletions
diff --git a/config/cmake/HDFCompilerFlags.cmake b/config/cmake/HDFCompilerFlags.cmake
index 0a39568..4712f50 100644
--- a/config/cmake/HDFCompilerFlags.cmake
+++ b/config/cmake/HDFCompilerFlags.cmake
@@ -195,7 +195,12 @@ if (NOT MSVC AND CMAKE_COMPILER_IS_GNUCC)
# Append more extra warning flags that only gcc 6.x+ know about
if (CMAKE_C_COMPILER_ID STREQUAL "GNU" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 6.0)
- set (H5_CFLAGS4 "${H5_CFLAGS4} -Wnull-dereference -Wunused-const-variable -Wduplicated-cond -Whsa")
+ set (H5_CFLAGS4 "${H5_CFLAGS4} -Wnull-dereference -Wunused-const-variable -Wduplicated-cond -Whsa -Wnormalized")
+ endif ()
+
+ # Append more extra warning flags that only gcc 7.x+ know about
+ if (CMAKE_C_COMPILER_ID STREQUAL "GNU" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 7.0)
+ set (H5_CFLAGS4 "${H5_CFLAGS4} -Walloc-zero -Walloca -Wduplicated-branches -Wformat-overflow=2 -Wformat-truncation=2 -Wimplicit-fallthrough=5 -Wrestrict")
endif ()
endif ()
diff --git a/config/gnu-flags b/config/gnu-flags
index 7df72c7..c55391d 100644
--- a/config/gnu-flags
+++ b/config/gnu-flags
@@ -117,7 +117,7 @@ case "$cc_vendor-$cc_version" in
H5_CFLAGS="$H5_CFLAGS -Wcast-qual -Wconversion -Wdeclaration-after-statement -Wdisabled-optimization -Wfloat-equal"
H5_CFLAGS="$H5_CFLAGS -Wformat=2 -Winit-self -Winvalid-pch -Wmissing-declarations -Wmissing-include-dirs"
H5_CFLAGS="$H5_CFLAGS -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wpacked -Wpointer-arith"
- H5_CFLAGS="$H5_CFLAGS -Wredundant-decls -Wshadow -Wstrict-prototypes -Wswitch-default -Wswitch-enum"
+ H5_CFLAGS="$H5_CFLAGS -Wredundant-decls -Wshadow -Wstrict-prototypes -Wswitch-enum -Wswitch-default"
H5_CFLAGS="$H5_CFLAGS -Wundef -Wunused-macros -Wunsafe-loop-optimizations -Wwrite-strings"
# Production
@@ -187,10 +187,10 @@ esac
# the information from the previous version and adding modifications to that.
case "$cc_vendor-$cc_version" in
-# When the gcc 7.x release is out, we should check for additional flags to
+# When the gcc 8.x release is out, we should check for additional flags to
# include and break it out into it's own section, like the other versions
# below. -QAK
- gcc-[6789].*)
+ gcc-[789].*)
# Append warning flags that only gcc 4.2+ knows about
# (none, or incorporated in -Wall / -Wextra now)
@@ -227,7 +227,51 @@ case "$cc_vendor-$cc_version" in
H5_CFLAGS="$H5_CFLAGS -Warray-bounds=2 -Wc99-c11-compat"
# Append warning flags that only gcc 6.x+ knows about
- H5_CFLAGS="$H5_CFLAGS -Wnull-dereference -Wunused-const-variable -Wduplicated-cond -Whsa"
+ H5_CFLAGS="$H5_CFLAGS -Wnull-dereference -Wunused-const-variable -Wduplicated-cond -Whsa -Wnormalized"
+
+ # Append warning flags that only gcc 7.x+ knows about
+ DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wstringop-overflow=2"
+ H5_CFLAGS="$H5_CFLAGS -Walloc-zero -Walloca -Wduplicated-branches -Wformat-overflow=2 -Wformat-truncation=2 -Wimplicit-fallthrough=5 -Wrestrict"
+ ;;
+
+ gcc-6*)
+ # Append warning flags that only gcc 4.2+ knows about
+ # (none, or incorporated in -Wall / -Wextra now)
+
+ # Append warning flags that only gcc 4.3+ knows about
+ #
+ # Technically, variable-length arrays are part of the C99 standard, but
+ # we should approach them a bit cautiously... -QAK
+ H5_CFLAGS="$H5_CFLAGS -Wlogical-op -Wlarger-than=2048 -Wvla"
+
+ # Append warning flags that only gcc 4.4+ knows about
+ H5_CFLAGS="$H5_CFLAGS -Wsync-nand -Wframe-larger-than=16384 -Wpacked-bitfield-compat"
+
+ # Append warning flags that only gcc 4.5+ knows about
+ H5_CFLAGS="$H5_CFLAGS -Wstrict-overflow=5 -Wjump-misses-init -Wunsuffixed-float-constants"
+
+ # Append warning flags that only gcc 4.6+ knows about
+ H5_CFLAGS="$H5_CFLAGS -Wdouble-promotion -Wtrampolines"
+ DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wsuggest-attribute=const"
+ NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS -Wno-suggest-attribute=const"
+
+ # Append warning flags that only gcc 4.7+ knows about
+ H5_CFLAGS="$H5_CFLAGS -Wstack-usage=8192 -Wvector-operation-performance"
+ DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wsuggest-attribute=pure -Wsuggest-attribute=noreturn"
+ NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS -Wno-suggest-attribute=pure -Wno-suggest-attribute=noreturn"
+
+ # Append warning flags that only gcc 4.8+ knows about
+ DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wsuggest-attribute=format"
+ NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS -Wno-suggest-attribute=format"
+
+ # Append warning flags that only gcc 4.9+ knows about
+ H5_CFLAGS="$H5_CFLAGS -Wdate-time"
+
+ # Append warning flags that only gcc 5.x+ knows about
+ H5_CFLAGS="$H5_CFLAGS -Warray-bounds=2 -Wc99-c11-compat"
+
+ # Append warning flags that only gcc 6.x+ knows about
+ H5_CFLAGS="$H5_CFLAGS -Wnull-dereference -Wunused-const-variable -Wduplicated-cond -Whsa -Wnormalized"
;;
gcc-5*)