Hi,

my claim was based on the warnings which we were getting when we just 
introduced code coverage builds in JDK 9, e.g. 8130790[1] (clobbered warning in 
libt2k). these warnings haven't been seen w/o code coverage enabled, and 
enabling coverage changes code path, so I don't think we should care much about 
these warnings.

I ain't saying that Leonid's fixes are wrong, I definitely support his changes 
in macroAssembler_x86 and genCollectedHeap (can't comment on splashscreen_png.c 
as I don't really understand what gcc complains there), I'm saying that b/c 
coverage-enabled builds aren't built often enough and warnings from these 
builds will always be low-priority bugs, I believe that such instrumented must 
be produced w/ warnings-as-errors disabled.

[1] https://bugs.openjdk.java.net/browse/JDK-8130790

Thanks,
-- Igor


> On Aug 30, 2018, at 6:26 AM, Erik Joelsson <erik.joels...@oracle.com> wrote:
> 
> Hello,
> 
> On 2018-08-30 02:22, Magnus Ihse Bursie wrote:
>> 
>> 
>> On 2018-08-24 00:44, Igor Ignatev wrote:
>>> Hi Leonid,
>>> 
>>> We have never supported native code coverage builds with warnings enabled 
>>> as errors. There are bugs in gcc which cause false positive warnings, so it 
>>> was decided to ignore all warnings from instrumented builds. It’d be much 
>>> better and reliable to fix makefiles to always use 
>>> ‘disable-warning-as-errors’ when ‘enable-native-coverage’ is used. It 
>>> should be pretty straightforward to do.
>> I disagree.
>> 
>> While it is simple to change the build to disable warnings as error when 
>> building with code coverage, I think hard-coding this into the build system 
>> is a step backwards :-( and not something I want to support.
>> 
> I shared your opinion at first while discussing this offline with Leonid. 
> What changed my mind was the claim that the warnings cannot be truly trusted 
> when GCC is generating code coverage data. If that is true, then having 
> warnings as errors turned on then serves no purpose. The majority of builds 
> will be without code coverage enabled, so we will still get ample protection 
> against warnings in the code.
>> The code changes suggested by Leonid seems trivial and benign, and helps 
>> readability, even apart from fixing compiler warnings.
>> 
>> If this is deemed unacceptable, it's better to disable those few warnings 
>> specifically, for the files/libraries they occur in.
>> 
> If the claim on the warnings produced by GCC while generating code coverage 
> is false, then I certainly agree that the warnings should be fixed instead.
> 
> /Erik
>> /Magnus
>> 
>> 
>>> 
>>> cc’ing build alias.
>>> 
>>> Cheers,
>>> — Igor
>>> 
>>>> On Aug 23, 2018, at 2:37 PM, Vladimir Kozlov <vladimir.koz...@oracle.com> 
>>>> wrote:
>>>> 
>>>> macroassembler changes are good.
>>>> 
>>>> Thanks,
>>>> Vladimir
>>>> 
>>>>> On 8/23/18 1:51 PM, Leonid Mesnik wrote:
>>>>> Hi
>>>>> Could you please review following fix which fix code so gcc doesn't 
>>>>> complain when JDK is build with enabled native code coverage.
>>>>> webrev: http://cr.openjdk.java.net/~lmesnik/8209520/webrev.00/ 
>>>>> <http://cr.openjdk.java.net/%7Elmesnik/8209520/webrev.00/>
>>>>> bug: https://bugs.openjdk.java.net/browse/JDK-8209520
>>>>> These warning appeared because of change optimization settings used for 
>>>>> getting code coverage.
>>>>> 1) src/hotspot/cpu/x86/macroAssembler_x86.cpp, 
>>>>> src/hotspot/share/gc/shared/genCollectedHeap.cpp
>>>>> gcc complained about uninitialized variables, like
>>>>> * For target hotspot_variant-server_libjvm_objs_macroAssembler_x86.o:
>>>>> /home/lmesnik/ws/jdk-8209520/open/src/hotspot/cpu/x86/macroAssembler_x86.cpp:
>>>>>  In member function 'void ControlWord::print() const':
>>>>> /home/lmesnik/ws/jdk-8209520/open/src/hotspot/cpu/x86/macroAssembler_x86.cpp:5769:11:
>>>>>  error: 'pc' may be used uninitialized in this function 
>>>>> [-Werror=maybe-uninitialized]
>>>>>       printf("%04x  masks = %s, %s, %s", _value & 0xFFFF, f, rc, pc);
>>>>> ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>>> /home/lmesnik/ws/jdk-8209520/open/src/hotspot/cpu/x86/macroAssembler_x86.cpp:5769:11:
>>>>>  error: 'rc' may be used uninitialized in this function 
>>>>> [-Werror=maybe-uninitialized]
>>>>> So I just fixed codepath to show more explicitly that variables are 
>>>>> initialized before usage.
>>>>> 2) src/java.desktop/share/native/libsplashscreen/splashscreen_png.c:
>>>>> The changes to prevent waning about clobbering in splashscreen_png.c are 
>>>>> similar to fix in:
>>>>> 1. JDK-8080695 <https://bugs.openjdk.java.net/browse/JDK-8080695>
>>>>>     splashscreen_png.c compile error with gcc 4.9.2
>>>>> The another approach would be to fix build to ignore these warnings for 
>>>>> code coverage build. While I think it makes build system even more 
>>>>> complicated.
>>>>> Leonid
>> 
> 

Reply via email to