From d7aff5de28229aecbd6f6abcb245d8a2f30267db Mon Sep 17 00:00:00 2001 From: Alexis Engelke Date: Sat, 14 Jan 2023 19:41:46 +0100 Subject: [PATCH] format: Fix clz for 32-bit targets --- format.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/format.c b/format.c index b0759e1..29dc92f 100644 --- a/format.c +++ b/format.c @@ -44,7 +44,13 @@ fd_strpcat(char* restrict dst, struct FdStr src) { static unsigned fd_clz64(uint64_t v) { #if defined(__GNUC__) +#if INTPTR_MAX == INT64_MAX return __builtin_clzl(v); +#else + if (v <= 0xffffffff) + return 32 + __builtin_clzl(v); + return __builtin_clzl(v >> 32); +#endif #elif defined(_MSC_VER) unsigned long index;