diff -uNr -x lt~obsolete.m4 -x ltdl.m4 -x libtool.m4 -x autogen_found_items.m4 -x argz.m4 -x aclocal.m4 -x romioconf.h.in -x py-compile -x ylwrap -x opal_get_version.sh -x missing -x install-sh -x Makefile.in -x compile -x depcomp -x config.guess -x config.sub -x '*ltmain*' -x configure /tmp/openmpi-1.9a1r27420/ompi/config/ompi_setup_mpi_fortran.m4 openmpi-1.9a1r27420/ompi/config/ompi_setup_mpi_fortran.m4 --- /tmp/openmpi-1.9a1r27420/ompi/config/ompi_setup_mpi_fortran.m4 2012-10-06 04:00:26.000000000 +0300 +++ openmpi-1.9a1r27420/ompi/config/ompi_setup_mpi_fortran.m4 2012-10-07 20:41:00.443786267 +0300 @@ -158,7 +158,7 @@ OMPI_FORTRAN_CHECK([DOUBLE PRECISION], [yes], [float, double, long double], [-1], [yes]) - OMPI_FORTRAN_CHECK([COMPLEX], [yes], [float _Complex], [-1], [no]) + OMPI_FORTRAN_CHECK([COMPLEX], [yes], [float _Complex], [-1], [yes]) # The complex*N tests are a bit different (note: the complex tests are # the same as all the rest, because complex is a composite of two @@ -171,22 +171,22 @@ # have a back-end C type for it) # b) compiler supports complex*N - OMPI_FORTRAN_CHECK([COMPLEX*4], [no], [float _Complex], [4], [no]) + OMPI_FORTRAN_CHECK([COMPLEX*4], [no], [float _Complex], [4], [yes]) OMPI_FORTRAN_CHECK([COMPLEX*8], [no], [float _Complex, double _Complex, long double _Complex], - [8], [no]) + [8], [yes]) OMPI_FORTRAN_CHECK([COMPLEX*16], [no], [float _Complex, double _Complex, long double _Complex], - [16], [no]) + [16], [yes]) OMPI_FORTRAN_CHECK([COMPLEX*32], [no], [float _Complex, double _Complex, long double _Complex], - [32], [no]) + [32], [yes]) # Double precision complex types are not standard, but many # compilers support it. Code should be wrapped with #ifdef # OMPI_HAVE_FORTRAN_DOUBLE_COMPLEX OMPI_FORTRAN_CHECK([DOUBLE COMPLEX], [no], [float _Complex, double _Complex, long double _Complex], - [-1], [no]) + [-1], [yes]) # Regardless of whether we have fortran bindings, or even a # fortran compiler, get the max value for a fortran MPI handle diff -uNr -x lt~obsolete.m4 -x ltdl.m4 -x libtool.m4 -x autogen_found_items.m4 -x argz.m4 -x aclocal.m4 -x romioconf.h.in -x py-compile -x ylwrap -x opal_get_version.sh -x missing -x install-sh -x Makefile.in -x compile -x depcomp -x config.guess -x config.sub -x '*ltmain*' -x configure /tmp/openmpi-1.9a1r27420/ompi/include/mpi.h.in openmpi-1.9a1r27420/ompi/include/mpi.h.in --- /tmp/openmpi-1.9a1r27420/ompi/include/mpi.h.in 2012-10-06 04:00:07.000000000 +0300 +++ openmpi-1.9a1r27420/ompi/include/mpi.h.in 2012-10-20 00:50:28.143010320 +0300 @@ -88,6 +88,23 @@ /* Maximum length of processor names (default is 256) */ #undef OPAL_MAX_PROCESSOR_NAME +/* Whether we will build the MPI Fortran mpif.h bindings or not */ +#undef OMPI_BUILD_FORTRAN_MPIFH_BINDINGS + +/* For ompi_info: Whether we will build the MPI Fortran "use mpi_f08" bindings + or not */ +#undef OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS + +/* Whether we will build the MPI Fortran "use mpi" bindings or not */ +#undef OMPI_BUILD_FORTRAN_USEMPI_BINDINGS + +/* Convenience */ +#if OMPI_BUILD_FORTRAN_MPIFH_BINDINGS || OMPI_BUILD_FORTRAN_USEMPI_BINDINGS || OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS +#define OMPI_BUILD_FORTRAN_BINDINGS 1 +#else +#define OMPI_BUILD_FORTRAN_BINDINGS 0 +#endif + /* Whether we have FORTRAN LOGICAL*1 or not */ #undef OMPI_HAVE_FORTRAN_LOGICAL1 @@ -179,9 +196,82 @@ valid */ #undef ompi_fortran_bogus_type_t -/* C type corresponding to FORTRAN INTEGER */ +/* A bogus type that allows us to have sentinel type values that are still + valid */ +#undef ompi_fortran_bogus_type_t + +/* C type corresponding to Fortran CHARACTER */ +#undef ompi_fortran_character_t + +/* C type corresponding to Fortran COMPLEX*16 */ +#undef ompi_fortran_complex16_t + +/* C type corresponding to Fortran COMPLEX*32 */ +#undef ompi_fortran_complex32_t + +/* C type corresponding to Fortran COMPLEX*4 */ +#undef ompi_fortran_complex4_t + +/* C type corresponding to Fortran COMPLEX*8 */ +#undef ompi_fortran_complex8_t + +/* C type corresponding to Fortran COMPLEX */ +#undef ompi_fortran_complex_t + +/* C type corresponding to Fortran DOUBLE COMPLEX */ +#undef ompi_fortran_double_complex_t + +/* C type corresponding to Fortran DOUBLE PRECISION */ +#undef ompi_fortran_double_precision_t + +/* C type corresponding to Fortran INTEGER*16 */ +#undef ompi_fortran_integer16_t + +/* C type corresponding to Fortran INTEGER*1 */ +#undef ompi_fortran_integer1_t + +/* C type corresponding to Fortran INTEGER*2 */ +#undef ompi_fortran_integer2_t + +/* C type corresponding to Fortran INTEGER*4 */ +#undef ompi_fortran_integer4_t + +/* C type corresponding to Fortran INTEGER*8 */ +#undef ompi_fortran_integer8_t + +/* C type corresponding to Fortran INTEGER */ #undef ompi_fortran_integer_t +/* C type corresponding to Fortran LOGICAL*1 */ +#undef ompi_fortran_logical1_t + +/* C type corresponding to Fortran LOGICAL*2 */ +#undef ompi_fortran_logical2_t + +/* C type corresponding to Fortran LOGICAL*4 */ +#undef ompi_fortran_logical4_t + +/* C type corresponding to Fortran LOGICAL*8 */ +#undef ompi_fortran_logical8_t + +/* C type corresponding to Fortran LOGICAL */ +#undef ompi_fortran_logical_t + +/* C type corresponding to Fortran REAL*16 */ +#undef ompi_fortran_real16_t + +/* C type corresponding to Fortran REAL*2 */ +#undef ompi_fortran_real2_t + +/* C type corresponding to Fortran REAL*4 */ +#undef ompi_fortran_real4_t + +/* C type corresponding to Fortran REAL*8 */ +#undef ompi_fortran_real8_t + +/* C type corresponding to Fortran REAL */ +#undef ompi_fortran_real_t + /* Whether C compiler supports -fvisibility */ #undef OPAL_C_HAVE_VISIBILITY @@ -213,6 +303,68 @@ /* @OMPI_END_CONFIGURE_SECTION@ */ +#if defined(__has_attribute) +# if __has_attribute(pointer_with_type_tag) && \ + __has_attribute(type_tag_for_datatype) && \ + !defined(OMPI_NO_ATTR_TYPE_TAGS) +# define OMPI_ATTR_POINTER_WITH_TYPE_TAG(buffer_idx, type_idx) __attribute__((pointer_with_type_tag(MPI,buffer_idx,type_idx))) +# define OMPI_ATTR_TYPE_TAG(type) __attribute__((type_tag_for_datatype(MPI,type))) +# define OMPI_ATTR_TYPE_TAG_LAYOUT_COMPATIBLE(type) __attribute__((type_tag_for_datatype(MPI,type,layout_compatible))) +# define OMPI_ATTR_TYPE_TAG_MUST_BE_NULL() __attribute__((type_tag_for_datatype(MPI,void,must_be_null))) +# include +# endif +#endif + +#if !defined(OMPI_ATTR_POINTER_WITH_TYPE_TAG) +# define OMPI_ATTR_POINTER_WITH_TYPE_TAG(buffer_idx, type_idx) +# define OMPI_ATTR_TYPE_TAG(type) +# define OMPI_ATTR_TYPE_TAG_LAYOUT_COMPATIBLE(type) +# define OMPI_ATTR_TYPE_TAG_MUST_BE_NULL() +#endif + +#if !defined(INT8_C) +/* stdint.h was not included, see if we can get it */ +# if defined(__cplusplus) +# if __cplusplus >= 201103 +# include +# endif +# endif +#endif + +#if !defined(INT8_C) +/* stdint.h was not included, see if we can get it */ +# if defined(__STDC_VERSION__) +# if __STDC_VERSION__ >= 199901 +# include +# endif +# endif +#endif + +#if defined(INT8_C) +/* stdint.h was included, so we can annotate these types */ +# define OMPI_ATTR_TYPE_TAG_STDINT(type) OMPI_ATTR_TYPE_TAG(type) +#else +# define OMPI_ATTR_TYPE_TAG_STDINT(type) +#endif + +#if defined(__STDC_VERSION__) +# if __STDC_VERSION__ >= 199901 +# define OMPI_ATTR_TYPE_TAG_C99(type) OMPI_ATTR_TYPE_TAG(type) +# else +# define OMPI_ATTR_TYPE_TAG_C99(type) +# endif +#else +# define OMPI_ATTR_TYPE_TAG_C99(type) +#endif + +#if OMPI_BUILD_FORTRAN_BINDINGS +# define OMPI_ATTR_TYPE_TAG_FORTRAN(type) OMPI_ATTR_TYPE_TAG(type) +# define OMPI_ATTR_TYPE_TAG_FORTRAN_LAYOUT_COMPATIBLE(type) OMPI_ATTR_TYPE_TAG(type) +#else +# define OMPI_ATTR_TYPE_TAG_FORTRAN(type) +# define OMPI_ATTR_TYPE_TAG_FORTRAN_LAYOUT_COMPATIBLE(type) +#endif + /* include for ptrdiff_t */ #ifdef OPAL_STDC_HEADERS #include @@ -791,26 +943,26 @@ OMPI_DECLSPEC extern struct ompi_predefined_op_t ompi_mpi_op_replace; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_datatype_null; +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_datatype_null OMPI_ATTR_TYPE_TAG_MUST_BE_NULL(); OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_lb __mpi_interface_deprecated__("MPI_LB is deprecated in MPI-2.0"); OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_ub __mpi_interface_deprecated__("MPI_UB is deprecated in MPI-2.0"); -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_char; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_signed_char; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_unsigned_char; +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_char OMPI_ATTR_TYPE_TAG(char); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_signed_char OMPI_ATTR_TYPE_TAG(signed char); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_unsigned_char OMPI_ATTR_TYPE_TAG(unsigned char); OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_byte; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_short; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_unsigned_short; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_int; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_unsigned; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_long; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_unsigned_long; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_long_long_int; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_unsigned_long_long; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_float; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_double; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_long_double; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_wchar; +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_short OMPI_ATTR_TYPE_TAG(signed short int); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_unsigned_short OMPI_ATTR_TYPE_TAG(unsigned short int); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_int OMPI_ATTR_TYPE_TAG(signed int); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_unsigned OMPI_ATTR_TYPE_TAG(unsigned int); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_long OMPI_ATTR_TYPE_TAG(signed long int); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_unsigned_long OMPI_ATTR_TYPE_TAG(unsigned long int); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_long_long_int OMPI_ATTR_TYPE_TAG(long long int); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_unsigned_long_long OMPI_ATTR_TYPE_TAG(unsigned long long int); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_float OMPI_ATTR_TYPE_TAG(float); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_double OMPI_ATTR_TYPE_TAG(double); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_long_double OMPI_ATTR_TYPE_TAG(long double); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_wchar OMPI_ATTR_TYPE_TAG(wchar_t); OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_packed; /* @@ -824,63 +976,141 @@ /* * Following are the Fortran datatypes */ -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_logical; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_character; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_integer; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_real; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_dblprec; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_cplex; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_dblcplex; +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_logical OMPI_ATTR_TYPE_TAG_FORTRAN(ompi_fortran_logical_t); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_character OMPI_ATTR_TYPE_TAG_FORTRAN(ompi_fortran_character_t); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_integer OMPI_ATTR_TYPE_TAG_FORTRAN(ompi_fortran_integer_t); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_real OMPI_ATTR_TYPE_TAG_FORTRAN(ompi_fortran_real_t); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_dblprec OMPI_ATTR_TYPE_TAG_FORTRAN(ompi_fortran_double_precision_t); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_cplex OMPI_ATTR_TYPE_TAG_FORTRAN(ompi_fortran_complex_t); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_dblcplex OMPI_ATTR_TYPE_TAG_FORTRAN(ompi_fortran_double_complex_t); OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_ldblcplex; /* Aggregate struct datatypes are not const */ -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_2int; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_2integer; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_2real; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_2dblprec; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_2cplex; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_2dblcplex; - -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_float_int; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_double_int; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_longdbl_int; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_short_int; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_long_int; +struct ompi_struct_mpi_2int { int i1; int i2; }; +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_2int OMPI_ATTR_TYPE_TAG_LAYOUT_COMPATIBLE(struct ompi_struct_mpi_2int); + +#if OMPI_BUILD_FORTRAN_BINDINGS +struct ompi_struct_mpi_2integer { ompi_fortran_integer_t i1; ompi_fortran_integer_t i2; }; +struct ompi_struct_mpi_2real { ompi_fortran_real_t r1; ompi_fortran_real_t r2; }; +struct ompi_struct_mpi_2dblprec { ompi_fortran_double_precision_t d1; ompi_fortran_double_precision_t d2; }; +struct ompi_struct_mpi_2cplex { ompi_fortran_complex_t c1; ompi_fortran_complex_t c2; }; +struct ompi_struct_mpi_2dblcplex { ompi_fortran_double_complex_t c1; ompi_fortran_double_complex_t c2; }; +#endif +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_2integer OMPI_ATTR_TYPE_TAG_FORTRAN_LAYOUT_COMPATIBLE(struct ompi_struct_mpi_2integer); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_2real OMPI_ATTR_TYPE_TAG_FORTRAN_LAYOUT_COMPATIBLE(struct ompi_struct_mpi_2real); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_2dblprec OMPI_ATTR_TYPE_TAG_FORTRAN_LAYOUT_COMPATIBLE(struct ompi_struct_mpi_2dblprec); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_2cplex OMPI_ATTR_TYPE_TAG_FORTRAN_LAYOUT_COMPATIBLE(struct ompi_struct_mpi_2cplex); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_2dblcplex OMPI_ATTR_TYPE_TAG_FORTRAN_LAYOUT_COMPATIBLE(struct ompi_struct_mpi_2dblcplex); + +struct ompi_struct_mpi_float_int { float f; int i; }; +struct ompi_struct_mpi_double_int { double d; int i; }; +struct ompi_struct_mpi_longdbl_int { long double ld; int i; }; +struct ompi_struct_mpi_short_int { short s; int i; }; +struct ompi_struct_mpi_long_int { long l; int i; }; +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_float_int OMPI_ATTR_TYPE_TAG_LAYOUT_COMPATIBLE(struct ompi_struct_mpi_float_int); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_double_int OMPI_ATTR_TYPE_TAG_LAYOUT_COMPATIBLE(struct ompi_struct_mpi_double_int); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_longdbl_int OMPI_ATTR_TYPE_TAG_LAYOUT_COMPATIBLE(struct ompi_struct_mpi_longdbl_int); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_short_int OMPI_ATTR_TYPE_TAG_LAYOUT_COMPATIBLE(struct ompi_struct_mpi_short_int); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_long_int OMPI_ATTR_TYPE_TAG_LAYOUT_COMPATIBLE(struct ompi_struct_mpi_long_int); /* Optional MPI2 datatypes, always declared and defined, but not "exported" as MPI_LOGICAL1 */ -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_logical1; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_logical2; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_logical4; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_logical8; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_integer1; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_integer2; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_integer4; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_integer8; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_integer16; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_real2; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_real4; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_real8; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_real16; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_complex8; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_complex16; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_complex32; +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_logical1 +#if OMPI_HAVE_FORTRAN_LOGICAL1 + OMPI_ATTR_TYPE_TAG(ompi_fortran_logical1_t) +#endif + ; +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_logical2 +#if OMPI_HAVE_FORTRAN_LOGICAL2 + OMPI_ATTR_TYPE_TAG(ompi_fortran_logical2_t) +#endif + ; +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_logical4 +#if OMPI_HAVE_FORTRAN_LOGICAL4 + OMPI_ATTR_TYPE_TAG(ompi_fortran_logical4_t) +#endif + ; +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_logical8 +#if OMPI_HAVE_FORTRAN_LOGICAL8 + OMPI_ATTR_TYPE_TAG(ompi_fortran_logical8_t) +#endif + ; +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_integer1 +#if OMPI_HAVE_FORTRAN_INTEGER1 + OMPI_ATTR_TYPE_TAG(ompi_fortran_integer1_t) +#endif + ; +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_integer2 +#if OMPI_HAVE_FORTRAN_INTEGER2 + OMPI_ATTR_TYPE_TAG(ompi_fortran_integer2_t) +#endif + ; +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_integer4 +#if OMPI_HAVE_FORTRAN_INTEGER4 + OMPI_ATTR_TYPE_TAG(ompi_fortran_integer4_t) +#endif + ; +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_integer8 +#if OMPI_HAVE_FORTRAN_INTEGER8 + OMPI_ATTR_TYPE_TAG(ompi_fortran_integer8_t) +#endif + ; +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_integer16 +#if OMPI_HAVE_FORTRAN_INTEGER16 + OMPI_ATTR_TYPE_TAG(ompi_fortran_integer16_t) +#endif + ; +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_real2 +#if OMPI_HAVE_FORTRAN_REAL2 + OMPI_ATTR_TYPE_TAG(ompi_fortran_real2_t) +#endif + ; +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_real4 +#if OMPI_HAVE_FORTRAN_REAL4 + OMPI_ATTR_TYPE_TAG(ompi_fortran_real4_t) +#endif + ; +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_real8 +#if OMPI_HAVE_FORTRAN_REAL8 + OMPI_ATTR_TYPE_TAG(ompi_fortran_real8_t) +#endif + ; +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_real16 +#if OMPI_HAVE_FORTRAN_REAL16 + OMPI_ATTR_TYPE_TAG(ompi_fortran_real16_t) +#endif + ; +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_complex8 +#if OMPI_HAVE_FORTRAN_COMPLEX8 + OMPI_ATTR_TYPE_TAG(ompi_fortran_complex8_t) +#endif + ; +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_complex16 +#if OMPI_HAVE_FORTRAN_COMPLEX16 + OMPI_ATTR_TYPE_TAG(ompi_fortran_complex16_t) +#endif + ; +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_complex32 +#if OMPI_HAVE_FORTRAN_COMPLEX32 + OMPI_ATTR_TYPE_TAG(ompi_fortran_complex32_t) +#endif + ; /* New datatypes from the MPI 2.2 standard */ -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_int8_t; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_uint8_t; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_int16_t; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_uint16_t; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_int32_t; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_uint32_t; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_int64_t; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_uint64_t; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_aint; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_offset; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_c_bool; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_c_complex; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_c_float_complex; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_c_double_complex; -OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_c_long_double_complex; +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_int8_t OMPI_ATTR_TYPE_TAG_STDINT(int8_t); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_uint8_t OMPI_ATTR_TYPE_TAG_STDINT(uint8_t); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_int16_t OMPI_ATTR_TYPE_TAG_STDINT(int16_t); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_uint16_t OMPI_ATTR_TYPE_TAG_STDINT(uint16_t); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_int32_t OMPI_ATTR_TYPE_TAG_STDINT(int32_t); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_uint32_t OMPI_ATTR_TYPE_TAG_STDINT(uint32_t); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_int64_t OMPI_ATTR_TYPE_TAG_STDINT(int64_t); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_uint64_t OMPI_ATTR_TYPE_TAG_STDINT(uint64_t); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_aint OMPI_ATTR_TYPE_TAG(MPI_Aint); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_offset OMPI_ATTR_TYPE_TAG(MPI_Offset); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_c_bool OMPI_ATTR_TYPE_TAG_C99(_Bool); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_c_complex OMPI_ATTR_TYPE_TAG_C99(float _Complex); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_c_float_complex OMPI_ATTR_TYPE_TAG_C99(float _Complex); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_c_double_complex OMPI_ATTR_TYPE_TAG_C99(double _Complex); +OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_c_long_double_complex OMPI_ATTR_TYPE_TAG_C99(long double _Complex); OMPI_DECLSPEC extern struct ompi_predefined_errhandler_t ompi_mpi_errhandler_null; OMPI_DECLSPEC extern struct ompi_predefined_errhandler_t ompi_mpi_errors_are_fatal; @@ -1049,7 +1279,8 @@ OMPI_DECLSPEC int MPI_Abort(MPI_Comm comm, int errorcode); OMPI_DECLSPEC int MPI_Accumulate(void *origin_addr, int origin_count, MPI_Datatype origin_datatype, int target_rank, MPI_Aint target_disp, int target_count, - MPI_Datatype target_datatype, MPI_Op op, MPI_Win win); + MPI_Datatype target_datatype, MPI_Op op, MPI_Win win) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int MPI_Add_error_class(int *errorclass); OMPI_DECLSPEC int MPI_Add_error_code(int errorclass, int *errorcode); OMPI_DECLSPEC int MPI_Add_error_string(int errorcode, char *string); @@ -1057,34 +1288,54 @@ __mpi_interface_deprecated__("MPI_Address is superseded by MPI_Get_address in MPI-2.0"); OMPI_DECLSPEC int MPI_Allgather(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, - MPI_Datatype recvtype, MPI_Comm comm); + MPI_Datatype recvtype, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(4,6); OMPI_DECLSPEC int MPI_Iallgather(void *sendbuf, int sendcount, MPI_Datatype sendtype, - void *recvbuf, int recvcount, - MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request); + void *recvbuf, int recvcount, + MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(4,6); OMPI_DECLSPEC int MPI_Allgatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcounts[], - int displs[], MPI_Datatype recvtype, MPI_Comm comm); + int displs[], MPI_Datatype recvtype, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(4,7); OMPI_DECLSPEC int MPI_Iallgatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcounts[], - int displs[], MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request); + int displs[], MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(4,7); OMPI_DECLSPEC int MPI_Alloc_mem(MPI_Aint size, MPI_Info info, void *baseptr); OMPI_DECLSPEC int MPI_Allreduce(void *sendbuf, void *recvbuf, int count, - MPI_Datatype datatype, MPI_Op op, MPI_Comm comm); + MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,4) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int MPI_Iallreduce(void *sendbuf, void *recvbuf, int count, - MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request); + MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,4) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int MPI_Alltoall(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, - MPI_Datatype recvtype, MPI_Comm comm); + MPI_Datatype recvtype, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(4,6); OMPI_DECLSPEC int MPI_Ialltoall(void *sendbuf, int sendcount, MPI_Datatype sendtype, - void *recvbuf, int recvcount, - MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request); + void *recvbuf, int recvcount, + MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(4,6); OMPI_DECLSPEC int MPI_Alltoallv(void *sendbuf, int sendcounts[], int sdispls[], MPI_Datatype sendtype, void *recvbuf, int recvcounts[], - int rdispls[], MPI_Datatype recvtype, MPI_Comm comm); + int rdispls[], MPI_Datatype recvtype, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,4) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(5,8); OMPI_DECLSPEC int MPI_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 rdispls[], MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,4) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(5,8); OMPI_DECLSPEC int MPI_Alltoallw(void *sendbuf, int *sendcounts, int *sdispls, MPI_Datatype *sendtypes, void *recvbuf, int *recvcounts, int *rdispls, MPI_Datatype *recvtypes, MPI_Comm comm); @@ -1100,14 +1351,17 @@ OMPI_DECLSPEC int MPI_Barrier(MPI_Comm comm); OMPI_DECLSPEC int MPI_Ibarrier(MPI_Comm comm, MPI_Request *request); OMPI_DECLSPEC int MPI_Bcast(void *buffer, int count, MPI_Datatype datatype, - int root, MPI_Comm comm); + int root, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int MPI_Bsend(void *buf, int count, MPI_Datatype datatype, - int dest, int tag, MPI_Comm comm); + int dest, int tag, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int MPI_Ibcast(void *buffer, int count, MPI_Datatype datatype, - int root, MPI_Comm comm, - MPI_Request *request); + int root, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int MPI_Bsend_init(void *buf, int count, MPI_Datatype datatype, - int dest, int tag, MPI_Comm comm, MPI_Request *request); + int dest, int tag, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int MPI_Buffer_attach(void *buffer, int size); OMPI_DECLSPEC int MPI_Buffer_detach(void *buffer, int *size); OMPI_DECLSPEC int MPI_Cancel(MPI_Request *request); @@ -1181,9 +1435,13 @@ OMPI_DECLSPEC int MPI_Error_class(int errorcode, int *errorclass); OMPI_DECLSPEC int MPI_Error_string(int errorcode, char *string, int *resultlen); OMPI_DECLSPEC int MPI_Exscan(void *sendbuf, void *recvbuf, int count, - MPI_Datatype datatype, MPI_Op op, MPI_Comm comm); + MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,4) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int MPI_Iexscan(void *sendbuf, void *recvbuf, int count, - MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request); + MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,4) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); #if OMPI_PROVIDE_MPI_FILE_INTERFACE OMPI_DECLSPEC MPI_Fint MPI_File_c2f(MPI_File file); OMPI_DECLSPEC MPI_File MPI_File_f2c(MPI_Fint file); @@ -1209,64 +1467,88 @@ MPI_Datatype *etype, MPI_Datatype *filetype, char *datarep); OMPI_DECLSPEC int MPI_File_read_at(MPI_File fh, MPI_Offset offset, void *buf, - int count, MPI_Datatype datatype, MPI_Status *status); + int count, MPI_Datatype datatype, MPI_Status *status) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(3,5); OMPI_DECLSPEC int MPI_File_read_at_all(MPI_File fh, MPI_Offset offset, void *buf, - int count, MPI_Datatype datatype, MPI_Status *status); + int count, MPI_Datatype datatype, MPI_Status *status) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(3,5); OMPI_DECLSPEC int MPI_File_write_at(MPI_File fh, MPI_Offset offset, void *buf, - int count, MPI_Datatype datatype, MPI_Status *status); + int count, MPI_Datatype datatype, MPI_Status *status) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(3,5); OMPI_DECLSPEC int MPI_File_write_at_all(MPI_File fh, MPI_Offset offset, void *buf, - int count, MPI_Datatype datatype, MPI_Status *status); + int count, MPI_Datatype datatype, MPI_Status *status) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(3,5); OMPI_DECLSPEC int MPI_File_iread_at(MPI_File fh, MPI_Offset offset, void *buf, - int count, MPI_Datatype datatype, MPI_Request *request); + int count, MPI_Datatype datatype, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(3,5); OMPI_DECLSPEC int MPI_File_iwrite_at(MPI_File fh, MPI_Offset offset, void *buf, - int count, MPI_Datatype datatype, MPI_Request *request); + int count, MPI_Datatype datatype, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(3,5); OMPI_DECLSPEC int MPI_File_read(MPI_File fh, void *buf, int count, - MPI_Datatype datatype, MPI_Status *status); + MPI_Datatype datatype, MPI_Status *status) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int MPI_File_read_all(MPI_File fh, void *buf, int count, - MPI_Datatype datatype, MPI_Status *status); + MPI_Datatype datatype, MPI_Status *status) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int MPI_File_write(MPI_File fh, void *buf, int count, - MPI_Datatype datatype, MPI_Status *status); + MPI_Datatype datatype, MPI_Status *status) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int MPI_File_write_all(MPI_File fh, void *buf, int count, - MPI_Datatype datatype, MPI_Status *status); + MPI_Datatype datatype, MPI_Status *status) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int MPI_File_iread(MPI_File fh, void *buf, int count, - MPI_Datatype datatype, MPI_Request *request); + MPI_Datatype datatype, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int MPI_File_iwrite(MPI_File fh, void *buf, int count, - MPI_Datatype datatype, MPI_Request *request); + MPI_Datatype datatype, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int MPI_File_seek(MPI_File fh, MPI_Offset offset, int whence); OMPI_DECLSPEC int MPI_File_get_position(MPI_File fh, MPI_Offset *offset); OMPI_DECLSPEC int MPI_File_get_byte_offset(MPI_File fh, MPI_Offset offset, MPI_Offset *disp); OMPI_DECLSPEC int MPI_File_read_shared(MPI_File fh, void *buf, int count, - MPI_Datatype datatype, MPI_Status *status); + MPI_Datatype datatype, MPI_Status *status) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int MPI_File_write_shared(MPI_File fh, void *buf, int count, - MPI_Datatype datatype, MPI_Status *status); + MPI_Datatype datatype, MPI_Status *status) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int MPI_File_iread_shared(MPI_File fh, void *buf, int count, - MPI_Datatype datatype, MPI_Request *request); + MPI_Datatype datatype, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int MPI_File_iwrite_shared(MPI_File fh, void *buf, int count, - MPI_Datatype datatype, MPI_Request *request); + MPI_Datatype datatype, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int MPI_File_read_ordered(MPI_File fh, void *buf, int count, - MPI_Datatype datatype, MPI_Status *status); + MPI_Datatype datatype, MPI_Status *status) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int MPI_File_write_ordered(MPI_File fh, void *buf, int count, - MPI_Datatype datatype, MPI_Status *status); + MPI_Datatype datatype, MPI_Status *status) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int MPI_File_seek_shared(MPI_File fh, MPI_Offset offset, int whence); OMPI_DECLSPEC int MPI_File_get_position_shared(MPI_File fh, MPI_Offset *offset); OMPI_DECLSPEC int MPI_File_read_at_all_begin(MPI_File fh, MPI_Offset offset, void *buf, - int count, MPI_Datatype datatype); + int count, MPI_Datatype datatype) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(3,5); OMPI_DECLSPEC int MPI_File_read_at_all_end(MPI_File fh, void *buf, MPI_Status *status); OMPI_DECLSPEC int MPI_File_write_at_all_begin(MPI_File fh, MPI_Offset offset, void *buf, - int count, MPI_Datatype datatype); + int count, MPI_Datatype datatype) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(3,5); OMPI_DECLSPEC int MPI_File_write_at_all_end(MPI_File fh, void *buf, MPI_Status *status); OMPI_DECLSPEC int MPI_File_read_all_begin(MPI_File fh, void *buf, int count, - MPI_Datatype datatype); + MPI_Datatype datatype) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int MPI_File_read_all_end(MPI_File fh, void *buf, MPI_Status *status); OMPI_DECLSPEC int MPI_File_write_all_begin(MPI_File fh, void *buf, int count, - MPI_Datatype datatype); + MPI_Datatype datatype) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int MPI_File_write_all_end(MPI_File fh, void *buf, MPI_Status *status); OMPI_DECLSPEC int MPI_File_read_ordered_begin(MPI_File fh, void *buf, int count, - MPI_Datatype datatype); + MPI_Datatype datatype) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int MPI_File_read_ordered_end(MPI_File fh, void *buf, MPI_Status *status); OMPI_DECLSPEC int MPI_File_write_ordered_begin(MPI_File fh, void *buf, int count, - MPI_Datatype datatype); + MPI_Datatype datatype) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int MPI_File_write_ordered_end(MPI_File fh, void *buf, MPI_Status *status); OMPI_DECLSPEC int MPI_File_get_type_extent(MPI_File fh, MPI_Datatype datatype, MPI_Aint *extent); @@ -1279,23 +1561,32 @@ OMPI_DECLSPEC int MPI_Free_mem(void *base); OMPI_DECLSPEC int MPI_Gather(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, - int root, MPI_Comm comm); + int root, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(4,6); OMPI_DECLSPEC int MPI_Igather(void *sendbuf, int sendcount, MPI_Datatype sendtype, - void *recvbuf, int recvcount, MPI_Datatype recvtype, - int root, MPI_Comm comm, MPI_Request *request); + void *recvbuf, int recvcount, MPI_Datatype recvtype, + int root, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(4,6); OMPI_DECLSPEC int MPI_Gatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcounts[], int displs[], - MPI_Datatype recvtype, int root, MPI_Comm comm); + MPI_Datatype recvtype, int root, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(4,7); OMPI_DECLSPEC int MPI_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); + void *recvbuf, int recvcounts[], int displs[], + MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(4,7); OMPI_DECLSPEC int MPI_Get_address(void *location, MPI_Aint *address); OMPI_DECLSPEC int MPI_Get_count(MPI_Status *status, MPI_Datatype datatype, int *count); OMPI_DECLSPEC int MPI_Get_elements(MPI_Status *status, MPI_Datatype datatype, int *count); OMPI_DECLSPEC int MPI_Get(void *origin_addr, int origin_count, MPI_Datatype origin_datatype, int target_rank, MPI_Aint target_disp, int target_count, - MPI_Datatype target_datatype, MPI_Win win); + MPI_Datatype target_datatype, MPI_Win win) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int MPI_Get_library_version(char *version, int *resultlen); OMPI_DECLSPEC int MPI_Get_processor_name(char *name, int *resultlen); OMPI_DECLSPEC int MPI_Get_version(int *version, int *subversion); @@ -1337,12 +1628,14 @@ OMPI_DECLSPEC int MPI_Group_union(MPI_Group group1, MPI_Group group2, MPI_Group *newgroup); OMPI_DECLSPEC int MPI_Ibsend(void *buf, int count, MPI_Datatype datatype, int dest, - int tag, MPI_Comm comm, MPI_Request *request); + int tag, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int MPI_Improbe(int source, int tag, MPI_Comm comm, int *flag, MPI_Message *message, MPI_Status *status); OMPI_DECLSPEC int MPI_Imrecv(void *buf, int count, MPI_Datatype type, - MPI_Message *message, MPI_Request *request); + MPI_Message *message, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC MPI_Fint MPI_Info_c2f(MPI_Info info); OMPI_DECLSPEC int MPI_Info_create(MPI_Info *info); OMPI_DECLSPEC int MPI_Info_delete(MPI_Info info, char *key); @@ -1368,13 +1661,17 @@ OMPI_DECLSPEC int MPI_Iprobe(int source, int tag, MPI_Comm comm, int *flag, MPI_Status *status); OMPI_DECLSPEC int MPI_Irecv(void *buf, int count, MPI_Datatype datatype, int source, - int tag, MPI_Comm comm, MPI_Request *request); + int tag, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int MPI_Irsend(void *buf, int count, MPI_Datatype datatype, int dest, - int tag, MPI_Comm comm, MPI_Request *request); + int tag, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int MPI_Isend(void *buf, int count, MPI_Datatype datatype, int dest, - int tag, MPI_Comm comm, MPI_Request *request); + int tag, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int MPI_Issend(void *buf, int count, MPI_Datatype datatype, int dest, - int tag, MPI_Comm comm, MPI_Request *request); + int tag, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int MPI_Is_thread_main(int *flag); OMPI_DECLSPEC int MPI_Keyval_create(MPI_Copy_function *copy_fn, MPI_Delete_function *delete_fn, @@ -1389,7 +1686,8 @@ MPI_Message *message, MPI_Status *status); OMPI_DECLSPEC int MPI_Mrecv(void *buf, int count, MPI_Datatype type, - MPI_Message *message, MPI_Status *status); + MPI_Message *message, MPI_Status *status) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC MPI_Fint MPI_Op_c2f(MPI_Op op); OMPI_DECLSPEC int MPI_Op_commutative(MPI_Op op, int *commute); OMPI_DECLSPEC int MPI_Op_create(MPI_User_function *function, int commute, MPI_Op *op); @@ -1398,11 +1696,13 @@ OMPI_DECLSPEC int MPI_Op_free(MPI_Op *op); OMPI_DECLSPEC int MPI_Pack_external(char *datarep, void *inbuf, int incount, MPI_Datatype datatype, void *outbuf, - MPI_Aint outsize, MPI_Aint *position); + MPI_Aint outsize, MPI_Aint *position) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int MPI_Pack_external_size(char *datarep, int incount, MPI_Datatype datatype, MPI_Aint *size); OMPI_DECLSPEC int MPI_Pack(void *inbuf, int incount, MPI_Datatype datatype, - void *outbuf, int outsize, int *position, MPI_Comm comm); + void *outbuf, int outsize, int *position, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int MPI_Pack_size(int incount, MPI_Datatype datatype, MPI_Comm comm, int *size); OMPI_DECLSPEC int MPI_Pcontrol(const int level, ...); @@ -1411,26 +1711,43 @@ char *port_name); OMPI_DECLSPEC int MPI_Put(void *origin_addr, int origin_count, MPI_Datatype origin_datatype, int target_rank, MPI_Aint target_disp, int target_count, - MPI_Datatype target_datatype, MPI_Win win); + MPI_Datatype target_datatype, MPI_Win win) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int MPI_Query_thread(int *provided); OMPI_DECLSPEC int MPI_Recv_init(void *buf, int count, MPI_Datatype datatype, int source, - int tag, MPI_Comm comm, MPI_Request *request); + int tag, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int MPI_Recv(void *buf, int count, MPI_Datatype datatype, int source, - int tag, MPI_Comm comm, MPI_Status *status); + int tag, MPI_Comm comm, MPI_Status *status) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int MPI_Reduce(void *sendbuf, void *recvbuf, int count, - MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm); + MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,4) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int MPI_Ireduce(void *sendbuf, void *recvbuf, int count, - MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm, MPI_Request *request); + MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,4) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int MPI_Reduce_local(void *inbuf, void *inoutbuf, int count, - MPI_Datatype datatype, MPI_Op op); + MPI_Datatype datatype, MPI_Op op) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,4) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int MPI_Reduce_scatter(void *sendbuf, void *recvbuf, int recvcounts[], - MPI_Datatype datatype, MPI_Op op, MPI_Comm comm); + MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,4) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int MPI_Ireduce_scatter(void *sendbuf, void *recvbuf, int recvcounts[], - MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request); + MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,4) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int MPI_Reduce_scatter_block(void *sendbuf, void *recvbuf, int recvcount, - MPI_Datatype datatype, MPI_Op op, MPI_Comm comm); + MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,4) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int MPI_Ireduce_scatter_block(void *sendbuf, void *recvbuf, int recvcount, - MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request); + MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,4) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int MPI_Register_datarep(char *datarep, MPI_Datarep_conversion_function *read_conversion_fn, MPI_Datarep_conversion_function *write_conversion_fn, @@ -1442,43 +1759,64 @@ OMPI_DECLSPEC int MPI_Request_get_status(MPI_Request request, int *flag, MPI_Status *status); OMPI_DECLSPEC int MPI_Rsend(void *ibuf, int count, MPI_Datatype datatype, int dest, - int tag, MPI_Comm comm); + int tag, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int MPI_Rsend_init(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, - MPI_Request *request); + MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int MPI_Scan(void *sendbuf, void *recvbuf, int count, - MPI_Datatype datatype, MPI_Op op, MPI_Comm comm); + MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,4) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int MPI_Iscan(void *sendbuf, void *recvbuf, int count, - MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request); + MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,4) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int MPI_Scatter(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, - int root, MPI_Comm comm); + int root, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(4,6); OMPI_DECLSPEC int MPI_Iscatter(void *sendbuf, int sendcount, MPI_Datatype sendtype, - void *recvbuf, int recvcount, MPI_Datatype recvtype, - int root, MPI_Comm comm, MPI_Request *request); + void *recvbuf, int recvcount, MPI_Datatype recvtype, + int root, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(4,6); OMPI_DECLSPEC int MPI_Scatterv(void *sendbuf, int sendcounts[], int displs[], MPI_Datatype sendtype, void *recvbuf, int recvcount, - MPI_Datatype recvtype, int root, MPI_Comm comm); + MPI_Datatype recvtype, int root, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,4) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(5,7); OMPI_DECLSPEC int MPI_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); + MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,4) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(5,7); OMPI_DECLSPEC int MPI_Send_init(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, - MPI_Request *request); + MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int MPI_Send(void *buf, int count, MPI_Datatype datatype, int dest, - int tag, MPI_Comm comm); + int tag, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int MPI_Sendrecv(void *sendbuf, int sendcount, MPI_Datatype sendtype, int dest, int sendtag, void *recvbuf, int recvcount, MPI_Datatype recvtype, int source, int recvtag, - MPI_Comm comm, MPI_Status *status); + MPI_Comm comm, MPI_Status *status) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(6,8); OMPI_DECLSPEC int MPI_Sendrecv_replace(void * buf, int count, MPI_Datatype datatype, int dest, int sendtag, int source, int recvtag, - MPI_Comm comm, MPI_Status *status); + MPI_Comm comm, MPI_Status *status) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int MPI_Ssend_init(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, - MPI_Request *request); + MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int MPI_Ssend(void *buf, int count, MPI_Datatype datatype, int dest, - int tag, MPI_Comm comm); + int tag, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int MPI_Start(MPI_Request *request); OMPI_DECLSPEC int MPI_Startall(int count, MPI_Request array_of_requests[]); OMPI_DECLSPEC int MPI_Status_c2f(MPI_Status *c_status, MPI_Fint *f_status); @@ -1586,11 +1924,13 @@ MPI_Datatype oldtype, MPI_Datatype *newtype); OMPI_DECLSPEC int MPI_Unpack(void *inbuf, int insize, int *position, void *outbuf, int outcount, MPI_Datatype datatype, - MPI_Comm comm); + MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(4,6); OMPI_DECLSPEC int MPI_Unpublish_name(char *service_name, MPI_Info info, char *port_name); OMPI_DECLSPEC int MPI_Unpack_external (char *datarep, void *inbuf, MPI_Aint insize, MPI_Aint *position, void *outbuf, int outcount, - MPI_Datatype datatype); + MPI_Datatype datatype) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(5,7); OMPI_DECLSPEC int MPI_Waitall(int count, MPI_Request array_of_requests[], MPI_Status *array_of_statuses); OMPI_DECLSPEC int MPI_Waitany(int count, MPI_Request array_of_requests[], @@ -1638,7 +1978,8 @@ OMPI_DECLSPEC int PMPI_Abort(MPI_Comm comm, int errorcode); OMPI_DECLSPEC int PMPI_Accumulate(void *origin_addr, int origin_count, MPI_Datatype origin_datatype, int target_rank, MPI_Aint target_disp, int target_count, - MPI_Datatype target_datatype, MPI_Op op, MPI_Win win); + MPI_Datatype target_datatype, MPI_Op op, MPI_Win win) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int PMPI_Add_error_class(int *errorclass); OMPI_DECLSPEC int PMPI_Add_error_code(int errorclass, int *errorcode); OMPI_DECLSPEC int PMPI_Add_error_string(int errorcode, char *string); @@ -1646,34 +1987,54 @@ __mpi_interface_deprecated__("MPI_Address is superseded by MPI_Get_address in MPI-2.0"); OMPI_DECLSPEC int PMPI_Allgather(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, - MPI_Datatype recvtype, MPI_Comm comm); + MPI_Datatype recvtype, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(4,6); OMPI_DECLSPEC int PMPI_Iallgather(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, - MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request); + MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(4,6); OMPI_DECLSPEC int PMPI_Allgatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcounts[], - int displs[], MPI_Datatype recvtype, MPI_Comm comm); + int displs[], MPI_Datatype recvtype, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(4,7); OMPI_DECLSPEC int PMPI_Iallgatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype, - void *recvbuf, int recvcounts[], - int displs[], MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request); + void *recvbuf, int recvcounts[], + int displs[], MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(4,7); OMPI_DECLSPEC int PMPI_Alloc_mem(MPI_Aint size, MPI_Info info, void *baseptr); OMPI_DECLSPEC int PMPI_Allreduce(void *sendbuf, void *recvbuf, int count, - MPI_Datatype datatype, MPI_Op op, MPI_Comm comm); + MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,4) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int PMPI_Iallreduce(void *sendbuf, void *recvbuf, int count, - MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request); + MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,4) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int PMPI_Alltoall(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, - MPI_Datatype recvtype, MPI_Comm comm); + MPI_Datatype recvtype, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(4,6); OMPI_DECLSPEC int PMPI_Ialltoall(void *sendbuf, int sendcount, MPI_Datatype sendtype, - void *recvbuf, int recvcount, - MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request); + void *recvbuf, int recvcount, + MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(4,6); OMPI_DECLSPEC int PMPI_Alltoallv(void *sendbuf, int sendcounts[], int sdispls[], MPI_Datatype sendtype, void *recvbuf, int recvcounts[], - int rdispls[], MPI_Datatype recvtype, MPI_Comm comm); + int rdispls[], MPI_Datatype recvtype, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,4) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(5,8); OMPI_DECLSPEC int PMPI_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); + MPI_Datatype sendtype, void *recvbuf, int recvcounts[], + int rdispls[], MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,4) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(5,8); OMPI_DECLSPEC int PMPI_Alltoallw(void *sendbuf, int *sendcounts, int *sdispls, MPI_Datatype *sendtypes, void *recvbuf, int *recvcounts, int *rdispls, MPI_Datatype *recvtypes, MPI_Comm comm); @@ -1689,14 +2050,18 @@ OMPI_DECLSPEC int PMPI_Barrier(MPI_Comm comm); OMPI_DECLSPEC int PMPI_Ibarrier(MPI_Comm comm, MPI_Request *request); OMPI_DECLSPEC int PMPI_Bcast(void *buffer, int count, MPI_Datatype datatype, - int root, MPI_Comm comm); + int root, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int PMPI_Ibcast(void *buffer, int count, MPI_Datatype datatype, - int root, MPI_Comm comm, - MPI_Request *request); + int root, MPI_Comm comm, + MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int PMPI_Bsend(void *buf, int count, MPI_Datatype datatype, - int dest, int tag, MPI_Comm comm); + int dest, int tag, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int PMPI_Bsend_init(void *buf, int count, MPI_Datatype datatype, - int dest, int tag, MPI_Comm comm, MPI_Request *request); + int dest, int tag, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int PMPI_Buffer_attach(void *buffer, int size); OMPI_DECLSPEC int PMPI_Buffer_detach(void *buffer, int *size); OMPI_DECLSPEC int PMPI_Cancel(MPI_Request *request); @@ -1770,9 +2135,13 @@ OMPI_DECLSPEC int PMPI_Error_class(int errorcode, int *errorclass); OMPI_DECLSPEC int PMPI_Error_string(int errorcode, char *string, int *resultlen); OMPI_DECLSPEC int PMPI_Exscan(void *sendbuf, void *recvbuf, int count, - MPI_Datatype datatype, MPI_Op op, MPI_Comm comm); + MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,4) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int PMPI_Iexscan(void *sendbuf, void *recvbuf, int count, - MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request); + MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,4) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); #if OMPI_PROVIDE_MPI_FILE_INTERFACE OMPI_DECLSPEC MPI_Fint PMPI_File_c2f(MPI_File file); OMPI_DECLSPEC MPI_File PMPI_File_f2c(MPI_Fint file); @@ -1798,64 +2167,88 @@ MPI_Datatype *etype, MPI_Datatype *filetype, char *datarep); OMPI_DECLSPEC int PMPI_File_read_at(MPI_File fh, MPI_Offset offset, void *buf, - int count, MPI_Datatype datatype, MPI_Status *status); + int count, MPI_Datatype datatype, MPI_Status *status) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(3,5); OMPI_DECLSPEC int PMPI_File_read_at_all(MPI_File fh, MPI_Offset offset, void *buf, - int count, MPI_Datatype datatype, MPI_Status *status); + int count, MPI_Datatype datatype, MPI_Status *status) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(3,5); OMPI_DECLSPEC int PMPI_File_write_at(MPI_File fh, MPI_Offset offset, void *buf, - int count, MPI_Datatype datatype, MPI_Status *status); + int count, MPI_Datatype datatype, MPI_Status *status) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(3,5); OMPI_DECLSPEC int PMPI_File_write_at_all(MPI_File fh, MPI_Offset offset, void *buf, - int count, MPI_Datatype datatype, MPI_Status *status); + int count, MPI_Datatype datatype, MPI_Status *status) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(3,5); OMPI_DECLSPEC int PMPI_File_iread_at(MPI_File fh, MPI_Offset offset, void *buf, - int count, MPI_Datatype datatype, MPI_Request *request); + int count, MPI_Datatype datatype, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(3,5); OMPI_DECLSPEC int PMPI_File_iwrite_at(MPI_File fh, MPI_Offset offset, void *buf, - int count, MPI_Datatype datatype, MPI_Request *request); + int count, MPI_Datatype datatype, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(3,5); OMPI_DECLSPEC int PMPI_File_read(MPI_File fh, void *buf, int count, - MPI_Datatype datatype, MPI_Status *status); + MPI_Datatype datatype, MPI_Status *status) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int PMPI_File_read_all(MPI_File fh, void *buf, int count, - MPI_Datatype datatype, MPI_Status *status); + MPI_Datatype datatype, MPI_Status *status) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int PMPI_File_write(MPI_File fh, void *buf, int count, - MPI_Datatype datatype, MPI_Status *status); + MPI_Datatype datatype, MPI_Status *status) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int PMPI_File_write_all(MPI_File fh, void *buf, int count, - MPI_Datatype datatype, MPI_Status *status); + MPI_Datatype datatype, MPI_Status *status) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int PMPI_File_iread(MPI_File fh, void *buf, int count, - MPI_Datatype datatype, MPI_Request *request); + MPI_Datatype datatype, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int PMPI_File_iwrite(MPI_File fh, void *buf, int count, - MPI_Datatype datatype, MPI_Request *request); + MPI_Datatype datatype, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int PMPI_File_seek(MPI_File fh, MPI_Offset offset, int whence); OMPI_DECLSPEC int PMPI_File_get_position(MPI_File fh, MPI_Offset *offset); OMPI_DECLSPEC int PMPI_File_get_byte_offset(MPI_File fh, MPI_Offset offset, MPI_Offset *disp); OMPI_DECLSPEC int PMPI_File_read_shared(MPI_File fh, void *buf, int count, - MPI_Datatype datatype, MPI_Status *status); + MPI_Datatype datatype, MPI_Status *status) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int PMPI_File_write_shared(MPI_File fh, void *buf, int count, - MPI_Datatype datatype, MPI_Status *status); + MPI_Datatype datatype, MPI_Status *status) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int PMPI_File_iread_shared(MPI_File fh, void *buf, int count, - MPI_Datatype datatype, MPI_Request *request); + MPI_Datatype datatype, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int PMPI_File_iwrite_shared(MPI_File fh, void *buf, int count, - MPI_Datatype datatype, MPI_Request *request); + MPI_Datatype datatype, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int PMPI_File_read_ordered(MPI_File fh, void *buf, int count, - MPI_Datatype datatype, MPI_Status *status); + MPI_Datatype datatype, MPI_Status *status) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int PMPI_File_write_ordered(MPI_File fh, void *buf, int count, - MPI_Datatype datatype, MPI_Status *status); + MPI_Datatype datatype, MPI_Status *status) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int PMPI_File_seek_shared(MPI_File fh, MPI_Offset offset, int whence); OMPI_DECLSPEC int PMPI_File_get_position_shared(MPI_File fh, MPI_Offset *offset); OMPI_DECLSPEC int PMPI_File_read_at_all_begin(MPI_File fh, MPI_Offset offset, void *buf, - int count, MPI_Datatype datatype); + int count, MPI_Datatype datatype) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(3,5); OMPI_DECLSPEC int PMPI_File_read_at_all_end(MPI_File fh, void *buf, MPI_Status *status); OMPI_DECLSPEC int PMPI_File_write_at_all_begin(MPI_File fh, MPI_Offset offset, void *buf, - int count, MPI_Datatype datatype); + int count, MPI_Datatype datatype) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(3,5); OMPI_DECLSPEC int PMPI_File_write_at_all_end(MPI_File fh, void *buf, MPI_Status *status); OMPI_DECLSPEC int PMPI_File_read_all_begin(MPI_File fh, void *buf, int count, - MPI_Datatype datatype); + MPI_Datatype datatype) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int PMPI_File_read_all_end(MPI_File fh, void *buf, MPI_Status *status); OMPI_DECLSPEC int PMPI_File_write_all_begin(MPI_File fh, void *buf, int count, - MPI_Datatype datatype); + MPI_Datatype datatype) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int PMPI_File_write_all_end(MPI_File fh, void *buf, MPI_Status *status); OMPI_DECLSPEC int PMPI_File_read_ordered_begin(MPI_File fh, void *buf, int count, - MPI_Datatype datatype); + MPI_Datatype datatype) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int PMPI_File_read_ordered_end(MPI_File fh, void *buf, MPI_Status *status); OMPI_DECLSPEC int PMPI_File_write_ordered_begin(MPI_File fh, void *buf, int count, - MPI_Datatype datatype); + MPI_Datatype datatype) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int PMPI_File_write_ordered_end(MPI_File fh, void *buf, MPI_Status *status); OMPI_DECLSPEC int PMPI_File_get_type_extent(MPI_File fh, MPI_Datatype datatype, MPI_Aint *extent); @@ -1868,16 +2261,24 @@ OMPI_DECLSPEC int PMPI_Free_mem(void *base); OMPI_DECLSPEC int PMPI_Gather(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, - int root, MPI_Comm comm); + int root, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(4,6); OMPI_DECLSPEC int PMPI_Igather(void *sendbuf, int sendcount, MPI_Datatype sendtype, - void *recvbuf, int recvcount, MPI_Datatype recvtype, - int root, MPI_Comm comm, MPI_Request *request); + void *recvbuf, int recvcount, MPI_Datatype recvtype, + int root, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(4,6); OMPI_DECLSPEC int PMPI_Gatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcounts[], int displs[], - MPI_Datatype recvtype, int root, MPI_Comm comm); + MPI_Datatype recvtype, int root, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(4,7); OMPI_DECLSPEC int PMPI_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); + void *recvbuf, int recvcounts[], int displs[], + MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(4,7); OMPI_DECLSPEC int PMPI_Get_address(void *location, MPI_Aint *address); OMPI_DECLSPEC int PMPI_Get_count(MPI_Status *status, MPI_Datatype datatype, int *count); OMPI_DECLSPEC int PMPI_Get_elements(MPI_Status *status, MPI_Datatype datatype, @@ -1885,7 +2286,8 @@ OMPI_DECLSPEC int PMPI_Get(void *origin_addr, int origin_count, MPI_Datatype origin_datatype, int target_rank, MPI_Aint target_disp, int target_count, - MPI_Datatype target_datatype, MPI_Win win); + MPI_Datatype target_datatype, MPI_Win win) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int PMPI_Get_library_version(char *version, int *resultlen); OMPI_DECLSPEC int PMPI_Get_processor_name(char *name, int *resultlen); OMPI_DECLSPEC int PMPI_Get_version(int *version, int *subversion); @@ -1927,12 +2329,14 @@ OMPI_DECLSPEC int PMPI_Group_union(MPI_Group group1, MPI_Group group2, MPI_Group *newgroup); OMPI_DECLSPEC int PMPI_Ibsend(void *buf, int count, MPI_Datatype datatype, int dest, - int tag, MPI_Comm comm, MPI_Request *request); + int tag, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int PMPI_Improbe(int source, int tag, MPI_Comm comm, int *flag, MPI_Message *message, MPI_Status *status); OMPI_DECLSPEC int PMPI_Imrecv(void *buf, int count, MPI_Datatype type, - MPI_Message *message, MPI_Request *request); + MPI_Message *message, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC MPI_Fint PMPI_Info_c2f(MPI_Info info); OMPI_DECLSPEC int PMPI_Info_create(MPI_Info *info); OMPI_DECLSPEC int PMPI_Info_delete(MPI_Info info, char *key); @@ -1958,13 +2362,17 @@ OMPI_DECLSPEC int PMPI_Iprobe(int source, int tag, MPI_Comm comm, int *flag, MPI_Status *status); OMPI_DECLSPEC int PMPI_Irecv(void *buf, int count, MPI_Datatype datatype, int source, - int tag, MPI_Comm comm, MPI_Request *request); + int tag, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int PMPI_Irsend(void *buf, int count, MPI_Datatype datatype, int dest, - int tag, MPI_Comm comm, MPI_Request *request); + int tag, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int PMPI_Isend(void *buf, int count, MPI_Datatype datatype, int dest, - int tag, MPI_Comm comm, MPI_Request *request); + int tag, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int PMPI_Issend(void *buf, int count, MPI_Datatype datatype, int dest, - int tag, MPI_Comm comm, MPI_Request *request); + int tag, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int PMPI_Is_thread_main(int *flag); OMPI_DECLSPEC int PMPI_Keyval_create(MPI_Copy_function *copy_fn, MPI_Delete_function *delete_fn, @@ -1979,7 +2387,8 @@ MPI_Message *message, MPI_Status *status); OMPI_DECLSPEC int PMPI_Mrecv(void *buf, int count, MPI_Datatype type, - MPI_Message *message, MPI_Status *status); + MPI_Message *message, MPI_Status *status) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC MPI_Fint PMPI_Op_c2f(MPI_Op op); OMPI_DECLSPEC int PMPI_Op_commutative(MPI_Op op, int *commute); OMPI_DECLSPEC int PMPI_Op_create(MPI_User_function *function, int commute, MPI_Op *op); @@ -1988,11 +2397,13 @@ OMPI_DECLSPEC int PMPI_Op_free(MPI_Op *op); OMPI_DECLSPEC int PMPI_Pack_external(char *datarep, void *inbuf, int incount, MPI_Datatype datatype, void *outbuf, - MPI_Aint outsize, MPI_Aint *position); + MPI_Aint outsize, MPI_Aint *position) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int PMPI_Pack_external_size(char *datarep, int incount, MPI_Datatype datatype, MPI_Aint *size); OMPI_DECLSPEC int PMPI_Pack(void *inbuf, int incount, MPI_Datatype datatype, - void *outbuf, int outsize, int *position, MPI_Comm comm); + void *outbuf, int outsize, int *position, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int PMPI_Pack_size(int incount, MPI_Datatype datatype, MPI_Comm comm, int *size); OMPI_DECLSPEC int PMPI_Pcontrol(const int level, ...); @@ -2001,26 +2412,43 @@ char *port_name); OMPI_DECLSPEC int PMPI_Put(void *origin_addr, int origin_count, MPI_Datatype origin_datatype, int target_rank, MPI_Aint target_disp, int target_count, - MPI_Datatype target_datatype, MPI_Win win); + MPI_Datatype target_datatype, MPI_Win win) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int PMPI_Query_thread(int *provided); OMPI_DECLSPEC int PMPI_Recv_init(void *buf, int count, MPI_Datatype datatype, int source, - int tag, MPI_Comm comm, MPI_Request *request); + int tag, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int PMPI_Recv(void *buf, int count, MPI_Datatype datatype, int source, - int tag, MPI_Comm comm, MPI_Status *status); + int tag, MPI_Comm comm, MPI_Status *status) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int PMPI_Reduce(void *sendbuf, void *recvbuf, int count, - MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm); + MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,4) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int PMPI_Ireduce(void *sendbuf, void *recvbuf, int count, - MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm, MPI_Request *request); + MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,4) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int PMPI_Reduce_local(void *inbuf, void *inoutbuf, int count, - MPI_Datatype datatype, MPI_Op); + MPI_Datatype datatype, MPI_Op) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,4) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int PMPI_Reduce_scatter(void *sendbuf, void *recvbuf, int recvcounts[], - MPI_Datatype datatype, MPI_Op op, MPI_Comm comm); + MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,4) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int PMPI_Ireduce_scatter(void *sendbuf, void *recvbuf, int recvcounts[], - MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request); + MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,4) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int PMPI_Reduce_scatter_block(void *sendbuf, void *recvbuf, int recvcount, - MPI_Datatype datatype, MPI_Op op, MPI_Comm comm); + MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,4) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int PMPI_Ireduce_scatter_block(void *sendbuf, void *recvbuf, int recvcount, - MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request); + MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,4) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int PMPI_Register_datarep(char *datarep, MPI_Datarep_conversion_function *read_conversion_fn, MPI_Datarep_conversion_function *write_conversion_fn, @@ -2032,43 +2460,64 @@ OMPI_DECLSPEC int PMPI_Request_get_status(MPI_Request request, int *flag, MPI_Status *status); OMPI_DECLSPEC int PMPI_Rsend(void *ibuf, int count, MPI_Datatype datatype, int dest, - int tag, MPI_Comm comm); + int tag, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int PMPI_Rsend_init(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, - MPI_Request *request); + MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int PMPI_Scan(void *sendbuf, void *recvbuf, int count, - MPI_Datatype datatype, MPI_Op op, MPI_Comm comm); + MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,4) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int PMPI_Iscan(void *sendbuf, void *recvbuf, int count, - MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request); + MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,4) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(2,4); OMPI_DECLSPEC int PMPI_Scatter(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, - int root, MPI_Comm comm); + int root, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(4,6); OMPI_DECLSPEC int PMPI_Iscatter(void *sendbuf, int sendcount, MPI_Datatype sendtype, - void *recvbuf, int recvcount, MPI_Datatype recvtype, - int root, MPI_Comm comm, MPI_Request *request); + void *recvbuf, int recvcount, MPI_Datatype recvtype, + int root, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(4,6); OMPI_DECLSPEC int PMPI_Scatterv(void *sendbuf, int sendcounts[], int displs[], MPI_Datatype sendtype, void *recvbuf, int recvcount, - MPI_Datatype recvtype, int root, MPI_Comm comm); + MPI_Datatype recvtype, int root, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,4) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(5,7); OMPI_DECLSPEC int PMPI_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); + MPI_Datatype sendtype, void *recvbuf, int recvcount, + MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,4) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(5,7); OMPI_DECLSPEC int PMPI_Send_init(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, - MPI_Request *request); + MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int PMPI_Send(void *buf, int count, MPI_Datatype datatype, int dest, - int tag, MPI_Comm comm); + int tag, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int PMPI_Sendrecv(void *sendbuf, int sendcount, MPI_Datatype sendtype, int dest, int sendtag, void *recvbuf, int recvcount, MPI_Datatype recvtype, int source, int recvtag, - MPI_Comm comm, MPI_Status *status); + MPI_Comm comm, MPI_Status *status) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(6,8); OMPI_DECLSPEC int PMPI_Sendrecv_replace(void * buf, int count, MPI_Datatype datatype, int dest, int sendtag, int source, int recvtag, - MPI_Comm comm, MPI_Status *status); + MPI_Comm comm, MPI_Status *status) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int PMPI_Ssend_init(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, - MPI_Request *request); + MPI_Request *request) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int PMPI_Ssend(void *buf, int count, MPI_Datatype datatype, int dest, - int tag, MPI_Comm comm); + int tag, MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(1,3); OMPI_DECLSPEC int PMPI_Start(MPI_Request *request); OMPI_DECLSPEC int PMPI_Startall(int count, MPI_Request array_of_requests[]); OMPI_DECLSPEC int PMPI_Status_c2f(MPI_Status *c_status, MPI_Fint *f_status); @@ -2175,12 +2624,14 @@ MPI_Datatype oldtype, MPI_Datatype *newtype); OMPI_DECLSPEC int PMPI_Unpack(void *inbuf, int insize, int *position, void *outbuf, int outcount, MPI_Datatype datatype, - MPI_Comm comm); + MPI_Comm comm) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(4,6); OMPI_DECLSPEC int PMPI_Unpublish_name(char *service_name, MPI_Info info, char *port_name); OMPI_DECLSPEC int PMPI_Unpack_external (char *datarep, void *inbuf, MPI_Aint insize, MPI_Aint *position, void *outbuf, int outcount, - MPI_Datatype datatype); + MPI_Datatype datatype) + OMPI_ATTR_POINTER_WITH_TYPE_TAG(5,7); OMPI_DECLSPEC int PMPI_Waitall(int count, MPI_Request array_of_requests[], MPI_Status array_of_statuses[]); OMPI_DECLSPEC int PMPI_Waitany(int count, MPI_Request array_of_requests[], diff -uNr -x lt~obsolete.m4 -x ltdl.m4 -x libtool.m4 -x autogen_found_items.m4 -x argz.m4 -x aclocal.m4 -x romioconf.h.in -x py-compile -x ylwrap -x opal_get_version.sh -x missing -x install-sh -x Makefile.in -x compile -x depcomp -x config.guess -x config.sub -x '*ltmain*' -x configure /tmp/openmpi-1.9a1r27420/ompi/include/ompi_config.h.in openmpi-1.9a1r27420/ompi/include/ompi_config.h.in --- /tmp/openmpi-1.9a1r27420/ompi/include/ompi_config.h.in 2012-10-06 04:13:25.000000000 +0300 +++ openmpi-1.9a1r27420/ompi/include/ompi_config.h.in 2012-10-20 01:05:42.185462809 +0300 @@ -43,7 +43,7 @@ typedef struct { ompi_fortran_real_t real; ompi_fortran_real_t imag; -} ompi_fortran_complex_t; +} ompi_fortran_complex_struct_t; #endif #if OMPI_HAVE_FORTRAN_REAL4 && OMPI_HAVE_FORTRAN_COMPLEX8 @@ -51,7 +51,7 @@ typedef struct { ompi_fortran_real4_t real; ompi_fortran_real4_t imag; -} ompi_fortran_complex8_t; +} ompi_fortran_complex8_struct_t; #endif #if OMPI_HAVE_FORTRAN_REAL8 && OMPI_HAVE_FORTRAN_COMPLEX16 @@ -59,7 +59,7 @@ typedef struct { ompi_fortran_real8_t real; ompi_fortran_real8_t imag; -} ompi_fortran_complex16_t; +} ompi_fortran_complex16_struct_t; #endif #if OMPI_HAVE_FORTRAN_REAL16 && OMPI_HAVE_FORTRAN_COMPLEX32 @@ -67,7 +67,7 @@ typedef struct { ompi_fortran_real16_t real; ompi_fortran_real16_t imag; -} ompi_fortran_complex32_t; +} ompi_fortran_complex32_struct_t; #endif #if OMPI_HAVE_FORTRAN_DOUBLE_PRECISION @@ -75,7 +75,7 @@ typedef struct { ompi_fortran_double_precision_t real; ompi_fortran_double_precision_t imag; -} ompi_fortran_double_complex_t; +} ompi_fortran_double_complex_struct_t; #endif diff -uNr -x lt~obsolete.m4 -x ltdl.m4 -x libtool.m4 -x autogen_found_items.m4 -x argz.m4 -x aclocal.m4 -x romioconf.h.in -x py-compile -x ylwrap -x opal_get_version.sh -x missing -x install-sh -x Makefile.in -x compile -x depcomp -x config.guess -x config.sub -x '*ltmain*' -x configure /tmp/openmpi-1.9a1r27420/ompi/mca/op/base/op_base_functions.c openmpi-1.9a1r27420/ompi/mca/op/base/op_base_functions.c --- /tmp/openmpi-1.9a1r27420/ompi/mca/op/base/op_base_functions.c 2012-10-06 04:00:26.000000000 +0300 +++ openmpi-1.9a1r27420/ompi/mca/op/base/op_base_functions.c 2012-10-07 21:02:33.107913765 +0300 @@ -308,19 +308,19 @@ #endif /* Complex */ #if OMPI_HAVE_FORTRAN_REAL && OMPI_HAVE_FORTRAN_COMPLEX -COMPLEX_OP_FUNC_SUM(fortran_complex, ompi_fortran_complex_t) +COMPLEX_OP_FUNC_SUM(fortran_complex, ompi_fortran_complex_struct_t) #endif #if OMPI_HAVE_FORTRAN_DOUBLE_PRECISION && OMPI_HAVE_FORTRAN_COMPLEX -COMPLEX_OP_FUNC_SUM(fortran_double_complex, ompi_fortran_double_complex_t) +COMPLEX_OP_FUNC_SUM(fortran_double_complex, ompi_fortran_double_complex_struct_t) #endif #if OMPI_HAVE_FORTRAN_REAL4 && OMPI_HAVE_FORTRAN_COMPLEX8 -COMPLEX_OP_FUNC_SUM(fortran_complex8, ompi_fortran_complex8_t) +COMPLEX_OP_FUNC_SUM(fortran_complex8, ompi_fortran_complex8_struct_t) #endif #if OMPI_HAVE_FORTRAN_REAL8 && OMPI_HAVE_FORTRAN_COMPLEX16 -COMPLEX_OP_FUNC_SUM(fortran_complex16, ompi_fortran_complex16_t) +COMPLEX_OP_FUNC_SUM(fortran_complex16, ompi_fortran_complex16_struct_t) #endif #if OMPI_HAVE_FORTRAN_REAL16 && OMPI_HAVE_FORTRAN_COMPLEX32 -COMPLEX_OP_FUNC_SUM(fortran_complex32, ompi_fortran_complex32_t) +COMPLEX_OP_FUNC_SUM(fortran_complex32, ompi_fortran_complex32_struct_t) #endif /************************************************************************* @@ -381,19 +381,19 @@ #endif /* Complex */ #if OMPI_HAVE_FORTRAN_REAL && OMPI_HAVE_FORTRAN_COMPLEX -COMPLEX_OP_FUNC_PROD(fortran_complex, ompi_fortran_complex_t) +COMPLEX_OP_FUNC_PROD(fortran_complex, ompi_fortran_complex_struct_t) #endif #if OMPI_HAVE_FORTRAN_DOUBLE_PRECISION && OMPI_HAVE_FORTRAN_COMPLEX -COMPLEX_OP_FUNC_PROD(fortran_double_complex, ompi_fortran_double_complex_t) +COMPLEX_OP_FUNC_PROD(fortran_double_complex, ompi_fortran_double_complex_struct_t) #endif #if OMPI_HAVE_FORTRAN_REAL4 && OMPI_HAVE_FORTRAN_COMPLEX8 -COMPLEX_OP_FUNC_PROD(fortran_complex8, ompi_fortran_complex8_t) +COMPLEX_OP_FUNC_PROD(fortran_complex8, ompi_fortran_complex8_struct_t) #endif #if OMPI_HAVE_FORTRAN_REAL8 && OMPI_HAVE_FORTRAN_COMPLEX16 -COMPLEX_OP_FUNC_PROD(fortran_complex16, ompi_fortran_complex16_t) +COMPLEX_OP_FUNC_PROD(fortran_complex16, ompi_fortran_complex16_struct_t) #endif #if OMPI_HAVE_FORTRAN_REAL16 && OMPI_HAVE_FORTRAN_COMPLEX32 -COMPLEX_OP_FUNC_PROD(fortran_complex32, ompi_fortran_complex32_t) +COMPLEX_OP_FUNC_PROD(fortran_complex32, ompi_fortran_complex32_struct_t) #endif /************************************************************************* @@ -933,19 +933,19 @@ #endif /* Complex */ #if OMPI_HAVE_FORTRAN_REAL && OMPI_HAVE_FORTRAN_COMPLEX -COMPLEX_OP_FUNC_SUM_3BUF(fortran_complex, ompi_fortran_complex_t) +COMPLEX_OP_FUNC_SUM_3BUF(fortran_complex, ompi_fortran_complex_struct_t) #endif #if OMPI_HAVE_FORTRAN_DOUBLE_PRECISION && OMPI_HAVE_FORTRAN_COMPLEX -COMPLEX_OP_FUNC_SUM_3BUF(fortran_double_complex, ompi_fortran_double_complex_t) +COMPLEX_OP_FUNC_SUM_3BUF(fortran_double_complex, ompi_fortran_double_complex_struct_t) #endif #if OMPI_HAVE_FORTRAN_REAL4 && OMPI_HAVE_FORTRAN_COMPLEX8 -COMPLEX_OP_FUNC_SUM_3BUF(fortran_complex8, ompi_fortran_complex8_t) +COMPLEX_OP_FUNC_SUM_3BUF(fortran_complex8, ompi_fortran_complex8_struct_t) #endif #if OMPI_HAVE_FORTRAN_REAL8 && OMPI_HAVE_FORTRAN_COMPLEX16 -COMPLEX_OP_FUNC_SUM_3BUF(fortran_complex16, ompi_fortran_complex16_t) +COMPLEX_OP_FUNC_SUM_3BUF(fortran_complex16, ompi_fortran_complex16_struct_t) #endif #if OMPI_HAVE_FORTRAN_REAL16 && OMPI_HAVE_FORTRAN_COMPLEX32 -COMPLEX_OP_FUNC_SUM_3BUF(fortran_complex32, ompi_fortran_complex32_t) +COMPLEX_OP_FUNC_SUM_3BUF(fortran_complex32, ompi_fortran_complex32_struct_t) #endif /************************************************************************* @@ -1006,19 +1006,19 @@ #endif /* Complex */ #if OMPI_HAVE_FORTRAN_REAL && OMPI_HAVE_FORTRAN_COMPLEX -COMPLEX_OP_FUNC_PROD_3BUF(fortran_complex, ompi_fortran_complex_t) +COMPLEX_OP_FUNC_PROD_3BUF(fortran_complex, ompi_fortran_complex_struct_t) #endif #if OMPI_HAVE_FORTRAN_DOUBLE_PRECISION && OMPI_HAVE_FORTRAN_COMPLEX -COMPLEX_OP_FUNC_PROD_3BUF(fortran_double_complex, ompi_fortran_double_complex_t) +COMPLEX_OP_FUNC_PROD_3BUF(fortran_double_complex, ompi_fortran_double_complex_struct_t) #endif #if OMPI_HAVE_FORTRAN_REAL4 && OMPI_HAVE_FORTRAN_COMPLEX8 -COMPLEX_OP_FUNC_PROD_3BUF(fortran_complex8, ompi_fortran_complex8_t) +COMPLEX_OP_FUNC_PROD_3BUF(fortran_complex8, ompi_fortran_complex8_struct_t) #endif #if OMPI_HAVE_FORTRAN_REAL8 && OMPI_HAVE_FORTRAN_COMPLEX16 -COMPLEX_OP_FUNC_PROD_3BUF(fortran_complex16, ompi_fortran_complex16_t) +COMPLEX_OP_FUNC_PROD_3BUF(fortran_complex16, ompi_fortran_complex16_struct_t) #endif #if OMPI_HAVE_FORTRAN_REAL16 && OMPI_HAVE_FORTRAN_COMPLEX32 -COMPLEX_OP_FUNC_PROD_3BUF(fortran_complex32, ompi_fortran_complex32_t) +COMPLEX_OP_FUNC_PROD_3BUF(fortran_complex32, ompi_fortran_complex32_struct_t) #endif /*************************************************************************