diff --git a/src/corelib/kernel/qmath.h b/src/corelib/kernel/qmath.h index 68f6a65c87..305e9065e9 100644 --- a/src/corelib/kernel/qmath.h +++ b/src/corelib/kernel/qmath.h @@ -244,16 +244,13 @@ Q_DECL_CONSTEXPR inline double qRadiansToDegrees(double radians) } -#if defined(QT_HAS_BUILTIN_CLZ) -inline quint32 qNextPowerOfTwo(quint32 v) +Q_DECL_RELAXED_CONSTEXPR inline quint32 qNextPowerOfTwo(quint32 v) { +#if defined(QT_HAS_BUILTIN_CLZ) if (v == 0) return 1; return 2U << (31 ^ QAlgorithmsPrivate::qt_builtin_clz(v)); -} #else -inline quint32 qNextPowerOfTwo(quint32 v) -{ v |= v >> 1; v |= v >> 2; v |= v >> 4; @@ -261,19 +258,16 @@ inline quint32 qNextPowerOfTwo(quint32 v) v |= v >> 16; ++v; return v; -} #endif +} -#if defined(QT_HAS_BUILTIN_CLZLL) -inline quint64 qNextPowerOfTwo(quint64 v) +Q_DECL_RELAXED_CONSTEXPR inline quint64 qNextPowerOfTwo(quint64 v) { +#if defined(QT_HAS_BUILTIN_CLZLL) if (v == 0) return 1; return Q_UINT64_C(2) << (63 ^ QAlgorithmsPrivate::qt_builtin_clzll(v)); -} #else -inline quint64 qNextPowerOfTwo(quint64 v) -{ v |= v >> 1; v |= v >> 2; v |= v >> 4; @@ -282,15 +276,15 @@ inline quint64 qNextPowerOfTwo(quint64 v) v |= v >> 32; ++v; return v; -} #endif +} -inline quint32 qNextPowerOfTwo(qint32 v) +Q_DECL_RELAXED_CONSTEXPR inline quint32 qNextPowerOfTwo(qint32 v) { return qNextPowerOfTwo(quint32(v)); } -inline quint64 qNextPowerOfTwo(qint64 v) +Q_DECL_RELAXED_CONSTEXPR inline quint64 qNextPowerOfTwo(qint64 v) { return qNextPowerOfTwo(quint64(v)); }