Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: [OMPI devel] Fortran improbe support
From: Eugene Loh (eugene.loh_at_[hidden])
Date: 2012-02-15 14:40:23

I had a question about our Fortran MPI_Improbe support.

If I look at ompi/mpi/f77/improbe_f.c I see basically (lots of code

     64 void mpi_improbe_f(MPI_Fint *source, MPI_Fint *tag, MPI_Fint
     65 ompi_fortran_logical_t *flag, MPI_Fint
     66 MPI_Fint *status, MPI_Fint *ierr)
     67 {
     94 *ierr = OMPI_INT_2_FINT(MPI_Improbe(OMPI_FINT_2_INT(*source),
     95 OMPI_FINT_2_INT(*tag),
     96 c_comm,
     97 &c_message, c_status));
     99 if (MPI_SUCCESS == OMPI_FINT_2_INT(*ierr)) {
    106 *message = MPI_Message_c2f(c_message);
    107 }
    108 }

I think this logic isn't right. We reference the message at line 106 if
the call at line 94 was successful, but we should reference the message
*only* if there was a match. This condition is indicated not by ierr
but by flag.


If someone (Brian?) would be willing to make corrections, that'd be
great. Otherwise, I'll try my hand at figuring out those preprocessor
macros that wrap around "flag".