Skip to content

Commit 29a08f7

Browse files
author
Andrew Lu
committed
8210988: Improved handling of compiler warnings in the build
Reviewed-by: lucy Backport-of: 09a967a
1 parent 4117953 commit 29a08f7

File tree

6 files changed

+97
-40
lines changed

6 files changed

+97
-40
lines changed

make/autoconf/flags-cflags.m4

Lines changed: 46 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -172,28 +172,53 @@ AC_DEFUN([FLAGS_SETUP_WARNINGS],
172172
DISABLE_WARNING_PREFIX="-wd"
173173
BUILD_CC_DISABLE_WARNING_PREFIX="-wd"
174174
CFLAGS_WARNINGS_ARE_ERRORS="-WX"
175+
176+
WARNINGS_ENABLE_ALL="-W3"
177+
DISABLED_WARNINGS="4800"
175178
;;
179+
176180
solstudio)
177181
DISABLE_WARNING_PREFIX="-erroff="
178-
CFLAGS_WARNINGS_ARE_ERRORS="-errtags -errwarn=%all"
182+
CFLAGS_WARNINGS_ARE_ERRORS="-errwarn=%all"
183+
184+
WARNINGS_ENABLE_ALL_CFLAGS="-v"
185+
WARNINGS_ENABLE_ALL_CXXFLAGS="+w"
186+
187+
DISABLED_WARNINGS_C=""
188+
DISABLED_WARNINGS_CXX=""
179189
;;
190+
180191
gcc)
181192
DISABLE_WARNING_PREFIX="-Wno-"
182193
BUILD_CC_DISABLE_WARNING_PREFIX="-Wno-"
183194
CFLAGS_WARNINGS_ARE_ERRORS="-Werror"
184195
;;
196+
185197
clang)
186198
DISABLE_WARNING_PREFIX="-Wno-"
187199
CFLAGS_WARNINGS_ARE_ERRORS="-Werror"
200+
201+
WARNINGS_ENABLE_ALL="-Wall -Wextra -Wformat=2"
202+
WARNINGS_ENABLE_ADDITIONAL_JVM="-Wpointer-arith -Wsign-compare -Wunused-function -Wundef -Wunused-value -Woverloaded-virtual -Wreorder"
203+
204+
DISABLED_WARNINGS="unused-parameter unused"
188205
;;
206+
189207
xlc)
190208
DISABLE_WARNING_PREFIX="-qsuppress="
191209
CFLAGS_WARNINGS_ARE_ERRORS="-qhalt=w"
210+
211+
# Possibly a better subset than "all" is "lan:trx:ret:zea:cmp:ret"
212+
WARNINGS_ENABLE_ALL="-qinfo=all -qformat=all"
213+
DISABLED_WARNINGS=""
192214
;;
193215
esac
194216
AC_SUBST(DISABLE_WARNING_PREFIX)
195217
AC_SUBST(BUILD_CC_DISABLE_WARNING_PREFIX)
196218
AC_SUBST(CFLAGS_WARNINGS_ARE_ERRORS)
219+
AC_SUBST(DISABLED_WARNINGS)
220+
AC_SUBST(DISABLED_WARNINGS_C)
221+
AC_SUBST(DISABLED_WARNINGS_CXX)
197222
])
198223

