Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
483fb13
InterpMode testing
davidwrighton Sep 30, 2025
4cb52e7
InterpMode=3 change for Bash targets
davidwrighton Sep 30, 2025
004aa94
[clr-interp] add support for jmp instruction
davidwrighton Oct 1, 2025
7dad289
Make it build in retail
davidwrighton Oct 9, 2025
91f75b6
[clr-interp] Fix stack alignment of 16 byte or greater aligned struct…
davidwrighton Oct 14, 2025
8403ad4
Merge branch 'main' of https://github.com/dotnet/runtime into InterpM…
davidwrighton Oct 14, 2025
c887c98
Enable running all the interp modes
davidwrighton Oct 14, 2025
9c972fe
Merge branch 'main' of https://github.com/dotnet/runtime into InterpM…
davidwrighton Oct 15, 2025
eba8129
[clr-interp] Fix issue where switch instructions did not properly han…
davidwrighton Oct 15, 2025
b5cc1c1
[clr-interp] ret instructions are similar to unconditional branches i…
davidwrighton Oct 15, 2025
2fbcbd8
Revert "[clr-interp] add support for jmp instruction"
davidwrighton Oct 15, 2025
78e6198
[clr-interp] Add a scheme for adding peephole optimizations for known…
davidwrighton Oct 16, 2025
efbc25f
Tweak what interpmode stuff to run
davidwrighton Oct 16, 2025
18bab4d
Merge branch 'main' of https://github.com/dotnet/runtime into InterpM…
davidwrighton Oct 16, 2025
3895e84
Merge branch 'main' into InterpModeTesting
davidwrighton Oct 17, 2025
73aa012
Allow InterpMode to be set in the testenv
davidwrighton Oct 17, 2025
135cf6d
Merge branch 'InterpModeTesting' of https://github.com/davidwrighton/…
davidwrighton Oct 17, 2025
89c7b4b
Merge branch 'main' of https://github.com/dotnet/runtime into InterpM…
davidwrighton Oct 20, 2025
8c50509
Fix issues
davidwrighton Oct 20, 2025
f3dab01
Disable CoreCLR tests crashing merged test suites fully interpreted
janvorli Oct 20, 2025
ef5ad50
PR feedback - update issue links
janvorli Oct 20, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion eng/pipelines/common/templates/runtimes/run-test-job.yml
Original file line number Diff line number Diff line change
Expand Up @@ -332,7 +332,17 @@ jobs:
msbuildParallelism: '/maxcpucount:55'

${{ if in(parameters.testGroup, 'innerloop', 'outerloop') }}:
${{ if eq(parameters.runtimeFlavor, 'mono') }}:
${{ if eq(parameters.runInterpreter, 'true') }}:
scenarios:
- interpmode3_no_tiered_compilation
- interpmode3
- interpmode2_no_tiered_compilation
- interpmode2
- normal
- no_tiered_compilation
- interpmode1_no_tiered_compilation
- interpmode1
${{ elseif eq(parameters.runtimeFlavor, 'mono') }}:
# tiered compilation isn't done on mono yet
scenarios:
- normal
Expand Down
4 changes: 2 additions & 2 deletions src/coreclr/interpreter/eeinterp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -70,12 +70,12 @@ CorJitResult CILInterp::compileMethod(ICorJitInfo* compHnd,
break;
}

// 2: use interpreter for everything except intrinsics. All intrinsics fallback to JIT. Implies DOTNET_ReadyToRun=0.
// 2: use interpreter for everything except intrinsics. All intrinsics fallback to JIT. Implies DOTNET_ReadyToRun=0, DOTNET_MaxVectorTBitWidth=128, DOTNET_PreferredVectorBitWidth=128.
case 2:
doInterpret = !(compHnd->getMethodAttribs(methodInfo->ftn) & CORINFO_FLG_INTRINSIC);
break;

