1
1

Recomputer the contiguous flags in a better way.

This commit was SVN r10229.
Этот коммит содержится в:
George Bosilca 2006-06-06 19:40:21 +00:00
родитель 370bf0481d
Коммит 6258c49a4a

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

@ -295,12 +295,13 @@ int32_t ompi_ddt_add( ompi_datatype_t* pdtBase, const ompi_datatype_t* pdtAdd,
if( disp < old_true_ub ) pdtBase->flags |= DT_FLAG_OVERLAP;
UNSET_CONTIGUOUS_FLAG(pdtBase->flags);
} else {
if( (pdtBase->flags & DT_FLAG_CONTIGUOUS) && (pdtAdd->flags & DT_FLAG_CONTIGUOUS)
&& (pdtBase->size == (uint32_t)(pdtBase->true_ub - pdtBase->true_lb))
&& (((long)pdtAdd->size) == extent) ) {
localFlags = pdtBase->flags & pdtAdd->flags;
UNSET_CONTIGUOUS_FLAG(pdtBase->flags); /* consider it as not contiguous */
if( (localFlags & DT_FLAG_CONTIGUOUS) /* both have to be contiguous */
&& ( (((long)pdtAdd->size) == extent) /* the size and the extent of the added
* type have to match */
|| (count < 2)) ) { /* - if the count is bigger than 2 */
SET_CONTIGUOUS_FLAG(pdtBase->flags);
} else {
UNSET_CONTIGUOUS_FLAG(pdtBase->flags);
}
}