199224
AC_DEFUN([FLAGS_SETUP_QUALITY_CHECKS],
@@ -527,18 +552,22 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_HELPER],
527552
TOOLCHAIN_CFLAGS_JDK_CONLY="-fno-strict-aliasing" # technically NOT for CXX
528553
fi
529554
elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
530-
TOOLCHAIN_CFLAGS_JDK="-mt"
531-
TOOLCHAIN_CFLAGS_JDK_CONLY="-xCC -Xa -v -W0,-noglobal" # C only
555+
TOOLCHAIN_FLAGS="-errtags -errfmt"
556+
TOOLCHAIN_CFLAGS="-errshort=tags"
557+
558+
TOOLCHAIN_CFLAGS_JDK="-mt $TOOLCHAIN_FLAGS"
559+
TOOLCHAIN_CFLAGS_JDK_CONLY="-xc99=%none -xCC -Xa -W0,-noglobal $TOOLCHAIN_CFLAGS" # C only
532560
TOOLCHAIN_CFLAGS_JDK_CXXONLY="-features=no%except -norunpath -xnolib" # CXX only
533561
TOOLCHAIN_CFLAGS_JVM="-template=no%extdef -features=no%split_init \
534-
-library=stlport4 -mt -features=no%except"
562+
-library=stlport4 -mt -features=no%except $TOOLCHAIN_FLAGS"
535563
if test "x$DEBUG_LEVEL" = xslowdebug; then
536564
# Previously -g was used instead of -g0 for slowdebug; this is equivalent
537565
# to setting +d.
538566
TOOLCHAIN_CFLAGS_JVM="$TOOLCHAIN_CFLAGS_JVM +d"
539567
fi
540568
541569
elif test "x$TOOLCHAIN_TYPE" = xxlc; then
570+
# Suggested additions: -qsrcmsg to get improved error reporting
542571
# set -qtbtable=full for a better traceback table/better stacks in hs_err when xlc16 is used
543572
TOOLCHAIN_CFLAGS_JDK="-qtbtable=full -qchars=signed -qfullpath -qsaveopt -qstackprotect" # add on both CFLAGS
544573
TOOLCHAIN_CFLAGS_JVM="-qtbtable=full -qtune=balanced \
@@ -550,37 +579,26 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_HELPER],
550579
551580
# CFLAGS WARNINGS STUFF
552581
# Set JVM_CFLAGS warning handling
553-
if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
554-
# COMMON to gcc and clang
555-
WARNING_CFLAGS_JVM="-Wpointer-arith -Wsign-compare -Wunused-function"
556-
if ! HOTSPOT_CHECK_JVM_VARIANT(zero); then
557-
# Non-zero builds have stricter warnings
558-
WARNING_CFLAGS_JVM="$WARNING_CFLAGS_JVM -Wundef -Wformat=2"
559-
fi
560-
561-
fi
562582
if test "x$TOOLCHAIN_TYPE" = xgcc; then
563-
WARNING_CFLAGS_JDK="-Wall -Wextra -Wno-unused -Wno-unused-parameter -Wformat=2"
564-
WARNING_CFLAGS_JVM="$WARNING_CFLAGS_JVM -Wunused-value -Woverloaded-virtual"
583+
WARNING_CFLAGS_JDK="$WARNINGS_ENABLE_ALL"
584+
WARNING_CFLAGS_JVM="$WARNINGS_ENABLE_ALL $WARNINGS_ENABLE_ADDITIONAL_JVM"
565585
566-
if ! HOTSPOT_CHECK_JVM_VARIANT(zero); then
567-
# Non-zero builds have stricter warnings
568-
WARNING_CFLAGS_JVM="$WARNING_CFLAGS_JVM -Wreturn-type"
569-
fi
570586
elif test "x$TOOLCHAIN_TYPE" = xclang; then
571-
WARNING_CFLAGS_JVM="$WARNING_CFLAGS_JVM -Wno-deprecated"
572587
if test "x$OPENJDK_TARGET_OS" = xlinux; then
573-
WARNING_CFLAGS_JVM="$WARNING_CFLAGS_JVM -Wno-sometimes-uninitialized"
574-
WARNING_CFLAGS_JDK="-Wall -Wextra -Wno-unused -Wno-unused-parameter -Wformat=2"
588+
WARNING_CFLAGS_JDK="$WARNINGS_ENABLE_ALL"
589+
else
590+
WARNING_CFLAGS_JDK="" # currently left empty
575591
fi
592+
WARNING_CFLAGS_JVM="$WARNINGS_ENABLE_ALL $WARNINGS_ENABLE_ADDITIONAL_JVM"
593+
576594
elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
577-
WARNING_CFLAGS_JDK_CONLY="-errshort=tags"
578-
WARNING_CFLAGS_JDK_CXXONLY="+w"
579-
WARNING_CFLAGS_JDK="-errtags=yes -errfmt"
595+
WARNING_CFLAGS_JDK_CONLY="$WARNINGS_ENABLE_ALL_CFLAGS"
596+
WARNING_CFLAGS_JDK_CXXONLY="$WARNINGS_ENABLE_ALL_CXXFLAGS"
597+
WARNING_CFLAGS_JVM="" # currently left empty
580598
elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
581-
WARNING_CFLAGS="-W3"
582-
WARNING_CFLAGS_JDK="-wd4800"
583-
WARNING_CFLAGS_JVM="-wd4800"
599+
WARNING_CFLAGS="$WARNINGS_ENABLE_ALL"
600+
elif test "x$TOOLCHAIN_TYPE" = xxlc; then
601+
WARNING_CFLAGS="" # currently left empty
584602
fi
585603
586604
# Set some additional per-OS defines.

