<ClCompile>
<AdditionalIncludeDirectories>$(PySourcePath)Include;$(PySourcePath)Include\internal;$(PySourcePath)Include\internal\mimalloc;$(GeneratedPyConfigDir);$(PySourcePath)PC;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;$(_Py3NamePreprocessorDefinition);$(_PlatformPreprocessorDefinition)$(_DebugPreprocessorDefinition)$(_PyStatsPreprocessorDefinition)$(_PydPreprocessorDefinition)%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions Condition="'$(SupportPGO)' and ($(Configuration) == 'PGInstrument' or $(Configuration) == 'PGUpdate')">_Py_USING_PGO=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Optimization>MaxSpeed</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
#define PY_EVAL_C_STACK_UNITS 2
+/* _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
+
#ifdef Py_TAIL_CALL_INTERP
#include "opcode_targets.h"
#include "generated_cases.c.h"
return NULL;
}
+#ifdef DO_NOT_OPTIMIZE_INTERP_LOOP
+# pragma optimize("", on)
+#endif
+
#if defined(__GNUC__)
# pragma GCC diagnostic pop
#elif defined(_MSC_VER) /* MS_WINDOWS */