RFR: 8224087: Compile C code for at least C99 Standard compliance
David Holmes
david.holmes at oracle.com
Mon May 20 22:31:23 UTC 2019
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