On 8/29/2013 10:18 PM, David Holmes wrote:
On 29/08/2013 10:01 PM, Lois Foltan wrote:

On 8/29/2013 7:16 AM, David Holmes wrote:
Hi Lois,

Is this still needed:

 142     PCH_FLAG/unsafe.o = $(PCH_FLAG/NO_PCH)

given you no longer use -O0 ?
Hi David,
Yes, I believe so but this might be a cautionary change on my part. I
read the comment to imply that Clang does not support a precompiled
header compiled with an optimization level that is different than the
one used to compile the actual C++ file, this is why I chose to add
unsafe.o.

I read the comment as only applying to a combination of -O0 with -O3. So now the comment is inaccurate as it claims all files are compiled with -O0.

133     # There are some files which don't like precompiled headers
134 # The following files are build with 'OPT_CFLAGS/NOOPT' (-O0) in the opt build. 135 # But Clang doesn't support a precompiled header which was compiled with -O3 136 # to be used in a compilation unit which uses '-O0'. We could also prepare an 137 # extra '-O0' PCH file for the opt build and use it here, but it's probably 138 # not worth the effort as long as only two files need this special handling.

Either the comment or the entry at line 142 need to be changed. (the part about 'two files' is already out of date :( )

Hi David,
Line #142 is necessary. If clang++ compiles unsafe.o with -O1 and tries to include the precompiled header that is compiled by default with -Os, (note that -Os is the current default, not -O3 as the comment indicates), the following compile time error is generated:

error: __OPTIMIZE_SIZE__ predefined macro was enabled in PCH file but is currently disabled

So, the the comment is incorrect in many ways. I have entered https://bugs.openjdk.java.net/browse/JDK-8024050, detailing the issues.

Thanks,
Lois


David
-----

Lois

Thanks,
David

On 29/08/2013 3:56 AM, Lois Foltan wrote:

Please review the updated webrev:
     open webrev at
http://cr.openjdk.java.net/~hseigel/bug_jdk8022407.2/

Bug:
     bug link at https://bugs.openjdk.java.net/browse/JDK-8022407

Summary of fix:

     The JDK 8 build on MacOS, when built with the Xcode 4.6.2 clang++
compiler, exhibited a compiler
     optimization issue when prims/unsafe.cpp was compiled at the
default -Os level. As a work around
     fix, knock the optimization level down down to -O1.

Tests: MacOS: built fastdebug & product images using clang++ (ran JTREG
& vm.quick.testlist)
           built using llvm-g++ to verifyprims/unsafe.cpp remained
compiled at -Os

Thank you, Lois




Reply via email to