1
1

Reorder the pointer computations in order to keep them correctly aligned.

This commit was SVN r10275.
Этот коммит содержится в:
George Bosilca 2006-06-09 16:10:15 +00:00
родитель 18675782b3
Коммит a7e849f58b

Просмотреть файл

@ -43,6 +43,13 @@ typedef struct __dt_args {
MPI_Datatype* d; MPI_Datatype* d;
} ompi_ddt_args_t; } ompi_ddt_args_t;
/**
* Some architecture require that 64 bits pointers (to pointers) has to
* be 64 bits aligned. As in the ompi_ddt_args_t structure we have 2 such
* pointers and one to an array of ints, if we start by setting the 64
* bits aligned one we will not have any trouble. Problem arise on
* SPARC 64.
*/
#define ALLOC_ARGS(PDATA, IC, AC, DC) \ #define ALLOC_ARGS(PDATA, IC, AC, DC) \
do { \ do { \
int length = sizeof(ompi_ddt_args_t) + (IC) * sizeof(int) + \ int length = sizeof(ompi_ddt_args_t) + (IC) * sizeof(int) + \
@ -53,11 +60,6 @@ typedef struct __dt_args {
pArgs->ca = (AC); \ pArgs->ca = (AC); \
pArgs->cd = (DC); \ pArgs->cd = (DC); \
buf += sizeof(ompi_ddt_args_t); \ buf += sizeof(ompi_ddt_args_t); \
if( pArgs->ci == 0 ) pArgs->i = NULL; \
else { \
pArgs->i = (int*)buf; \
buf += pArgs->ci * sizeof(int); \
} \
if( pArgs->ca == 0 ) pArgs->a = NULL; \ if( pArgs->ca == 0 ) pArgs->a = NULL; \
else { \ else { \
pArgs->a = (MPI_Aint*)buf; \ pArgs->a = (MPI_Aint*)buf; \
@ -65,6 +67,11 @@ typedef struct __dt_args {
} \ } \
if( pArgs->cd == 0 ) pArgs->d = NULL; \ if( pArgs->cd == 0 ) pArgs->d = NULL; \
else pArgs->d = (MPI_Datatype*)buf; \ else pArgs->d = (MPI_Datatype*)buf; \
if( pArgs->ci == 0 ) pArgs->i = NULL; \
else { \
pArgs->i = (int*)buf; \
buf += pArgs->ci * sizeof(int); \
} \
pArgs->ref_count = 1; \ pArgs->ref_count = 1; \
pArgs->total_pack_size = (4 + (IC)) * sizeof(int) + \ pArgs->total_pack_size = (4 + (IC)) * sizeof(int) + \
(AC) * sizeof(MPI_Aint) + (DC) * sizeof(int); \ (AC) * sizeof(MPI_Aint) + (DC) * sizeof(int); \