[Python-checkins] bpo-46600: ./configure --with-pydebug uses -Og with clang (GH-31052)

vstinner webhook-mailer at python.org
Tue Feb 1 08:47:26 EST 2022


https://github.com/python/cpython/commit/0515eafe55ce7699e3bbc3c1555f08073d43b790
commit: 0515eafe55ce7699e3bbc3c1555f08073d43b790
branch: main
author: Victor Stinner <vstinner at python.org>
committer: vstinner <vstinner at python.org>
date: 2022-02-01T14:47:12+01:00
summary:

bpo-46600: ./configure --with-pydebug uses -Og with clang (GH-31052)

Fix the test checking if the C compiler supports -Og option in the
./configure script to also use -Og on clang which supports it.

files:
A Misc/NEWS.d/next/Build/2022-02-01-14-07-37.bpo-46600.NNLnfj.rst
M configure
M configure.ac

diff --git a/Misc/NEWS.d/next/Build/2022-02-01-14-07-37.bpo-46600.NNLnfj.rst b/Misc/NEWS.d/next/Build/2022-02-01-14-07-37.bpo-46600.NNLnfj.rst
new file mode 100644
index 0000000000000..1fab655f9b271
--- /dev/null
+++ b/Misc/NEWS.d/next/Build/2022-02-01-14-07-37.bpo-46600.NNLnfj.rst
@@ -0,0 +1,3 @@
+Fix the test checking if the C compiler supports ``-Og`` option in the
+``./configure`` script to also use ``-Og`` on clang which supports it. Patch
+by Victor Stinner.
diff --git a/configure b/configure
index da4af32cc17aa..015b51645f5be 100755
--- a/configure
+++ b/configure
@@ -7623,6 +7623,50 @@ case $CC in
         fi
 esac
 
+# Check if CC supports -Og optimization level
+save_CFLAGS=$CFLAGS
+CFLAGS="-Og"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Og optimization level" >&5
+$as_echo_n "checking if $CC supports -Og optimization level... " >&6; }
+if ${ac_cv_cc_supports_og+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+      ac_cv_cc_supports_og=yes
+
+else
+
+      ac_cv_cc_supports_og=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cc_supports_og" >&5
+$as_echo "$ac_cv_cc_supports_og" >&6; }
+CFLAGS=$save_CFLAGS
+
+# Optimization messes up debuggers, so turn it off for
+# debug builds.
+PYDEBUG_CFLAGS="-O0"
+if test "x$ac_cv_cc_supports_og" = xyes; then :
+  PYDEBUG_CFLAGS="-Og"
+fi
+
 # tweak OPT based on compiler and platform, only if the user didn't set
 # it on the command line
 
@@ -7648,13 +7692,7 @@ then
 	case $ac_cv_prog_cc_g in
 	yes)
 	    if test "$Py_DEBUG" = 'true' ; then
-		# Optimization messes up debuggers, so turn it off for
-		# debug builds.
-                if "$CC" -v --help 2>/dev/null |grep -- -Og > /dev/null; then
-                    OPT="-g -Og -Wall"
-                else
-                    OPT="-g -O0 -Wall"
-                fi
+		OPT="-g $PYDEBUG_CFLAGS -Wall"
 	    else
 		OPT="-g $WRAP -O3 -Wall"
 	    fi
diff --git a/configure.ac b/configure.ac
index 5a076646b96dd..6204747edfc25 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1791,6 +1791,28 @@ case $CC in
         fi
 esac
 
+# Check if CC supports -Og optimization level
+_SAVE_VAR([CFLAGS])
+CFLAGS="-Og"
+AC_CACHE_CHECK([if $CC supports -Og optimization level],
+               [ac_cv_cc_supports_og],
+  AC_COMPILE_IFELSE(
+    [
+      AC_LANG_PROGRAM([[]], [[]])
+    ],[
+      ac_cv_cc_supports_og=yes
+    ],[
+      ac_cv_cc_supports_og=no
+    ])
+)
+_RESTORE_VAR([CFLAGS])
+
+# Optimization messes up debuggers, so turn it off for
+# debug builds.
+PYDEBUG_CFLAGS="-O0"
+AS_VAR_IF([ac_cv_cc_supports_og], [yes],
+          [PYDEBUG_CFLAGS="-Og"])
+
 # tweak OPT based on compiler and platform, only if the user didn't set
 # it on the command line
 AC_SUBST(OPT)
@@ -1816,13 +1838,7 @@ then
 	case $ac_cv_prog_cc_g in
 	yes)
 	    if test "$Py_DEBUG" = 'true' ; then
-		# Optimization messes up debuggers, so turn it off for
-		# debug builds.
-                if "$CC" -v --help 2>/dev/null |grep -- -Og > /dev/null; then
-                    OPT="-g -Og -Wall"
-                else
-                    OPT="-g -O0 -Wall"
-                fi
+		OPT="-g $PYDEBUG_CFLAGS -Wall"
 	    else
 		OPT="-g $WRAP -O3 -Wall"
 	    fi



More information about the Python-checkins mailing list