summaryrefslogtreecommitdiffstats
path: root/Python/ceval.c
diff options
context:
space:
mode:
authorMichael Droettboom <mdboom@gmail.com>2024-10-16 12:51:15 (GMT)
committerGitHub <noreply@github.com>2024-10-16 12:51:15 (GMT)
commit51410d8bdcfe0fd215f94a098dc6cd0919c648a1 (patch)
treec21ada493abec5472d2328950da94d15e62001c2 /Python/ceval.c
parentbee112a94d688c8048ddeddaa7bbd5150aecad11 (diff)
downloadcpython-51410d8bdcfe0fd215f94a098dc6cd0919c648a1.zip
cpython-51410d8bdcfe0fd215f94a098dc6cd0919c648a1.tar.gz
cpython-51410d8bdcfe0fd215f94a098dc6cd0919c648a1.tar.bz2
gh-125217: Turn off optimization around_PyEval_EvalFrameDefault to avoid MSVC crash (#125477)
Diffstat (limited to 'Python/ceval.c')
-rw-r--r--Python/ceval.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/Python/ceval.c b/Python/ceval.c
index f4e0add..43776e7 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 */