Sorry I didn't send this out sooner but in reading the discussion for
the errata item "Interlaguage use of Attributes" I think the below
proposal has a potential hole that never was resolved in the mail
discussion in:
http://www.cs.uiuc.edu/homes/wgropp/projects/parallel/MPI/mpi-errata/discuss/getattr/
The specific hole pointed out by Nick Nevin in the following
paragraph
from the email discussion:
This might work for predefined attributes where the address can
point to the integer value in static storage, but won't work for
attributes set by the user in Fortran code. If you store a pointer
to the integer as the attribute it may point to a temporary which
might no longer exist when you try and access it later.
So I think relying on the address passed in for the attribute as
opposed to the value could cause some
issues with Fortran.
--td
Jeff Squyres wrote:
Per
http://www.cs.uiuc.edu/homes/wgropp/projects/parallel/MPI/mpi-errata/
,
the errata item entitled "Error in Example 4.13 in MPI-2 (Use of
Attributes in C and Fortran)". I believe that this errata item
supersedes the errata item "Interlanguage use of Attributes".
See the mail discussing:
http://www.cs.uiuc.edu/homes/wgropp/projects/parallel/MPI/mpi-errata/discuss/attrcandf/
Proposal:
Change MPI-2:4.12, p58:36 from:
IF (val.NE.5) THEN CALL ERROR
to
IF (val.NE.address_of_i) THEN CALL ERROR
Rationale:
MPI-2:4.12 p58:12-13 and 16-18 clearly state that if an attribute is
set by C, retrieving it in Fortran will obtain the address of the
attribute.
See the mails for more discussion, including an exhaustive list of
what happens for each of the 9 possibilities of setting and getting
attribute values between the different languages.