RFR: 8224087: Compile C code for at least C99 Standard compliance

Erik Joelsson erik.joelsson at oracle.com
Mon May 20 22:40:18 UTC 2019


That sounds good to me. I missed that distinction before, but pure c99 
does sound better.

/Erik

On 2019-05-20 15:31, David Holmes wrote:
> Hi Volker,
>
> Thanks for the xlc update - I will incorporate that.
>
> It has been suggested that we actually set c99 rather than gnu99 to 
> avoid any GNU extensions creeping in. Does anyone have any concerns 
> with doing that?
>
> Thanks,
> David
>
> On 21/05/2019 12:05 am, Volker Simonis wrote:
>> Hi David,
>>
>> thanks for considering AIX in your change.
>>
>> With OpenJDK 13 we've moved to XLC 16 which has a new Clang based
>> frontend. The "ucs" feature-suboption [1] you're using in your change
>> is only supported in the old, xlc compiler but not in the new xlclang
>> any more [2]. However, the good news is that the new xlclang now
>> supports the same "-std=gn99" option like gcc and clang, so you could
>> easily handle the xlc case now together with gcc and clang as shown in
>> this webrev:
>>
>> http://cr.openjdk.java.net/~simonis/webrevs/2019/8224087/
>>
>> Otherwise, your change looks good!
>>
>> Please let me know once you've pushed it. I opened "8224214: [AIX]
>> Remove support for legacy xlc compiler" [3] for further cleannups
>> because we still set some "-qlanglvl" options for C++ which aren't
>> supported by the new compiler either.
>>
>> Best regards,
>> Volker
>>
>> [1] 
>> https://www.ibm.com/support/knowledgecenter/SSGH3R_12.1.0/com.ibm.xlcpp121.aix.doc/compiler_ref/opt_langlvl.html
>> [2] 
>> https://www.ibm.com/support/knowledgecenter/SSGH3R_16.1.0/com.ibm.xlcpp161.aix.doc/compiler_ref/opt_langlvl_aix.html
>>
>>
>> On Mon, May 20, 2019 at 9:40 AM David Holmes 
>> <david.holmes at oracle.com> wrote:
>>>
>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8224087
>>> webrev: http://cr.openjdk.java.net/~dholmes/8224087/webrev/
>>>
>>> The need to remove a for-loop declaration expression to appease gcc 4.8
>>> annoyed me enough to investigate setting C99 as our minimum allow
>>> C-language level when compiling. It turned out to be a lot more complex
>>> a situation than I thought due to toolchain quirks. See lots of details
>>> in the bug report.
>>>
>>> To summarise the changes:
>>> - gcc: force to -std=gnu99
>>> - clang force to -std=gnu99
>>> - Solaris studio - no effective change
>>> - Visual Studio - no change
>>> - xlc - no effective change (but we use the explicit flag rather than
>>> accepting it as default)
>>>
>>> I've checked how this works with all the toolchains except xlc as I 
>>> have
>>> no access to that. Some assistance from someone who can verify the
>>> correctness on xlc would be appreciated.
>>>
>>> Thanks,
>>> David



More information about the build-dev mailing list