Undo r230021 again, further shrinking the diff against upstream.

This revision worked around an endless recursion when compiling clzdi2.c
and ctzdi2.c with gcc, upstream landed a different workaround for this
in https://reviews.llvm.org/rL324593, which is effective enough.

Noticed by:	jrtc27
This commit is contained in:
dim 2020-08-03 17:51:57 +00:00
parent b0d9f89e72
commit 7af9c152c3

View File

@ -98,29 +98,6 @@
// Include internal utility function declarations.
#include "int_util.h"
/*
* 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 been observed on FreeBSD for sparc64 and
* mips64 with GCC 4.2.1, and for riscv with GCC 5.2.0.
* Presumably it's any version of GCC, and targeting an arch that
* does not have dedicated bit counting instructions.
*/
#if defined(__FreeBSD__) && (defined(__sparc64__) || \
defined(__mips_n32) || defined(__mips_n64) || defined(__mips_o64) || \
defined(__riscv))
si_int __clzsi2(si_int);
si_int __ctzsi2(si_int);
#define __builtin_clz __clzsi2
#define __builtin_ctz __ctzsi2
#endif /* FreeBSD && (sparc64 || mips_n32 || mips_n64 || mips_o64 || riscv) */
COMPILER_RT_ABI int __paritysi2(si_int a);
COMPILER_RT_ABI int __paritydi2(di_int a);