Given that the Cray compiler aborts on this code with an incorrect error
message, I would actually call it a compiler bug. The compiler may possibly
want to complain that it doesn't know __builtin_ffsl, but its error message
(Declaration is incompatible with "int ffsl(long)") indicates that there is
some other problem. Note that hwloc never declares ffsl; it only calls
__builtin_ffsl.

However, I have a work-around, and leave it up to you to report this or not.

-erik


On Thu, Jan 17, 2013 at 2:40 PM, Jeff Hammond <jhamm...@alcf.anl.gov> wrote:

> Well then, this is most certainly not a Cray bug :-)  The compiler is
> doing exactly what you asked it to do.
>
> I would configure hwloc without this flag and assume that this
> resolves the issue.
>
> Jeff
>
> On Thu, Jan 17, 2013 at 1:27 PM, Erik Schnetter <schnet...@cct.lsu.edu>
> wrote:
> > I realise I did not mention the flags I used when configuring hwloc. I am
> > using
> >
> > -g -h gnu -O3
> >
> > which explicitly asks to recognise GNU extensions. (I need to use -h gnu
> to
> > compile certain other code.) This would explain why __GNUC__ is
> defined...
> > Apologies for omitting this earlier.
> >
> > -erik
> >
> >
> >
> > On Thu, Jan 17, 2013 at 2:21 PM, Jeff Hammond <jhamm...@alcf.anl.gov>
> wrote:
> >>
> >> I was not able to reproduce the behavior described by Erik on the
> >> NERSC Cray XE6, which is to say, Cray C does not claim to be GCC
> >> there.  As I can't verify the problem, I can't report it.
> >>
> >> I have no experience with Cray bug fix latency but I suspect this
> >> needs to be worked-around (I refuse to call it a fix since there is no
> >> problem in hwloc) because Cray won't backport whatever fix they
> >> implement to all their compilers that users might come across.
> >>
> >> Jeff
> >>
> >> On Thu, Jan 17, 2013 at 1:15 PM, Erik Schnetter <schnet...@cct.lsu.edu>
> >> wrote:
> >> > I have no idea how fast Cray acts in such a case.
> >> >
> >> > -erik
> >> >
> >> >
> >> > On Thu, Jan 17, 2013 at 2:05 PM, Brice Goglin <brice.gog...@inria.fr>
> >> > wrote:
> >> >>
> >> >> Does Cray fix such bugs quickly usually? If so, no need to change
> >> >> hwloc.
> >> >> If not, I'll need somebody to test the change on other cray platforms
> >> >> and
> >> >> compiler versions.
> >> >> Brice
> >> >>
> >> >>
> >> >>
> >> >> Jeff Hammond <jhamm...@alcf.anl.gov> a écrit :
> >> >>>
> >> >>> This is a bug in the Cray compiler.  They cannot and should not set
> >> >>> the __GNUC__ flag unless they are fully compatible with GCC.  There
> >> >>>
> >> >>> are many ways to define "fully compatible" but at a minimum, code
> that
> >> >>> compiles with GCC needs to compile with any compiler that elects to
> >> >>> define __GNUC__.  It is prudent to impose a higher standard in some
> >> >>>
> >> >>> cases but that's not pertinent to this discussion.
> >> >>>
> >> >>> Lots of vendor compilers pretend to be __GNUC__ for any number of
> >> >>> reasons.  I believe that they are all wrong for doing it.
> >> >>>
> >> >>> Regarding this specific issue, there is nothing wrong with hwloc
> and I
> >> >>>
> >> >>> don't know why anyone should bother trying to fix Cray's problem,
> but
> >> >>> I suspect that pragmatism will prevail, as it appears to have in the
> >> >>> case of Boost
> >> >>>
> >> >>> (
> http://www.boost.org/doc/libs/1_52_0/boost/config/select_platform_config.hpp
> ).
> >> >>>
> >> >>>
> >> >>> I'll reproduce this locally and contact Cray directly about fixing
> >> >>> this on their end.
> >> >>>
> >> >>> Best,
> >> >>>
> >> >>> Jeff
> >> >>>
> >> >>> On Thu, Jan 17, 2013 at 12:19 PM, Erik Schnetter <
> schnet...@gmail.com>
> >> >>> wrote:
> >> >>>
> >> >>>> hwloc-1.6.1rc2 fails to build with the Cray compiler
> >> >>>>
> >> >>>> Cray C : Version 8.1.2  Thu Jan 17, 2013  12:18:54
> >> >>>>
> >> >>>>
> >> >>>> The error message is
> >> >>>>
> >> >>>> CC       bitmap.lo
> >> >>>> CC-147 craycc: ERROR
> >> >>>> Declaration is incompatible with "int ffsl(long)" (declared at line
> >> >>>> 526
> >> >>>> of
> >> >>>> "/opt/cray/xe-sysroot/4.1.20/usr/include/string.h").
> >> >>>>
> >> >>>>
> >> >>>> (Yes, there is no line number with the error message.)
> >> >>>>
> >> >>>> This seems to be caused by the fact that the Cray c!
> >> >>>>  ompiler
> >> >>>> sets __GNUC__,
> >> >>>>
> >> >>>> but is not quite compatible. A work-around is to change line 56 of
> >> >>>> include/private/misc.h from
> >> >>>>
> >> >>>> #elif defined(__GNUC__)
> >> >>>>
> >> >>>> to
> >> >>>>
> >> >>>> #elif defined(__GNUC__) && !defined(_CRAYC)
> >> >>>>
> >> >>>>
> >> >>>> -erik
> >> >>>>
> >> >>>> --
> >> >>>> Erik Schnetter <schnet...@gmail.com>
> >> >>>> http://www.perimeterinstitute.ca/personal/eschnetter/
> >> >>>>
> >> >>>>
> >> >>>> ________________________________
> >> >>>>
> >> >>>> hwloc-users mailing list
> >> >>>> hwloc-us...@open-mpi.org
> >> >>>> http://www.open-mpi.org/mailman/listinfo.cgi/hwloc-users
> >> >>>
> >> >>>
> >> >>>
> >> >>
> >> >> _______________________________________________
> >> >>
> >> >> hwloc-users mailing list
> >> >> hwloc-us...@open-mpi.org
> >> >> http://www.open-mpi.org/mailman/listinfo.cgi/hwloc-users
> >> >
> >> >
> >> >
> >> >
> >> > --
> >> > Erik Schnetter <schnet...@cct.lsu.edu>
> >> > http://www.perimeterinstitute.ca/personal/eschnetter/
> >>
> >>
> >>
> >> --
> >> Jeff Hammond
> >> Argonne Leadership Computing Facility
> >> University of Chicago Computation Institute
> >> jhamm...@alcf.anl.gov / (630) 252-5381
> >> http://www.linkedin.com/in/jeffhammond
> >> https://wiki.alcf.anl.gov/parts/index.php/User:Jhammond
> >
> >
> >
> >
> > --
> > Erik Schnetter <schnet...@cct.lsu.edu>
> > http://www.perimeterinstitute.ca/personal/eschnetter/
>
>
>
> --
> Jeff Hammond
> Argonne Leadership Computing Facility
> University of Chicago Computation Institute
> jhamm...@alcf.anl.gov / (630) 252-5381
> http://www.linkedin.com/in/jeffhammond
> https://wiki.alcf.anl.gov/parts/index.php/User:Jhammond
>



-- 
Erik Schnetter <schnet...@cct.lsu.edu>
http://www.perimeterinstitute.ca/personal/eschnetter/

Reply via email to