From 110e47361a8903da943770a74b291e17ae30c522 Mon Sep 17 00:00:00 2001 From: Augustin Degomme Date: Fri, 6 Aug 2021 15:00:40 +0200 Subject: [PATCH] Other fix for #78 : Fortran logical and MPI_LOGICAL are actually 32 bits wide, not 8, and should not be mapped to MPI_C_BOOL but to MPI_INTEGER32 internally. Because why not. --- include/smpi/mpif.h.in | 2 +- src/smpi/bindings/smpi_f77.cpp | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/include/smpi/mpif.h.in b/include/smpi/mpif.h.in index 0da3d5e40d..40860dbf26 100644 --- a/include/smpi/mpif.h.in +++ b/include/smpi/mpif.h.in @@ -192,7 +192,7 @@ parameter(MPI_BYTE=1) parameter(MPI_CHARACTER=2) - parameter(MPI_LOGICAL=3) + parameter(MPI_LOGICAL=18) parameter(MPI_INT=4) parameter(MPI_INTEGER=4) parameter(MPI_INTEGER1=5) diff --git a/src/smpi/bindings/smpi_f77.cpp b/src/smpi/bindings/smpi_f77.cpp index 85885bbb6f..0316d2204e 100644 --- a/src/smpi/bindings/smpi_f77.cpp +++ b/src/smpi/bindings/smpi_f77.cpp @@ -23,11 +23,10 @@ void smpi_init_fortran_types() MPI_COMM_WORLD->add_f(); MPI_BYTE->add_f(); // MPI_BYTE MPI_CHAR->add_f(); // MPI_CHARACTER + MPI_C_BOOL->add_f(); // MPI_LOGICAL if (sizeof(void*) == 8) { - MPI_C_BOOL->add_f(); // MPI_LOGICAL MPI_INT->add_f(); // MPI_INTEGER } else { - MPI_C_BOOL->add_f(); // MPI_LOGICAL MPI_LONG->add_f(); // MPI_INTEGER } MPI_INT8_T->add_f(); // MPI_INTEGER1 -- 2.20.1