Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
better check for mpi_datatype_null
authorAugustin Degomme <adegomme@users.noreply.github.com>
Mon, 7 Jun 2021 18:56:32 +0000 (20:56 +0200)
committerAugustin Degomme <adegomme@users.noreply.github.com>
Mon, 7 Jun 2021 21:27:42 +0000 (23:27 +0200)
src/smpi/include/private.hpp

index d80b304..4deaddd 100644 (file)
@@ -554,10 +554,6 @@ XBT_PRIVATE void private_execute_flops(double flops);
     CHECK_ARGS(init_flag, MPI_ERR_OTHER, "%s: MPI_Finalize was already called !", __func__)                            \
   }
 
-#define CHECK_MPI_NULL(num, val, err, ptr)\
-  CHECK_ARGS((ptr) == (val), (err),\
-             "%s: param %d %s cannot be %s", __func__, (num), _XBT_STRINGIFY(ptr), _XBT_STRINGIFY(val))
-
 #define CHECK_VAL(num, val, err, value)\
   CHECK_ARGS((value) == (val), (err),\
              "%s: param %d %s cannot be %s", __func__, (num), _XBT_STRINGIFY(value), _XBT_STRINGIFY(val))
@@ -566,6 +562,13 @@ XBT_PRIVATE void private_execute_flops(double flops);
   CHECK_ARGS((buf) == nullptr, (err),\
              "%s: param %d %s cannot be NULL", __func__, (num), _XBT_STRINGIFY(buf))
 
+#define CHECK_MPI_NULL(num, val, err, ptr)\
+  {\
+    CHECK_ARGS((ptr) == (val), (err),\
+               "%s: param %d %s cannot be %s", __func__, (num), _XBT_STRINGIFY(ptr), _XBT_STRINGIFY(val))\
+    CHECK_NULL(num, err, ptr)\
+  }
+
 #define CHECK_NEGATIVE(num, err, val)\
   CHECK_ARGS((val) < 0, (err),\
              "%s: param %d %s cannot be negative", __func__, (num), _XBT_STRINGIFY(val))
@@ -622,8 +625,9 @@ XBT_PRIVATE void private_execute_flops(double flops);
 
 #define CHECK_TYPE(num, datatype)\
   {\
-    CHECK_ARGS(((datatype) == MPI_DATATYPE_NULL|| not (datatype)->is_valid()), MPI_ERR_TYPE,\
-             "%s: param %d %s cannot be MPI_DATATYPE_NULL or invalid", __func__, (num), _XBT_STRINGIFY(datatype));\
+    CHECK_MPI_NULL((num), MPI_DATATYPE_NULL, MPI_ERR_TYPE, (datatype))\
+    CHECK_ARGS((not (datatype)->is_valid()), MPI_ERR_TYPE,\
+             "%s: param %d %s is invalid", __func__, (num), _XBT_STRINGIFY(datatype));\
     CHECK_DELETED((num), MPI_ERR_TYPE, datatype)\
     if (not datatype->is_basic())\
       simgrid::smpi::utils::set_current_handle(datatype);\