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
b0d9f89e72
commit
7af9c152c3
@ -98,29 +98,6 @@
|
|||||||
// Include internal utility function declarations.
|
// Include internal utility function declarations.
|
||||||
#include "int_util.h"
|
#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 __paritysi2(si_int a);
|
||||||
COMPILER_RT_ABI int __paritydi2(di_int a);
|
COMPILER_RT_ABI int __paritydi2(di_int a);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user