[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
>> LOGICAL.
>>
>> 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 
anyway.)

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.

Cheers,
Bill


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