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