make/autoconf/flags-ldflags.m4

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,14 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_HELPER],
137137
fi
138138
fi
139139
140+
# Setup warning flags
141+
if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
142+
LDFLAGS_WARNINGS_ARE_ERRORS="-Wl,-z,fatal-warnings"
143+
else
144+
LDFLAGS_WARNINGS_ARE_ERRORS=""
145+
fi
146+
AC_SUBST(LDFLAGS_WARNINGS_ARE_ERRORS)
147+
140148
# Setup LDFLAGS for linking executables
141149
if test "x$TOOLCHAIN_TYPE" = xgcc; then
142150
EXECUTABLE_LDFLAGS="$EXECUTABLE_LDFLAGS -Wl,--allow-shlib-undefined"

make/autoconf/spec.gmk.in

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -469,6 +469,10 @@ CXX_FLAG_DEPS:=@CXX_FLAG_DEPS@
469469

470470
DISABLE_WARNING_PREFIX := @DISABLE_WARNING_PREFIX@
471471
CFLAGS_WARNINGS_ARE_ERRORS:=@CFLAGS_WARNINGS_ARE_ERRORS@
472+
LDFLAGS_WARNINGS_ARE_ERRORS:=@LDFLAGS_WARNINGS_ARE_ERRORS@
473+
DISABLED_WARNINGS := @DISABLED_WARNINGS@
474+
DISABLED_WARNINGS_C := @DISABLED_WARNINGS_C@
475+
DISABLED_WARNINGS_CXX := @DISABLED_WARNINGS_CXX@
472476

473477
# A global flag (true or false) determining if native warnings are considered errors.
474478
WARNINGS_AS_ERRORS := @WARNINGS_AS_ERRORS@

make/common/NativeCompilation.gmk

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -747,9 +747,13 @@ define SetupNativeCompilationBody
747747
# Pick up disabled warnings, if possible on this platform.
748748
ifneq ($(DISABLE_WARNING_PREFIX), )
749749
$1_EXTRA_CFLAGS += $$(addprefix $(DISABLE_WARNING_PREFIX), \
750+
$$(DISABLED_WARNINGS) \
751+
$$(DISABLED_WARNINGS_C) \
750752
$$($1_DISABLED_WARNINGS_$(TOOLCHAIN_TYPE)) \
751753
$$($1_DISABLED_WARNINGS_C_$(TOOLCHAIN_TYPE)))
752754
$1_EXTRA_CXXFLAGS += $$(addprefix $(DISABLE_WARNING_PREFIX), \
755+
$$(DISABLED_WARNINGS) \
756+
$$(DISABLED_WARNINGS_CXX) \
753757
$$($1_DISABLED_WARNINGS_$(TOOLCHAIN_TYPE)) \
754758
$$($1_DISABLED_WARNINGS_CXX_$(TOOLCHAIN_TYPE)))
755759
endif
@@ -767,6 +771,7 @@ define SetupNativeCompilationBody
767771
ifeq ($$($1_WARNINGS_AS_ERRORS_$(TOOLCHAIN_TYPE)), true)
768772
$1_EXTRA_CFLAGS += $(CFLAGS_WARNINGS_ARE_ERRORS)
769773
$1_EXTRA_CXXFLAGS += $(CFLAGS_WARNINGS_ARE_ERRORS)
774+
$1_EXTRA_LDFLAGS += $(LDFLAGS_WARNINGS_ARE_ERRORS)
770775
endif
771776

772777
ifeq (NONE, $$($1_OPTIMIZATION))
@@ -975,8 +980,8 @@ define SetupNativeCompilationBody
975980

976981
# Pickup extra OPENJDK_TARGET_OS_TYPE and/or OPENJDK_TARGET_OS dependent variables
977982
# for LDFLAGS and LIBS
978-
$1_EXTRA_LDFLAGS := $$($1_LDFLAGS_$(OPENJDK_TARGET_OS_TYPE)) $$($1_LDFLAGS_$(OPENJDK_TARGET_OS))
979-
$1_EXTRA_LIBS := $$($1_LIBS_$(OPENJDK_TARGET_OS_TYPE)) $$($1_LIBS_$(OPENJDK_TARGET_OS))
983+
$1_EXTRA_LDFLAGS += $$($1_LDFLAGS_$(OPENJDK_TARGET_OS_TYPE)) $$($1_LDFLAGS_$(OPENJDK_TARGET_OS))
984+
$1_EXTRA_LIBS += $$($1_LIBS_$(OPENJDK_TARGET_OS_TYPE)) $$($1_LIBS_$(OPENJDK_TARGET_OS))
980985
ifneq ($$($1_REAL_MAPFILE), )
981986
$1_EXTRA_LDFLAGS += $(call SET_SHARED_LIBRARY_MAPFILE,$$($1_REAL_MAPFILE))
982987
endif

