RFR: JDK-8074796 Disabling warnings on clang triggers compiler bug for libunpack
Magnus Ihse Bursie
magnus.ihse.bursie at oracle.com
Thu Mar 12 15:04:17 UTC 2015
With JDK-8074096, some warnings produced by libunpack was silenced.
However, it turned out that the version of clang shipped with Xcode 5.1
has some weird behavior, which I would classify as a compiler bug. The
generated output differs markedly, if -Wno-foo is present on the command
line. Enough to trigger a failure in an Oracle-internal test of libunpack.
Removing the disabled warnings restore the previous behaviour.
While I've spent too much time on this already, I have not been able to
pinpoint exactly what triggers this behavior. It seems that all files in
libunpack are affected, but no other libs. (However there are also some
minor changes in ./java.desktop/libawt_lwawt/OGLPaints.o
./java.desktop/liblcms/cmsps2.o
./java.desktop/libmlib_image/mlib_ImageColorTrue2Index.o which there
really should not be.) And it only affects libunpack, not the unpack200
exe which shares part of the code. I have no explanation for this.
The simple solution at this point is to back out the warning changes for
clang. There is already a fix on the way to resolve the root cause of
this failures. (And yes, I tried running that patch. It did indeed
remove the warnings. But when running with the -Wno-foo flags, clang
*still* generated broken code.)
Bug: https://bugs.openjdk.java.net/browse/JDK-8074796
Patch inline:
diff --git a/make/lib/Lib-jdk.pack200.gmk b/make/lib/Lib-jdk.pack200.gmk
--- a/make/lib/Lib-jdk.pack200.gmk
+++ b/make/lib/Lib-jdk.pack200.gmk
@@ -42,7 +42,6 @@
CFLAGS_release := -DPRODUCT, \
DISABLED_WARNINGS_gcc := conversion-null sign-compare
format-security \
format-nonliteral parentheses, \
- DISABLED_WARNINGS_clang := bool-conversion format-security, \
DISABLED_WARNINGS_solstudio := truncwarn, \
DISABLED_WARNINGS_microsoft := 4267 4018, \
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libunpack/mapfile-vers, \
/Magnus
More information about the build-dev
mailing list