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

Reply via email to