]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-123153: Fix PGO builds with free-threading on Windows (#125607)
authorMichael Droettboom <mdboom@gmail.com>
Thu, 17 Oct 2024 12:20:30 +0000 (08:20 -0400)
committerGitHub <noreply@github.com>
Thu, 17 Oct 2024 12:20:30 +0000 (08:20 -0400)
* gh-123153: Fix PGO builds with free-threading

* Redo how the #define works

Python/ceval.c

index 43776e773e0deb8f8a291ad5550a0a316c2c1b0e..98d95b28488fd063af307f66bd408dee24eecafd 100644 (file)
@@ -761,12 +761,20 @@ _PyObjectArray_Free(PyObject **array, PyObject **scratch)
  * so consume 3 units of C stack */
 #define PY_EVAL_C_STACK_UNITS 2
 
-#if defined(_MSC_VER) && defined(_Py_USING_PGO) && defined(_Py_JIT)
-/* _PyEval_EvalFrameDefault is too large to optimize for speed with
-   PGO on MSVC when the JIT is enabled. Disable that optimization
-   around this function only. If this is fixed upstream, we should
-   gate this on the version of MSVC.
+
+/* _PyEval_EvalFrameDefault is too large to optimize for speed with PGO on MSVC
+   when the JIT is enabled or GIL is disabled. Disable that optimization around
+   this function only. If this is fixed upstream, we should gate this on the
+   version of MSVC.
  */
+#if (defined(_MSC_VER) && \
+     defined(_Py_USING_PGO) && \
+     (defined(_Py_JIT) || \
+      defined(Py_GIL_DISABLED)))
+#define DO_NOT_OPTIMIZE_INTERP_LOOP
+#endif
+
+#ifdef DO_NOT_OPTIMIZE_INTERP_LOOP
 #  pragma optimize("t", off)
 /* This setting is reversed below following _PyEval_EvalFrameDefault */
 #endif
@@ -1146,7 +1154,7 @@ goto_to_tier1:
 
 }
 
-#if defined(_MSC_VER) && defined(_Py_USING_PGO) && defined(_Py_JIT)
+#ifdef DO_NOT_OPTIMIZE_INTERP_LOOP
 #  pragma optimize("", on)
 #endif