summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorE. Madison Bray <erik.bray@lri.fr>2020-10-13 14:32:15 +0200
committerE. Madison Bray <erik.bray@lri.fr>2020-10-13 14:34:15 +0200
commit3c118aab05ca06f30b2eec8057e2e46db98ad745 (patch)
tree7206f15067bead7c6b2d72d399b0ca6aa701d0ee
parent9cc9f776cebf8207c0811ce600b7a76d9f54afa4 (diff)
downloadnumpy-3c118aab05ca06f30b2eec8057e2e46db98ad745.tar.gz
BUG: Workaround for #14787: on Windows/Cygwin add extra compiler flags
when building the numpy.core._multiarray_umath module This adds the extra compile args to the extension needed to work around the bug but only in the known case where the bug is relevant.
-rw-r--r--numpy/core/setup.py12
1 files changed, 10 insertions, 2 deletions
diff --git a/numpy/core/setup.py b/numpy/core/setup.py
index 92dcacede..b3e17baed 100644
--- a/numpy/core/setup.py
+++ b/numpy/core/setup.py
@@ -102,7 +102,7 @@ def win32_checks(deflist):
if a == "Intel" or a == "AMD64":
deflist.append('FORCE_NO_LONG_DOUBLE_FORMATTING')
-def check_math_capabilities(config, moredefs, mathlibs):
+def check_math_capabilities(config, ext, moredefs, mathlibs):
def check_func(func_name):
return config.check_func(func_name, libraries=mathlibs,
decl=True, call=True)
@@ -167,6 +167,14 @@ def check_math_capabilities(config, moredefs, mathlibs):
for dec, fn in OPTIONAL_FUNCTION_ATTRIBUTES:
if config.check_gcc_function_attribute(dec, fn):
moredefs.append((fname2def(fn), 1))
+ if fn == 'attribute_target_avx512f':
+ # GH-14787: Work around GCC<8.4 bug when compiling with AVX512
+ # support on Windows-based platforms
+ if (sys.platform in ('win32', 'cygwin') and
+ config.check_compiler_gcc() and
+ not config.check_gcc_version_at_least(8, 4)):
+ ext.extra_compile_args.extend(
+ ['-ffixed-xmm%s' % n for n in range(16, 32)])
for dec, fn, code, header in OPTIONAL_FUNCTION_ATTRIBUTES_WITH_INTRINSICS:
if config.check_gcc_function_attribute_with_intrinsics(dec, fn, code,
@@ -434,7 +442,7 @@ def configuration(parent_package='',top_path=None):
mathlibs = check_mathlib(config_cmd)
moredefs.append(('MATHLIB', ','.join(mathlibs)))
- check_math_capabilities(config_cmd, moredefs, mathlibs)
+ check_math_capabilities(config_cmd, ext, moredefs, mathlibs)
moredefs.extend(cocache.check_ieee_macros(config_cmd)[0])
moredefs.extend(cocache.check_complex(config_cmd, mathlibs)[0])