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

David Holmes david.holmes at oracle.com
Wed May 22 06:38:40 UTC 2019


Hi Thomas,

On 21/05/2019 1:45 pm, Thomas Stüfe wrote:
> Hi David,
> 
> Thank you for doing this, this looks all very good.

Thanks for taking another look.

> I wish though we had a clear whitelist of features to use or blacklist 
> for features to avoid. Most developers do not use Windows as a primary 
> platform, so it will always be a surprise whether Windows breaks in 
> submit tests.

I agree. Unfortunately MS don't even do a good job of documenting their 
supported extensions to C89/90 - AFAICS they don't list for-loop 
declaration expressions.

> I am also (a bit) concerned about C99 features creeping in which would 
> prevent verbatim backporting of patches to older releases. But let’s see 
> if that is really a problem in practice.

Yes lets not try to solve problems that haven't arisen yet. 11u at least 
should be in a position to enforce the same use of C99.

Thanks,
David

> 
> Thanks, Thomas
> 
> 
> On Tue 21. May 2019 at 02:58, David Holmes <david.holmes at oracle.com 
> <mailto:david.holmes at oracle.com>> wrote:
> 
>     Thank you everyone for taking a look at this.
> 
>     Here is version 2:
> 
>     http://cr.openjdk.java.net/~dholmes/8224087/webrev.v2/
> 
>     Changes:
>     - set c99 rather than gnu99
>     - Volker's change for xlc to match gcc and clang
>     - added short note to build doc (can do wiki later)
>     - cosmetic change of name to make variable based on other feedback
>     during the C++14 discussion
> 
>     Thanks,
>     David
> 
>     On 20/05/2019 5:40 pm, David Holmes 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