From da0c3511e311a406e2c804f498449afc098a2a98 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Thu, 10 Jul 2014 17:48:37 -0400 Subject: [PATCH] Use __builtin_clzl if element is long Change-Id: I50a112739847fa826088854f6d172a188ff4cfb3 --- engine/src/flutter/libs/minikin/SparseBitSet.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/engine/src/flutter/libs/minikin/SparseBitSet.cpp b/engine/src/flutter/libs/minikin/SparseBitSet.cpp index e0b3c1d5a7e..7acb7ba345b 100644 --- a/engine/src/flutter/libs/minikin/SparseBitSet.cpp +++ b/engine/src/flutter/libs/minikin/SparseBitSet.cpp @@ -105,9 +105,9 @@ void SparseBitSet::initFromRanges(const uint32_t* ranges, size_t nRanges) { } } -// Note: this implementation depends on GCC builtin, and also assumes 32-bit elements. int SparseBitSet::CountLeadingZeros(element x) { - return __builtin_clz(x); + // Note: GCC / clang builtin + return sizeof(element) <= sizeof(int) ? __builtin_clz(x) : __builtin_clzl(x); } uint32_t SparseBitSet::nextSetBit(uint32_t fromIndex) const {