diff options
author | trevyn <230691+trevyn@users.noreply.github.com> | 2024-01-19 18:02:00 +0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-19 06:02:00 -0800 |
commit | d1a2f11febfcdb2cc56a8c29012f948727c152d0 (patch) | |
tree | a6c90ff719c30caebe2cc2e5d4f7cecb7bef5708 /compiler-rt | |
parent | 9ff4be640fb1b3a64a8bc73020d67816f1c09ea0 (diff) | |
download | llvm-d1a2f11febfcdb2cc56a8c29012f948727c152d0.zip llvm-d1a2f11febfcdb2cc56a8c29012f948727c152d0.tar.gz llvm-d1a2f11febfcdb2cc56a8c29012f948727c152d0.tar.bz2 |
[builtins] Mark `int_lib.h` builtins as `static` (#69305)
Mark the following symbols as `static` to prevent duplicate definitions:
`__builtin_ctz`
`__builtin_clz`
`__builtin_clzll`
`__builtin_sadd_overflow`
>Without these then all of these functions show up in all object files
which include int_lib.h on Windows. This'll help prevent duplicate
symbols by ensuring they're not exported.
See:
https://github.com/rust-lang/compiler-builtins/issues/167
https://reviews.llvm.org/D34599
Diffstat (limited to 'compiler-rt')
-rw-r--r-- | compiler-rt/lib/builtins/int_lib.h | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/compiler-rt/lib/builtins/int_lib.h b/compiler-rt/lib/builtins/int_lib.h index 04ea2d9..f6c1b7c 100644 --- a/compiler-rt/lib/builtins/int_lib.h +++ b/compiler-rt/lib/builtins/int_lib.h @@ -119,14 +119,14 @@ COMPILER_RT_ABI tu_int __udivmodti4(tu_int a, tu_int b, tu_int *rem); #if defined(_MSC_VER) && !defined(__clang__) #include <intrin.h> -int __inline __builtin_ctz(uint32_t value) { +static int __inline __builtin_ctz(uint32_t value) { unsigned long trailing_zero = 0; if (_BitScanForward(&trailing_zero, value)) return trailing_zero; return 32; } -int __inline __builtin_clz(uint32_t value) { +static int __inline __builtin_clz(uint32_t value) { unsigned long leading_zero = 0; if (_BitScanReverse(&leading_zero, value)) return 31 - leading_zero; @@ -134,14 +134,14 @@ int __inline __builtin_clz(uint32_t value) { } #if defined(_M_ARM) || defined(_M_X64) -int __inline __builtin_clzll(uint64_t value) { +static int __inline __builtin_clzll(uint64_t value) { unsigned long leading_zero = 0; if (_BitScanReverse64(&leading_zero, value)) return 63 - leading_zero; return 64; } #else -int __inline __builtin_clzll(uint64_t value) { +static int __inline __builtin_clzll(uint64_t value) { if (value == 0) return 64; uint32_t msh = (uint32_t)(value >> 32); @@ -154,7 +154,7 @@ int __inline __builtin_clzll(uint64_t value) { #define __builtin_clzl __builtin_clzll -bool __inline __builtin_sadd_overflow(int x, int y, int *result) { +static bool __inline __builtin_sadd_overflow(int x, int y, int *result) { if ((x < 0) != (y < 0)) { *result = x + y; return false; |