On 2018-12-12 14:29, Baesken, Matthias wrote:
I'd recommend a separate change to remove the -xc99=%none%. That's
trivial and can be done immediately, to the benefit of everyone. Getting
C++14 working is not happening quickly.
Ok, do you prefer just removing the old setting or setting

https://docs.oracle.com/cd/E37069_01/html/E37074/bjapp.html#OSSCGgnjmw

–std=value  (–std=c99)

?

Best regards, Matthias
Erm, I don't know. :-) No preference, really. But setting -std=c99 is fine, I think.

/Magnus



-----Original Message-----
From: Magnus Ihse Bursie <magnus.ihse.bur...@oracle.com>
Sent: Mittwoch, 12. Dezember 2018 14:22
To: Baesken, Matthias <matthias.baes...@sap.com>; David Holmes
<david.hol...@oracle.com>; Erik Joelsson <erik.joels...@oracle.com>;
'build-dev@openjdk.java.net' <build-dev@openjdk.java.net>; Kim Barrett
<kim.barr...@oracle.com>
Subject: Re: disabled c99 in Solaris builds

On 2018-12-12 09:24, Baesken, Matthias wrote:
FWIW, in my in-development patch set for JEP 347
(https://bugs.openjdk.java.net/browse/JDK-8208089)

the -xc99=%none% option has been removed and -std=c99 added (for C
code). (C++14 includes C99 by reference, so I made that change for
consistency in case there were any ABI differences.)

Hello Kim , do you have an estimation when your patch will be in  ?

Or would you suggest to do a separate change and bring in into  jdk/jdk
(and  jdk12) already?
I'd recommend a separate change to remove the -xc99=%none%. That's
trivial and can be done immediately, to the benefit of everyone. Getting
C++14 working is not happening quickly.

/Magnus
Best regards, Matthias


-----Original Message-----
From: David Holmes <david.hol...@oracle.com>
Sent: Dienstag, 11. Dezember 2018 23:16
To: Erik Joelsson <erik.joels...@oracle.com>; Baesken, Matthias
<matthias.baes...@sap.com>; 'build-dev@openjdk.java.net' <build-
d...@openjdk.java.net>
Subject: Re: disabled c99 in Solaris builds

On 12/12/2018 3:27 am, Erik Joelsson wrote:
Hello,

I do not know why this flag was introduced, but it has been there for a
long time. In JDK7 it's listed in jdk/make/common/Defs-solaris.gmk:

#       -xc99=%none     Do NOT allow for c99 extensions to be used.
#                       e.g. declarations must precede statements

and was there since the first mercurial change.
I can reasonably imagine that this was added to prevent introducing
shared code, developed on Solaris, that would not compile on Windows.
But those days are long gone.

I was bitten by this just this week when an enum declaration compiled
fine everywhere but Solaris!

I personally wouldn't mind ditching it.
+1

David

/Erik

On 2018-12-11 08:17, Baesken, Matthias wrote:
Hello , it  seems that currently the Solaris  Oracle Studio Build
environment is the only one  that explicitly
forbids C99 C code  by setting  -xc99=%none .
The current Linux/Mac/AIX/Windows build envs had no issues with the
coding.

For example I was running into an error with the C variable
declaration order issue (small example below) today in my coding.
Is this still a wanted behavior ? What was the reason behind setting
-xc99=%none , and is  the reason  still valid ?
I remember we had issues with C99 compatibility back then when
VS2010
was used on Windows, but I think these  days we use VS2013+, is this
correct ?

The example program  mixes declarations and "other statements" ,
which needs C99,  I compile with Oracle Studio 12u4 .

/compiler/SS12u4-Oct2017/SUNWspro/bin/cc  vardecl.c -o vardecl

No settings -> works nicely


- with C99 disabled as OpenJDK does :
----------------------------------------------------------

/compiler/SS12u4-Oct2017/SUNWspro/bin/cc -xc99=%none   vardecl.c -
o
vardecl
"vardecl.c", line 8: warning: declaration can not follow a statement


- with C99 disabled + errwarn as OpenJDK does :
------------------------------------------------------------------------

/compiler/SS12u4-Oct2017/SUNWspro/bin/cc -xc99=%none  -
errwarn=%all
vardecl.c -o vardecl
"vardecl.c", line 8: declaration can not follow a statement
cc: acomp failed for vardecl.c

example program :
---------------------------------------

bash-3.2$ more vardecl.c
#include <stdio.h>

int main(void) {
     int a = 0;
     printf("a: %d \n", a);

     int b = 1;
     printf("b: %d \n", b);
     return 0;
}


Best regards, Matthias

Reply via email to