RFR (M): Enable HotSpot build with Clang

Christian Thalinger christian.thalinger at oracle.com
Fri May 31 10:47:38 PDT 2013


On May 31, 2013, at 12:41 AM, David Holmes <david.holmes at oracle.com> wrote:

> I think this is mainly targetted at Volker but ...
> 
> On 31/05/2013 4:32 AM, Christian Thalinger wrote:
>>> Here is what I have after merging in your new changes:
>>> 
>>> http://cr.openjdk.java.net/~twisti/8015252/webrev/
>>> 
>>> I see two problems:
>>> 
>>> 1)  It's not possible to turn off precompiled headers because of this:
>>> 
>>> + ifeq ($(USE_CLANG), true)
>>> +   # clang has precompiled headers support by default, but the user can switch
>>> +   # it off by using 'USE_PRECOMPILED_HEADER=0' on the compile command line.
>>> +   ifdef LP64
>>> +     USE_PRECOMPILED_HEADER=1
>>> +   else
>> 
>> Let me rephrase that:  at least not with an environment variable.
> 
> In this block:
> 
> ! ifeq ($(USE_CLANG), true)
> !   # clang has precompiled headers support by default, but the user can switch
> !   # it off by using 'USE_PRECOMPILED_HEADER=0' on the compile command line.
> !   ifdef LP64
> !     USE_PRECOMPILED_HEADER=1
> !   else
> !     # We don't support precompiled headers on 32-bit builds because there some files are
> !     # compiled with -fPIC while others are compiled without (see 'NONPIC_OBJ_FILES' rules.make)
> !     # Clang produces an error if the PCH file was comiled with other options than the actual compilation unit.
> !     USE_PRECOMPILED_HEADER=0
> !   endif
> 
> I think the LP64 case should be guarded by "ifeq ($(USE_PRECOMPILED_HEADERS),)".

Yes, will change that.

> 
> The comment "on the compile command line" should be "on the make command line" I think.

I removed the comment since with the above guard it works with either.

> 
> Typo: comiled

Fixed.

> 
> David
> -----
> 
>> -- Chris
>> 
>>> 
>>> 2)  If I compile with clang on Mac and run the compiler regression tests a lot of them fail but they work with a debug VM.  So it seems that one of the files is broken with optimization on (-Os or -O3; -O0 is okay).

I had some time yesterday to figure which file it is:  opto/loopTransform.cpp.  Compiling this one with NO_OPT makes everything to work.

Here are some build time numbers for my MacBook Pro:

debug:
------

llvm-g++:

real	2m28.831s
user	12m58.277s
sys	2m6.650s

clang:

real	1m28.552s
user	8m4.760s
sys	0m56.263s

product:
--------

llvm-g++:

real	2m16.939s
user	12m32.473s
sys	1m47.061s

clang:

real	1m35.744s
user	8m50.101s
sys	0m53.294s

I think I know which I'm going to use… :-)

-- Chris

>>> 
>>> Do you have any problems on Linux?
>>> 
>>> -- Chris
>>> 
>>>> 
>>>>> 
>>>>> David
>>>>> -----
>>>>> 
>>>>>> Please notice that I won't be in the office until the 3rd of June.
>>>>>> Should you have any further change requests please feel free to edit the
>>>>>> patch yourself if you like.
>>>>>> 
>>>>>> Regards,
>>>>>> Volker
>>>>>> 
>>>>>>  -- Chris
>>>>>> 
>>>>>>>      -- Chris
>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>>> But you can say the exact same thing about the Solaris
>>>>>>>>          gcc support.
>>>>>>>> 
>>>>>>>>          Btw. I just trying to resurrect this.
>>>>>>>> 
>>>>>>>>          -- Chris
>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> David
>>>>>>>>> -----
>>>>>>>>> 
>>>>>>>>>> Once it's in we could start with the JDK forest and
>>>>>>>>          the configure part
>>>>>>>>>> in the base repository. That would require two extra
>>>>>>>>          change sets anyway.
>>>>>>>>>> The HotSpot build currently isn't very
>>>>>>>>          configure-agnostic anyway and
>>>>>>>>>> once the other parts have been completed, configure
>>>>>>>>          could just pass
>>>>>>>>>> USE_CLANG=true (plus perhaps some extra variables in
>>>>>>>>          the case we have
>>>>>>>>>> more than one clang version on the system) to the
>>>>>>>>          HotSpot build and
>>>>>>>>>> everything should work.
>>>>>>>>>> As a last step we would have to test on Mac as well.
>>>>>>>>          I currently don't
>>>>>>>>>> have one at hand, but sponsors are always welcome:)
>>>>>>>>>> 
>>>>>>>>>> Volker
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>>  David H.
>>>>>>>>>> 
>>>>>>>>>>      -- Chris
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>>          David
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>>> 
>>>> 
>>> 
>> 



More information about the hotspot-runtime-dev mailing list