1
1

Dont assume a size for constants with UL and ULL.

According to Section 6.4.4.1 of the C, we do not need to prepend a type
to a constant to get the right size. The compiler will infer the type
according to the number of bits in the constant.

Signed-off-by: George Bosilca <bosilca@icl.utk.edu>
Этот коммит содержится в:
George Bosilca 2017-06-05 22:07:53 -04:00
родитель 29411472f2
Коммит ba46b35515
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 09C926752C9F09B1

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

@ -87,6 +87,10 @@ static void opal_pointer_array_destruct(opal_pointer_array_t *array)
* A classical find first zero bit (ffs) on a large array. It checks starting * A classical find first zero bit (ffs) on a large array. It checks starting
* from the indicated position until it finds a zero bit. If SET is true, * from the indicated position until it finds a zero bit. If SET is true,
* the bit is set. The position of the bit is returned in store. * the bit is set. The position of the bit is returned in store.
*
* According to Section 6.4.4.1 of the C standard we don't need to prepend a type
* indicator to constants (the type is inferred by the compiler according to
* the number of bits necessary to represent it).
*/ */
#define FIND_FIRST_ZERO(START_IDX, STORE) \ #define FIND_FIRST_ZERO(START_IDX, STORE) \
do { \ do { \
@ -96,27 +100,27 @@ static void opal_pointer_array_destruct(opal_pointer_array_t *array)
break; \ break; \
} \ } \
GET_BIT_POS((START_IDX), __b_idx, __b_pos); \ GET_BIT_POS((START_IDX), __b_idx, __b_pos); \
for (; table->free_bits[__b_idx] == 0xFFFFFFFFFFFFFFFFULL; __b_idx++); \ for (; table->free_bits[__b_idx] == 0xFFFFFFFFFFFFFFFFu; __b_idx++); \
assert(__b_idx < (uint32_t)table->size); \ assert(__b_idx < (uint32_t)table->size); \
uint64_t __check_value = table->free_bits[__b_idx]; \ uint64_t __check_value = table->free_bits[__b_idx]; \
__b_pos = 0; \ __b_pos = 0; \
\ \
if( 0x00000000FFFFFFFFULL == (__check_value & 0x00000000FFFFFFFFULL) ) { \ if( 0x00000000FFFFFFFFu == (__check_value & 0x00000000FFFFFFFFu) ) { \
__check_value >>= 32; __b_pos += 32; \ __check_value >>= 32; __b_pos += 32; \
} \ } \
if( 0x000000000000FFFFULL == (__check_value & 0x000000000000FFFFULL) ) { \ if( 0x000000000000FFFFu == (__check_value & 0x000000000000FFFFu) ) { \
__check_value >>= 16; __b_pos += 16; \ __check_value >>= 16; __b_pos += 16; \
} \ } \
if( 0x00000000000000FFULL == (__check_value & 0x00000000000000FFULL) ) { \ if( 0x00000000000000FFu == (__check_value & 0x00000000000000FFu) ) { \
__check_value >>= 8; __b_pos += 8; \ __check_value >>= 8; __b_pos += 8; \
} \ } \
if( 0x000000000000000FULL == (__check_value & 0x000000000000000FULL) ) { \ if( 0x000000000000000Fu == (__check_value & 0x000000000000000Fu) ) { \
__check_value >>= 4; __b_pos += 4; \ __check_value >>= 4; __b_pos += 4; \
} \ } \
if( 0x0000000000000003ULL == (__check_value & 0x0000000000000003ULL) ) { \ if( 0x0000000000000003u == (__check_value & 0x0000000000000003u) ) { \
__check_value >>= 2; __b_pos += 2; \ __check_value >>= 2; __b_pos += 2; \
} \ } \
if( 0x0000000000000001ULL == (__check_value & 0x0000000000000001ULL) ) { \ if( 0x0000000000000001u == (__check_value & 0x0000000000000001u) ) { \
__b_pos += 1; \ __b_pos += 1; \
} \ } \
(STORE) = (__b_idx * 8 * sizeof(uint64_t)) + __b_pos; \ (STORE) = (__b_idx * 8 * sizeof(uint64_t)) + __b_pos; \
@ -129,8 +133,8 @@ static void opal_pointer_array_destruct(opal_pointer_array_t *array)
do { \ do { \
uint32_t __b_idx, __b_pos; \ uint32_t __b_idx, __b_pos; \
GET_BIT_POS((IDX), __b_idx, __b_pos); \ GET_BIT_POS((IDX), __b_idx, __b_pos); \
assert( 0 == (table->free_bits[__b_idx] & (1UL << __b_pos))); \ assert( 0 == (table->free_bits[__b_idx] & (((uint64_t)1) << __b_pos))); \
table->free_bits[__b_idx] |= (1ULL << __b_pos); \ table->free_bits[__b_idx] |= (((uint64_t)1) << __b_pos); \
} while(0) } while(0)
/** /**
@ -140,8 +144,8 @@ static void opal_pointer_array_destruct(opal_pointer_array_t *array)
do { \ do { \
uint32_t __b_idx, __b_pos; \ uint32_t __b_idx, __b_pos; \
GET_BIT_POS((IDX), __b_idx, __b_pos); \ GET_BIT_POS((IDX), __b_idx, __b_pos); \
assert( (table->free_bits[__b_idx] & (1UL << __b_pos))); \ assert( (table->free_bits[__b_idx] & (((uint64_t)1) << __b_pos))); \
table->free_bits[__b_idx] ^= (1ULL << __b_pos); \ table->free_bits[__b_idx] ^= (((uint64_t)1) << __b_pos); \
} while(0) } while(0)
#if 0 #if 0
@ -159,9 +163,9 @@ static void opal_pointer_array_validate(opal_pointer_array_t *array)
GET_BIT_POS(i, b_idx, p_idx); GET_BIT_POS(i, b_idx, p_idx);
if( NULL == array->addr[i] ) { if( NULL == array->addr[i] ) {
cnt++; cnt++;
assert( 0 == (array->free_bits[b_idx] & (1ULL << p_idx)) ); assert( 0 == (array->free_bits[b_idx] & (((uint64_t)1) << p_idx)) );
} else { } else {
assert( 0 != (array->free_bits[b_idx] & (1ULL << p_idx)) ); assert( 0 != (array->free_bits[b_idx] & (((uint64_t)1) << p_idx)) );
} }
} }
assert(cnt == array->number_free); assert(cnt == array->number_free);