Skip to content

Commit

Permalink
gh-123153: Fix PGO builds with free-threading on Windows (#125607)
Browse files Browse the repository at this point in the history
* gh-123153: Fix PGO builds with free-threading

* Redo how the #define works
  • Loading branch information
mdboom authored Oct 17, 2024
1 parent dbcc5ac commit 37986e8
Showing 1 changed file with 14 additions and 6 deletions.
20 changes: 14 additions & 6 deletions Python/ceval.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -1146,7 +1154,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int

}

#if defined(_MSC_VER) && defined(_Py_USING_PGO) && defined(_Py_JIT)
#ifdef DO_NOT_OPTIMIZE_INTERP_LOOP
# pragma optimize("", on)
#endif

Expand Down

0 comments on commit 37986e8

Please sign in to comment.