]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-38980: Add -fno-semantic-interposition when building with optimizations (GH-22862)
authorPablo Galindo <Pablogsal@gmail.com>
Wed, 21 Oct 2020 21:46:52 +0000 (22:46 +0100)
committerGitHub <noreply@github.com>
Wed, 21 Oct 2020 21:46:52 +0000 (22:46 +0100)
Doc/whatsnew/3.10.rst
Misc/NEWS.d/next/Build/2020-10-21-18-31-54.bpo-38980.xz7BNd.rst [new file with mode: 0644]
configure
configure.ac

index e275a7cb4573f055c8343f87b4422e0b789cb577..e464be6eb7e951b5786b06e4e26d8657aba2234d 100644 (file)
@@ -256,6 +256,14 @@ Optimizations
   It is about 36% faster now.  (Contributed by Pablo Galindo and Yury Selivanov
   in :issue:`42093`.)
 
+* When building Python with ``--enable-optimizations`` now
+  ``-fno-semantic-interposition`` is added to both the compile and link line.
+  This speeds builds of the Python interpreter created with ``--enable-shared``
+  with ``gcc`` by up to 30%. See `this article
+  <https://developers.redhat.com/blog/2020/06/25/red-hat-enterprise-linux-8-2-brings-faster-python-3-8-run-speeds/>`_
+  for more details. (Contributed by Victor Stinner and Pablo Galindo in
+  :issue:`38980`)
+
 Deprecated
 ==========
 
diff --git a/Misc/NEWS.d/next/Build/2020-10-21-18-31-54.bpo-38980.xz7BNd.rst b/Misc/NEWS.d/next/Build/2020-10-21-18-31-54.bpo-38980.xz7BNd.rst
new file mode 100644 (file)
index 0000000..c9d34cf
--- /dev/null
@@ -0,0 +1,3 @@
+Add ``-fno-semantic-interposition`` to both the compile and link line when
+building with ``--enable-optimizations``. Patch by Victor Stinner and Pablo
+Galindo.
index 88b78947767fa9a7672dbd5243758e72510426e3..df7118f68d3bb484148f8b719b1550676c029493 100755 (executable)
--- a/configure
+++ b/configure
@@ -6482,6 +6482,14 @@ if test "$Py_OPT" = 'true' ; then
   DEF_MAKE_ALL_RULE="profile-opt"
   REQUIRE_PGO="yes"
   DEF_MAKE_RULE="build_all"
+  case $CC in
+    *gcc*)
+      CFLAGS_NODIST="$CFLAGS_NODIST -fno-semantic-interposition"
+      LDFLAGS_NODIST="$LDFLAGS_NODIST -fno-semantic-interposition"
+      ;;
+  esac
+
+
 else
   DEF_MAKE_ALL_RULE="build_all"
   REQUIRE_PGO="no"
index 6ffe90a4c426cc586a4cad3a214ad675a09d3eb7..c63c1e88a2302f7a60e9c2319f9965c1d7830d47 100644 (file)
@@ -1318,6 +1318,14 @@ if test "$Py_OPT" = 'true' ; then
   DEF_MAKE_ALL_RULE="profile-opt"
   REQUIRE_PGO="yes"
   DEF_MAKE_RULE="build_all"
+  case $CC in
+    *gcc*)
+      CFLAGS_NODIST="$CFLAGS_NODIST -fno-semantic-interposition"
+      LDFLAGS_NODIST="$LDFLAGS_NODIST -fno-semantic-interposition"
+      ;;
+  esac
+
+
 else
   DEF_MAKE_ALL_RULE="build_all"
   REQUIRE_PGO="no"