[MPI3 Fortran] [Mpi-comments] MPI 3.0: Fortran 2008 interface - issue with the LOGICAL kind
longb at cray.com
Mon Mar 4 14:19:28 CST 2013
On 3/4/13 1:26 PM, Tobias Burnus wrote:
> Bill Long wrote:
>>> There isn't any difficulty about a Fortran wrapper using integers (as
>>> C does), and converting them to LOGICAL, but it can't be BIND(C).
>> There is also no difficulty in having the wrapper arguments being
>> subroutine sub (x) bind(c, name="MPI_xxx_f")
>> logical :: x
>> integer(int) :: cx
>> cx = merge(1, 0, x)
> Well, except that compilers might simply reject a default-kind LOGICAL
> with BIND(C), in line with the Fortran standard.
Ug. I tried 5 compilers. Three (Cray, Intel, PGI) just let it pass. One
gave an error, and one gave a warning. What a mess. I'm more convinced
now that before that the only practical solution here is to get rid of
the LOGICAL arguments, replacing them with INTEGER arguments, which is
what the C functions expect anyway. (Alternatively, the problem goes
away if support for mpif.h is removed, which I would highly recommend
I'm trying to work out how to use two layers of wrapper functions to get
around the error from that one compiler. Unattractive, to say the least.
> Your code above assumes that a Fortran compiler allows passing a
> default-kind LOGICAL to a Bind(C) procedure and that it then can handle
> that LOGICAL. I think no one really doubts the second part. But the
> first part is not really covered by the Fortran standard and
> standard-conforming compilers do exist, which reject default-kind LOGICALs.
> J3/WG5 could change the standard such that it supports other LOGICAL
> kinds besides C_Bool, including kind(.true.). However, if
> LOGICAL(kind=kind(.true.) / C_INT) exists, users will assume that it
> acts like C's "int", which will lead to problems. So far, I haven't seen
> a convincing proposal how to solve this.
> mpi3-fortran mailing list
> mpi3-fortran at lists.mpi-forum.org
Bill Long longb at cray.com
Fortran Technical Support & voice: 651-605-9024
Bioinformatics Software Development fax: 651-605-9142
Cray Inc./Cray Plaza, Suite 210/380 Jackson St./St. Paul, MN 55101
More information about the mpiwg-fortran