From: Michael Droettboom Date: Wed, 16 Oct 2024 12:51:15 +0000 (-0400) Subject: gh-125217: Turn off optimization around_PyEval_EvalFrameDefault to avoid MSVC crash... X-Git-Tag: v3.14.0a2~403 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=51410d8bdcfe0fd215f94a098dc6cd0919c648a1;p=thirdparty%2FPython%2Fcpython.git gh-125217: Turn off optimization around_PyEval_EvalFrameDefault to avoid MSVC crash (#125477) --- diff --git a/Python/ceval.c b/Python/ceval.c index f4e0add30347..43776e773e0d 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -761,6 +761,16 @@ _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. + */ +# pragma optimize("t", off) +/* This setting is reversed below following _PyEval_EvalFrameDefault */ +#endif + PyObject* _Py_HOT_FUNCTION _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int throwflag) { @@ -1136,6 +1146,10 @@ goto_to_tier1: } +#if defined(_MSC_VER) && defined(_Py_USING_PGO) && defined(_Py_JIT) +# pragma optimize("", on) +#endif + #if defined(__GNUC__) # pragma GCC diagnostic pop #elif defined(_MSC_VER) /* MS_WINDOWS */