https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120958

anlauf at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |anlauf at gcc dot gnu.org

--- Comment #6 from anlauf at gcc dot gnu.org ---
(In reply to kargls from comment #5)
> (In reply to Martin Jambor from comment #1)
> > And indeed the following hack in Fortran FE "fixes" the benchmark (of
> > course, this is not meant as a proposed fix, just as a demonstration
> > where the problem is):
> > 
> 
> So, if I understand, you want an fnspec of ". . w w w w w w w".
> Can you show f->sym and f->sym-attr from gdb?
> 
> Prior to F2008, MPI says the interface is 
> 
> USE MPI
> ! or the older form: INCLUDE 'mpif.h'
> MPI_IRECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, REQUEST, IERROR)
>      <type>  BUF(*)
>      INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, REQUEST, IERROR
> 
> with F2008, one has
> 
> USE mpi_f08
> MPI_Irecv(buf, count, datatype, source, tag, comm, request, ierror)
>      TYPE(*), DIMENSION(..), ASYNCHRONOUS :: buf
>      INTEGER, INTENT(IN) :: count, source, tag
>      TYPE(MPI_Datatype), INTENT(IN) :: datatype
>      TYPE(MPI_Comm), INTENT(IN) :: comm
>      TYPE(MPI_Request), INTENT(OUT) :: request
>      INTEGER, OPTIONAL, INTENT(OUT) :: ierror
> 
> in either case an explicit interface is required, and gfortran 
> should deal with the '<type> buf(*)' and 'type(*), dimension(..)'
> without your hack.  Of particular interest, is the f->sym->ts.type.

What if there is no explicit interface (use mpi), only 'incluce "mpif.h"'?
Does it imply that all non-blocking MPI calls are potentially affected?
This is really frightening...

(Of course a programmer must ensure that the actual argument is never a
temporary when used as argument with non-blocking comms, where even the
interfaces above do not help).

Reply via email to