gh-125217: Turn off optimization around_PyEval_EvalFrameDefault to avoid MSVC crash (#125477)

This commit is contained in:
Michael Droettboom 2024-10-16 08:51:15 -04:00 committed by GitHub
parent bee112a94d
commit 51410d8bdc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -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 */