+++ /dev/null
---- a/src/libcompiler_builtins/compiler-rt/lib/builtins/clzdi2.c
-+++ b/src/libcompiler_builtins/compiler-rt/lib/builtins/clzdi2.c
-@@ -16,6 +16,12 @@
-
- /* Returns: the number of leading 0-bits */
-
-+#if !defined(__clang__) && (defined(__sparc64__) || defined(__mips64) || defined(__riscv__))
-+/* gcc resolves __builtin_clz -> __clzdi2 leading to infinite recursion */
-+#define __builtin_clz(a) __clzsi2(a)
-+extern si_int __clzsi2(si_int);
-+#endif
-+
- /* Precondition: a != 0 */
-
- COMPILER_RT_ABI si_int
---- a/src/libcompiler_builtins/compiler-rt/lib/builtins/ctzdi2.c
-+++ b/src/libcompiler_builtins/compiler-rt/lib/builtins/ctzdi2.c
-@@ -16,6 +16,12 @@
-
- /* Returns: the number of trailing 0-bits */
-
-+#if !defined(__clang__) && (defined(__sparc64__) || defined(__mips64) || defined(__riscv__))
-+/* gcc resolves __builtin_ctz -> __ctzdi2 leading to infinite recursion */
-+#define __builtin_ctz(a) __ctzsi2(a)
-+extern si_int __ctzsi2(si_int);
-+#endif
-+
- /* Precondition: a != 0 */
-
- COMPILER_RT_ABI si_int
+++ /dev/null
---- a/src/libcompiler_builtins/compiler-rt/lib/builtins/clzdi2.c
-+++ b/src/libcompiler_builtins/compiler-rt/lib/builtins/clzdi2.c
-@@ -16,8 +16,13 @@
-
- /* Returns: the number of leading 0-bits */
-
--#if !defined(__clang__) && (defined(__sparc64__) || defined(__mips64) || defined(__riscv__))
--/* gcc resolves __builtin_clz -> __clzdi2 leading to infinite recursion */
-+#if !defined(__clang__) \
-+ && ((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
-+ * __clzsi2, leading to infinite recursion. */
- #define __builtin_clz(a) __clzsi2(a)
- extern si_int __clzsi2(si_int);
- #endif
---- a/src/libcompiler_builtins/compiler-rt/lib/builtins/ctzdi2.c
-+++ b/src/libcompiler_builtins/compiler-rt/lib/builtins/ctzdi2.c
-@@ -16,8 +16,13 @@
-
- /* Returns: the number of trailing 0-bits */
-
--#if !defined(__clang__) && (defined(__sparc64__) || defined(__mips64) || defined(__riscv__))
--/* gcc resolves __builtin_ctz -> __ctzdi2 leading to infinite recursion */
-+#if !defined(__clang__) \
-+ && ((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_ctz to __ctzdi2 rather than
-+ * __ctzsi2, leading to infinite recursion. */
- #define __builtin_ctz(a) __ctzsi2(a)
- extern si_int __ctzsi2(si_int);
- #endif