[PATCH] D43146: [builtins] Fix c?zdi2 on sparc64/Linux and ignore riscv32
James Clarke via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Feb 20 14:18:34 PST 2018
jrtc27 updated this revision to Diff 135146.
jrtc27 added a comment.
Updated to check `__riscv` instead of the deprecated `__riscv__`
Repository:
rCRT Compiler Runtime
https://reviews.llvm.org/D43146
Files:
lib/builtins/clzdi2.c
lib/builtins/ctzdi2.c
Index: lib/builtins/ctzdi2.c
===================================================================
--- lib/builtins/ctzdi2.c
+++ 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
Index: lib/builtins/clzdi2.c
===================================================================
--- lib/builtins/clzdi2.c
+++ 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D43146.135146.patch
Type: text/x-patch
Size: 1678 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180220/5d6f5648/attachment.bin>
More information about the llvm-commits
mailing list