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:
parent
59948e95d8
commit
876f11703d
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/projects/clang1100-import/; revision=363803
@ -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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user