Fix BIONIC_ROUND_UP_POWER_OF_2 for 64 bit.
There were two bugs here: - For 64 bit values, this did not properly round up. - The macro rounded to the power of 2 less than value, not to the power of 2 greater than value. Change-Id: If8cb41536a9d2f5c1bc213676f1e67a7903a36b0
This commit is contained in:
parent
5656a0c494
commit
27047faf28
@ -37,6 +37,8 @@
|
||||
(((value) + (alignment) - 1) & ~((alignment) - 1))
|
||||
|
||||
#define BIONIC_ROUND_UP_POWER_OF_2(value) \
|
||||
(1UL << (sizeof(value) * 8 - 1 - __builtin_clz(value)))
|
||||
(sizeof(value) == 8) \
|
||||
? (1UL << (64 - __builtin_clzl(static_cast<unsigned long>(value)))) \
|
||||
: (1UL << (32 - __builtin_clz(static_cast<unsigned int>(value))))
|
||||
|
||||
#endif // _BIONIC_MACROS_H_
|
||||
|
Loading…
Reference in New Issue
Block a user