diff --git a/eng/Versions.props b/eng/Versions.props
index 0cc312c22fe154..c0270374896a36 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -7,7 +7,7 @@
0
0
8.0.100
- 7.0.11
+ 7.0.12
6.0.$([MSBuild]::Add($([System.Version]::Parse('$(PackageVersionNet7)').Build),11))
rtm
diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml
index 0f1f9610c60349..050fc9037db965 100644
--- a/eng/pipelines/runtime.yml
+++ b/eng/pipelines/runtime.yml
@@ -556,6 +556,47 @@ extends:
extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS)
alwaysRun: ${{ variables.isRollingBuild }}
+ #
+ # Android devices
+ # Build the whole product using Mono and run libraries tests
+ #
+ - template: /eng/pipelines/common/platform-matrix.yml
+ parameters:
+ jobTemplate: /eng/pipelines/common/global-build-job.yml
+ helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml
+ buildConfig: Release
+ runtimeFlavor: mono
+ platforms:
+ - android_arm
+ - android_arm64
+ variables:
+ # map dependencies variables to local variables
+ - name: librariesContainsChange
+ value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ]
+ - name: monoContainsChange
+ value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ]
+ jobParameters:
+ testGroup: innerloop
+ nameSuffix: AllSubsets_Mono
+ buildArgs: -s mono+libs+libs.tests+host+packs -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true /p:EnableAdditionalTimezoneChecks=true
+ timeoutInMinutes: 480
+ condition: >-
+ or(
+ eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
+ eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
+ eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true),
+ eq(variables['isRollingBuild'], true))
+ # extra steps, run tests
+ extraStepsTemplate: /eng/pipelines/libraries/helix.yml
+ extraStepsParameters:
+ creator: dotnet-bot
+ testRunNamePrefixSuffix: Mono_$(_BuildConfig)
+ condition: >-
+ or(
+ eq(variables['librariesContainsChange'], true),
+ eq(variables['monoContainsChange'], true),
+ eq(variables['isRollingBuild'], true))
+
#
# iOS/tvOS devices - Full AOT + AggressiveTrimming to reduce size
# Build the whole product using Mono and run libraries tests
diff --git a/src/coreclr/debug/daccess/dacdbiimpl.cpp b/src/coreclr/debug/daccess/dacdbiimpl.cpp
index 67d5b1e60d948c..07208001b0c3b8 100644
--- a/src/coreclr/debug/daccess/dacdbiimpl.cpp
+++ b/src/coreclr/debug/daccess/dacdbiimpl.cpp
@@ -7788,8 +7788,9 @@ HRESULT DacStackReferenceWalker::Next(ULONG count, DacGcReference stackRefs[], U
stackRefs[i].i64ExtraData = 0;
const SOSStackRefData &sosStackRef = mList.Get(i);
- if (sosStackRef.Flags & GC_CALL_INTERIOR)
+ if (sosStackRef.Flags & GC_CALL_INTERIOR || sosStackRef.Address == 0)
{
+ // Direct pointer case - interior pointer, Frame ref, or enregistered var.
stackRefs[i].pObject = CLRDATA_ADDRESS_TO_TADDR(sosStackRef.Object) | 1;
}
else
diff --git a/src/coreclr/debug/di/rsclass.cpp b/src/coreclr/debug/di/rsclass.cpp
index ec52823c07af5f..55f83b48a6d211 100644
--- a/src/coreclr/debug/di/rsclass.cpp
+++ b/src/coreclr/debug/di/rsclass.cpp
@@ -132,6 +132,7 @@ HRESULT CordbClass::GetStaticFieldValue(mdFieldDef fieldDef,
IMetaDataImport * pImport = NULL;
EX_TRY
{
+ RSLockHolder lockHolder(GetProcess()->GetProcessLock());
pImport = GetModule()->GetMetaDataImporter(); // throws
// Validate the token.
@@ -1191,4 +1192,3 @@ HRESULT CordbClass::SearchFieldInfo(
// Well, the field doesn't even belong to this class...
ThrowHR(E_INVALIDARG);
}
-
diff --git a/src/coreclr/jit/gentree.cpp b/src/coreclr/jit/gentree.cpp
index a30c3794efdd29..d6d524f375ea73 100644
--- a/src/coreclr/jit/gentree.cpp
+++ b/src/coreclr/jit/gentree.cpp
@@ -19639,8 +19639,8 @@ GenTree* Compiler::gtNewSimdBinOpNode(
}
else
{
- assert(op2->TypeIs(type, simdBaseType, genActualType(simdBaseType)) ||
- (op2->TypeIs(TYP_SIMD12) && type == TYP_SIMD16));
+ assert((genActualType(op2) == genActualType(type)) || (genActualType(op2) == genActualType(simdBaseType)) ||
+ (op2->TypeIs(TYP_SIMD12) && (type == TYP_SIMD16)));
}
NamedIntrinsic intrinsic = NI_Illegal;
diff --git a/src/coreclr/jit/lowerxarch.cpp b/src/coreclr/jit/lowerxarch.cpp
index d1c3e317d83b87..30c2a832b94fc1 100644
--- a/src/coreclr/jit/lowerxarch.cpp
+++ b/src/coreclr/jit/lowerxarch.cpp
@@ -7956,6 +7956,9 @@ bool Lowering::IsContainableHWIntrinsicOp(GenTreeHWIntrinsic* parentNode, GenTre
// The memory form of this already takes a pointer and should be treated like a MemoryLoad
supportsGeneralLoads = !childNode->OperIsHWIntrinsic();
}
+
+ supportsGeneralLoads =
+ supportsGeneralLoads && (genTypeSize(childNode) >= genTypeSize(parentNode->GetSimdBaseType()));
break;
}
diff --git a/src/coreclr/jit/valuenum.cpp b/src/coreclr/jit/valuenum.cpp
index 2ea2ee7845b8b2..2c638535d786e4 100644
--- a/src/coreclr/jit/valuenum.cpp
+++ b/src/coreclr/jit/valuenum.cpp
@@ -7891,7 +7891,7 @@ ValueNum ValueNumStore::EvalHWIntrinsicFunBinary(var_types type,
#endif
{
// Handle `x ^ x == 0`
- return arg0VN;
+ return VNZeroForType(type);
}
default:
diff --git a/src/mono/mono/mini/aot-compiler.c b/src/mono/mono/mini/aot-compiler.c
index e067d2714d8a37..c342ef5d007571 100644
--- a/src/mono/mono/mini/aot-compiler.c
+++ b/src/mono/mono/mini/aot-compiler.c
@@ -10708,6 +10708,18 @@ execute_system (const char * command)
#ifdef ENABLE_LLVM
+#ifdef HOST_WIN32
+#define OPT_NAME "opt.exe"
+#else
+#define OPT_NAME "opt"
+#endif
+
+#ifdef HOST_WIN32
+#define LLC_NAME "llc.exe"
+#else
+#define LLC_NAME "llc"
+#endif
+
/*
* emit_llvm_file:
*
@@ -10776,11 +10788,11 @@ emit_llvm_file (MonoAotCompile *acfg)
} else {
#if LLVM_API_VERSION >= 1600
/* The safepoints pass requires new pass manager syntax*/
- opts = g_strdup ("-disable-tail-calls -passes='");
+ opts = g_strdup ("-disable-tail-calls -passes=\"");
if (!acfg->aot_opts.llvm_only) {
opts = g_strdup_printf ("%sdefault,", opts);
}
- opts = g_strdup_printf ("%splace-safepoints' -spp-all-backedges", opts);
+ opts = g_strdup_printf ("%splace-safepoints\" -spp-all-backedges", opts);
#elif LLVM_API_VERSION >= 1300
/* The safepoints pass requires the old pass manager */
opts = g_strdup ("-disable-tail-calls -place-safepoints -spp-all-backedges -enable-new-pm=0");
@@ -10810,7 +10822,7 @@ emit_llvm_file (MonoAotCompile *acfg)
opts = g_strdup_printf ("%s -fp-contract=fast -enable-no-infs-fp-math -enable-no-nans-fp-math -enable-no-signed-zeros-fp-math -enable-no-trapping-fp-math -enable-unsafe-fp-math", opts);
}
- command = g_strdup_printf ("\"%sopt\" -f %s -o \"%s\" \"%s\"", acfg->aot_opts.llvm_path, opts, optbc, tempbc);
+ command = g_strdup_printf ("\"%s" OPT_NAME "\" -f %s -o \"%s\" \"%s\"", acfg->aot_opts.llvm_path, opts, optbc, tempbc);
aot_printf (acfg, "Executing opt: %s\n", command);
if (execute_system (command) != 0)
return FALSE;
@@ -10885,7 +10897,7 @@ emit_llvm_file (MonoAotCompile *acfg)
g_string_append_printf (acfg->llc_args, " -mattr=%s", acfg->aot_opts.llvm_cpu_attr);
}
- command = g_strdup_printf ("\"%sllc\" %s -o \"%s\" \"%s.opt.bc\"", acfg->aot_opts.llvm_path, acfg->llc_args->str, output_fname, acfg->tmpbasename);
+ command = g_strdup_printf ("\"%s" LLC_NAME "\" %s -o \"%s\" \"%s.opt.bc\"", acfg->aot_opts.llvm_path, acfg->llc_args->str, output_fname, acfg->tmpbasename);
g_free (output_fname);
aot_printf (acfg, "Executing llc: %s\n", command);
diff --git a/src/mono/mono/mini/mini-generic-sharing.c b/src/mono/mono/mini/mini-generic-sharing.c
index 6ad8dcb0075cfc..c131d51a6bd070 100644
--- a/src/mono/mono/mini/mini-generic-sharing.c
+++ b/src/mono/mono/mini/mini-generic-sharing.c
@@ -2886,7 +2886,8 @@ info_equal (gpointer data1, gpointer data2, MonoRgctxInfoType info_type)
return data1 == data2;
case MONO_RGCTX_INFO_VIRT_METHOD:
case MONO_RGCTX_INFO_VIRT_METHOD_CODE:
- case MONO_RGCTX_INFO_VIRT_METHOD_BOX_TYPE: {
+ case MONO_RGCTX_INFO_VIRT_METHOD_BOX_TYPE:
+ case MONO_RGCTX_INFO_GSHAREDVT_CONSTRAINED_CALL_INFO: {
MonoJumpInfoVirtMethod *info1 = (MonoJumpInfoVirtMethod *)data1;
MonoJumpInfoVirtMethod *info2 = (MonoJumpInfoVirtMethod *)data2;
diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_83387/Runtime_83387.cs b/src/tests/JIT/Regression/JitBlue/Runtime_83387/Runtime_83387.cs
new file mode 100644
index 00000000000000..cb70acd1677573
--- /dev/null
+++ b/src/tests/JIT/Regression/JitBlue/Runtime_83387/Runtime_83387.cs
@@ -0,0 +1,19 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+
+using System.Runtime.CompilerServices;
+using System.Runtime.Intrinsics;
+using Xunit;
+
+public class Runtime_83387
+{
+ [MethodImpl(MethodImplOptions.NoOptimization)]
+ [Fact]
+ public static int TestEntryPoint()
+ {
+ (ushort A, ushort R) c = (1, 65535);
+ Vector128 v1 = Vector128.Create((uint)100);
+ v1 = v1 * c.A;
+ return (int)v1.ToScalar();
+ }
+}
diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_83387/Runtime_83387.csproj b/src/tests/JIT/Regression/JitBlue/Runtime_83387/Runtime_83387.csproj
new file mode 100644
index 00000000000000..15edd99711a1a4
--- /dev/null
+++ b/src/tests/JIT/Regression/JitBlue/Runtime_83387/Runtime_83387.csproj
@@ -0,0 +1,8 @@
+
+
+ True
+
+
+
+
+
\ No newline at end of file
diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_91252/Runtime_91252.cs b/src/tests/JIT/Regression/JitBlue/Runtime_91252/Runtime_91252.cs
new file mode 100644
index 00000000000000..d4035f3de978fc
--- /dev/null
+++ b/src/tests/JIT/Regression/JitBlue/Runtime_91252/Runtime_91252.cs
@@ -0,0 +1,37 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+//
+// This test verifies if we correctly value number the operation of
+// x ^ x to zero.
+//
+// Found by Antigen
+
+using System.Runtime.CompilerServices;
+using System.Runtime.Intrinsics;
+using Xunit;
+
+public class Issue_91252
+{
+ static Vector64 s_v64_int_22 = Vector64.Create(-5);
+ Vector64 v64_int_72 = Vector64.Create(-1);
+
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ public int Repro()
+ {
+ s_v64_int_22 = v64_int_72;
+ return Check(v64_int_72 ^ v64_int_72);
+ }
+
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ public int Check(Vector64 a)
+ {
+ return (a == Vector64.Zero) ? 100 : 101;
+ }
+
+ [Fact]
+ public static int EntryPoint()
+ {
+ var obj = new Issue_91252();
+ return obj.Repro();
+ }
+}
diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_91252/Runtime_91252.csproj b/src/tests/JIT/Regression/JitBlue/Runtime_91252/Runtime_91252.csproj
new file mode 100644
index 00000000000000..de6d5e08882e86
--- /dev/null
+++ b/src/tests/JIT/Regression/JitBlue/Runtime_91252/Runtime_91252.csproj
@@ -0,0 +1,8 @@
+
+
+ True
+
+
+
+
+