// 3: use interpreter for everything, the full interpreter-only mode, no fallbacks to R2R or JIT whatsoever. Implies DOTNET_ReadyToRun=0, DOTNET_EnableHWIntrinsic=0
// 3: use interpreter for everything, the full interpreter-only mode, no fallbacks to R2R or JIT whatsoever. Implies DOTNET_ReadyToRun=0, DOTNET_EnableHWIntrinsic=0, DOTNET_MaxVectorTBitWidth=128, DOTNET_PreferredVectorBitWidth=128
case 3:
doInterpret = true;
break;
Expand Down
23 changes: 20 additions & 3 deletions src/coreclr/vm/codeman.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1195,6 +1195,15 @@ void EEJitManager::SetCpuInfo()

// Get the maximum bitwidth of Vector<T>, rounding down to the nearest multiple of 128-bits
uint32_t maxVectorTBitWidth = (CLRConfig::GetConfigValue(CLRConfig::EXTERNAL_MaxVectorTBitWidth) / 128) * 128;
bool allowHWIntrinsic = true;

#if defined(FEATURE_INTERPRETER)
if (maxVectorTBitWidth != 128 && CLRConfig::GetConfigValue(CLRConfig::EXTERNAL_InterpMode) >= 2)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can this be GetConfigValue(CLRConfig::EXTERNAL_InterpMode) == 3?

{
// Disable larger Vector<T> sizes when interpreter is enabled
maxVectorTBitWidth = 128;
}
#endif

#if defined(TARGET_X86) || defined(TARGET_AMD64)
CPUCompileFlags.Set(InstructionSet_VectorT128);
Expand All @@ -1213,7 +1222,7 @@ void EEJitManager::SetCpuInfo()

// x86-64-v2

if (CLRConfig::GetConfigValue(CLRConfig::EXTERNAL_EnableHWIntrinsic))
if (allowHWIntrinsic && g_pConfig->EnableHWIntrinsic())
{
CPUCompileFlags.Set(InstructionSet_X86Base);
}
Expand Down Expand Up @@ -1324,7 +1333,7 @@ void EEJitManager::SetCpuInfo()
#elif defined(TARGET_ARM64)
CPUCompileFlags.Set(InstructionSet_VectorT128);

if (CLRConfig::GetConfigValue(CLRConfig::EXTERNAL_EnableHWIntrinsic))
if (allowHWIntrinsic && g_pConfig->EnableHWIntrinsic())
{
CPUCompileFlags.Set(InstructionSet_ArmBase);
CPUCompileFlags.Set(InstructionSet_AdvSimd);
Expand Down Expand Up @@ -1408,7 +1417,7 @@ void EEJitManager::SetCpuInfo()
g_arm64_atomics_present = true;
}
#elif defined(TARGET_RISCV64)
if (CLRConfig::GetConfigValue(CLRConfig::EXTERNAL_EnableHWIntrinsic))
if (allowHWIntrinsic && g_pConfig->EnableHWIntrinsic())
{
CPUCompileFlags.Set(InstructionSet_RiscV64Base);
}
Expand Down Expand Up @@ -1509,6 +1518,14 @@ void EEJitManager::SetCpuInfo()

uint32_t preferredVectorBitWidth = (CLRConfig::GetConfigValue(CLRConfig::EXTERNAL_PreferredVectorBitWidth) / 128) * 128;

#ifdef FEATURE_INTERPRETER
if (CLRConfig::GetConfigValue(CLRConfig::EXTERNAL_InterpMode) >= 2)
{
// Disable larger Vector<T> sizes when interpreter is enabled, and not compiling S.P.Corelib
preferredVectorBitWidth = 128;
}
#endif

