diff --git a/src/mpi/coll/reduce_local/reduce_local.c b/src/mpi/coll/reduce_local/reduce_local.c index f9033ff8561..61b4323f52e 100644 --- a/src/mpi/coll/reduce_local/reduce_local.c +++ b/src/mpi/coll/reduce_local/reduce_local.c @@ -54,9 +54,12 @@ int MPIR_Reduce_local(const void *inbuf, void *inoutbuf, MPI_Aint count, MPI_Dat } /* actually perform the reduction */ + /* FIXME: properly support large count reduction */ + MPIR_Assert(count <= INT_MAX); + int icount = (int) count; #ifdef HAVE_CXX_BINDING if (is_cxx_uop) { - (*MPIR_Process.cxx_call_op_fn) (inbuf, inoutbuf, count, datatype, uop); + (*MPIR_Process.cxx_call_op_fn) (inbuf, inoutbuf, icount, datatype, uop); } else #endif { @@ -68,10 +71,10 @@ int MPIR_Reduce_local(const void *inbuf, void *inoutbuf, MPI_Aint count, MPI_Dat (*uop_f77) ((void *) inbuf, inoutbuf, &lcount, &ldtype); } else { - (*uop) ((void *) inbuf, inoutbuf, &count, &datatype); + (*uop) ((void *) inbuf, inoutbuf, &icount, &datatype); } #else - (*uop) ((void *) inbuf, inoutbuf, &count, &datatype); + (*uop) ((void *) inbuf, inoutbuf, &icount, &datatype); #endif }