[compiler-rt] [compiler-rt] Make sure __clzdi2 doesn't call itself recursively on sparc64 (PR #136737)
Saleem Abdulrasool via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 22 11:32:33 PDT 2025
================
@@ -14,12 +14,12 @@
// Returns: the number of leading 0-bits
-#if !defined(__clang__) && \
- ((defined(__sparc__) && defined(__arch64__)) || defined(__mips64) || \
+#if ((defined(__sparc__) && defined(__arch64__)) || defined(__mips64) || \
(defined(__riscv) && __SIZEOF_POINTER__ >= 8))
// On 64-bit architectures with neither a native clz instruction nor a native
-// ctz instruction, gcc resolves __builtin_clz to __clzdi2 rather than
+// ctz instruction, resolves __builtin_clz resolves to __clzdi2 rather than
// __clzsi2, leading to infinite recursion.
+// This is because on those platforms, libgcc doesn't ship with __clzsi2.
----------------
compnerd wrote:
```suggestion
// `__clzsi2` as libgcc does not ship with `__clzsi2`, leading to infinite recursion.
```
https://github.com/llvm/llvm-project/pull/136737
More information about the llvm-commits
mailing list