- int known = 0;
- extra->datatype1 = encode_datatype(sendtype, &known);
- int dt_size_send = 1;
- if (known == 0)
- dt_size_send = sendtype->size();
- extra->send_size = sendcount * dt_size_send;
- extra->datatype2 = encode_datatype(recvtype, &known);
- int dt_size_recv = 1;
- if (known == 0)
- dt_size_recv = recvtype->size();
- extra->recv_size = recvcount * dt_size_recv;
+ extra->datatype1 = encode_datatype(sendtype);
+ extra->send_size = sendtype->is_basic() ? sendcount : sendcount * sendtype->size();
+ extra->datatype2 = encode_datatype(recvtype);
+ extra->recv_size = recvtype->is_basic() ? recvcount : recvcount * recvtype->size();