Hi!

I just started trying to build 1.7.4rc1 with the new Pathscale EkoPath5 compiler and stumbled onto this.

When building without --enable-mpi-f08-subarray-prototype i get into problems with ompi/mpi/fortran/use-mpi-f08/mpi-f-interfaces-bind.h

It defines
subroutine ompi_comm_create_keyval_f(comm_copy_attr_fn,comm_delete_attr_fn, &
                                     comm_keyval,extra_state,ierror) &
   BIND(C, name="ompi_comm_create_keyval_f")
   use :: mpi_f08_types, only : MPI_ADDRESS_KIND
   use :: mpi_f08_interfaces_callbacks, only : MPI_Comm_copy_attr_function
use :: mpi_f08_interfaces_callbacks, only : MPI_Comm_delete_attr_function
   implicit none
   OMPI_PROCEDURE(MPI_Comm_copy_attr_function) :: comm_copy_attr_fn
   OMPI_PROCEDURE(MPI_Comm_delete_attr_function) :: comm_delete_attr_fn
   INTEGER, INTENT(OUT) :: comm_keyval
   INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: extra_state
   INTEGER, INTENT(OUT) :: ierror
end subroutine ompi_comm_create_keyval_f

But at least the F2k3 specs says that
"Each dummy argument of an interoperable procedure or interface must be an interoperable variable or an interoperable procedure."

The code above violates that since comm_copy_attr_fn is not interoperable as far as i can see.
If I'm reading this wrong then please let me know...

The only definition of OMPI_PROCEDURE i can find is this one in ompi/mpi/fortran/configure-fortran-output-bottom.h

#if OMPI_FORTRAN_HAVE_PROCEDURE
#define OMPI_PROCEDURE(name) PROCEDURE(name)
#else
#define OMPI_PROCEDURE(name) EXTERNAL
#endif

I currently don't have any F2k8 specs to check so if this is changed there I'll try to get this sorted in the compiler.

--
Ake Sandgren, HPC2N, Umea University, S-90187 Umea, Sweden
Internet: a...@hpc2n.umu.se   Phone: +46 90 7866134 Fax: +46 90 7866126
Mobile: +46 70 7716134 WWW: http://www.hpc2n.umu.se

Reply via email to