summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@redhat.com>2019-04-12 22:51:07 (GMT)
committerGitHub <noreply@github.com>2019-04-12 22:51:07 (GMT)
commita304b136adda3575898d8b5debedcd48d5072272 (patch)
treefb17a42257bf48130afc2388685396f4952c2aec
parent1e8295402bf5e81d327ed2b5eb88a6b6de449d63 (diff)
downloadcpython-a304b136adda3575898d8b5debedcd48d5072272.zip
cpython-a304b136adda3575898d8b5debedcd48d5072272.tar.gz
cpython-a304b136adda3575898d8b5debedcd48d5072272.tar.bz2
bpo-36618: Don't add -fmax-type-align flag to old clang (GH-12811)
-rw-r--r--Misc/NEWS.d/next/Build/2019-04-12-19-49-10.bpo-36618.gcI9iq.rst4
-rwxr-xr-xconfigure9
-rw-r--r--configure.ac9
3 files changed, 16 insertions, 6 deletions
diff --git a/Misc/NEWS.d/next/Build/2019-04-12-19-49-10.bpo-36618.gcI9iq.rst b/Misc/NEWS.d/next/Build/2019-04-12-19-49-10.bpo-36618.gcI9iq.rst
index 597dd67..4408227 100644
--- a/Misc/NEWS.d/next/Build/2019-04-12-19-49-10.bpo-36618.gcI9iq.rst
+++ b/Misc/NEWS.d/next/Build/2019-04-12-19-49-10.bpo-36618.gcI9iq.rst
@@ -4,5 +4,5 @@ alignment on 16 bytes by default and so uses MOVAPS instruction which can
lead to segmentation fault. Instruct clang that Python is limited to
alignemnt on 8 bytes to use MOVUPS instruction instead: slower but don't
trigger a SIGSEGV if the memory is not aligned on 16 bytes. Sadly, the flag
-must be expected to ``CFLAGS`` and not just ``CFLAGS_NODIST``, since third
-party C extensions can have the same issue.
+must be added to ``CFLAGS`` and not just ``CFLAGS_NODIST``, since third party C
+extensions can have the same issue.
diff --git a/configure b/configure
index ac1e66a..9c7eded 100755
--- a/configure
+++ b/configure
@@ -6889,9 +6889,14 @@ then
# instead: slower but don't trigger a SIGSEGV if the memory is not aligned
# on 16 bytes.
#
- # Sadly, the flag must be expected to CFLAGS and not just CFLAGS_NODIST,
+ # Sadly, the flag must be added to CFLAGS and not just CFLAGS_NODIST,
# since third party C extensions can have the same issue.
- CFLAGS="$CFLAGS -fmax-type-align=8"
+ #
+ # Check if -fmax-type-align flag is supported (it's not supported by old
+ # clang versions):
+ if "$CC" -v --help 2>/dev/null |grep -- -fmax-type-align > /dev/null; then
+ CFLAGS="$CFLAGS -fmax-type-align=8"
+ fi
fi
diff --git a/configure.ac b/configure.ac
index 863b342..6450519 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1540,9 +1540,14 @@ then
# instead: slower but don't trigger a SIGSEGV if the memory is not aligned
# on 16 bytes.
#
- # Sadly, the flag must be expected to CFLAGS and not just CFLAGS_NODIST,
+ # Sadly, the flag must be added to CFLAGS and not just CFLAGS_NODIST,
# since third party C extensions can have the same issue.
- CFLAGS="$CFLAGS -fmax-type-align=8"
+ #
+ # Check if -fmax-type-align flag is supported (it's not supported by old
+ # clang versions):
+ if "$CC" -v --help 2>/dev/null |grep -- -fmax-type-align > /dev/null; then
+ CFLAGS="$CFLAGS -fmax-type-align=8"
+ fi
fi
AC_SUBST(BASECFLAGS)