[MPI3 Fortran] [Mpi-comments] MPI 3.0: Fortran 2008 interface - issue with the LOGICAL kind

Bill Long 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.
> Tobias
> _______________________________________________
> mpi3-fortran mailing list
> mpi3-fortran at lists.mpi-forum.org
> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-fortran

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 mailing list