[llvm-commits] [Patch] Unbreak compiler-rt on FreeBSD/sparc64 and FreeBSD/mips64

Ed Schouten ed at 80386.nl
Sat Dec 31 05:11:19 PST 2011


Hi,

It seems the MIPS64 check is incorrect, as we must test against both
__mips_n64 and __mips_o64. Updated patch below:

Index: lib/int_lib.h
===================================================================
--- lib/int_lib.h	(revision 229003)
+++ lib/int_lib.h	(working copy)
@@ -153,4 +153,24 @@
     long double f;
 } long_double_bits;
 
+/*
+ * Workaround for LLVM bug 11663.  Prevent endless recursion in
+ * __c?zdi2(), where calls to __builtin_c?z() are expanded to
+ * __c?zdi2() instead of __c?zsi2().
+ *
+ * Instead of placing this workaround in c?zdi2.c, put it in this
+ * global header to prevent other C files from making the detour
+ * through __c?zdi2() as well.
+ *
+ * This problem has only been observed on FreeBSD for sparc64 and
+ * mips64 with GCC 4.2.1.
+ */
+#if defined(__FreeBSD__) && (defined(__sparc64__) || \
+    defined(__mips_n64) || defined(__mips_o64))
+si_int __clzsi2(si_int);
+si_int __ctzsi2(si_int);
+#define	__builtin_clz	__clzsi2
+#define	__builtin_ctz	__ctzsi2
+#endif
+
 #endif /* INT_LIB_H */

-- 
 Ed Schouten <ed at 80386.nl>
 WWW: http://80386.nl/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20111231/d1476c14/attachment.sig>


More information about the llvm-commits mailing list