I'm a little nervous about needing to specify per-compiler flags just to get 
basic compilation of the code (per-compiler optimization flags are a different 
thing).

I suppose we could use the Autoconf AC_PROG_CC_C99 macro to try to find out the 
right flags; I *assume* that it will handle all the compilers we care about (it 
sets ac_cv_prog_cc_c99 to "no" if it can't find it).

See http://www.gnu.org/software/hello/manual/autoconf/C-Compiler.html (you have 
to scroll down a bit to see AC_PROG_CC_C99).

Nathan -- do you want to try this AC macro in the top-level configure.ac and 
see what happens?


On Jan 20, 2011, at 6:14 PM, Nathan Hjelm wrote:

> Yeah, it seems that if the standard is not specified gcc backs off to gnu89 
> (c90 + some of c99). I have tested the following compilers so far:
> 
> gcc       : ok by default, not ok with -pedantic unless -std=c99 is specified
> icc       : ok without any flags, strangely ok with -no-c99 (probably 
> supported by intel c89 extensions?)
> pgi       : ok with or without -c99, not so much with -c89
> cray      : ok by default, not ok with -hnoc99
> pathscale : same as gcc
> 
> Microsoft's compiler is the likely going to be the compiler that is going to 
> have problems with this. They implemented some of c99 but not all of it.
> 
> -Nathan
> 
> On Thu, 20 Jan 2011, Paul H. Hargrove wrote:
> 
>> This is because gcc is defaulting to -std=c90.  I strongly suspect that 
>> adding -std=c99 to the CFLAGS eliminates George's warnings.  However, one 
>> may need to hunt down equivalent dialect flags for other compilers too.
>> 
>> -Paul
>> 
>> George Bosilca wrote:
>>> same type of warnings with gcc-4.3.3
>>> 
>>>  george.
>>> On Jan 20, 2011, at 15:21 , George Bosilca wrote:
>>> 
>>>> Even before getting into the Oracle compiler, a fully compliant C99 
>>>> compiler such as gcc 4.2.1 complains a lot about the new code. Here is 
>>>> what I get:
>>>> ../../../../../ompi/orte/mca/debugger/dummy/dummy_component.c:25: warning: 
>>>> ISO C90 forbids specifying subobject to initialize
>>>> ../../../../../ompi/orte/mca/debugger/dummy/dummy_component.c:28: warning: 
>>>> ISO C90 forbids specifying subobject to initialize
>>>> ../../../../../ompi/orte/mca/debugger/dummy/dummy_component.c:29: warning: 
>>>> ISO C90 forbids specifying subobject to initialize
>>>> ../../../../../ompi/orte/mca/debugger/dummy/dummy_component.c:30: warning: 
>>>> ISO C90 forbids specifying subobject to initialize
>>>> ../../../../../ompi/orte/mca/debugger/dummy/dummy_component.c:31: warning: 
>>>> ISO C90 forbids specifying subobject to initialize
>>>> ../../../../../ompi/orte/mca/debugger/dummy/dummy_component.c:33: warning: 
>>>> ISO C90 forbids specifying subobject to initialize
>>>> ../../../../../ompi/orte/mca/debugger/dummy/dummy_component.c:34: warning: 
>>>> ISO C90 forbids specifying subobject to initialize
>>>> ../../../../../ompi/orte/mca/debugger/dummy/dummy_component.c:35: warning: 
>>>> ISO C90 forbids specifying subobject to initialize
>>>> ../../../../../ompi/orte/mca/debugger/dummy/dummy_component.c:37: warning: 
>>>> ISO C90 forbids specifying subobject to initialize
>>>> ../../../../../ompi/orte/mca/debugger/dummy/dummy_component.c:39: warning: 
>>>> ISO C90 forbids specifying subobject to initialize
>>>> ../../../../../ompi/orte/mca/debugger/dummy/dummy_component.c: In function 
>>>> 'component_open':
>>>> ../../../../../ompi/orte/mca/debugger/dummy/dummy_component.c:45: warning: 
>>>> unused variable 'c'
>>>> ../../../../../ompi/orte/mca/debugger/dummy/dummy.c:67: warning: ISO C90 
>>>> forbids specifying subobject to initialize
>>>> ../../../../../ompi/orte/mca/debugger/dummy/dummy.c:68: warning: ISO C90 
>>>> forbids specifying subobject to initialize
>>>> ../../../../../ompi/orte/mca/debugger/dummy/dummy.c:69: warning: ISO C90 
>>>> forbids specifying subobject to initialize
>>>> ../../../../../ompi/orte/mca/debugger/dummy/dummy.c:70: warning: ISO C90 
>>>> forbids specifying subobject to initialize
>>>> 
>>>> george.
>>>> On Jan 19, 2011, at 20:36 , Terry Dontje wrote:
>>>> 
>>>>> Hopefully we'll find out tomorrow but I think I vaguely remember an issue 
>>>>> with the Studio compilers and this type of initialization style.
>>>>> --td
>>>>> On 01/19/2011 05:22 PM, Nathan Hjelm wrote:
>>>>>> Done. I added the module orte/mca/debugger/dummy and I will remove it 
>>>>>> tomorrow. -Nathan HPC-3, LANL On Wed, 19 Jan 2011, Jeff Squyres wrote:
>>>>>>> +1 on Ralph and George's comments. Want to make a dummy component 
>>>>>>> somewhere that uses this kind of initialization and see what happens?  
>>>>>>> Put a test for the C99 initialization style in configure.m4 to see if 
>>>>>>> it works or not; MTT will then check this for all the compilers that we 
>>>>>>> care about. On Jan 19, 2011, at 3:58 PM, Ralph Castain wrote:
>>>>>>>> I believe the majority of structs used in OMPI are actually declared 
>>>>>>>> to be opal objects of some           flavor, so I'm not sure how much 
>>>>>>>> this will actually accomplish. Other than that, I have no real 
>>>>>>>> objection - either way works fine for me. On Jan 19, 2011, at 12:29 
>>>>>>>> PM, George Bosilca wrote:
>>>>>>>>> I'm with you on that. Let's create a fake module using the ISO C99 
>>>>>>>>> naming scheme, and leave it to MTT to figure out where is breaks! 
>>>>>>>>> george. On Jan 19, 2011, at 14:23 , Nathan Hjelm wrote:
>>>>>>>>>> I don't know if this has been discussed before or if this will break 
>>>>>>>>>> Windows (or some obscure platform) support but I would like to start 
>>>>>>>>>> using the ISO C99 style for struct initialization (see section 
>>>>>>>>>> 6.7.8, example 10 in 
>>>>>>>>>> http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf). Using 
>>>>>>>>>> this style would make mca code much easier to read. Any thoughts? 
>>>>>>>>>> Would this break something? Example: struct module_foo {    char 
>>>>>>>>>> *bar;    int   baz; }; struct foo foobar = {    .bar = "foobar",    
>>>>>>>>>> .baz = 1 }; -Nathan HPC-3, LANL 
>>>>>>>>>> _______________________________________________ devel mailing list 
>>>>>>>>>> de...@open-mpi.org 
>>>>>>>>>> http://www.open-mpi.org/mailman/listinfo.cgi/devel 
>>>>>>>>> _______________________________________________ devel mailing list 
>>>>>>>>> de...@open-mpi.org http://www.open-mpi.org/mailman/listinfo.cgi/devel 
>>>>>>>> _______________________________________________ devel mailing list 
>>>>>>>> de...@open-mpi.org http://www.open-mpi.org/mailman/listinfo.cgi/devel 
>>>>>>> -- 
>>>>>>> Jeff Squyres jsquy...@cisco.com For corporate legal information go to: 
>>>>>>> http://www.cisco.com/web/about/doing_business/legal/cri/ 
>>>>>>> _______________________________________________ devel mailing list 
>>>>>>> de...@open-mpi.org http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>>>> _______________________________________________ devel mailing list 
>>>>>> de...@open-mpi.org http://www.open-mpi.org/mailman/listinfo.cgi/devel 
>>>>> -- 
>>>>> <Mail Attachment.gif>
>>>>> Terry D. Dontje | Principal Software Engineer
>>>>> Developer Tools Engineering | +1.781.442.2631
>>>>> Oracle - Performance Technologies
>>>>> 95 Network Drive, Burlington, MA 01803
>>>>> Email terry.don...@oracle.com
>>>>> _______________________________________________
>>>>> devel mailing list
>>>>> de...@open-mpi.org
>>>>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>> _______________________________________________
>>>> devel mailing list
>>>> de...@open-mpi.org
>>>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>> _______________________________________________
>>> devel mailing list
>>> de...@open-mpi.org
>>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>> 
>> 
>> -- 
>> Paul H. Hargrove                          phhargr...@lbl.gov
>> Future Technologies Group
>> HPC Research Department                   Tel: +1-510-495-2352
>> Lawrence Berkeley National Laboratory     Fax: +1-510-486-6900
>> 
>> _______________________________________________
>> devel mailing list
>> de...@open-mpi.org
>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>> 
> _______________________________________________
> devel mailing list
> de...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/devel


-- 
Jeff Squyres
jsquy...@cisco.com
For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/


Reply via email to