OpenJDK and gcc options on Linux

Henri Gomez henri.gomez at gmail.com
Tue Aug 28 09:45:51 UTC 2012


Hi to all,

I'm doing a POC with OpenJDK build (7 and highers) for various Linux
distributions, CentOS/RHEL, OpenSuse/SLES.

I'm wondering what gcc/g++ options your using on Linux to get best
performance available ?

>From logs, it seems more than basic by default :

g++ -DLINUX -D_GNU_SOURCE -DIA32
-I/home/cijenka/workspace/openjdk8-standard-build/noarch/opensuse12-i386-builder/hotspot/src/share/vm/prims
-I/home/cijenka/workspace/openjdk8-standard-build/noarch/opensuse12-i386-builder/hotspot/src/share/vm
-I/home/cijenka/workspace/openjdk8-standard-build/noarch/opensuse12-i386-builder/hotspot/src/share/vm/precompiled
-I/home/cijenka/workspace/openjdk8-standard-build/noarch/opensuse12-i386-builder/hotspot/src/cpu/x86/vm
-I/home/cijenka/workspace/openjdk8-standard-build/noarch/opensuse12-i386-builder/hotspot/src/os_cpu/linux_x86/vm
-I/home/cijenka/workspace/openjdk8-standard-build/noarch/opensuse12-i386-builder/hotspot/src/os/linux/vm
-I/home/cijenka/workspace/openjdk8-standard-build/noarch/opensuse12-i386-builder/hotspot/src/os/posix/vm
-I/home/cijenka/workspace/openjdk8-standard-build/noarch/opensuse12-i386-builder/hotspot/src/share/vm/adlc
-I../generated -DASSERT -DTARGET_OS_FAMILY_linux -DTARGET_ARCH_x86
-DTARGET_ARCH_MODEL_x86_32 -DTARGET_OS_ARCH_linux_x86
-DTARGET_OS_ARCH_MODEL_linux_x86_32 -DTARGET_COMPILER_gcc -DCOMPILER2
-DCOMPILER1  -fno-rtti -fno-exceptions -D_REENTRANT -fcheck-new
-fvisibility=hidden -m32 -march=i586 -pipe -Werror -g -c -o
../generated/adfiles/archDesc.o
/home/cijenka/workspace/openjdk8-standard-build/noarch/opensuse12-i386-builder/hotspot/src/share/vm/adlc/archDesc.cpp

...

/usr/bin/gcc  -g -O2   -fno-strict-aliasing -fPIC -W -Wall
-Wno-unused -Wno-parentheses -fno-omit-frame-pointer -D_LITTLE_ENDIAN
 -DNDEBUG -DARCH='"i586"' -Di586 -DLINUX -DRELEASE='"1.8.0-b53"'
-D_LARGEFILE64_SOURCE -D_GNU_SOURCE -D_REENTRANT -I.
-I/home/cijenka/workspace/openjdk8-standard-build/noarch/opensuse12-i386-builder/build/linux-i586/tmp/java/verify/CClassHeaders
-I../../../src/solaris/javavm/export
-I../../../src/share/javavm/export     -c -o
/home/cijenka/workspace/openjdk8-standard-build/noarch/opensuse12-i386-builder/build/linux-i586/tmp/java/verify/obj/check_code.o
 ../../../src/share/native/common/check_code.c
/usr/bin/gcc  -g -O2   -fno-strict-aliasing -fPIC -W -Wall
-Wno-unused -Wno-parentheses -fno-omit-frame-pointer -D_LITTLE_ENDIAN
 -DNDEBUG -DARCH='"i586"' -Di586 -DLINUX -DRELEASE='"1.8.0-b53"'
-D_LARGEFILE64_SOURCE -D_GNU_SOURCE -D_REENTRANT -I.
-I/home/cijenka/workspace/openjdk8-standard-build/noarch/opensuse12-i386-builder/build/linux-i586/tmp/java/verify/CClassHeaders
-I../../../src/solaris/javavm/export
-I../../../src/share/javavm/export     -c -o
/home/cijenka/workspace/openjdk8-standard-build/noarch/opensuse12-i386-builder/build/linux-i586/tmp/java/verify/obj/check_format.o
 ../../../src/share/native/common/check_format.c
make[5]: Leaving directory
`/home/cijenka/workspace/openjdk8-standard-build/noarch/opensuse12-i386-builder/jdk/make/java/verify'


On OSX, much more gcc options are in use :

/Applications/Xcode.app/Contents/Developer/usr/bin/llvm-gcc  -Os
-fno-strict-aliasing -fPIC -W -Wall  -Wno-unused -Wno-parentheses
-pipe -m64 -fno-omit-frame-pointer -D_LITTLE_ENDIAN
-F/System/Library/Frameworks/JavaVM.framework/Frameworks
-F/System/Library/Frameworks/ApplicationServices.framework/Frameworks
-DNDEBUG -DARCH='"x86_64"' -Dx86_64 -D_ALLBSD_SOURCE
-DRELEASE='"1.8.0-b53"' -D_LARGEFILE64_SOURCE -D_GNU_SOURCE
-D_REENTRANT -DMACOSX -D_LP64=1 -I.
-I/Users/henri/Documents/jenkins/data/jobs/openjdk-jdk8-jdk8/workspace/build/macosx-x86_64/tmp/java/verify/CClassHeaders
-I../../../src/solaris/javavm/export
-I../../../src/share/javavm/export     -c -o
/Users/henri/Documents/jenkins/data/jobs/openjdk-jdk8-jdk8/workspace/build/macosx-x86_64/tmp/java/verify/obj64/check_format.o
 ../../../src/share/native/common/check_format.c

Cheers



More information about the discuss mailing list