Yes, it does.
It re-looking at this problem, it seemed to me:
1. The real fix is to talk to the AC people and get something like
AC_CXX_RESTRICT. The PGI compiler is one place where "restrict"
support may be different in the C and C++ compilers. I'm not sure
what the Right answer is there, but I'll ask them about it.
2. In this specific case, the use of "restrict" *does not matter* in
components.cc. This particular part of the file is not what
components.cc needs/uses. So it's ok to #define it away to nothing.
3. Since this problem now exists in at least *2* compilers that we
know about (Sun, PGI), it seemed that -- at least while waiting for
some kind of proper fix from AC -- just #define restrict away for C++
for this particular case was ok, rather than try to adapt to every
compiler. Rolf's fix was ok previously because we thought it was
specific to one compiler. But now the door is open to other
compilers, so let's use a broad stroke to work around it for all C++
compilers.
That's why I coded it up this way.
On Mar 14, 2009, at 7:39 AM, Terry Dontje wrote:
You know this all looks very similar to the reason why rolfv putback
r20351 which essentially defined out restrict within
opal_config_bottom.h when using Sun Studio.
--td
Date: Fri, 13 Mar 2009 16:40:49 -0400
From: Jeff Squyres <jsquy...@cisco.com>
Subject: Re: [OMPI users] PGI 8.0-4 doesn't like ompi/mca/op/op.h
To: "Open MPI Users" <us...@open-mpi.org>
Message-ID: <2aca69ab-5f23-4ae9-8826-77a6348e9...@cisco.com>
Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes
On Mar 13, 2009, at 4:37 PM, Mostyn Lewis wrote:
> > >From config.log
> >
> > configure:21522: checking for C/C++ restrict keyword
> > configure:21558: pgcc -c -DNDEBUG -fast -Msignextend -tp p7-64 >
> conftest.c >&5
> > configure:21564: $? = 0
> > configure:21582: result: restrict
> >
> > So you only check using pgcc (not pgCC)?
> >
>
The AC_C_RESTRICT test only checks the C compiler, yet. It's an
Autoconf-builtin test; we didn't write it.
Odd that you get "restrict" and I get "__restrict". Hrm.
Well, I suppose that one solution might be to disable those prototypes
in the op.h header file when they're included in components.cc (that's
a source file in the ompi_info executable; it shouldn't need the
specific MPI_Op callback prototypes). Fortunately, we have very
little
C++ code in OMPI, so this isn't a huge issue (C++ is only used for
the
MPI C++ bindings -- of course -- and in some of the command line
executables).
Let me see what I can cook up, and then let me see if I can convince
George that it's the correct answer. ;-)
-- Jeff Squyres Cisco Systems
_______________________________________________
users mailing list
us...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/users
--
Jeff Squyres
Cisco Systems