|
3 | 3 | * Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana |
4 | 4 | * University Research and Technology |
5 | 5 | * Corporation. All rights reserved. |
6 | | - * Copyright (c) 2004-2009 The University of Tennessee and The University |
| 6 | + * Copyright (c) 2004-2016 The University of Tennessee and The University |
7 | 7 | * of Tennessee Research Foundation. All rights |
8 | 8 | * reserved. |
9 | 9 | * Copyright (c) 2004-2006 High Performance Computing Center Stuttgart, |
@@ -278,27 +278,14 @@ int32_t opal_datatype_add( opal_datatype_t* pdtBase, const opal_datatype_t* pdtA |
278 | 278 | */ |
279 | 279 | if( (pdtAdd->flags & (OPAL_DATATYPE_FLAG_PREDEFINED | OPAL_DATATYPE_FLAG_DATA)) == (OPAL_DATATYPE_FLAG_PREDEFINED | OPAL_DATATYPE_FLAG_DATA) ) { |
280 | 280 | pdtBase->btypes[pdtAdd->id] += count; |
| 281 | + pLast->elem.common.type = pdtAdd->id; |
| 282 | + pLast->elem.count = count; |
| 283 | + pLast->elem.disp = disp; |
| 284 | + pLast->elem.extent = extent; |
| 285 | + pdtBase->desc.used++; |
| 286 | + pLast->elem.common.flags = pdtAdd->flags & ~(OPAL_DATATYPE_FLAG_COMMITTED); |
281 | 287 | if( (extent != (OPAL_PTRDIFF_TYPE)pdtAdd->size) && (count > 1) ) { /* gaps around the datatype */ |
282 | | - localFlags = pdtAdd->flags & ~(OPAL_DATATYPE_FLAG_COMMITTED | OPAL_DATATYPE_FLAG_CONTIGUOUS | OPAL_DATATYPE_FLAG_NO_GAPS); |
283 | | - CREATE_LOOP_START( pLast, count, 2, extent, localFlags ); |
284 | | - pLast++; |
285 | | - pLast->elem.common.type = pdtAdd->id; |
286 | | - pLast->elem.count = 1; |
287 | | - pLast->elem.disp = disp; |
288 | | - pLast->elem.extent = pdtAdd->size; |
289 | | - pLast->elem.common.flags = localFlags | OPAL_DATATYPE_FLAG_CONTIGUOUS; |
290 | | - pLast++; |
291 | | - CREATE_LOOP_END( pLast, 2, disp, pdtAdd->size, localFlags ); |
292 | | - pdtBase->desc.used += 3; |
293 | | - pdtBase->btypes[OPAL_DATATYPE_LOOP] = 1; |
294 | | - pdtBase->btypes[OPAL_DATATYPE_END_LOOP] = 1; |
295 | | - } else { |
296 | | - pLast->elem.common.type = pdtAdd->id; |
297 | | - pLast->elem.count = count; |
298 | | - pLast->elem.disp = disp; |
299 | | - pLast->elem.extent = extent; |
300 | | - pdtBase->desc.used++; |
301 | | - pLast->elem.common.flags = pdtAdd->flags & ~(OPAL_DATATYPE_FLAG_COMMITTED); |
| 288 | + pLast->elem.common.flags &= ~(OPAL_DATATYPE_FLAG_CONTIGUOUS | OPAL_DATATYPE_FLAG_NO_GAPS); |
302 | 289 | } |
303 | 290 | } else { |
304 | 291 | /* keep trace of the total number of basic datatypes in the datatype definition */ |
|
0 commit comments