[mpich-commits] [mpich] MPICH primary repository branch, master, updated. v3.2a1-4-g96c1107

Service Account noreply at mpich.org
Mon Sep 8 12:37:07 CDT 2014


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "MPICH primary repository".

The branch, master has been updated
       via  96c1107031f89b02dd3b4360862ddf98b8d5f43e (commit)
      from  c99d3467e2d96ecfd143921740eaa60cec222494 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.mpich.org/mpich.git/commitdiff/96c1107031f89b02dd3b4360862ddf98b8d5f43e

commit 96c1107031f89b02dd3b4360862ddf98b8d5f43e
Author: Junchao Zhang <jczhang at mcs.anl.gov>
Date:   Fri Sep 5 14:17:15 2014 -0500

    Fix switch(datatype) kind of errors
    
    In MPI, the predefined named constant handles like MPI_INT are link-time
    but not necessarily compile-time constants, so they should not be used in
    switch/case clauses. If you do so, this kind of code only compiles with
    MPICH but not OpenMPI.
    
    Fixes #2169, #2171
    
    Signed-off-by: Rob Latham <robl at mcs.anl.gov>

diff --git a/src/env/mpivars.c b/src/env/mpivars.c
index 080aedd..91e21aa 100644
--- a/src/env/mpivars.c
+++ b/src/env/mpivars.c
@@ -468,33 +468,25 @@ int getCvarValueAsStr( int idx, MPI_Datatype datatype,
 
     MPI_T_cvar_handle_alloc( idx, NULL, &chandle, &count );
     if (count == 1 || (datatype==MPI_CHAR && count < varValueLen)) {
-        switch (datatype) {
-        case MPI_INT:
+        if (MPI_INT == datatype) {
             MPI_T_cvar_read( chandle, &ival );
             snprintf( varValue, varValueLen, "%d", ival );
             hasValue = 1;
-            break;
-        case MPI_UNSIGNED:
+        } else if (MPI_UNSIGNED == datatype) {
             MPI_T_cvar_read( chandle, &uval );
             snprintf( varValue, varValueLen, "%u", uval );
             hasValue = 1;
-            break;
-        case MPI_UNSIGNED_LONG:
+        } else if (MPI_UNSIGNED_LONG == datatype) {
             MPI_T_cvar_read( chandle, &ulval );
             snprintf( varValue, varValueLen, "%lu", ulval );
             hasValue = 1;
-            break;
-        case MPI_UNSIGNED_LONG_LONG:
+        } else if (MPI_UNSIGNED_LONG_LONG == datatype) {
             MPI_T_cvar_read( chandle, &ullval );
             snprintf( varValue, varValueLen, "%llu", ullval );
             hasValue = 1;
-            break;
-        case MPI_CHAR:
+        } else if (MPI_CHAR == datatype) {
             MPI_T_cvar_read( chandle, varValue );
             hasValue = 1;
-            break;
-        default:
-            break;
         }
     }
     MPI_T_cvar_handle_free( &chandle );
@@ -534,38 +526,29 @@ int getPvarValueAsStr( int idx, MPI_Datatype datatype, int isContinuous,
                 goto fn_fail;
             }
         }
-        switch (datatype) {
-        case MPI_INT:
+        if (MPI_INT == datatype) {
             MPI_T_pvar_read( session, phandle, &ival );
             snprintf( varValue, varValueLen, "%d", ival );
             hasValue = 1;
-            break;
-        case MPI_UNSIGNED:
+        } else if (MPI_UNSIGNED == datatype) {
             MPI_T_pvar_read( session, phandle, &uval );
             snprintf( varValue, varValueLen, "%u", uval );
             hasValue = 1;
-            break;
-        case MPI_UNSIGNED_LONG:
+        } else if (MPI_UNSIGNED_LONG == datatype) {
             MPI_T_pvar_read( session, phandle, &ulval );
             snprintf( varValue, varValueLen, "%lu", ulval );
             hasValue = 1;
-            break;
-        case MPI_UNSIGNED_LONG_LONG:
+        } else if (MPI_UNSIGNED_LONG_LONG == datatype) {
             MPI_T_pvar_read( session, phandle, &ullval );
             snprintf( varValue, varValueLen, "%llu", ullval );
             hasValue = 1;
-            break;
-        case MPI_DOUBLE:
+        } else if (MPI_DOUBLE == datatype) {
             MPI_T_pvar_read( session, phandle, &dval );
             snprintf( varValue, varValueLen, "%e", dval );
             hasValue = 1;
-            break;
-        case MPI_CHAR:
+        } else if (MPI_CHAR == datatype) {
             MPI_T_pvar_read( session, phandle, varValue );
             hasValue = 1;
-            break;
-        default:
-            break;
         }
     }
  fn_fail:
diff --git a/test/mpi/mpi_t/cvarwrite.c b/test/mpi/mpi_t/cvarwrite.c
index aaf84d2..41d0b29 100644
--- a/test/mpi/mpi_t/cvarwrite.c
+++ b/test/mpi/mpi_t/cvarwrite.c
@@ -45,55 +45,47 @@ int main(int argc, char* argv[])
 
         MPI_T_cvar_handle_alloc(i, NULL, &chandle, &count);
         if (count == 1 || (datatype == MPI_CHAR && count < sizeof(cin))) {
-            switch (datatype) {
-                case MPI_INT:
-                    iin = 123;
-                    iout = 456;
-                    MPI_T_cvar_read(chandle, &iold); /* Read the old value */
-                    MPI_T_cvar_write(chandle, &iin); /* Write an arbitrary value */
-                    MPI_T_cvar_read(chandle, &iout); /* Read the value again */
-                    MPI_T_cvar_write(chandle, &iold); /* Restore the old value */
-                    if (iin != iout) errs++;
-                    break;
-                case MPI_UNSIGNED:
-                    uin = 133;
-                    uout = 986;
-                    MPI_T_cvar_read(chandle, &uold);
-                    MPI_T_cvar_write(chandle, &uin);
-                    MPI_T_cvar_read(chandle, &uout);
-                    MPI_T_cvar_write(chandle, &uold);
-                    if (uin != uout) errs++;
-                    break;
-                case MPI_UNSIGNED_LONG:
-                    ulin = 1830;
-                    ulout = 2014;
-                    MPI_T_cvar_read(chandle, &ulold);
-                    MPI_T_cvar_write(chandle, &ulin);
-                    MPI_T_cvar_read(chandle, &ulout);
-                    MPI_T_cvar_write(chandle, &ulold);
-                    if (ulin != ulout) errs++;
-                    break;
-                case MPI_UNSIGNED_LONG_LONG:
-                    ullin = 11930;
-                    ullout = 52014;
-                    MPI_T_cvar_read(chandle, &ullold);
-                    MPI_T_cvar_write(chandle, &ullin);
-                    MPI_T_cvar_read(chandle, &ullout);
-                    MPI_T_cvar_write(chandle, &ullold);
-                    if (ullin != ullout) errs++;
-                    break;
-                case MPI_CHAR:
-                    strcpy(cin,  "GARBAGE MPI_CHAR CVAR VALUE");
-                    strcpy(cout, "TEMPORARY MPI_CHAR CVAR VALUE");
-                    MPI_T_cvar_read(chandle, cold);
-                    MPI_T_cvar_write(chandle, cin);
-                    MPI_T_cvar_read(chandle, cout);
-                    MPI_T_cvar_write(chandle, cold);
-                    /* printf("%s = %s\n", name, cold); */
-                    if (strcmp(cin, cout)) errs++;
-                    break;
-                default:
-                    break;
+            if (MPI_INT == datatype) {
+                iin = 123;
+                iout = 456;
+                MPI_T_cvar_read(chandle, &iold); /* Read the old value */
+                MPI_T_cvar_write(chandle, &iin); /* Write an arbitrary value */
+                MPI_T_cvar_read(chandle, &iout); /* Read the value again */
+                MPI_T_cvar_write(chandle, &iold); /* Restore the old value */
+                if (iin != iout) errs++;
+            } else if (MPI_UNSIGNED == datatype) {
+                uin = 133;
+                uout = 986;
+                MPI_T_cvar_read(chandle, &uold);
+                MPI_T_cvar_write(chandle, &uin);
+                MPI_T_cvar_read(chandle, &uout);
+                MPI_T_cvar_write(chandle, &uold);
+                if (uin != uout) errs++;
+            } else if (MPI_UNSIGNED_LONG == datatype) {
+                ulin = 1830;
+                ulout = 2014;
+                MPI_T_cvar_read(chandle, &ulold);
+                MPI_T_cvar_write(chandle, &ulin);
+                MPI_T_cvar_read(chandle, &ulout);
+                MPI_T_cvar_write(chandle, &ulold);
+                if (ulin != ulout) errs++;
+            } else if (MPI_UNSIGNED_LONG_LONG == datatype) {
+                ullin = 11930;
+                ullout = 52014;
+                MPI_T_cvar_read(chandle, &ullold);
+                MPI_T_cvar_write(chandle, &ullin);
+                MPI_T_cvar_read(chandle, &ullout);
+                MPI_T_cvar_write(chandle, &ullold);
+                if (ullin != ullout) errs++;
+            } else if (MPI_CHAR == datatype) {
+                strcpy(cin,  "GARBAGE MPI_CHAR CVAR VALUE");
+                strcpy(cout, "TEMPORARY MPI_CHAR CVAR VALUE");
+                MPI_T_cvar_read(chandle, cold);
+                MPI_T_cvar_write(chandle, cin);
+                MPI_T_cvar_read(chandle, cout);
+                MPI_T_cvar_write(chandle, cold);
+                /* printf("%s = %s\n", name, cold); */
+                if (strcmp(cin, cout)) errs++;
             }
         }
 

-----------------------------------------------------------------------

Summary of changes:
 src/env/mpivars.c          |   39 +++++--------------
 test/mpi/mpi_t/cvarwrite.c |   90 ++++++++++++++++++++------------------------
 2 files changed, 52 insertions(+), 77 deletions(-)


hooks/post-receive
-- 
MPICH primary repository


More information about the commits mailing list