[OpenJDK 2D-Dev] New warnings in layout code

Omair Majid omajid at redhat.com
Thu Jan 21 21:50:31 UTC 2016


Hi,

* Phil Race <philip.race at oracle.com> [2016-01-21 14:15]:
> I don't think this is a problem in practice as we also have this test ..
> > if (currGlyph < 0 || currGlyph >= glyphStorage.getGlyphCount()) {

But the compiler won't optimize this one away completely, will it? Both
parts of this check can be true or false. The checks that it is warning
about will never be false (because, to the compiler, signed overflow
doesn't exist).

> Arguably the test could be removed but I would prefer to leave it in
> and change the code it so it is actually tested.
>
> -fno-strict-overflow is just too compiler-specific and too far removed
> from the code to be something I would want to rely upon long term.

-fwrapv is another option and seems to be supported by gcc and clang, at
least.

That said, do you think some sort of add-and-check-for-overflow test
would be suitable here? I can take a shot at implementing it, if you
like.

> Interestingly I see the warning in the 8u71 logs using gcc 4.3.0,
> but don't see the warning in RE's JDK 9 build log using gcc 4.9.2
> I don't see it directly suppressed either but perhaps -Wno-type-limits masks
> it ?

On my box, I see the same warnings on jdk9. Please see the attached
partial build log (from `make all LOG=trace`).

Thanks,
Omair

-- 
PGP Key: 66484681 (http://pgp.mit.edu/)
Fingerprint = F072 555B 0A17 3957 4E95  0056 F286 F14F 6648 4681
-------------- next part --------------
(  /usr/bin/g++ -Wall -Wextra -Wno-unused -Wno-unused-parameter -Wformat=2 -pipe -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -fno-omit-frame-pointer -D_LP64=1 -D_LITTLE_ENDIAN -DLINUX -DARCH='"amd64"' -Damd64 -DNDEBUG -I/home/omajid/devel/jdk9-dev/jdk/src/java.base/share/native/include -I/home/omajid/devel/jdk9-dev/jdk/src/java.base/linux/native/include -I/home/omajid/devel/jdk9-dev/jdk/src/java.base/unix/native/include -I/home/omajid/devel/jdk9-dev/jdk/src/java.base/share/native/libjava -I/home/omajid/devel/jdk9-dev/jdk/src/java.base/unix/native/libjava -fPIC -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libfontmanager -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libfontmanager/layout -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libfontmanager/harfbuzz -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ucdn -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/unix/native/libfontmanager -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libawt -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libawt/java2d -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libawt/java2d/loops -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libawt/java2d/pipe -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libawt/awt -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libawt/awt/medialib -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libawt/awt/image -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libawt/awt/image/cvutils -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libawt/awt/image/gif -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/unix/native/libawt -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/unix/native/libawt/java2d -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/unix/native/libawt/java2d/loops -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/unix/native/libawt/awt -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/unix/native/libawt/awt/medialib -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/common -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/common/java2d -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/common/java2d/opengl -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/common/java2d/opengl/J2D_GL -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/common/font -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/common/awt -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/common/awt/utility -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/common/awt/medialib -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/common/awt/debug -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/unix/native/common -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/unix/native/common/java2d -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/unix/native/common/java2d/opengl -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/unix/native/common/java2d/opengl/J2D_GL -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/unix/native/common/java2d/x11 -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/unix/native/common/font -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/unix/native/common/awt -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/unix/native/common/awt/utility -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/unix/native/common/awt/medialib -I/home/omajid/devel/jdk9-dev/build/support/headers/java.desktop -I/home/omajid/devel/jdk9-dev/jdk/src/java.base/linux/native/libjava -I/home/omajid/devel/jdk9-dev/jdk/src/java.base/unix/native/libjava -I/home/omajid/devel/jdk9-dev/jdk/src/java.base/share/native/libjava -DHAVE_OT -DHAVE_FALLBACK -DHAVE_UCDN -DGETPAGESIZE -DHAVE_MPROTECT -DHAVE_PTHREAD -DHAVE_SYSCONF -DHAVE_SYS_MMAN_H -DHAVE_UNISTD_H -DHAVE_INTEL_ATOMIC_PRIMITIVES -I/usr/include/freetype2 -I/usr/include/libpng16 -DLE_STANDALONE -DHEADLESS      -g -Wno-sign-compare -Wno-int-to-pointer-cast -Wno-reorder -Wno-delete-non-virtual-dtor -Wno-type-limits -Wno-missing-field-initializers -O3   -DTHIS_FILE='"IndicRearrangementProcessor2.cpp"' -c -MMD -MF /home/omajid/devel/jdk9-dev/build/support/native/java.desktop/libfontmanager/IndicRearrangementProcessor2.d -o /home/omajid/devel/jdk9-dev/build/support/native/java.desktop/libfontmanager/IndicRearrangementProcessor2.o /home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libfontmanager/layout/IndicRearrangementProcessor2.cpp > >(/usr/bin/tee  /home/omajid/devel/jdk9-dev/build/support/native/java.desktop/libfontmanager/IndicRearrangementProcessor2.o.log) 2> >(/usr/bin/tee  /home/omajid/devel/jdk9-dev/build/support/native/java.desktop/libfontmanager/IndicRearrangementProcessor2.o.log >&2) || (exitcode=$? && /usr/bin/cp  /home/omajid/devel/jdk9-dev/build/support/native/java.desktop/libfontmanager/IndicRearrangementProcessor2.o.log /home/omajid/devel/jdk9-dev/build/make-support/failure-logs/BUILD_LIBFONTMANAGER_IndicRearrangementProcessor2.cpp.log && exit $exitcode) )
Compiling IndicReordering.cpp (for libfontmanager.so)
+ /usr/bin/g++ -Wall -Wextra -Wno-unused -Wno-unused-parameter -Wformat=2 -pipe -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -fno-omit-frame-pointer -D_LP64=1 -D_LITTLE_ENDIAN -DLINUX '-DARCH="amd64"' -Damd64 -DNDEBUG -I/home/omajid/devel/jdk9-dev/jdk/src/java.base/share/native/include -I/home/omajid/devel/jdk9-dev/jdk/src/java.base/linux/native/include -I/home/omajid/devel/jdk9-dev/jdk/src/java.base/unix/native/include -I/home/omajid/devel/jdk9-dev/jdk/src/java.base/share/native/libjava -I/home/omajid/devel/jdk9-dev/jdk/src/java.base/unix/native/libjava -fPIC -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libfontmanager -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libfontmanager/layout -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libfontmanager/harfbuzz -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ucdn -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/unix/native/libfontmanager -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libawt -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libawt/java2d -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libawt/java2d/loops -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libawt/java2d/pipe -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libawt/awt -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libawt/awt/medialib -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libawt/awt/image -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libawt/awt/image/cvutils -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libawt/awt/image/gif -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/unix/native/libawt -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/unix/native/libawt/java2d -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/unix/native/libawt/java2d/loops -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/unix/native/libawt/awt -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/unix/native/libawt/awt/medialib -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/common -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/common/java2d -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/common/java2d/opengl -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/common/java2d/opengl/J2D_GL -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/common/font -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/common/awt -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/common/awt/utility -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/common/awt/medialib -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/common/awt/debug -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/unix/native/common -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/unix/native/common/java2d -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/unix/native/common/java2d/opengl -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/unix/native/common/java2d/opengl/J2D_GL -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/unix/native/common/java2d/x11 -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/unix/native/common/font -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/unix/native/common/awt -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/unix/native/common/awt/utility -I/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/unix/native/common/awt/medialib -I/home/omajid/devel/jdk9-dev/build/support/headers/java.desktop -I/home/omajid/devel/jdk9-dev/jdk/src/java.base/linux/native/libjava -I/home/omajid/devel/jdk9-dev/jdk/src/java.base/unix/native/libjava -I/home/omajid/devel/jdk9-dev/jdk/src/java.base/share/native/libjava -DHAVE_OT -DHAVE_FALLBACK -DHAVE_UCDN -DGETPAGESIZE -DHAVE_MPROTECT -DHAVE_PTHREAD -DHAVE_SYSCONF -DHAVE_SYS_MMAN_H -DHAVE_UNISTD_H -DHAVE_INTEL_ATOMIC_PRIMITIVES -I/usr/include/freetype2 -I/usr/include/libpng16 -DLE_STANDALONE -DHEADLESS -g -Wno-sign-compare -Wno-int-to-pointer-cast -Wno-reorder -Wno-delete-non-virtual-dtor -Wno-type-limits -Wno-missing-field-initializers -O3 '-DTHIS_FILE="IndicRearrangementProcessor2.cpp"' -c -MMD -MF /home/omajid/devel/jdk9-dev/build/support/native/java.desktop/libfontmanager/IndicRearrangementProcessor2.d -o /home/omajid/devel/jdk9-dev/build/support/native/java.desktop/libfontmanager/IndicRearrangementProcessor2.o /home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libfontmanager/layout/IndicRearrangementProcessor2.cpp
++ /usr/bin/tee /home/omajid/devel/jdk9-dev/build/support/native/java.desktop/libfontmanager/IndicRearrangementProcessor2.o.log
++ /usr/bin/tee /home/omajid/devel/jdk9-dev/build/support/native/java.desktop/libfontmanager/IndicRearrangementProcessor2.o.log
/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libfontmanager/layout/IndicRearrangementProcessor.cpp: In member function ‘void IndicRearrangementProcessor::doRearrangementAction(LEGlyphStorage&, IndicRearrangementVerb, LEErrorCode&) const’:
/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libfontmanager/layout/IndicRearrangementProcessor.cpp:119:30: warning: assuming signed overflow does not occur when assuming that (X + c) < X is always false [-Wstrict-overflow]
         if (firstGlyph + 1 < firstGlyph) {
                              ^
/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libfontmanager/layout/IndicRearrangementProcessor.cpp:140:29: warning: assuming signed overflow does not occur when assuming that (X - c) > X is always false [-Wstrict-overflow]
         if (lastGlyph - 1 > lastGlyph) {
                             ^
/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libfontmanager/layout/IndicRearrangementProcessor.cpp:172:31: warning: assuming signed overflow does not occur when assuming that (X + c) < X is always false [-Wstrict-overflow]
         if ((firstGlyph + 2 < firstGlyph) ||
                               ^
/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libfontmanager/layout/IndicRearrangementProcessor.cpp:198:31: warning: assuming signed overflow does not occur when assuming that (X + c) < X is always false [-Wstrict-overflow]
         if ((firstGlyph + 2 < firstGlyph) ||
                               ^
/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libfontmanager/layout/IndicRearrangementProcessor.cpp:224:30: warning: assuming signed overflow does not occur when assuming that (X - c) > X is always false [-Wstrict-overflow]
         if ((lastGlyph - 2 > lastGlyph) ||
                              ^
/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libfontmanager/layout/IndicRearrangementProcessor.cpp:250:30: warning: assuming signed overflow does not occur when assuming that (X - c) > X is always false [-Wstrict-overflow]
         if ((lastGlyph - 2 > lastGlyph) ||
                              ^
/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libfontmanager/layout/IndicRearrangementProcessor.cpp:276:30: warning: assuming signed overflow does not occur when assuming that (X - c) > X is always false [-Wstrict-overflow]
         if ((lastGlyph - 2 > lastGlyph) ||
                              ^
/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libfontmanager/layout/IndicRearrangementProcessor.cpp:306:30: warning: assuming signed overflow does not occur when assuming that (X - c) > X is always false [-Wstrict-overflow]
         if ((lastGlyph - 2 > lastGlyph) ||
                              ^
/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libfontmanager/layout/IndicRearrangementProcessor.cpp:336:31: warning: assuming signed overflow does not occur when assuming that (X + c) < X is always false [-Wstrict-overflow]
         if ((firstGlyph + 2 < firstGlyph) ||
                               ^
/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libfontmanager/layout/IndicRearrangementProcessor.cpp:366:31: warning: assuming signed overflow does not occur when assuming that (X + c) < X is always false [-Wstrict-overflow]
         if ((firstGlyph + 2 < firstGlyph) ||
                               ^
/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libfontmanager/layout/IndicRearrangementProcessor2.cpp: In member function ‘void IndicRearrangementProcessor2::doRearrangementAction(LEGlyphStorage&, IndicRearrangementVerb, LEErrorCode&) const’:
/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libfontmanager/layout/IndicRearrangementProcessor2.cpp:116:30: warning: assuming signed overflow does not occur when assuming that (X + c) < X is always false [-Wstrict-overflow]
         if (firstGlyph + 1 < firstGlyph) {
                              ^
/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libfontmanager/layout/IndicRearrangementProcessor2.cpp:137:29: warning: assuming signed overflow does not occur when assuming that (X - c) > X is always false [-Wstrict-overflow]
         if (lastGlyph - 1 > lastGlyph) {
                             ^
/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libfontmanager/layout/IndicRearrangementProcessor2.cpp:169:31: warning: assuming signed overflow does not occur when assuming that (X + c) < X is always false [-Wstrict-overflow]
         if ((firstGlyph + 2 < firstGlyph) ||
                               ^
/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libfontmanager/layout/IndicRearrangementProcessor2.cpp:195:31: warning: assuming signed overflow does not occur when assuming that (X + c) < X is always false [-Wstrict-overflow]
         if ((firstGlyph + 2 < firstGlyph) ||
                               ^
/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libfontmanager/layout/IndicRearrangementProcessor2.cpp:221:30: warning: assuming signed overflow does not occur when assuming that (X - c) > X is always false [-Wstrict-overflow]
         if ((lastGlyph - 2 > lastGlyph) ||
                              ^
/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libfontmanager/layout/IndicRearrangementProcessor2.cpp:247:30: warning: assuming signed overflow does not occur when assuming that (X - c) > X is always false [-Wstrict-overflow]
         if ((lastGlyph - 2 > lastGlyph) ||
                              ^
/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libfontmanager/layout/IndicRearrangementProcessor2.cpp:273:30: warning: assuming signed overflow does not occur when assuming that (X - c) > X is always false [-Wstrict-overflow]
         if ((lastGlyph - 2 > lastGlyph) ||
                              ^
/usr/bin/sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$//' -e 's/^[	 ]*//' -e '/^$/ d' -e 's/$/ :/'  /home/omajid/devel/jdk9-dev/build/support/native/java.desktop/libfontmanager/IndicLayoutEngine.d > /home/omajid/devel/jdk9-dev/build/support/native/java.desktop/libfontmanager/IndicLayoutEngine.d.targets
/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libfontmanager/layout/IndicRearrangementProcessor2.cpp:303:30: warning: assuming signed overflow does not occur when assuming that (X - c) > X is always false [-Wstrict-overflow]
         if ((lastGlyph - 2 > lastGlyph) ||
                              ^
/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libfontmanager/layout/IndicRearrangementProcessor2.cpp:333:31: warning: assuming signed overflow does not occur when assuming that (X + c) < X is always false [-Wstrict-overflow]
         if ((firstGlyph + 2 < firstGlyph) ||
                               ^
/home/omajid/devel/jdk9-dev/jdk/src/java.desktop/share/native/libfontmanager/layout/IndicRearrangementProcessor2.cpp:363:31: warning: assuming signed overflow does not occur when assuming that (X + c) < X is always false [-Wstrict-overflow]
         if ((firstGlyph + 2 < firstGlyph) ||
                               ^
+ /usr/bin/sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$//' -e 's/^[	 ]*//' -e '/^$/ d' -e 's/$/ :/' /home/omajid/devel/jdk9-dev/build/support/native/java.desktop/libfontmanager/IndicLayoutEngine.d


More information about the 2d-dev mailing list