We REALLY nead a NON-PCH build in JPRT NOW!

Daniel D. Daugherty daniel.daugherty at oracle.com
Wed Apr 22 02:01:43 UTC 2015


Magnus put this comment in the bug report about two weeks ago:

 > Is it possible to compile e.g. product builds with PCH and debug
 > builds without, or vice versa? The impact of not using PCH will be
 > not so great (since it's still used in 50% of the jobs), and we
 > will get automatic testing both with and without PCH.

David H followed with this comment:

 > Certainly possible, but it won't give complete coverage of course
 > (but nothing practical will give complete coverage).
 >
 > Quickest fix for JPRT may be to just disable PCH for the embedded
 > builds: product x86, fastdebug arm, to cover linux and minimal VM.
 > Maybe throw in a couple of Windows builds (one product, one
 > fastdebug) for good measure?

Personally, I like the idea of not adding any more new JPRT targets
and reconfiguring to have fastdebug and/or debug builds run as non-PCH...
It's a much simpler policy to explain:

     If we support PCH builds with a particular toolset then product
     builds default to PCH and non-product builds default to no-PCH.

Dan


On 4/21/15 12:08 PM, Coleen Phillimore wrote:
>
> On 4/20/15, 9:31 PM, David Holmes wrote:
>> On 21/04/2015 10:14 AM, Volker Simonis wrote:
>>> Hi Coleen,
>>>
>>> the default is not to use PCH and I think that's probably OK for most
>>> people. If somebody plays with the include files, he should use the
>>> '--disable-precompiled-headers' configure option.
>>
>> The default depends on platform. For solaris we never use PCH. For 
>> the other platforms I think we always do.
>
> Yes, my motivation with this comment is that instead of adding JPRT 
> targets or more work to do in JPRT is to simply make linux x64 at 
> least default to non-PCH.  It would break less frequently because 
> that's the default and the side benefit is that when you're working 
> and editing a header file, you don't get the whole JVM recompiled. IE. 
> I would prefer if this were the default so I don't have to add yet 
> another option to my configure script.
>
>>
>> Simply switching the default just creates a different problem. 
>> Engineers will use PCH locally and so may encounter issues if PCH has 
>> not been tested at integration time.
>>
>
> It seems that the converse is more likely though.  If something 
> compiles without PCH it's very likely to compile with PCH.
>
> I'd prefer the default changed and not find whether I broke PCH with 
> JPRT.
>
> thanks,
> Coleen
>
>> I plan to fix this in JPRT by making a few configurations non-PCH.
>>
>> David
>> -----
>>
>>> Making this option the default for the JPRT builds only will guard
>>> against the build errors described before while it still allows
>>> everybody to do local builds at full speed.
>>>
>>> Regards,
>>> Volker
>>>
>>> On 4/21/15, Coleen Phillimore <coleen.phillimore at oracle.com> wrote:
>>>>
>>>> Can we just switch the default instead?  Is that a simple makefile 
>>>> change?
>>>> Coleen
>>>>
>>>> On 4/17/15, 6:35 AM, Lindenmaier, Goetz wrote:
>>>>> That would be great!!
>>>>>
>>>>> Thanks David,
>>>>> Goetz.
>>>>>
>>>>> -----Original Message-----
>>>>> From: David Holmes [mailto:david.holmes at oracle.com]
>>>>> Sent: Freitag, 17. April 2015 12:23
>>>>> To: Lindenmaier, Goetz; Volker Simonis; Andrew Dinn
>>>>> Cc: HotSpot Open Source Developers
>>>>> Subject: Re: We REALLY nead a NON-PCH build in JPRT NOW!
>>>>>
>>>>> On 17/04/2015 7:58 PM, Lindenmaier, Goetz wrote:
>>>>>> Hi,
>>>>>>
>>>>>> another occurance of this ...  please, please add a non-pch build to
>>>>>> jprt!
>>>>>> https://bugs.openjdk.java.net/browse/JDK-8078048
>>>>> I will. Unfortunately first I have some no-PCH issues to address. And
>>>>> unfortunately they are not top of my priority list right now. 
>>>>> Hopefully
>>>>> next week sometime.
>>>>>
>>>>> David
>>>>>
>>>>>> Best regards,
>>>>>>      Goetz.
>>>>>>
>>>>>>
>>>>>> -----Original Message-----
>>>>>> From: hotspot-dev [mailto:hotspot-dev-bounces at openjdk.java.net] 
>>>>>> On Behalf
>>>>>> Of Volker Simonis
>>>>>> Sent: Donnerstag, 9. April 2015 11:35
>>>>>> To: Andrew Dinn
>>>>>> Cc: HotSpot Open Source Developers
>>>>>> Subject: Re: We REALLY nead a NON-PCH build in JPRT NOW!
>>>>>>
>>>>>> On Thu, Apr 9, 2015 at 10:10 AM, Andrew Dinn <adinn at redhat.com> 
>>>>>> wrote:
>>>>>>> On 09/04/15 09:02, Erik Joelsson wrote:
>>>>>>>> I think that as long as we claim to support building both with and
>>>>>>>> without PCH, the automatic testing should test both with and 
>>>>>>>> without
>>>>>>>> PCH. By adding one or two build targets, or perhaps change an 
>>>>>>>> existing
>>>>>>>> target, we could increase our test matrix to cover this easily.
>>>>>>> I think this restates Volker's original remarks in redux.
>>>>>>>
>>>>>> No, not at all! I don't necessarily want to test more build
>>>>>> configurations (that's another topic).
>>>>>>
>>>>>> My point is that PCH changes the compilation semantics and can hide
>>>>>> real program errors. That's because with PCHs, every compilation 
>>>>>> unit
>>>>>> sees the full precompiled header database (i.e. all the headers 
>>>>>> which
>>>>>> are included in the "precompiled.hpp" PCH file). So if somebody
>>>>>> forgets to include a dependency X.hpp in A.cpp, A.cpp may still
>>>>>> compile with PCH because it includes the precompiled header file
>>>>>> "precompiled.hpp" which in turn includes X.hpp. But the 
>>>>>> compilation of
>>>>>> A.cpp will fail on platforms/configurations where we do not use
>>>>>> precompiled headers. The two references I gave in my original 
>>>>>> mail are
>>>>>> bugs that resulted from this problem.
>>>>>>
>>>>>> Besides program errors, the use of PCH can also lead to behavioral
>>>>>> changes in the created binary when it comes to inlining. Because of
>>>>>> PCHs some compilation units may be able to inline methods even if 
>>>>>> they
>>>>>> do not explicitly include the files which contain the corresponding
>>>>>> implementations because the implementation files are included in the
>>>>>> PCH file. Without PCHs the compilers will simply emit calls to these
>>>>>> functions (and, depending on the toolchain, emit a warning).
>>>>>>
>>>>>> I'm not familiar with ccache so I can not say if it has similar 
>>>>>> effects.
>>>>>>
>>>>>>> So, given that we do need this (NOW! :-) is anyone able and 
>>>>>>> willing to
>>>>>>> sponsor this?
>>>>>>>
>>>>>> Yes, this question remains to be answered :)
>>>>>>
>>>>>> Regards,
>>>>>> Volker
>>>>>>
>>>>>>> regards,
>>>>>>>
>>>>>>>
>>>>>>> Andrew Dinn
>>>>>>> -----------
>>>>>>>
>>>>
>>>>
>
>
>



More information about the hotspot-dev mailing list