diff options
author | Victor Stinner <vstinner@redhat.com> | 2019-04-12 22:51:07 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-12 22:51:07 (GMT) |
commit | a304b136adda3575898d8b5debedcd48d5072272 (patch) | |
tree | fb17a42257bf48130afc2388685396f4952c2aec | |
parent | 1e8295402bf5e81d327ed2b5eb88a6b6de449d63 (diff) | |
download | cpython-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.rst | 4 | ||||
-rwxr-xr-x | configure | 9 | ||||
-rw-r--r-- | configure.ac | 9 |
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. @@ -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) |