Skip to content

Commit

Permalink
BLD: Help raspian arm + clang 13 about __builtin_mul_overflow
Browse files Browse the repository at this point in the history
It seems on raspian arm with clang 13 `__builtin_mul_overflow` is
defined for `int` but doesn't work for `ptrdiff_t` (and maybe others).
This checks for `ptrdiff_t` instead of int, which was reported to
work-around the issue.

Closes gh-22811
  • Loading branch information
seberg authored and charris committed Dec 21, 2022
1 parent 0f1ad5a commit f833e6e
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions numpy/core/setup_common.py
Expand Up @@ -129,7 +129,7 @@ def set_sig(sig):
"floor", "ceil", "sqrt", "log10", "log", "exp", "asin",
"acos", "atan", "fmod", 'modf', 'frexp', 'ldexp',
"expm1", "log1p", "acosh", "asinh", "atanh",
"rint", "trunc", "exp2",
"rint", "trunc", "exp2",
"copysign", "nextafter", "strtoll", "strtoull", "cbrt",
"log2", "pow", "hypot", "atan2",
"csin", "csinh", "ccos", "ccosh", "ctan", "ctanh",
Expand Down Expand Up @@ -178,7 +178,9 @@ def set_sig(sig):
("__builtin_bswap32", '5u'),
("__builtin_bswap64", '5u'),
("__builtin_expect", '5, 0'),
("__builtin_mul_overflow", '5, 5, (int*)5'),
# Test `long long` for arm+clang 13 (gh-22811,
# but we use all versions of __builtin_mul_overflow):
("__builtin_mul_overflow", '(long long)5, 5, (int*)5'),
# MMX only needed for icc, but some clangs don't have it
("_m_from_int64", '0', "emmintrin.h"),
("_mm_load_ps", '(float*)0', "xmmintrin.h"), # SSE
Expand Down

0 comments on commit f833e6e

Please sign in to comment.