1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-11-29 08:08:37 +00:00

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:
Dimitry Andric 2020-08-03 17:51:57 +00:00
parent 59948e95d8
commit 876f11703d
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/projects/clang1100-import/; revision=363803

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);