Index: src/binding/f90/binding.sub =================================================================== --- src/binding/f90/binding.sub (revision 9927) +++ src/binding/f90/binding.sub (working copy) @@ -50,6 +50,7 @@ while (! ($args =~ /;/)) { $args .= ; } + $args =~ s/MPICH_ATTR[A-Z_]*\([^)]*\)//g; $args =~ s/\)\s*;//g; $args =~ s/[\r\n]*//g; # remove qualifiers from args Index: src/binding/cxx/buildiface =================================================================== --- src/binding/cxx/buildiface (revision 9927) +++ src/binding/cxx/buildiface (working copy) @@ -3226,6 +3226,7 @@ while (! ($args =~ /;/)) { $args .= ; } + $args =~ s/MPICH_ATTR[A-Z_]*\([^)]*\)//g; $args =~ s/\)\s*;//g; $args =~ s/[\r\n]*//g; # Special substitutions Index: src/binding/f77/buildiface =================================================================== --- src/binding/f77/buildiface (revision 9927) +++ src/binding/f77/buildiface (working copy) @@ -4513,6 +4513,7 @@ $args .= ; $linecount++; } + $args =~ s/MPICH_ATTR[A-Z_]*\([^)]*\)//g; $args =~ s/\)\s*;//g; $args =~ s/[\r\n]*//g; # remove qualifiers from args Index: src/include/mpi.h.in =================================================================== --- src/include/mpi.h.in (revision 9927) +++ src/include/mpi.h.in (working copy) @@ -14,6 +14,46 @@ extern "C" { #endif +#if defined(__has_attribute) +# if __has_attribute(pointer_with_type_tag) && \ + __has_attribute(type_tag_for_datatype) +# define MPICH_ATTR_POINTER_WITH_TYPE_TAG(buffer_idx, type_idx) __attribute__((pointer_with_type_tag(MPI,buffer_idx,type_idx))) +# define MPICH_ATTR_TYPE_TAG(type) __attribute__((type_tag_for_datatype(MPI,type))) +# define MPICH_ATTR_TYPE_TAG_LAYOUT_COMPATIBLE(type) __attribute__((type_tag_for_datatype(MPI,type,layout_compatible))) +# define MPICH_ATTR_TYPE_TAG_MUST_BE_NULL() __attribute__((type_tag_for_datatype(MPI,void,must_be_null))) +# include +# if defined(__cplusplus) +# include +# endif +# endif +#endif + +#if !defined(MPICH_ATTR_POINTER_WITH_TYPE_TAG) +# define MPICH_ATTR_POINTER_WITH_TYPE_TAG(buffer_idx, type_idx) +# define MPICH_ATTR_TYPE_TAG(type) +# define MPICH_ATTR_TYPE_TAG_LAYOUT_COMPATIBLE(type) +# define MPICH_ATTR_TYPE_TAG_MUST_BE_NULL() +#endif + +#if defined(INT8_C) +/* stdint.h was included, so we can annotate these types */ +# define MPICH_ATTR_TYPE_TAG_STDINT(type) MPICH_ATTR_TYPE_TAG(type) +#else +# define MPICH_ATTR_TYPE_TAG_STDINT(type) +#endif + +#if __STDC_VERSION__ >= 199901 +# define MPICH_ATTR_TYPE_TAG_C99(type) MPICH_ATTR_TYPE_TAG(type) +#else +# define MPICH_ATTR_TYPE_TAG_C99(type) +#endif + +#if defined(__cplusplus) +# define MPICH_ATTR_TYPE_TAG_CPP(type) MPICH_ATTR_TYPE_TAG(type) +#else +# define MPICH_ATTR_TYPE_TAG_CPP(type) +#endif + /* Results of the compare operations. */ #define MPI_IDENT 0 #define MPI_CONGRUENT 1 @@ -39,6 +79,23 @@ #define MPI_UNSIGNED_LONG_LONG ((MPI_Datatype)@MPI_UNSIGNED_LONG_LONG@) #define MPI_LONG_LONG MPI_LONG_LONG_INT +static const MPI_Datatype mpich_mpi_char MPICH_ATTR_TYPE_TAG(char) = MPI_CHAR; +static const MPI_Datatype mpich_mpi_signed_char MPICH_ATTR_TYPE_TAG(signed char) = MPI_SIGNED_CHAR; +static const MPI_Datatype mpich_mpi_unsigned_char MPICH_ATTR_TYPE_TAG(unsigned char) = MPI_UNSIGNED_CHAR; +/*static const MPI_Datatype mpich_mpi_byte MPICH_ATTR_TYPE_TAG(char) = MPI_BYTE;*/ +static const MPI_Datatype mpich_mpi_wchar MPICH_ATTR_TYPE_TAG(wchar_t) = MPI_WCHAR; +static const MPI_Datatype mpich_mpi_short MPICH_ATTR_TYPE_TAG(short) = MPI_SHORT; +static const MPI_Datatype mpich_mpi_unsigned_short MPICH_ATTR_TYPE_TAG(unsigned short) = MPI_UNSIGNED_SHORT; +static const MPI_Datatype mpich_mpi_int MPICH_ATTR_TYPE_TAG(int) = MPI_INT; +static const MPI_Datatype mpich_mpi_unsigned MPICH_ATTR_TYPE_TAG(unsigned) = MPI_UNSIGNED; +static const MPI_Datatype mpich_mpi_long MPICH_ATTR_TYPE_TAG(long) = MPI_LONG; +static const MPI_Datatype mpich_mpi_unsigned_long MPICH_ATTR_TYPE_TAG(unsigned long) = MPI_UNSIGNED_LONG; +static const MPI_Datatype mpich_mpi_float MPICH_ATTR_TYPE_TAG(float) = MPI_FLOAT; +static const MPI_Datatype mpich_mpi_double MPICH_ATTR_TYPE_TAG(double) = MPI_DOUBLE; +static const MPI_Datatype mpich_mpi_long_double MPICH_ATTR_TYPE_TAG(long double) = MPI_LONG_DOUBLE; +static const MPI_Datatype mpich_mpi_long_long_int MPICH_ATTR_TYPE_TAG(long long int) = MPI_LONG_LONG_INT; +static const MPI_Datatype mpich_mpi_unsigned_long_long MPICH_ATTR_TYPE_TAG(unsigned long long) = MPI_UNSIGNED_LONG_LONG; + #define MPI_PACKED ((MPI_Datatype)@MPI_PACKED@) #define MPI_LB ((MPI_Datatype)@MPI_LB@) #define MPI_UB ((MPI_Datatype)@MPI_UB@) @@ -58,6 +115,20 @@ #define MPI_2INT ((MPI_Datatype)@MPI_2INT@) #define MPI_LONG_DOUBLE_INT ((MPI_Datatype)@MPI_LONG_DOUBLE_INT@) +struct mpich_struct_mpi_float_int { float f; int i; }; +struct mpich_struct_mpi_double_int { double d; int i; }; +struct mpich_struct_mpi_long_int { long l; int i; }; +struct mpich_struct_mpi_short_int { short s; int i; }; +struct mpich_struct_mpi_2int { int i1; int i2; }; +struct mpich_struct_mpi_long_double_int { long double ld; int i; }; + +static const MPI_Datatype mpich_mpi_float_int MPICH_ATTR_TYPE_TAG(struct mpich_struct_mpi_float_int) = MPI_FLOAT_INT; +static const MPI_Datatype mpich_mpi_double_int MPICH_ATTR_TYPE_TAG(struct mpich_struct_mpi_double_int) = MPI_DOUBLE_INT; +static const MPI_Datatype mpich_mpi_long_int MPICH_ATTR_TYPE_TAG(struct mpich_struct_mpi_long_int) = MPI_LONG_INT; +static const MPI_Datatype mpich_mpi_short_int MPICH_ATTR_TYPE_TAG(struct mpich_struct_mpi_short_int) = MPI_SHORT_INT; +static const MPI_Datatype mpich_mpi_2int MPICH_ATTR_TYPE_TAG(struct mpich_struct_mpi_2int) = MPI_2INT; +static const MPI_Datatype mpich_mpi_long_double_int MPICH_ATTR_TYPE_TAG(struct mpich_struct_mpi_long_double_int) = MPI_LONG_DOUBLE_INT; + /* Fortran types */ #define MPI_COMPLEX ((MPI_Datatype)@MPI_COMPLEX@) #define MPI_DOUBLE_COMPLEX ((MPI_Datatype)@MPI_DOUBLE_COMPLEX@) @@ -104,6 +175,15 @@ #define MPI_UINT32_T ((MPI_Datatype)@MPI_UINT32_T@) #define MPI_UINT64_T ((MPI_Datatype)@MPI_UINT64_T@) +static const MPI_Datatype mpich_mpi_int8_t MPICH_ATTR_TYPE_TAG_STDINT(int8_t) = MPI_INT8_T; +static const MPI_Datatype mpich_mpi_int16_t MPICH_ATTR_TYPE_TAG_STDINT(int16_t) = MPI_INT16_T; +static const MPI_Datatype mpich_mpi_int32_t MPICH_ATTR_TYPE_TAG_STDINT(int32_t) = MPI_INT32_T; +static const MPI_Datatype mpich_mpi_int64_t MPICH_ATTR_TYPE_TAG_STDINT(int64_t) = MPI_INT64_T; +static const MPI_Datatype mpich_mpi_uint8_t MPICH_ATTR_TYPE_TAG_STDINT(uint8_t) = MPI_UINT8_T; +static const MPI_Datatype mpich_mpi_uint16_t MPICH_ATTR_TYPE_TAG_STDINT(uint16_t) = MPI_UINT16_T; +static const MPI_Datatype mpich_mpi_uint32_t MPICH_ATTR_TYPE_TAG_STDINT(uint32_t) = MPI_UINT32_T; +static const MPI_Datatype mpich_mpi_uint64_t MPICH_ATTR_TYPE_TAG_STDINT(uint64_t) = MPI_UINT64_T; + /* other C99 types */ #define MPI_C_BOOL ((MPI_Datatype)@MPI_C_BOOL@) #define MPI_C_FLOAT_COMPLEX ((MPI_Datatype)@MPI_C_FLOAT_COMPLEX@) @@ -111,6 +191,11 @@ #define MPI_C_DOUBLE_COMPLEX ((MPI_Datatype)@MPI_C_DOUBLE_COMPLEX@) #define MPI_C_LONG_DOUBLE_COMPLEX ((MPI_Datatype)@MPI_C_LONG_DOUBLE_COMPLEX@) +static const MPI_Datatype mpich_mpi_c_bool MPICH_ATTR_TYPE_TAG_C99(_Bool) = MPI_C_BOOL; +static const MPI_Datatype mpich_mpi_c_float_complex MPICH_ATTR_TYPE_TAG_C99(float _Complex) = MPI_C_FLOAT_COMPLEX; +static const MPI_Datatype mpich_mpi_c_double_complex MPICH_ATTR_TYPE_TAG_C99(double _Complex) = MPI_C_DOUBLE_COMPLEX; +static const MPI_Datatype mpich_mpi_c_long_double_complex MPICH_ATTR_TYPE_TAG_C99(double _Complex) = MPI_C_LONG_DOUBLE_COMPLEX; + /* address/offset types */ #define MPI_AINT ((MPI_Datatype)@MPI_AINT_DATATYPE@) #define MPI_OFFSET ((MPI_Datatype)@MPI_OFFSET_DATATYPE@) @@ -195,6 +280,8 @@ #define MPIX_MESSAGE_NULL ((MPIX_Message)MPI_REQUEST_NULL) #define MPIX_MESSAGE_NO_PROC ((MPIX_Message)0x6c000000) +static const MPI_Datatype mpich_mpi_datatype_null MPICH_ATTR_TYPE_TAG_MUST_BE_NULL() = MPI_DATATYPE_NULL; + /* These are only guesses; make sure you change them in mpif.h as well */ #define MPI_MAX_PROCESSOR_NAME @MPI_MAX_PROCESSOR_NAME@ #define MPI_MAX_ERROR_STRING 1024 @@ -376,6 +463,9 @@ /* Definitions that are determined by configure. */ typedef @MPI_AINT@ MPI_Aint; typedef @MPI_FINT@ MPI_Fint; + +static const MPI_Datatype mpich_mpi_aint MPICH_ATTR_TYPE_TAG(MPI_Aint) = MPI_AINT; + /* FIXME: The following two definition are not defined by MPI and must not be included in the mpi.h file, as the MPI namespace is reserved to the MPI standard */ @@ -389,6 +479,8 @@ where $MPI_OFFSET is the correct C type */ @MPI_OFFSET_TYPEDEF@ +static const MPI_Datatype mpich_mpi_offset MPICH_ATTR_TYPE_TAG(MPI_Offset) = MPI_OFFSET; + /* The order of these elements must match that in mpif.h */ typedef struct MPI_Status { int count; @@ -665,19 +757,19 @@ #ifndef MPICH_SUPPRESS_PROTOTYPES /* We require that the C compiler support prototypes */ /* Begin Prototypes */ -int MPI_Send(void*, int, MPI_Datatype, int, int, MPI_Comm); -int MPI_Recv(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Status *); +int MPI_Send(void*, int, MPI_Datatype, int, int, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); +int MPI_Recv(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Status *) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); int MPI_Get_count(MPI_Status *, MPI_Datatype, int *); -int MPI_Bsend(void*, int, MPI_Datatype, int, int, MPI_Comm); -int MPI_Ssend(void*, int, MPI_Datatype, int, int, MPI_Comm); -int MPI_Rsend(void*, int, MPI_Datatype, int, int, MPI_Comm); +int MPI_Bsend(void*, int, MPI_Datatype, int, int, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); +int MPI_Ssend(void*, int, MPI_Datatype, int, int, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); +int MPI_Rsend(void*, int, MPI_Datatype, int, int, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); int MPI_Buffer_attach( void*, int); int MPI_Buffer_detach( void*, int *); -int MPI_Isend(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); -int MPI_Ibsend(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); -int MPI_Issend(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); -int MPI_Irsend(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); -int MPI_Irecv(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); +int MPI_Isend(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); +int MPI_Ibsend(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); +int MPI_Issend(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); +int MPI_Irsend(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); +int MPI_Irecv(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); int MPI_Wait(MPI_Request *, MPI_Status *); int MPI_Test(MPI_Request *, int *, MPI_Status *); int MPI_Request_free(MPI_Request *); @@ -691,15 +783,15 @@ int MPI_Probe(int, int, MPI_Comm, MPI_Status *); int MPI_Cancel(MPI_Request *); int MPI_Test_cancelled(MPI_Status *, int *); -int MPI_Send_init(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); -int MPI_Bsend_init(void*, int, MPI_Datatype, int,int, MPI_Comm, MPI_Request *); -int MPI_Ssend_init(void*, int, MPI_Datatype, int,int, MPI_Comm, MPI_Request *); -int MPI_Rsend_init(void*, int, MPI_Datatype, int,int, MPI_Comm, MPI_Request *); -int MPI_Recv_init(void*, int, MPI_Datatype, int,int, MPI_Comm, MPI_Request *); +int MPI_Send_init(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); +int MPI_Bsend_init(void*, int, MPI_Datatype, int,int, MPI_Comm, MPI_Request *) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); +int MPI_Ssend_init(void*, int, MPI_Datatype, int,int, MPI_Comm, MPI_Request *) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); +int MPI_Rsend_init(void*, int, MPI_Datatype, int,int, MPI_Comm, MPI_Request *) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); +int MPI_Recv_init(void*, int, MPI_Datatype, int,int, MPI_Comm, MPI_Request *) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); int MPI_Start(MPI_Request *); int MPI_Startall(int, MPI_Request *); -int MPI_Sendrecv(void *, int, MPI_Datatype,int, int, void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Status *); -int MPI_Sendrecv_replace(void*, int, MPI_Datatype, int, int, int, int, MPI_Comm, MPI_Status *); +int MPI_Sendrecv(void *, int, MPI_Datatype,int, int, void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Status *) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3) MPICH_ATTR_POINTER_WITH_TYPE_TAG(6,8); +int MPI_Sendrecv_replace(void*, int, MPI_Datatype, int, int, int, int, MPI_Comm, MPI_Status *) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); int MPI_Type_contiguous(int, MPI_Datatype, MPI_Datatype *); int MPI_Type_vector(int, int, int, MPI_Datatype, MPI_Datatype *); int MPI_Type_hvector(int, int, MPI_Aint, MPI_Datatype, MPI_Datatype *); @@ -719,25 +811,25 @@ int MPI_Type_commit(MPI_Datatype *); int MPI_Type_free(MPI_Datatype *); int MPI_Get_elements(MPI_Status *, MPI_Datatype, int *); -int MPI_Pack(void*, int, MPI_Datatype, void *, int, int *, MPI_Comm); -int MPI_Unpack(void*, int, int *, void *, int, MPI_Datatype, MPI_Comm); +int MPI_Pack(void*, int, MPI_Datatype, void *, int, int *, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); +int MPI_Unpack(void*, int, int *, void *, int, MPI_Datatype, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(4,6); int MPI_Pack_size(int, MPI_Datatype, MPI_Comm, int *); int MPI_Barrier(MPI_Comm ); -int MPI_Bcast(void*, int, MPI_Datatype, int, MPI_Comm ); -int MPI_Gather(void* , int, MPI_Datatype, void*, int, MPI_Datatype, int, MPI_Comm); -int MPI_Gatherv(void* , int, MPI_Datatype, void*, int *, int *, MPI_Datatype, int, MPI_Comm); -int MPI_Scatter(void* , int, MPI_Datatype, void*, int, MPI_Datatype, int, MPI_Comm); -int MPI_Scatterv(void* , int *, int *, MPI_Datatype, void*, int, MPI_Datatype, int, MPI_Comm); -int MPI_Allgather(void* , int, MPI_Datatype, void*, int, MPI_Datatype, MPI_Comm); -int MPI_Allgatherv(void* , int, MPI_Datatype, void*, int *, int *, MPI_Datatype, MPI_Comm); -int MPI_Alltoall(void* , int, MPI_Datatype, void*, int, MPI_Datatype, MPI_Comm); -int MPI_Alltoallv(void* , int *, int *, MPI_Datatype, void*, int *, int *, MPI_Datatype, MPI_Comm); -int MPI_Reduce(void* , void*, int, MPI_Datatype, MPI_Op, int, MPI_Comm); +int MPI_Bcast(void*, int, MPI_Datatype, int, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); +int MPI_Gather(void* , int, MPI_Datatype, void*, int, MPI_Datatype, int, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3) MPICH_ATTR_POINTER_WITH_TYPE_TAG(4,6); +int MPI_Gatherv(void* , int, MPI_Datatype, void*, int *, int *, MPI_Datatype, int, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3) MPICH_ATTR_POINTER_WITH_TYPE_TAG(4,7); +int MPI_Scatter(void* , int, MPI_Datatype, void*, int, MPI_Datatype, int, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3) MPICH_ATTR_POINTER_WITH_TYPE_TAG(4,6); +int MPI_Scatterv(void* , int *, int *, MPI_Datatype, void*, int, MPI_Datatype, int, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(5,7); +int MPI_Allgather(void* , int, MPI_Datatype, void*, int, MPI_Datatype, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3) MPICH_ATTR_POINTER_WITH_TYPE_TAG(4,6); +int MPI_Allgatherv(void* , int, MPI_Datatype, void*, int *, int *, MPI_Datatype, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3) MPICH_ATTR_POINTER_WITH_TYPE_TAG(4,7); +int MPI_Alltoall(void* , int, MPI_Datatype, void*, int, MPI_Datatype, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3) MPICH_ATTR_POINTER_WITH_TYPE_TAG(4,6); +int MPI_Alltoallv(void* , int *, int *, MPI_Datatype, void*, int *, int *, MPI_Datatype, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(5,8); +int MPI_Reduce(void* , void*, int, MPI_Datatype, MPI_Op, int, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); int MPI_Op_create(MPI_User_function *, int, MPI_Op *); int MPI_Op_free( MPI_Op *); -int MPI_Allreduce(void* , void*, int, MPI_Datatype, MPI_Op, MPI_Comm); -int MPI_Reduce_scatter(void* , void*, int *, MPI_Datatype, MPI_Op, MPI_Comm); -int MPI_Scan(void* , void*, int, MPI_Datatype, MPI_Op, MPI_Comm ); +int MPI_Allreduce(void*, void*, int, MPI_Datatype, MPI_Op, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); +int MPI_Reduce_scatter(void* , void*, int *, MPI_Datatype, MPI_Op, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); +int MPI_Scan(void* , void*, int, MPI_Datatype, MPI_Op, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); int MPI_Group_size(MPI_Group, int *); int MPI_Group_rank(MPI_Group, int *); int MPI_Group_translate_ranks (MPI_Group, int, int *, MPI_Group, int *); @@ -831,11 +923,11 @@ /* One-Sided Communications */ int MPI_Accumulate(void *, int, MPI_Datatype, int, MPI_Aint, int, - MPI_Datatype, MPI_Op, MPI_Win); + MPI_Datatype, MPI_Op, MPI_Win) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); int MPI_Get(void *, int, MPI_Datatype, int, MPI_Aint, int, MPI_Datatype, - MPI_Win); + MPI_Win) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); int MPI_Put(void *, int, MPI_Datatype, int, MPI_Aint, int, MPI_Datatype, - MPI_Win); + MPI_Win) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); int MPI_Win_complete(MPI_Win); int MPI_Win_create(void *, MPI_Aint, int, MPI_Info, MPI_Comm, MPI_Win *); int MPI_Win_fence(int, MPI_Win); @@ -850,8 +942,8 @@ /* Extended Collective Operations */ int MPI_Alltoallw(void *, int [], int [], MPI_Datatype [], void *, int [], - int [], MPI_Datatype [], MPI_Comm); -int MPI_Exscan(void *, void *, int, MPI_Datatype, MPI_Op, MPI_Comm) ; + int [], MPI_Datatype [], MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(5,8); +int MPI_Exscan(void *, void *, int, MPI_Datatype, MPI_Op, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); /* External Interfaces */ int MPI_Add_error_class(int *); @@ -939,7 +1031,7 @@ int MPI_Info_get_valuelen(MPI_Info, char *, int *, int *); int MPI_Info_set(MPI_Info, char *, char *); int MPI_Pack_external(char *, void *, int, MPI_Datatype, void *, MPI_Aint, - MPI_Aint *); + MPI_Aint *) MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); int MPI_Pack_external_size(char *, int, MPI_Datatype, MPI_Aint *); int MPI_Request_get_status(MPI_Request, int *, MPI_Status *); int MPI_Status_c2f(MPI_Status *, MPI_Fint *); @@ -959,7 +1051,7 @@ int MPI_Type_get_extent(MPI_Datatype, MPI_Aint *, MPI_Aint *); int MPI_Type_get_true_extent(MPI_Datatype, MPI_Aint *, MPI_Aint *); int MPI_Unpack_external(char *, void *, MPI_Aint, MPI_Aint *, void *, int, - MPI_Datatype); + MPI_Datatype) MPICH_ATTR_POINTER_WITH_TYPE_TAG(5,7); int MPI_Win_create_errhandler(MPI_Win_errhandler_function *, MPI_Errhandler *); int MPI_Win_get_errhandler(MPI_Win, MPI_Errhandler *); int MPI_Win_set_errhandler(MPI_Win, MPI_Errhandler); @@ -972,9 +1064,9 @@ int MPI_Type_create_f90_complex( int, int, MPI_Datatype * ); /* MPI-2.2 functions */ -int MPI_Reduce_local(void *inbuf, void *inoutbuf, int count, MPI_Datatype datatype, MPI_Op op); +int MPI_Reduce_local(void *inbuf, void *inoutbuf, int count, MPI_Datatype datatype, MPI_Op op) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); int MPI_Op_commutative(MPI_Op op, int *commute); -int MPI_Reduce_scatter_block(void *sendbuf, void *recvbuf, int recvcount, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm); +int MPI_Reduce_scatter_block(void *sendbuf, void *recvbuf, int recvcount, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); int MPI_Dist_graph_create_adjacent(MPI_Comm comm_old, int indegree, int [], int [], int outdegree, int [], int [], MPI_Info info, int reorder, MPI_Comm *comm_dist_graph); int MPI_Dist_graph_create(MPI_Comm comm_old, int n, int [], int [], int [], int [], MPI_Info info, int reorder, MPI_Comm *comm_dist_graph); int MPI_Dist_graph_neighbors_count(MPI_Comm comm, int *indegree, int *outdegree, int *weighted); @@ -982,31 +1074,31 @@ /* MPI-3 matched probe functionality, currently MPIX_ extensions */ int MPIX_Improbe(int source, int tag, MPI_Comm comm, int *flag, MPIX_Message *message, MPI_Status *status); -int MPIX_Imrecv(void *buf, int count, MPI_Datatype datatype, MPIX_Message *message, MPI_Request *request); +int MPIX_Imrecv(void *buf, int count, MPI_Datatype datatype, MPIX_Message *message, MPI_Request *request) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); int MPIX_Mprobe(int source, int tag, MPI_Comm comm, MPIX_Message *message, MPI_Status *status); -int MPIX_Mrecv(void *buf, int count, MPI_Datatype datatype, MPIX_Message *message, MPI_Status *status); +int MPIX_Mrecv(void *buf, int count, MPI_Datatype datatype, MPIX_Message *message, MPI_Status *status) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); /* MPI-3 nonblocking comm dup */ int MPIX_Comm_idup(MPI_Comm comm, MPI_Comm *newcomm, MPI_Request *request); /* MPI-3 nonblocking collectives, currently MPIX_ extensions */ int MPIX_Ibarrier(MPI_Comm comm, MPI_Request *request); -int MPIX_Ibcast(void *buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm, MPI_Request *request); -int MPIX_Igather(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *request); -int MPIX_Igatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int *recvcounts, int *displs, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *request); -int MPIX_Iscatter(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *request); -int MPIX_Iscatterv(void *sendbuf, int *sendcounts, int *displs, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *request); -int MPIX_Iallgather(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request); -int MPIX_Iallgatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int *recvcounts, int *displs, MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request); -int MPIX_Ialltoall(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request); -int MPIX_Ialltoallv(void *sendbuf, int *sendcounts, int *sdispls, MPI_Datatype sendtype, void *recvbuf, int *recvcounts, int *rdispls, MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request); +int MPIX_Ibcast(void *buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm, MPI_Request *request) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); +int MPIX_Igather(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *request) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3) MPICH_ATTR_POINTER_WITH_TYPE_TAG(4,6); +int MPIX_Igatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int *recvcounts, int *displs, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *request) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3) MPICH_ATTR_POINTER_WITH_TYPE_TAG(4,7); +int MPIX_Iscatter(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *request) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3) MPICH_ATTR_POINTER_WITH_TYPE_TAG(4,6); +int MPIX_Iscatterv(void *sendbuf, int *sendcounts, int *displs, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *request) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(5,7); +int MPIX_Iallgather(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3) MPICH_ATTR_POINTER_WITH_TYPE_TAG(4,6); +int MPIX_Iallgatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int *recvcounts, int *displs, MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3) MPICH_ATTR_POINTER_WITH_TYPE_TAG(4,7); +int MPIX_Ialltoall(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3) MPICH_ATTR_POINTER_WITH_TYPE_TAG(4,6); +int MPIX_Ialltoallv(void *sendbuf, int *sendcounts, int *sdispls, MPI_Datatype sendtype, void *recvbuf, int *recvcounts, int *rdispls, MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(5,8); int MPIX_Ialltoallw(void *sendbuf, int *sendcounts, int *sdispls, MPI_Datatype *sendtypes, void *recvbuf, int *recvcounts, int *rdispls, MPI_Datatype *recvtypes, MPI_Comm comm, MPI_Request *request); -int MPIX_Ireduce(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm, MPI_Request *request); -int MPIX_Iallreduce(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request); -int MPIX_Ireduce_scatter(void *sendbuf, void *recvbuf, int *recvcounts, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request); -int MPIX_Ireduce_scatter_block(void *sendbuf, void *recvbuf, int recvcount, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request); -int MPIX_Iscan(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request); -int MPIX_Iexscan(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request); +int MPIX_Ireduce(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm, MPI_Request *request) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); +int MPIX_Iallreduce(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); +int MPIX_Ireduce_scatter(void *sendbuf, void *recvbuf, int *recvcounts, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); +int MPIX_Ireduce_scatter_block(void *sendbuf, void *recvbuf, int recvcount, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); +int MPIX_Iscan(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); +int MPIX_Iexscan(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); /* MPI-3 shared memory */ int MPIX_Comm_split_type(MPI_Comm comm, int split_type, int key, MPI_Info info, MPI_Comm *newcomm); @@ -1060,19 +1152,19 @@ /* Here are the bindings of the profiling routines */ #if !defined(MPI_BUILD_PROFILING) -int PMPI_Send(void*, int, MPI_Datatype, int, int, MPI_Comm); -int PMPI_Recv(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Status *); +int PMPI_Send(void*, int, MPI_Datatype, int, int, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); +int PMPI_Recv(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Status *) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); int PMPI_Get_count(MPI_Status *, MPI_Datatype, int *); -int PMPI_Bsend(void*, int, MPI_Datatype, int, int, MPI_Comm); -int PMPI_Ssend(void*, int, MPI_Datatype, int, int, MPI_Comm); -int PMPI_Rsend(void*, int, MPI_Datatype, int, int, MPI_Comm); +int PMPI_Bsend(void*, int, MPI_Datatype, int, int, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); +int PMPI_Ssend(void*, int, MPI_Datatype, int, int, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); +int PMPI_Rsend(void*, int, MPI_Datatype, int, int, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); int PMPI_Buffer_attach( void* buffer, int); int PMPI_Buffer_detach( void* buffer, int *); -int PMPI_Isend(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); -int PMPI_Ibsend(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); -int PMPI_Issend(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); -int PMPI_Irsend(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); -int PMPI_Irecv(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); +int PMPI_Isend(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); +int PMPI_Ibsend(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); +int PMPI_Issend(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); +int PMPI_Irsend(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); +int PMPI_Irecv(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); int PMPI_Wait(MPI_Request *, MPI_Status *); int PMPI_Test(MPI_Request *, int *, MPI_Status *); int PMPI_Request_free(MPI_Request *); @@ -1086,15 +1178,15 @@ int PMPI_Probe(int, int, MPI_Comm, MPI_Status *); int PMPI_Cancel(MPI_Request *); int PMPI_Test_cancelled(MPI_Status *, int *); -int PMPI_Send_init(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); -int PMPI_Bsend_init(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); -int PMPI_Ssend_init(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); -int PMPI_Rsend_init(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); -int PMPI_Recv_init(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); +int PMPI_Send_init(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); +int PMPI_Bsend_init(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); +int PMPI_Ssend_init(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); +int PMPI_Rsend_init(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); +int PMPI_Recv_init(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); int PMPI_Start(MPI_Request *); int PMPI_Startall(int, MPI_Request *); -int PMPI_Sendrecv(void *, int, MPI_Datatype, int, int, void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Status *); -int PMPI_Sendrecv_replace(void*, int, MPI_Datatype, int, int, int, int, MPI_Comm, MPI_Status *); +int PMPI_Sendrecv(void *, int, MPI_Datatype, int, int, void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Status *) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3) MPICH_ATTR_POINTER_WITH_TYPE_TAG(6,8); +int PMPI_Sendrecv_replace(void*, int, MPI_Datatype, int, int, int, int, MPI_Comm, MPI_Status *) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); int PMPI_Type_contiguous(int, MPI_Datatype, MPI_Datatype *); int PMPI_Type_vector(int, int, int, MPI_Datatype, MPI_Datatype *); int PMPI_Type_hvector(int, int, MPI_Aint, MPI_Datatype, MPI_Datatype *); @@ -1109,25 +1201,25 @@ int PMPI_Type_commit(MPI_Datatype *); int PMPI_Type_free(MPI_Datatype *); int PMPI_Get_elements(MPI_Status *, MPI_Datatype, int *); -int PMPI_Pack(void*, int, MPI_Datatype, void *, int, int *, MPI_Comm); -int PMPI_Unpack(void*, int, int *, void *, int, MPI_Datatype, MPI_Comm); +int PMPI_Pack(void*, int, MPI_Datatype, void *, int, int *, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); +int PMPI_Unpack(void*, int, int *, void *, int, MPI_Datatype, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(4,6); int PMPI_Pack_size(int, MPI_Datatype, MPI_Comm, int *); int PMPI_Barrier(MPI_Comm ); int PMPI_Bcast(void* buffer, int, MPI_Datatype, int, MPI_Comm ); -int PMPI_Gather(void* , int, MPI_Datatype, void*, int, MPI_Datatype, int, MPI_Comm); -int PMPI_Gatherv(void* , int, MPI_Datatype, void*, int *, int *, MPI_Datatype, int, MPI_Comm); -int PMPI_Scatter(void* , int, MPI_Datatype, void*, int, MPI_Datatype, int, MPI_Comm); -int PMPI_Scatterv(void* , int *, int *displs, MPI_Datatype, void*, int, MPI_Datatype, int, MPI_Comm); -int PMPI_Allgather(void* , int, MPI_Datatype, void*, int, MPI_Datatype, MPI_Comm); -int PMPI_Allgatherv(void* , int, MPI_Datatype, void*, int *, int *, MPI_Datatype, MPI_Comm); -int PMPI_Alltoall(void* , int, MPI_Datatype, void*, int, MPI_Datatype, MPI_Comm); -int PMPI_Alltoallv(void* , int *, int *, MPI_Datatype, void*, int *, int *, MPI_Datatype, MPI_Comm); -int PMPI_Reduce(void* , void*, int, MPI_Datatype, MPI_Op, int, MPI_Comm); +int PMPI_Gather(void* , int, MPI_Datatype, void*, int, MPI_Datatype, int, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3) MPICH_ATTR_POINTER_WITH_TYPE_TAG(4,6); +int PMPI_Gatherv(void* , int, MPI_Datatype, void*, int *, int *, MPI_Datatype, int, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3) MPICH_ATTR_POINTER_WITH_TYPE_TAG(4,7); +int PMPI_Scatter(void* , int, MPI_Datatype, void*, int, MPI_Datatype, int, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3) MPICH_ATTR_POINTER_WITH_TYPE_TAG(4,6); +int PMPI_Scatterv(void* , int *, int *displs, MPI_Datatype, void*, int, MPI_Datatype, int, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(5,7); +int PMPI_Allgather(void* , int, MPI_Datatype, void*, int, MPI_Datatype, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3) MPICH_ATTR_POINTER_WITH_TYPE_TAG(4,6); +int PMPI_Allgatherv(void* , int, MPI_Datatype, void*, int *, int *, MPI_Datatype, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3) MPICH_ATTR_POINTER_WITH_TYPE_TAG(4,7); +int PMPI_Alltoall(void* , int, MPI_Datatype, void*, int, MPI_Datatype, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3) MPICH_ATTR_POINTER_WITH_TYPE_TAG(4,6); +int PMPI_Alltoallv(void* , int *, int *, MPI_Datatype, void*, int *, int *, MPI_Datatype, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(5,8); +int PMPI_Reduce(void* , void*, int, MPI_Datatype, MPI_Op, int, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); int PMPI_Op_create(MPI_User_function *, int, MPI_Op *); int PMPI_Op_free( MPI_Op *); -int PMPI_Allreduce(void* , void*, int, MPI_Datatype, MPI_Op, MPI_Comm); -int PMPI_Reduce_scatter(void* , void*, int *, MPI_Datatype, MPI_Op, MPI_Comm); -int PMPI_Scan(void* , void*, int, MPI_Datatype, MPI_Op, MPI_Comm ); +int PMPI_Allreduce(void* , void*, int, MPI_Datatype, MPI_Op, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); +int PMPI_Reduce_scatter(void* , void*, int *, MPI_Datatype, MPI_Op, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); +int PMPI_Scan(void* , void*, int, MPI_Datatype, MPI_Op, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); int PMPI_Group_size(MPI_Group, int *); int PMPI_Group_rank(MPI_Group, int *); int PMPI_Group_translate_ranks (MPI_Group, int, int *, MPI_Group, int *); @@ -1214,11 +1306,11 @@ /* One-Sided Communications */ int PMPI_Accumulate(void *, int, MPI_Datatype, int, MPI_Aint, int, - MPI_Datatype, MPI_Op, MPI_Win); + MPI_Datatype, MPI_Op, MPI_Win) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); int PMPI_Get(void *, int, MPI_Datatype, int, MPI_Aint, int, MPI_Datatype, - MPI_Win); + MPI_Win) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); int PMPI_Put(void *, int, MPI_Datatype, int, MPI_Aint, int, MPI_Datatype, - MPI_Win); + MPI_Win) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); int PMPI_Win_complete(MPI_Win); int PMPI_Win_create(void *, MPI_Aint, int, MPI_Info, MPI_Comm, MPI_Win *); int PMPI_Win_fence(int, MPI_Win); @@ -1233,8 +1325,8 @@ /* Extended Collective Operations */ int PMPI_Alltoallw(void *, int [], int [], MPI_Datatype [], void *, int [], - int [], MPI_Datatype [], MPI_Comm); -int PMPI_Exscan(void *, void *, int, MPI_Datatype, MPI_Op, MPI_Comm) ; + int [], MPI_Datatype [], MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(5,8); +int PMPI_Exscan(void *, void *, int, MPI_Datatype, MPI_Op, MPI_Comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); /* External Interfaces */ int PMPI_Add_error_class(int *); @@ -1310,7 +1402,7 @@ int PMPI_Info_get_valuelen(MPI_Info, char *, int *, int *); int PMPI_Info_set(MPI_Info, char *, char *); int PMPI_Pack_external(char *, void *, int, MPI_Datatype, void *, MPI_Aint, - MPI_Aint *); + MPI_Aint *) MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); int PMPI_Pack_external_size(char *, int, MPI_Datatype, MPI_Aint *); int PMPI_Request_get_status(MPI_Request, int *, MPI_Status *); int PMPI_Status_c2f(MPI_Status *, MPI_Fint *); @@ -1330,39 +1422,39 @@ int PMPI_Type_get_extent(MPI_Datatype, MPI_Aint *, MPI_Aint *); int PMPI_Type_get_true_extent(MPI_Datatype, MPI_Aint *, MPI_Aint *); int PMPI_Unpack_external(char *, void *, MPI_Aint, MPI_Aint *, void *, int, - MPI_Datatype); + MPI_Datatype) MPICH_ATTR_POINTER_WITH_TYPE_TAG(5,7); int PMPI_Win_create_errhandler(MPI_Win_errhandler_function *, MPI_Errhandler *); int PMPI_Win_get_errhandler(MPI_Win, MPI_Errhandler *); int PMPI_Win_set_errhandler(MPI_Win, MPI_Errhandler); -int PMPI_Reduce_local(void *inbuf, void *inoutbuf, int count, MPI_Datatype datatype, MPI_Op op); +int PMPI_Reduce_local(void *inbuf, void *inoutbuf, int count, MPI_Datatype datatype, MPI_Op op) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); int PMPI_Op_commutative(MPI_Op op, int *commute); -int PMPI_Reduce_scatter_block(void *sendbuf, void *recvbuf, int recvcount, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm); +int PMPI_Reduce_scatter_block(void *sendbuf, void *recvbuf, int recvcount, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); int PMPI_Dist_graph_create_adjacent(MPI_Comm comm_old, int indegree, int [], int [], int outdegree, int [], int [], MPI_Info info, int reorder, MPI_Comm *comm_dist_graph); int PMPI_Dist_graph_create(MPI_Comm comm_old, int n, int [], int [], int [], int [], MPI_Info info, int reorder, MPI_Comm *comm_dist_graph); int PMPI_Dist_graph_neighbors_count(MPI_Comm comm, int *indegree, int *outdegree, int *weighted); int PMPI_Dist_graph_neighbors(MPI_Comm comm, int maxindegree, int [], int [], int maxoutdegree, int [], int []); int PMPIX_Comm_idup(MPI_Comm comm, MPI_Comm *newcomm, MPI_Request *request); int PMPIX_Improbe(int source, int tag, MPI_Comm comm, int *flag, MPIX_Message *message, MPI_Status *status); -int PMPIX_Imrecv(void *buf, int count, MPI_Datatype datatype, MPIX_Message *message, MPI_Request *request); +int PMPIX_Imrecv(void *buf, int count, MPI_Datatype datatype, MPIX_Message *message, MPI_Request *request) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); int PMPIX_Mprobe(int source, int tag, MPI_Comm comm, MPIX_Message *message, MPI_Status *status); -int PMPIX_Mrecv(void *buf, int count, MPI_Datatype datatype, MPIX_Message *message, MPI_Status *status); +int PMPIX_Mrecv(void *buf, int count, MPI_Datatype datatype, MPIX_Message *message, MPI_Status *status) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); int PMPIX_Ibarrier(MPI_Comm comm, MPI_Request *request); -int PMPIX_Ibcast(void *buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm, MPI_Request *request); -int PMPIX_Igather(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *request); -int PMPIX_Igatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int *recvcounts, int *displs, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *request); -int PMPIX_Iscatter(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *request); -int PMPIX_Iscatterv(void *sendbuf, int *sendcounts, int *displs, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *request); -int PMPIX_Iallgather(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request); -int PMPIX_Iallgatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int *recvcounts, int *displs, MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request); -int PMPIX_Ialltoall(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request); -int PMPIX_Ialltoallv(void *sendbuf, int *sendcounts, int *sdispls, MPI_Datatype sendtype, void *recvbuf, int *recvcounts, int *rdispls, MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request); +int PMPIX_Ibcast(void *buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm, MPI_Request *request) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3); +int PMPIX_Igather(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *request) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3) MPICH_ATTR_POINTER_WITH_TYPE_TAG(4,6); +int PMPIX_Igatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int *recvcounts, int *displs, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *request) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3) MPICH_ATTR_POINTER_WITH_TYPE_TAG(4,7); +int PMPIX_Iscatter(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *request) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3) MPICH_ATTR_POINTER_WITH_TYPE_TAG(4,6); +int PMPIX_Iscatterv(void *sendbuf, int *sendcounts, int *displs, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *request) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(5,7); +int PMPIX_Iallgather(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3) MPICH_ATTR_POINTER_WITH_TYPE_TAG(4,6); +int PMPIX_Iallgatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int *recvcounts, int *displs, MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3) MPICH_ATTR_POINTER_WITH_TYPE_TAG(4,7); +int PMPIX_Ialltoall(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3) MPICH_ATTR_POINTER_WITH_TYPE_TAG(4,6); +int PMPIX_Ialltoallv(void *sendbuf, int *sendcounts, int *sdispls, MPI_Datatype sendtype, void *recvbuf, int *recvcounts, int *rdispls, MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(5,8); int PMPIX_Ialltoallw(void *sendbuf, int *sendcounts, int *sdispls, MPI_Datatype *sendtypes, void *recvbuf, int *recvcounts, int *rdispls, MPI_Datatype *recvtypes, MPI_Comm comm, MPI_Request *request); -int PMPIX_Ireduce(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm, MPI_Request *request); -int PMPIX_Iallreduce(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request); -int PMPIX_Ireduce_scatter(void *sendbuf, void *recvbuf, int *recvcounts, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request); -int PMPIX_Ireduce_scatter_block(void *sendbuf, void *recvbuf, int recvcount, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request); -int PMPIX_Iscan(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request); -int PMPIX_Iexscan(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request); +int PMPIX_Ireduce(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm, MPI_Request *request) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); +int PMPIX_Iallreduce(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); +int PMPIX_Ireduce_scatter(void *sendbuf, void *recvbuf, int *recvcounts, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); +int PMPIX_Ireduce_scatter_block(void *sendbuf, void *recvbuf, int recvcount, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); +int PMPIX_Iscan(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); +int PMPIX_Iexscan(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request) MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,4) MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); int PMPIX_Comm_split_type(MPI_Comm comm, int split_type, int key, MPI_Info info, MPI_Comm *newcomm); int PMPIX_Comm_create_group(MPI_Comm comm, MPI_Group group, int tag, MPI_Comm * newcomm); int PMPIX_T_init_thread(int required, int *provided); Index: src/mpi/romio/include/mpio.h.in =================================================================== --- src/mpi/romio/include/mpio.h.in (revision 9927) +++ src/mpi/romio/include/mpio.h.in (working copy) @@ -135,67 +135,91 @@ /* Section 9.4.2 */ int MPI_File_read_at(MPI_File, MPI_Offset, void *, - int, MPI_Datatype, MPI_Status *); + int, MPI_Datatype, MPI_Status *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(3,5); int MPI_File_read_at_all(MPI_File, MPI_Offset, void *, - int, MPI_Datatype, MPI_Status *); + int, MPI_Datatype, MPI_Status *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(3,5); int MPI_File_write_at(MPI_File, MPI_Offset, void *, - int, MPI_Datatype, MPI_Status *); + int, MPI_Datatype, MPI_Status *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(3,5); int MPI_File_write_at_all(MPI_File, MPI_Offset, void *, - int, MPI_Datatype, MPI_Status *); + int, MPI_Datatype, MPI_Status *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(3,5); /* nonblocking calls currently use MPIO_Request, because generalized requests not yet implemented. For the same reason, MPIO_Test and MPIO_Wait are used to test and wait on nonblocking I/O requests */ int MPI_File_iread_at(MPI_File, MPI_Offset, void *, - int, MPI_Datatype, MPIO_Request *); + int, MPI_Datatype, MPIO_Request *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(3,5); int MPI_File_iwrite_at(MPI_File, MPI_Offset, void *, - int, MPI_Datatype, MPIO_Request *); + int, MPI_Datatype, MPIO_Request *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(3,5); /* Section 9.4.3 */ -int MPI_File_read(MPI_File, void *, int, MPI_Datatype, MPI_Status *); -int MPI_File_read_all(MPI_File, void *, int, MPI_Datatype, MPI_Status *); -int MPI_File_write(MPI_File, void *, int, MPI_Datatype, MPI_Status *); -int MPI_File_write_all(MPI_File, void *, int, MPI_Datatype, MPI_Status *); +int MPI_File_read(MPI_File, void *, int, MPI_Datatype, MPI_Status *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); +int MPI_File_read_all(MPI_File, void *, int, MPI_Datatype, MPI_Status *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); +int MPI_File_write(MPI_File, void *, int, MPI_Datatype, MPI_Status *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); +int MPI_File_write_all(MPI_File, void *, int, MPI_Datatype, MPI_Status *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); /* nonblocking calls currently use MPIO_Request, because generalized requests not yet implemented. For the same reason, MPIO_Test and MPIO_Wait are used to test and wait on nonblocking I/O requests */ -int MPI_File_iread(MPI_File, void *, int, MPI_Datatype, MPIO_Request *); -int MPI_File_iwrite(MPI_File, void *, int, MPI_Datatype, MPIO_Request *); +int MPI_File_iread(MPI_File, void *, int, MPI_Datatype, MPIO_Request *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); +int MPI_File_iwrite(MPI_File, void *, int, MPI_Datatype, MPIO_Request *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); int MPI_File_seek(MPI_File, MPI_Offset, int); int MPI_File_get_position(MPI_File, MPI_Offset *); int MPI_File_get_byte_offset(MPI_File, MPI_Offset, MPI_Offset *); /* Section 9.4.4 */ -int MPI_File_read_shared(MPI_File, void *, int, MPI_Datatype, MPI_Status *); -int MPI_File_write_shared(MPI_File, void *, int, MPI_Datatype, MPI_Status *); -int MPI_File_iread_shared(MPI_File, void *, int, MPI_Datatype, MPIO_Request *); -int MPI_File_iwrite_shared(MPI_File, void *, int, - MPI_Datatype, MPIO_Request *); -int MPI_File_read_ordered(MPI_File, void *, int, - MPI_Datatype, MPI_Status *); -int MPI_File_write_ordered(MPI_File, void *, int, - MPI_Datatype, MPI_Status *); +int MPI_File_read_shared(MPI_File, void *, int, MPI_Datatype, MPI_Status *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); +int MPI_File_write_shared(MPI_File, void *, int, MPI_Datatype, MPI_Status *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); +int MPI_File_iread_shared(MPI_File, void *, int, MPI_Datatype, MPIO_Request *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); +int MPI_File_iwrite_shared(MPI_File, void *, int, + MPI_Datatype, MPIO_Request *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); +int MPI_File_read_ordered(MPI_File, void *, int, + MPI_Datatype, MPI_Status *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); +int MPI_File_write_ordered(MPI_File, void *, int, + MPI_Datatype, MPI_Status *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); int MPI_File_seek_shared(MPI_File, MPI_Offset, int); int MPI_File_get_position_shared(MPI_File, MPI_Offset *); /* Section 9.4.5 */ int MPI_File_read_at_all_begin(MPI_File, MPI_Offset, void *, - int, MPI_Datatype); + int, MPI_Datatype) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(3,5); int MPI_File_read_at_all_end(MPI_File, void *, MPI_Status *); int MPI_File_write_at_all_begin(MPI_File, MPI_Offset, void *, - int, MPI_Datatype); + int, MPI_Datatype) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(3,5); int MPI_File_write_at_all_end(MPI_File, void *, MPI_Status *); -int MPI_File_read_all_begin(MPI_File, void *, int, MPI_Datatype); +int MPI_File_read_all_begin(MPI_File, void *, int, MPI_Datatype) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); int MPI_File_read_all_end(MPI_File, void *, MPI_Status *); -int MPI_File_write_all_begin(MPI_File, void *, int, MPI_Datatype); +int MPI_File_write_all_begin(MPI_File, void *, int, MPI_Datatype) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); int MPI_File_write_all_end(MPI_File, void *, MPI_Status *); -int MPI_File_read_ordered_begin(MPI_File, void *, int, MPI_Datatype); +int MPI_File_read_ordered_begin(MPI_File, void *, int, MPI_Datatype) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); int MPI_File_read_ordered_end(MPI_File, void *, MPI_Status *); -int MPI_File_write_ordered_begin(MPI_File, void *, int, MPI_Datatype); +int MPI_File_write_ordered_begin(MPI_File, void *, int, MPI_Datatype) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); int MPI_File_write_ordered_end(MPI_File, void *, MPI_Status *); /* Section 9.5.1 */ @@ -321,66 +345,90 @@ /* Section 9.4.2 */ int PMPI_File_read_at(MPI_File, MPI_Offset, void *, - int, MPI_Datatype, MPI_Status *); + int, MPI_Datatype, MPI_Status *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(3,5); int PMPI_File_read_at_all(MPI_File, MPI_Offset, void *, - int, MPI_Datatype, MPI_Status *); + int, MPI_Datatype, MPI_Status *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(3,5); int PMPI_File_write_at(MPI_File, MPI_Offset, void *, - int, MPI_Datatype, MPI_Status *); + int, MPI_Datatype, MPI_Status *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(3,5); int PMPI_File_write_at_all(MPI_File, MPI_Offset, void *, - int, MPI_Datatype, MPI_Status *); + int, MPI_Datatype, MPI_Status *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(3,5); /* nonblocking calls currently use MPIO_Request, because generalized requests not yet implemented. For the same reason, MPIO_Test and MPIO_Wait are used to test and wait on nonblocking I/O requests */ int PMPI_File_iread_at(MPI_File, MPI_Offset, void *, - int, MPI_Datatype, MPIO_Request *); + int, MPI_Datatype, MPIO_Request *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(3,5); int PMPI_File_iwrite_at(MPI_File, MPI_Offset, void *, - int, MPI_Datatype, MPIO_Request *); + int, MPI_Datatype, MPIO_Request *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(3,5); /* Section 9.4.3 */ -int PMPI_File_read(MPI_File, void *, int, MPI_Datatype, MPI_Status *); -int PMPI_File_read_all(MPI_File, void *, int, MPI_Datatype, MPI_Status *); -int PMPI_File_write(MPI_File, void *, int, MPI_Datatype, MPI_Status *); -int PMPI_File_write_all(MPI_File, void *, int, MPI_Datatype, MPI_Status *); +int PMPI_File_read(MPI_File, void *, int, MPI_Datatype, MPI_Status *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); +int PMPI_File_read_all(MPI_File, void *, int, MPI_Datatype, MPI_Status *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); +int PMPI_File_write(MPI_File, void *, int, MPI_Datatype, MPI_Status *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); +int PMPI_File_write_all(MPI_File, void *, int, MPI_Datatype, MPI_Status *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); /* nonblocking calls currently use MPIO_Request, because generalized requests not yet implemented. For the same reason, MPIO_Test and MPIO_Wait are used to test and wait on nonblocking I/O requests */ -int PMPI_File_iread(MPI_File, void *, int, MPI_Datatype, MPIO_Request *); -int PMPI_File_iwrite(MPI_File, void *, int, MPI_Datatype, MPIO_Request *); +int PMPI_File_iread(MPI_File, void *, int, MPI_Datatype, MPIO_Request *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); +int PMPI_File_iwrite(MPI_File, void *, int, MPI_Datatype, MPIO_Request *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); int PMPI_File_seek(MPI_File, MPI_Offset, int); int PMPI_File_get_position(MPI_File, MPI_Offset *); int PMPI_File_get_byte_offset(MPI_File, MPI_Offset, MPI_Offset *); /* Section 9.4.4 */ -int PMPI_File_read_shared(MPI_File, void *, int, MPI_Datatype, MPI_Status *); -int PMPI_File_write_shared(MPI_File, void *, int, MPI_Datatype, MPI_Status *); +int PMPI_File_read_shared(MPI_File, void *, int, MPI_Datatype, MPI_Status *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); +int PMPI_File_write_shared(MPI_File, void *, int, MPI_Datatype, MPI_Status *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); int PMPI_File_iread_shared(MPI_File, void *, int, - MPI_Datatype, MPIO_Request *); + MPI_Datatype, MPIO_Request *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); int PMPI_File_iwrite_shared(MPI_File, void *, int, - MPI_Datatype, MPIO_Request *); -int PMPI_File_read_ordered(MPI_File, void *, int, MPI_Datatype, MPI_Status *); -int PMPI_File_write_ordered(MPI_File, void *, int, MPI_Datatype, MPI_Status *); + MPI_Datatype, MPIO_Request *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); +int PMPI_File_read_ordered(MPI_File, void *, int, MPI_Datatype, MPI_Status *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); +int PMPI_File_write_ordered(MPI_File, void *, int, MPI_Datatype, MPI_Status *) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); int PMPI_File_seek_shared(MPI_File, MPI_Offset, int); int PMPI_File_get_position_shared(MPI_File, MPI_Offset *); /* Section 9.4.5 */ int PMPI_File_read_at_all_begin(MPI_File, MPI_Offset, void *, - int, MPI_Datatype); + int, MPI_Datatype) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(3,5); int PMPI_File_read_at_all_end(MPI_File, void *, MPI_Status *); int PMPI_File_write_at_all_begin(MPI_File, MPI_Offset, void *, - int, MPI_Datatype); + int, MPI_Datatype) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(3,5); int PMPI_File_write_at_all_end(MPI_File, void *, MPI_Status *); -int PMPI_File_read_all_begin(MPI_File, void *, int, MPI_Datatype); +int PMPI_File_read_all_begin(MPI_File, void *, int, MPI_Datatype) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); int PMPI_File_read_all_end(MPI_File, void *, MPI_Status *); -int PMPI_File_write_all_begin(MPI_File, void *, int, MPI_Datatype); +int PMPI_File_write_all_begin(MPI_File, void *, int, MPI_Datatype) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); int PMPI_File_write_all_end(MPI_File, void *, MPI_Status *); -int PMPI_File_read_ordered_begin(MPI_File, void *, int, MPI_Datatype); +int PMPI_File_read_ordered_begin(MPI_File, void *, int, MPI_Datatype) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); int PMPI_File_read_ordered_end(MPI_File, void *, MPI_Status *); -int PMPI_File_write_ordered_begin(MPI_File, void *, int, MPI_Datatype); +int PMPI_File_write_ordered_begin(MPI_File, void *, int, MPI_Datatype) + MPICH_ATTR_POINTER_WITH_TYPE_TAG(2,4); int PMPI_File_write_ordered_end(MPI_File, void *, MPI_Status *); /* Section 9.5.1 */