From bec249c45e316c2ec9f9d427abe6b77ab6045369 Mon Sep 17 00:00:00 2001 From: David Wrighton Date: Wed, 28 Jan 2026 21:09:25 +0000 Subject: [PATCH] [clr-interp] Workaround c++ compiler bug - Disable optimization on InterpCompiler::EmitStaticFieldAccess - See https://developercommunity.visualstudio.com/t/noreturn-function-called-from-a-function/11035707 for details on the issue --- src/coreclr/interpreter/compiler.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/coreclr/interpreter/compiler.cpp b/src/coreclr/interpreter/compiler.cpp index 3d4f6d5aad9f4c..e7884e486c5820 100644 --- a/src/coreclr/interpreter/compiler.cpp +++ b/src/coreclr/interpreter/compiler.cpp @@ -6141,6 +6141,10 @@ void InterpCompiler::EmitStelem(InterpType interpType) m_pLastNewIns->SetSVars3(m_pStackPointer[0].var, m_pStackPointer[1].var, m_pStackPointer[2].var); } +#if defined(TARGET_ARM64) && defined(TARGET_WINDOWS) +// WORKAROUND: https://developercommunity.visualstudio.com/t/noreturn-function-called-from-a-function/11035707 +#pragma optimize("", off) +#endif void InterpCompiler::EmitStaticFieldAddress(CORINFO_FIELD_INFO *pFieldInfo, CORINFO_RESOLVED_TOKEN *pResolvedToken) { bool isBoxedStatic = (pFieldInfo->fieldFlags & CORINFO_FLG_FIELD_STATIC_IN_HEAP) != 0; @@ -6264,6 +6268,10 @@ void InterpCompiler::EmitStaticFieldAddress(CORINFO_FIELD_INFO *pFieldInfo, CORI m_pLastNewIns->SetDVar(m_pStackPointer[-1].var); } } +#if defined(TARGET_ARM64) && defined(TARGET_WINDOWS) +// WORKAROUND: https://developercommunity.visualstudio.com/t/noreturn-function-called-from-a-function/11035707 +#pragma optimize( "", on ) +#endif void InterpCompiler::EmitStaticFieldAccess(InterpType interpFieldType, CORINFO_FIELD_INFO *pFieldInfo, CORINFO_RESOLVED_TOKEN *pResolvedToken, bool isLoad) {