One potential other issue, r32555 means that any other struct members are now no longer zeroed, it might be worth putting a memset() or simply assigning a value of {0} to the struct in order to preserve the old behaviour.
Ashley. On 21 Aug 2014, at 04:31, Gilles Gouaillardet <gilles.gouaillar...@iferc.org> wrote: > Paul, > > the piece of code that causes an issue with PGI 2013 and older is just a bit > more complex. > > here is the enhanced test : > > struct S { int i; double d; }; > struct Y { struct S s; } ; > struct S x = {1,0}; > > int main (void) > { > struct Y y = { .s = x }; > return 0; > } > > > it compiles just fine with PGI 2014 (14.7) but fails with PGI 2013 (13.9) and > 2012 (12.10) > -c9x nor -c99 help with the older compilers : > > [gouaillardet@soleil tmp]$ /opt/pgi/linux86-64/14.7/bin/pgcc -c test.c > [gouaillardet@soleil tmp]$ /opt/pgi/linux86-64/13.9/bin/pgcc -c test.c > PGC-S-0094-Illegal type conversion required (test.c: 7) > PGC/x86-64 Linux 13.9-0: compilation completed with severe errors > [gouaillardet@soleil tmp]$ /opt/pgi/linux86-64/12.10/bin/pgcc -c test.c > PGC-S-0094-Illegal type conversion required (test.c: 7) > PGC/x86-64 Linux 12.10-0: compilation completed with severe errors > [gouaillardet@soleil tmp]$ /opt/pgi/linux86-64/13.9/bin/pgcc -c9x -c test.c > PGC-S-0094-Illegal type conversion required (test.c: 7) > PGC/x86-64 Linux 13.9-0: compilation completed with severe errors > [gouaillardet@soleil tmp]$ /opt/pgi/linux86-64/13.9/bin/pgcc -c99 -c test.c > PGC-S-0094-Illegal type conversion required (test.c: 7) > PGC/x86-64 Linux 13.9-0: compilation completed with severe errors > > > so unless there is room for interpretation in C99, this is a compiler bug. > > All, > > one option is r32555 > an other option is to detect this in configure and skip the scif btl > an other option is not to support PGI compilers 2013 and older > and i am out of ideas for other options ... > > imho, r32555 is the less worst (not to say the best) option here > > Cheers, > > Gilles > > On 2014/08/21 2:06, Paul Hargrove wrote: >> Can somebody confirm that configure is adding "-c9x" or "-c99" to CFLAGS >> with this compiler? >> If not then r32555 could possibly be reverted in favor of adding the proper >> compiler flag. >> >> Also, I am suspicious of this failure because even without a language-level >> option pgcc 12.9 and 13.4 compile the following: >> >> struct S { int i; double d; }; >> struct S x = {1,0}; >> int main (void) >> { >> struct S y = { .i = x.i }; >> return y.i; >> } >> >> >> -Paul >> >> >> On Wed, Aug 20, 2014 at 7:20 AM, Nathan Hjelm >> <hje...@lanl.gov> >> wrote: >> >> >>> Really? That means PGI 2013 is NOT C99 compliant! Figures. >>> >>> -Nathan >>> >>> On Tue, Aug 19, 2014 at 10:48:48PM -0400, >>> svn-commit-mai...@open-mpi.org >>> >>> wrote: >>> >>>> Author: ggouaillardet (Gilles Gouaillardet) >>>> Date: 2014-08-19 22:48:47 EDT (Tue, 19 Aug 2014) >>>> New Revision: 32555 >>>> URL: >>>> https://svn.open-mpi.org/trac/ompi/changeset/32555 >>>> >>>> >>>> Log: >>>> btl/scif: use safe syntax >>>> >>>> PGI compilers 2013 and older do not support the following syntax : >>>> mca_btl_scif_modex_t modex = {.port_id = mca_btl_scif_module.port_id}; >>>> so split it on two lines >>>> >>>> cmr=v1.8.2:reviewer=hjelmn >>>> >>>> Text files modified: >>>> trunk/opal/mca/btl/scif/btl_scif_component.c | 3 ++- >>>> 1 files changed, 2 insertions(+), 1 deletions(-) >>>> >>>> Modified: trunk/opal/mca/btl/scif/btl_scif_component.c >>>> >>>> >>> ============================================================================== >>> >>>> --- trunk/opal/mca/btl/scif/btl_scif_component.c Tue Aug 19 >>>> >>> 18:34:49 2014 (r32554) >>> >>>> +++ trunk/opal/mca/btl/scif/btl_scif_component.c 2014-08-19 >>>> >>> 22:48:47 EDT (Tue, 19 Aug 2014) (r32555) >>> >>>> @@ -208,7 +208,8 @@ >>>> >>>> static int mca_btl_scif_modex_send (void) >>>> { >>>> - mca_btl_scif_modex_t modex = {.port_id = >>>> >>> mca_btl_scif_module.port_id}; >>> >>>> + mca_btl_scif_modex_t modex; >>>> + modex.port_id = mca_btl_scif_module.port_id; >>>> >>>> return opal_modex_send (&mca_btl_scif_component.super.btl_version, >>>> >>> &modex, sizeof (modex)); >>> >>>> } >>>> _______________________________________________ >>>> svn mailing list >>>> >>>> s...@open-mpi.org >>>> http://www.open-mpi.org/mailman/listinfo.cgi/svn >>> _______________________________________________ >>> devel mailing list >>> >>> de...@open-mpi.org >>> >>> Subscription: >>> http://www.open-mpi.org/mailman/listinfo.cgi/devel >>> >>> Link to this post: >>> >>> http://www.open-mpi.org/community/lists/devel/2014/08/15667.php >>> >>> >>> >> >> >> >> >> >> _______________________________________________ >> devel mailing list >> >> de...@open-mpi.org >> >> Subscription: >> http://www.open-mpi.org/mailman/listinfo.cgi/devel >> >> Link to this post: >> http://www.open-mpi.org/community/lists/devel/2014/08/15669.php > > _______________________________________________ > devel mailing list > de...@open-mpi.org > Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel > Link to this post: > http://www.open-mpi.org/community/lists/devel/2014/08/15673.php