The Mac OS X port team plans to use the LLVM-GCC compiler (as Apple's proprietary Java SE 6 does) until the JDK and HotSpot can be compiled completely with the LLVM Clang compiler.
-Os vs. -O3
The Mac OS X port uses the -Os (size) optimization level, instead of -O3 (also as Apple's proprietary Java SE 6 does). On Mac OS X, gcc, llvm-gcc, and clang all provide very good optimizations at -Os without reverting to excessive loop unrolling. Whole system testing has shown that cost of paging in larger binaries and instruction cache misses can outweigh the benefits of -O3.
The Java team's last evaluation of compiling HotSpot with -O3 vs. -Os in late 2010 showed statistically equivalent performance on several long running JVM benchmarks.
Mac OS X requires all stack frames to be 16-byte aligned in both 32 and 64-bit. Assembly stub functions within HotSpot do not natively perform this alignment in i386, so we make the compiler ensure that alignment is done at the call point.
This option works in GCC 4.0, but not in GCC 4.2. LLVM-GCC supports this option in Xcode 3.2.6 and Xcode 4.0.
SVN trunk builds of Clang support this, but no stable builds do.