make/hotspot/lib/CompileGtest.gmk

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,11 +77,14 @@ $(eval $(call SetupNativeCompilation, BUILD_GTEST_LIBJVM, \
7777
CFLAGS_windows := -EHsc, \
7878
CFLAGS_solaris := -DGTEST_HAS_EXCEPTIONS=0 -library=stlport4 +d, \
7979
CFLAGS_macosx := -DGTEST_OS_MAC=1, \
80-
DISABLED_WARNINGS_gcc := undef stringop-overflow, \
81-
DISABLED_WARNINGS_clang := undef switch format-nonliteral \
82-
tautological-undefined-compare $(BUILD_LIBJVM_DISABLED_WARNINGS_clang), \
83-
DISABLED_WARNINGS_solstudio := identexpected, \
84-
DISABLED_WARNINGS_microsoft := 4146, \
80+
DISABLED_WARNINGS_gcc := $(DISABLED_WARNINGS_gcc) \
81+
undef, \
82+
DISABLED_WARNINGS_clang := $(DISABLED_WARNINGS_clang) \
83+
undef switch format-nonliteral tautological-undefined-compare, \
84+
DISABLED_WARNINGS_solstudio := $(DISABLED_WARNINGS_solstudio) \
85+
identexpected, \
86+
DISABLED_WARNINGS_microsoft := $(DISABLED_WARNINGS_microsoft) \
87+
4146, \
8588
LDFLAGS := $(JVM_LDFLAGS), \
8689
LDFLAGS_solaris := -library=stlport4 $(call SET_SHARED_LIBRARY_ORIGIN), \
8790
LIBS := $(JVM_LIBS), \

make/hotspot/lib/CompileJvm.gmk

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,25 @@ CFLAGS_VM_VERSION := \
8181
-DCPU='"$(OPENJDK_TARGET_CPU_VM_VERSION)"' \
8282
#
8383

84+
################################################################################
85+
# Disabled warnings
86+
87+
DISABLED_WARNINGS_gcc := extra all
88+
ifeq ($(call check-jvm-feature, zero), true)
89+
DISABLED_WARNINGS_gcc += return-type
90+
endif
91+
92+
DISABLED_WARNINGS_clang := extra all tautological-compare deprecated-declarations
93+
94+
DISABLED_WARNINGS_solstudio :=
95+
96+
DISABLED_WARNINGS_xlc := 1540-0216 1540-0198 1540-1090 1540-1639 1540-1088 \
97+
1500-010
98+
99+
DISABLED_WARNINGS_microsoft :=
100+
101+
102+
84103
################################################################################
85104
# Platform specific setup
86105

@@ -117,7 +136,7 @@ ifeq ($(call isTargetOs, solaris), true)
117136
endif
118137
# Exclude warnings in devstudio 12.6
119138
ifeq ($(CC_VERSION_NUMBER), 5.15)
120-
DISABLED_WARNINGS_solstudio := SEC_ARR_OUTSIDE_BOUND_READ \
139+
DISABLED_WARNINGS_solstudio += SEC_ARR_OUTSIDE_BOUND_READ \
121140
SEC_ARR_OUTSIDE_BOUND_WRITE
122141
endif
123142
endif
@@ -162,11 +181,11 @@ $(eval $(call SetupNativeCompilation, BUILD_LIBJVM, \
162181
CFLAGS := $(JVM_CFLAGS), \
163182
abstract_vm_version.cpp_CXXFLAGS := $(CFLAGS_VM_VERSION), \
164183
arguments.cpp_CXXFLAGS := $(CFLAGS_VM_VERSION), \
165-
DISABLED_WARNINGS_clang := tautological-compare, \
184+
DISABLED_WARNINGS_gcc := $(DISABLED_WARNINGS_gcc), \
185+
DISABLED_WARNINGS_clang := $(DISABLED_WARNINGS_clang), \
166186
DISABLED_WARNINGS_solstudio := $(DISABLED_WARNINGS_solstudio), \
167-
DISABLED_WARNINGS_xlc := 1540-0216 1540-0198 1540-1090 1540-1639 \
168-
1540-1088 1500-010, \
169-
DISABLED_WARNINGS_microsoft := 4146, \
187+
DISABLED_WARNINGS_xlc := $(DISABLED_WARNINGS_xlc), \
188+
DISABLED_WARNINGS_microsoft := $(DISABLED_WARNINGS_microsoft) 4146, \
170189
ASFLAGS := $(JVM_ASFLAGS), \
171190
LDFLAGS := $(JVM_LDFLAGS), \
172191
LIBS := $(JVM_LIBS), \

0 commit comments

Comments
 (0)