summaryrefslogtreecommitdiff
path: root/numpy
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 /numpy
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.
Diffstat (limited to 'numpy')
-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])