Reapply r230021, r276851 and a few other commits to compiler-rt
authorDimitry Andric <dim@FreeBSD.org>
Sun, 2 Aug 2020 18:07:16 +0000 (18:07 +0000)
committerDimitry Andric <dim@FreeBSD.org>
Sun, 2 Aug 2020 18:07:16 +0000 (18:07 +0000)
commit71daeec70a15871cfc0071321cd1e819399aa911
treed4e5ea1f78084a56949292d47031c0c7919dc08a
parent979e22ff1ac2a50acbf94e28576a058db89003b5
Reapply r230021, r276851 and a few other commits to compiler-rt

Reapply r230021 (by ed):

Add a workaround to prevent endless recursion in compiler-rt.

SPARC and MIPS CPUs don't have special instructions to count
leading/trailing zeroes. The compiler-rt library provides fallback
rountines for these. The 64-bit routines, __clzdi2 and __ctzdi2, are
implemented as simple wrappers around the compiler built-in
__builtin_clz(), assuming these will expand to either 32-bit
CPU instructions or calls to __clzsi2 and __ctzsi2.

Unfortunately, our GCC 4.2 probably thinks that because the operand is
stored in a 64-bit register, it might just be a better idea to invoke
its 64-bit equivalent, simply resulting into endless recursion. Fix this
by defining __builtin_clz and __builtin_ctz to __clzsi2 and __ctzsi2
explicitly.

Reapply r276851:

Update compiler-rt to trunk r224034.  This brings a number of new
builtins, and also the various sanitizers.  Support for these will be
added in a later commit.
contrib/llvm-project/compiler-rt/lib/builtins/int_lib.h