if ((preferredVectorBitWidth == 0) && throttleVector512)
{
preferredVectorBitWidth = 256;
Expand Down
37 changes: 37 additions & 0 deletions src/coreclr/vm/eeconfig.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -454,8 +454,45 @@ HRESULT EEConfig::sync()

pReadyToRunExcludeList = NULL;

#ifdef FEATURE_INTERPRETER
#ifdef FEATURE_JIT
LPWSTR interpreterConfig;
IfFailThrow(CLRConfig::GetConfigValue(CLRConfig::EXTERNAL_Interpreter, &interpreterConfig));
if (interpreterConfig == NULL)
{
if ((CLRConfig::GetConfigValue(CLRConfig::EXTERNAL_InterpMode) != 0))
{
enableInterpreter = true;
}
}
else
{
enableInterpreter = true;
}
#else
enableInterpreter = true;
#endif // FEATURE_JIT
#endif // FEATURE_INTERPRETER

enableHWIntrinsic = CLRConfig::GetConfigValue(CLRConfig::EXTERNAL_EnableHWIntrinsic);
#ifdef FEATURE_INTERPRETER
if (CLRConfig::GetConfigValue(CLRConfig::EXTERNAL_InterpMode) >= 3)
{
// R2R mode 3 disables all hw intrinsics
Copy link

Copilot AI Sep 30, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The comment mentions 'R2R mode 3' but should refer to 'InterpMode 3' for clarity, as this is about interpreter mode, not ReadyToRun mode.

Suggested change
// R2R mode 3 disables all hw intrinsics
// InterpMode 3 disables all hw intrinsics

Copilot uses AI. Check for mistakes.

enableHWIntrinsic = 0;
}
#endif // FEATURE_INTERPRETER

#if defined(FEATURE_READYTORUN)
fReadyToRun = CLRConfig::GetConfigValue(CLRConfig::EXTERNAL_ReadyToRun);
#if defined(FEATURE_INTERPRETER)
if (fReadyToRun && CLRConfig::GetConfigValue(CLRConfig::EXTERNAL_InterpMode) >= 2)
{
// ReadyToRun and Interpreter modes 2 and 3 are mutually exclusive.
// If both are set, Interpreter wins.
fReadyToRun = false;
}
#endif // defined(FEATURE_INTERPRETER)

if (fReadyToRun)
{
Expand Down
11 changes: 11 additions & 0 deletions src/coreclr/vm/eeconfig.h
Original file line number Diff line number Diff line change
Expand Up @@ -441,6 +441,11 @@ class EEConfig

bool RuntimeAsync() const { LIMITED_METHOD_CONTRACT; return runtimeAsync; }

#ifdef FEATURE_INTERPRETER
bool EnableInterpreter() const { LIMITED_METHOD_CONTRACT; return enableInterpreter; }
#endif
bool EnableHWIntrinsic() const { LIMITED_METHOD_CONTRACT; return enableHWIntrinsic; }

private: //----------------------------------------------------------------

bool fInited; // have we synced to the registry at least once?
Expand Down Expand Up @@ -612,6 +617,12 @@ class EEConfig
bool fReadyToRun;
#endif

bool enableHWIntrinsic;

#ifdef FEATURE_INTERPRETER
bool enableInterpreter;
#endif

#if defined(FEATURE_ON_STACK_REPLACEMENT)
DWORD dwOSR_HitLimit;
DWORD dwOSR_CounterBump;
Expand Down
5 changes: 5 additions & 0 deletions src/coreclr/vm/jithost.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,11 @@ int JitHost::getIntConfigValue(const char* name, int defaultValue)
{
WRAPPER_NO_CONTRACT;

if (!strcmp(name, "EnableHWIntrinsic"))
{
return g_pConfig->EnableHWIntrinsic() ? 1 : 0;
}

StackSString str;
SString(SString::Utf8Literal, name).ConvertToUnicode(str);

Expand Down
8 changes: 1 addition & 7 deletions src/coreclr/vm/jitinterface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13423,15 +13423,9 @@ PCODE UnsafeJitFunction(PrepareCodeConfig* config,

#ifdef FEATURE_INTERPRETER
InterpreterJitManager* interpreterMgr = ExecutionManager::GetInterpreterJitManager();
if (!interpreterMgr->IsInterpreterLoaded())
if (!interpreterMgr->IsInterpreterLoaded() && g_pConfig->EnableInterpreter())
{
LPWSTR interpreterConfig;
IfFailThrow(CLRConfig::GetConfigValue(CLRConfig::EXTERNAL_Interpreter, &interpreterConfig));
if (
#ifdef FEATURE_JIT
// If both JIT and interpret are available, load the interpreter for testing purposes only if the config switch is set
(interpreterConfig != NULL) &&
#endif
!interpreterMgr->LoadInterpreter())
{
EEPOLICY_HANDLE_FATAL_ERROR_WITH_MESSAGE(COR_E_EXECUTIONENGINE, W("Failed to load interpreter"));
Expand Down
10 changes: 8 additions & 2 deletions src/tests/Common/CLRTest.Execute.Bash.targets
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,11 @@ fi
<BashCLRTestEnvironmentCompatibilityCheck Condition="'$(InterpreterIncompatible)' == 'true'"><![CDATA[
$(BashCLRTestEnvironmentCompatibilityCheck)
if [ ! -z "$RunInterpreter" ]
then
echo SKIPPING EXECUTION BECAUSE the test is incompatible with the interpreter
exit $(IncompatibleTestBashScriptExitCode)
fi
if [ ! -z "$DOTNET_InterpMode" ]
then
echo SKIPPING EXECUTION BECAUSE the test is incompatible with the interpreter
exit $(IncompatibleTestBashScriptExitCode)
Expand Down Expand Up @@ -407,8 +412,9 @@ if [ ! -z ${RunCrossGen2+x} ]%3B then
fi

if [ ! -z "$RunInterpreter" ]; then
# $(InputAssemblyName)
export DOTNET_Interpreter='$(AssemblyName)!*'
if [ -z "$DOTNET_InterpMode" ]; then
export DOTNET_Interpreter='$(AssemblyName)!*'
fi
fi

echo $LAUNCHER $ExePath %24(printf "'%s' " "${CLRTestExecutionArguments[@]}")
Expand Down
9 changes: 8 additions & 1 deletion src/tests/Common/CLRTest.Execute.Batch.targets
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,11 @@ IF NOT "%RunInterpreter%"=="" (
ECHO SKIPPING EXECUTION BECAUSE the test is incompatible with the interpreter
popd
Exit /b 0
)
IF NOT "%DOTNET_InterpMode%"=="" (
ECHO SKIPPING EXECUTION BECAUSE the test is incompatible with the interpreter
popd
Exit /b 0
)
]]></BatchCLRTestEnvironmentCompatibilityCheck>
<BatchCLRTestEnvironmentCompatibilityCheck Condition="'$(TieringTestIncompatible)' == 'true'"><![CDATA[
Expand Down Expand Up @@ -345,7 +350,9 @@ if defined RunCrossGen2 (
)

if defined RunInterpreter (
SET "DOTNET_Interpreter=$(AssemblyName)^!*"
if "DOTNET_InterpMode"=="" (
SET "DOTNET_Interpreter=$(AssemblyName)^!*"
)
)

ECHO %LAUNCHER% %ExePath% %CLRTestExecutionArguments%
Expand Down
7 changes: 7 additions & 0 deletions src/tests/Common/testenvironment.proj
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
-->
<PropertyGroup>
<DOTNETVariables>
DOTNET_InterpMode;
DOTNET_TieredCompilation;
DOTNET_DbgEnableMiniDump;
DOTNET_EnableCrashReport;
Expand Down Expand Up @@ -95,6 +96,12 @@
while other scenarios use the default values of DOTNET_* variables defined in ItemDefinitionGroup above -->
<TestEnvironment Include="normal" TieredCompilation="" />
<TestEnvironment Include="jitminopts" JITMinOpts="1" />
<TestEnvironment Include="interpmode1" TieredCompilation="" InterpMode="1" />
<TestEnvironment Include="interpmode2" TieredCompilation="" InterpMode="2" />
<TestEnvironment Include="interpmode3" TieredCompilation="" InterpMode="3" />
<TestEnvironment Include="interpmode1_no_tiered_compilation" InterpMode="1" TieredCompilation="0"/>
<TestEnvironment Include="interpmode2_no_tiered_compilation" InterpMode="2" TieredCompilation="0"/>
<TestEnvironment Include="interpmode3_no_tiered_compilation" InterpMode="3" TieredCompilation="0"/>
<TestEnvironment Include="no_tiered_compilation" TieredCompilation="0" />
<TestEnvironment Include="forcerelocs" ForceRelocs="1" />
<TestEnvironment Include="jitstress1" JitStress="1" />
Expand Down
2 changes: 2 additions & 0 deletions src/tests/Interop/PInvoke/IEnumerator/IEnumeratorTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,13 +46,15 @@ public static extern void VerifyIntegerEnumeration(
public static class IEnumeratorTests
{
[Fact]
[SkipOnCoreClrAttribute("Assert thunkData with interpreter, https://github.com/dotnet/runtime/issues/120904", RuntimeTestModes.InterpreterActive)]
public static void TestNativeToManaged()
{
AssertExtensions.CollectionEqual(Enumerable.Range(1, 10), EnumeratorAsEnumerable(IEnumeratorNative.GetIntegerEnumerator(1, 10)));
AssertExtensions.CollectionEqual(Enumerable.Range(1, 10), IEnumeratorNative.GetIntegerEnumeration(1, 10).OfType<int>());
}

[Fact]
[SkipOnCoreClrAttribute("Assert thunkData with interpreter, https://github.com/dotnet/runtime/issues/120904", RuntimeTestModes.InterpreterActive)]
public static void TestManagedToNative()
{
IEnumeratorNative.VerifyIntegerEnumerator(Enumerable.Range(1, 10).GetEnumerator(), 1, 10);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,7 @@ public static void RunTestByRef()
[ActiveIssue("https://github.com/dotnet/runtime/issues/34196", TestRuntimes.Mono)]
[ActiveIssue("https://github.com/dotnet/runtimelab/issues/167", typeof(TestLibrary.Utilities), nameof(TestLibrary.Utilities.IsNativeAot))]
[ActiveIssue("https://github.com/dotnet/runtime/issues/91388", typeof(TestLibrary.PlatformDetection), nameof(TestLibrary.PlatformDetection.PlatformDoesNotSupportNativeTestAssets))]
[SkipOnCoreClrAttribute("Exception propagation through reverse pinvoke is not supported with interpreter, https://github.com/dotnet/runtime/issues/118965", RuntimeTestModes.InterpreterActive)]
public static int TestEntryPoint()
{
try{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -319,6 +319,7 @@ static void TestBitValue(uint value, double? dblValNullable = null, FPtoIntegerC
}

[Fact]
[SkipOnCoreClr("This test runs forever with the interpreter, https://github.com/dotnet/runtime/issues/120904", RuntimeTestModes.InterpreterActive)]
public static int TestEntryPoint()
{
Program.ManagedConversionRule = FPtoIntegerConversionType.CONVERT_SATURATING;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,6 @@
</ItemGroup>
<ItemGroup>
<CMakeProjectReference Include="CMakeLists.txt" />
<ProjectReference Include="$(TestSourceDir)Common/CoreCLRTestLibrary/CoreCLRTestLibrary.csproj" />
</ItemGroup>
</Project>
5 changes: 5 additions & 0 deletions src/tests/JIT/Methodical/tailcall/reference_i.il
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
.ver 4:0:0:0
}
.assembly extern xunit.core {}
.assembly extern Microsoft.DotNet.XUnitExtensions { .publickeytoken = (31 BF 38 56 AD 36 4E 35 ) }
.assembly ASSEMBLY_NAME { }
.method public static class System.String
rems(int32& n,
Expand Down Expand Up @@ -76,6 +77,10 @@
.custom instance void [xunit.core]Xunit.FactAttribute::.ctor() = (
01 00 00 00
)
.custom instance void [Microsoft.DotNet.XUnitExtensions]Xunit.SkipOnCoreClrAttribute::.ctor(string, valuetype [Microsoft.DotNet.XUnitExtensions]Xunit.RuntimeTestModes) = {
string('AV when running with the interpreter, https://github.com/dotnet/runtime/issues/120904')
int32(0x400) // InterpreterActive
}
.entrypoint
// Code size 66 (0x42)
.maxstack 2
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ private static void PrintUsage()
}

[Fact]
[SkipOnCoreClrAttribute("The test runs forever when interpreted, https://github.com/dotnet/runtime/issues/120904", RuntimeTestModes.InterpreterActive)]
public static int TestEntryPoint()
{
Bench(0, -1);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
.ver 0:0:0:0
}
.assembly extern xunit.core {}
.assembly extern Microsoft.DotNet.XUnitExtensions { .publickeytoken = (31 BF 38 56 AD 36 4E 35 ) }
.imagebase 0x00400000
.file alignment 0x00000200
.stackreserve 0x00100000
Expand Down Expand Up @@ -1228,6 +1229,10 @@
.custom instance void [xunit.core]Xunit.FactAttribute::.ctor() = (
01 00 00 00
)
.custom instance void [Microsoft.DotNet.XUnitExtensions]Xunit.SkipOnCoreClrAttribute::.ctor(string, valuetype [Microsoft.DotNet.XUnitExtensions]Xunit.RuntimeTestModes) = {
string('AV when running with the interpreter, https://github.com/dotnet/runtime/issues/120904')
int32(0x400) // InterpreterActive
}
.entrypoint
.maxstack 1
IL_0000: call void Program::Test1()
Expand Down
5 changes: 5 additions & 0 deletions src/tests/JIT/Regression/CLR-x86-JIT/v2.1/b609988/b609988.il
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
.ver 0:0:0:0
}
.assembly extern xunit.core {}
.assembly extern Microsoft.DotNet.XUnitExtensions { .publickeytoken = (31 BF 38 56 AD 36 4E 35 ) }
.imagebase 0x00400000
.file alignment 0x00000200
.stackreserve 0x00100000
Expand Down Expand Up @@ -1227,6 +1228,10 @@
.custom instance void [xunit.core]Xunit.FactAttribute::.ctor() = (
01 00 00 00
)
.custom instance void [Microsoft.DotNet.XUnitExtensions]Xunit.SkipOnCoreClrAttribute::.ctor(string, valuetype [Microsoft.DotNet.XUnitExtensions]Xunit.RuntimeTestModes) = {
string('AV when running with the interpreter, https://github.com/dotnet/runtime/issues/120904')
int32(0x400) // InterpreterActive
}
.entrypoint
.maxstack 1
IL_0000: call void Program::Test1()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ public override string ToString()
}

[Fact]
[SkipOnCoreClrAttribute("Test runs forever when interpreted, https://github.com/dotnet/runtime/issues/120904", RuntimeTestModes.InterpreterActive)]
public static void TestEntryPoint()
{
const int iterationCount = 10;
Expand Down
1 change: 1 addition & 0 deletions src/tests/JIT/SIMD/Sums.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ static float sum(Point[] arr)
}

[Fact]
[SkipOnCoreClrAttribute("Test runs forever when interpreted, https://github.com/dotnet/runtime/issues/120904", RuntimeTestModes.InterpreterActive)]
public static void TestEntryPoint()
{
System.Diagnostics.Stopwatch clock = new System.Diagnostics.Stopwatch();
Expand Down
1 change: 1 addition & 0 deletions src/tests/JIT/jit64/opt/rngchk/RngchkStress3.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ namespace SimpleArray_01
public class Class1
{
[Fact]
[SkipOnCoreClrAttribute("Test runs forever when interpreted, https://github.com/dotnet/runtime/issues/120904", RuntimeTestModes.InterpreterActive)]
public static int TestEntryPoint()
{
int retVal = 100;
Expand Down
3 changes: 3 additions & 0 deletions src/tests/JIT/jit64/opt/rngchk/RngchkStress3.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,7 @@
<ItemGroup>
<Compile Include="RngchkStress3.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="$(TestSourceDir)Common/CoreCLRTestLibrary/CoreCLRTestLibrary.csproj" />
</ItemGroup>
</Project>
Loading
Loading