Skip to content

Commit

Permalink
bpo-36618: Don't add -fmax-type-align=8 flag for clang (pythonGH-13320)
Browse files Browse the repository at this point in the history
Python 3.8 now respects the x86-64 ABI: memory allocations are
aligned on 16 bytes. The clang flag was only used as a temporary
workaround.
  • Loading branch information
vstinner authored May 14, 2019
1 parent c1f5667 commit d97adfb
Show file tree
Hide file tree
Showing 2 changed files with 0 additions and 40 deletions.
20 changes: 0 additions & 20 deletions configure
Original file line number Diff line number Diff line change
Expand Up @@ -6905,26 +6905,6 @@ then
esac
fi

if test -n "${cc_is_clang}"
then
# bpo-36618: Add -fmax-type-align=8 to CFLAGS when clang compiler is
# detected. The pymalloc memory allocator aligns memory on 8 bytes. On
# x86-64, clang expects 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 added to CFLAGS and not just CFLAGS_NODIST,
# since third party C extensions can have the same issue.
#
# 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




Expand Down
20 changes: 0 additions & 20 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -1543,26 +1543,6 @@ then
esac
fi

if test -n "${cc_is_clang}"
then
# bpo-36618: Add -fmax-type-align=8 to CFLAGS when clang compiler is
# detected. The pymalloc memory allocator aligns memory on 8 bytes. On
# x86-64, clang expects 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 added to CFLAGS and not just CFLAGS_NODIST,
# since third party C extensions can have the same issue.
#
# 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)
AC_SUBST(CFLAGS_NODIST)
AC_SUBST(LDFLAGS_NODIST)
Expand Down

0 comments on commit d97adfb

Please sign in to comment.