@@ -60,6 +60,16 @@ getput_vard(NC *ncp,
6060 MPI_Offset nelems = 0 , fnelems = 0 , bnelems = 0 , offset = 0 ;
6161 MPI_Datatype etype = MPI_DATATYPE_NULL , xtype = MPI_BYTE ;
6262 MPI_Offset filetype_size ;
63+ #ifdef HAVE_MPI_TYPE_SIZE_C
64+ MPI_Count true_lb = 0 , true_ub = 0 , true_extent = 0 ;
65+ MPI_Count type_size ;
66+ #elif defined(HAVE_MPI_TYPE_SIZE_X )
67+ MPI_Count true_lb = 0 , true_ub = 0 , true_extent = 0 ;
68+ MPI_Count type_size ;
69+ #else
70+ MPI_Aint true_lb = 0 , true_ub = 0 , true_extent = 0 ;
71+ int type_size ;
72+ #endif
6373
6474#ifdef ENABLE_SUBFILING
6575 /* call a separate routine if variable is stored in subfiles */
@@ -86,24 +96,15 @@ getput_vard(NC *ncp,
8696 */
8797#ifdef HAVE_MPI_TYPE_SIZE_C
8898 /* MPI_Type_size_c is introduced in MPI 4.0 */
89- MPI_Count true_lb = 0 , true_ub = 0 , true_extent = 0 ;
90- MPI_Count type_size ;
91-
9299 mpireturn = MPI_Type_size_c (filetype , & type_size );
93100#elif defined(HAVE_MPI_TYPE_SIZE_X )
94101 /* MPI_Type_size_x is introduced in MPI 3.0 */
95- MPI_Count true_lb = 0 , true_ub = 0 , true_extent = 0 ;
96- MPI_Count type_size ;
97-
98102 mpireturn = MPI_Type_size_x (filetype , & type_size );
99103#else
100104 /* PROBLEM: In MPI_Type_size(), argument filetype_size is a 4-byte integer,
101105 * cannot be used for large filetypes. Prior to MPI 3.0 standard, argument
102106 * "size" of MPI_Type_size is of type int. When int overflows, the returned
103107 * value in argument "size" may be a negative. */
104- MPI_Aint true_lb = 0 , true_ub = 0 , true_extent = 0 ;
105- int type_size ;
106-
107108 mpireturn = MPI_Type_size (filetype , & type_size );
108109#endif
109110 if (mpireturn != MPI_SUCCESS ) {
0 commit comments