diff --git a/Directory.Build.props b/Directory.Build.props
index 5eeb3ed7f86822..71d6f9b9df9962 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -333,7 +333,7 @@
true
- ClrFullNativeBuild;ClrRuntimeSubset;ClrJitSubset;ClrPalTestsSubset;ClrAllJitsSubset;ClrILToolsSubset;ClrNativeAotSubset;ClrSpmiSubset;ClrCrossComponentsSubset;ClrDebugSubset;HostArchitecture;PgoInstrument;NativeOptimizationDataSupported;CMakeArgs;CxxStandardLibrary;CxxStandardLibraryStatic;CxxAbiLibrary
+ ClrFullNativeBuild;ClrRuntimeSubset;ClrJitSubset;ClrPalTestsSubset;ClrAllJitsSubset;ClrAllJitsCommunitySubset;ClrILToolsSubset;ClrNativeAotSubset;ClrSpmiSubset;ClrCrossComponentsSubset;ClrDebugSubset;HostArchitecture;PgoInstrument;NativeOptimizationDataSupported;CMakeArgs;CxxStandardLibrary;CxxStandardLibraryStatic;CxxAbiLibrary
true
diff --git a/eng/Subsets.props b/eng/Subsets.props
index 266add7128805c..7d5fba38d4d579 100644
--- a/eng/Subsets.props
+++ b/eng/Subsets.props
@@ -189,6 +189,7 @@
+
@@ -289,6 +290,10 @@
$(ClrRuntimeBuildSubsets);ClrAllJitsSubset=true
+
+ $(ClrRuntimeBuildSubsets);ClrAllJitsCommunitySubset=true
+
+
$(ClrRuntimeBuildSubsets);ClrILToolsSubset=true
diff --git a/eng/native/functions.cmake b/eng/native/functions.cmake
index 2b8db967373341..2dee8bf0c50986 100644
--- a/eng/native/functions.cmake
+++ b/eng/native/functions.cmake
@@ -1,8 +1,8 @@
function(clr_unknown_arch)
if (WIN32)
- message(FATAL_ERROR "Only AMD64, ARM64, ARM and I386 hosts are supported. Found: ${CMAKE_SYSTEM_PROCESSOR}")
+ message(FATAL_ERROR "Only AMD64, ARM64, ARM, I386, LOONGARCH64 and RISCV64 hosts are supported. Found: ${CMAKE_SYSTEM_PROCESSOR}")
elseif(CLR_CROSS_COMPONENTS_BUILD)
- message(FATAL_ERROR "Only AMD64, ARM64 and I386 hosts are supported for linux cross-architecture component. Found: ${CMAKE_SYSTEM_PROCESSOR}")
+ message(FATAL_ERROR "Only AMD64, ARM64, I386, LOONGARCH64 and RISCV64 hosts are supported for linux cross-architecture component. Found: ${CMAKE_SYSTEM_PROCESSOR}")
else()
message(FATAL_ERROR "'${CMAKE_SYSTEM_PROCESSOR}' is an unsupported architecture.")
endif()
@@ -319,7 +319,7 @@ function(add_component componentName)
else()
set(componentTargetName "${componentName}")
endif()
- if (${ARGC} EQUAL 3 AND "${ARG2}" STREQUAL "EXCLUDE_FROM_ALL")
+ if (${ARGC} EQUAL 3 AND "${ARGV2}" STREQUAL "EXCLUDE_FROM_ALL")
set(exclude_from_all_flag "EXCLUDE_FROM_ALL")
endif()
get_property(definedComponents GLOBAL PROPERTY CLR_CMAKE_COMPONENTS)
diff --git a/src/coreclr/build-runtime.cmd b/src/coreclr/build-runtime.cmd
index 907565de64f22c..aa8c92500e04cd 100644
--- a/src/coreclr/build-runtime.cmd
+++ b/src/coreclr/build-runtime.cmd
@@ -44,6 +44,8 @@ set __TargetArchX64=0
set __TargetArchX86=0
set __TargetArchArm=0
set __TargetArchArm64=0
+set __TargetArchLoongArch64=0
+set __TargetArchRiscV64=0
set __BuildTypeDebug=0
set __BuildTypeChecked=0
@@ -89,6 +91,8 @@ if /i "%1" == "-x64" (set __TargetArchX64=1&shift&goto Arg_Loop)
if /i "%1" == "-x86" (set __TargetArchX86=1&shift&goto Arg_Loop)
if /i "%1" == "-arm" (set __TargetArchArm=1&shift&goto Arg_Loop)
if /i "%1" == "-arm64" (set __TargetArchArm64=1&shift&goto Arg_Loop)
+if /i "%1" == "-loongarch64" (set __TargetArchLoongArch64=1&shift&goto Arg_Loop)
+if /i "%1" == "-riscv64" (set __TargetArchRiscV64=1&shift&goto Arg_Loop)
if /i "%1" == "-debug" (set __BuildTypeDebug=1&shift&goto Arg_Loop)
if /i "%1" == "-checked" (set __BuildTypeChecked=1&shift&goto Arg_Loop)
@@ -103,6 +107,8 @@ if /i "%1" == "x64" (set __TargetArchX64=1&shift&goto Arg_Loop)
if /i "%1" == "x86" (set __TargetArchX86=1&shift&goto Arg_Loop)
if /i "%1" == "arm" (set __TargetArchArm=1&shift&goto Arg_Loop)
if /i "%1" == "arm64" (set __TargetArchArm64=1&shift&goto Arg_Loop)
+if /i "%1" == "loongarch64" (set __TargetArchLoongArch64=1&shift&goto Arg_Loop)
+if /i "%1" == "riscv64" (set __TargetArchRiscV64=1&shift&goto Arg_Loop)
if /i "%1" == "debug" (set __BuildTypeDebug=1&shift&goto Arg_Loop)
if /i "%1" == "checked" (set __BuildTypeChecked=1&shift&goto Arg_Loop)
@@ -167,16 +173,18 @@ if defined VCINSTALLDIR (
if defined __BuildAll goto BuildAll
-set /A __TotalSpecifiedTargetArch=__TargetArchX64 + __TargetArchX86 + __TargetArchArm + __TargetArchArm64
+set /A __TotalSpecifiedTargetArch=__TargetArchX64 + __TargetArchX86 + __TargetArchArm + __TargetArchArm64 + __TargetArchLoongArch64 + __TargetArchRiscV64
if %__TotalSpecifiedTargetArch% GTR 1 (
echo Error: more than one build architecture specified, but "all" not specified.
goto Usage
)
-if %__TargetArchX64%==1 set __TargetArch=x64
-if %__TargetArchX86%==1 set __TargetArch=x86
-if %__TargetArchArm%==1 set __TargetArch=arm
-if %__TargetArchArm64%==1 set __TargetArch=arm64
+if %__TargetArchX64%==1 set __TargetArch=x64
+if %__TargetArchX86%==1 set __TargetArch=x86
+if %__TargetArchArm%==1 set __TargetArch=arm
+if %__TargetArchArm64%==1 set __TargetArch=arm64
+if %__TargetArchLoongArch64%==1 set __TargetArch=loongarch64
+if %__TargetArchRiscV64%==1 set __TargetArch=riscv64
if "%__HostArch%" == "" set __HostArch=%__TargetArch%
set /A __TotalSpecifiedBuildType=__BuildTypeDebug + __BuildTypeChecked + __BuildTypeRelease
@@ -294,6 +302,7 @@ if NOT DEFINED PYTHON (
)
set __CMakeTarget=
+set __BuildAllJitsCommunity=0
for /f "delims=" %%a in ("-%__RequestedBuildComponents%-") do (
set "string=%%a"
if not "!string:-hosts-=!"=="!string!" (
@@ -305,6 +314,10 @@ for /f "delims=" %%a in ("-%__RequestedBuildComponents%-") do (
if not "!string:-alljits-=!"=="!string!" (
set __CMakeTarget=!__CMakeTarget! alljits
)
+ if not "!string:-alljitscommunity-=!"=="!string!" (
+ set __CMakeTarget=!__CMakeTarget! alljitscommunity
+ set __BuildAllJitsCommunity=1
+ )
if not "!string:-runtime-=!"=="!string!" (
set __CMakeTarget=!__CMakeTarget! runtime
)
@@ -459,18 +472,24 @@ REM ============================================================================
set __TargetArchList=
-set /A __TotalSpecifiedTargetArch=__TargetArchX64 + __TargetArchX86 + __TargetArchArm + __TargetArchArm64
+set /A __TotalSpecifiedTargetArch=__TargetArchX64 + __TargetArchX86 + __TargetArchArm + __TargetArchArm64 + __TargetArchLoongArch64 + __TargetArchRiscV64
if %__TotalSpecifiedTargetArch% EQU 0 (
REM Nothing specified means we want to build all architectures.
set __TargetArchList=x64 x86 arm arm64
+
+ if %__BuildAllJitsCommunity%==1 (
+ set __TargetArchList=%__TargetArchList% loongarch64 riscv64
+ )
)
REM Otherwise, add all the specified architectures to the list.
-if %__TargetArchX64%==1 set __TargetArchList=%__TargetArchList% x64
-if %__TargetArchX86%==1 set __TargetArchList=%__TargetArchList% x86
-if %__TargetArchArm%==1 set __TargetArchList=%__TargetArchList% arm
-if %__TargetArchArm64%==1 set __TargetArchList=%__TargetArchList% arm64
+if %__TargetArchX64%==1 set __TargetArchList=%__TargetArchList% x64
+if %__TargetArchX86%==1 set __TargetArchList=%__TargetArchList% x86
+if %__TargetArchArm%==1 set __TargetArchList=%__TargetArchList% arm
+if %__TargetArchArm64%==1 set __TargetArchList=%__TargetArchList% arm64
+if %__TargetArchLoongArch64%==1 set __TargetArchList=%__TargetArchList% loongarch64
+if %__TargetArchRiscV64%==1 set __TargetArchList=%__TargetArchList% riscv64
set __BuildTypeList=
@@ -553,7 +572,7 @@ echo All arguments are optional. The options are:
echo.
echo.-? -h -help --help: view this message.
echo -all: Builds all configurations and platforms.
-echo Build architecture: one of -x64, -x86, -arm, -arm64 ^(default: -x64^).
+echo Build architecture: one of -x64, -x86, -arm, -arm64, -loongarch64, -riscv64 ^(default: -x64^).
echo Build type: one of -Debug, -Checked, -Release ^(default: -Debug^).
echo -component ^ : specify this option one or more times to limit components built to those specified.
echo Allowed ^: hosts jit alljits runtime paltests iltools nativeaot spmi
diff --git a/src/coreclr/build-runtime.sh b/src/coreclr/build-runtime.sh
index 2e00e9ba399ace..52fcb9ef3714cf 100755
--- a/src/coreclr/build-runtime.sh
+++ b/src/coreclr/build-runtime.sh
@@ -21,7 +21,7 @@ export PYTHON
usage_list+=("-pgodatapath: path to profile guided optimization data.")
usage_list+=("-pgoinstrument: generate instrumented code for profile guided optimization enabled binaries.")
usage_list+=("-staticanalyzer: use scan_build static analyzer.")
-usage_list+=("-component: Build individual components instead of the full project. Available options are 'hosts', 'jit', 'runtime', 'paltests', 'alljits', 'iltools', 'nativeaot', and 'spmi'. Can be specified multiple times.")
+usage_list+=("-component: Build individual components instead of the full project. Available options are 'hosts', 'jit', 'runtime', 'paltests', 'alljits', 'alljitscommunity', 'iltools', 'nativeaot', and 'spmi'. Can be specified multiple times.")
usage_list+=("-subdir: Append a directory with the provided name to the obj and bin paths.")
setup_dirs_local()
diff --git a/src/coreclr/gcinfo/CMakeLists.txt b/src/coreclr/gcinfo/CMakeLists.txt
index cdc4ae794c8e85..9ec2ae84eb0784 100644
--- a/src/coreclr/gcinfo/CMakeLists.txt
+++ b/src/coreclr/gcinfo/CMakeLists.txt
@@ -66,6 +66,10 @@ endif()
if (CLR_CMAKE_TARGET_ARCH_ARM64 OR CLR_CMAKE_TARGET_ARCH_AMD64)
create_gcinfo_lib(TARGET gcinfo_universal_arm64 OS universal ARCH arm64)
create_gcinfo_lib(TARGET gcinfo_unix_x64 OS unix ARCH x64)
+ if (CLR_CMAKE_BUILD_COMMUNITY_ALTJITS EQUAL 1)
+ create_gcinfo_lib(TARGET gcinfo_unix_loongarch64 OS unix ARCH loongarch64)
+ create_gcinfo_lib(TARGET gcinfo_unix_riscv64 OS unix ARCH riscv64)
+ endif(CLR_CMAKE_BUILD_COMMUNITY_ALTJITS EQUAL 1)
create_gcinfo_lib(TARGET gcinfo_win_x64 OS win ARCH x64)
endif (CLR_CMAKE_TARGET_ARCH_ARM64 OR CLR_CMAKE_TARGET_ARCH_AMD64)
diff --git a/src/coreclr/inc/corinfo.h b/src/coreclr/inc/corinfo.h
index 9d01304c6639d8..f3484283745de8 100644
--- a/src/coreclr/inc/corinfo.h
+++ b/src/coreclr/inc/corinfo.h
@@ -3351,6 +3351,17 @@ class ICorDynamicInfo : public ICorStaticInfo
//
#define IMAGE_REL_BASED_REL_THUMB_MOV32_PCREL 0x14
+//
+// LOONGARCH64 relocation types
+//
+#define IMAGE_REL_LOONGARCH64_PC 0x0003
+#define IMAGE_REL_LOONGARCH64_JIR 0x0004
+
+//
+// RISCV64 relocation types
+//
+#define IMAGE_REL_RISCV64_PC 0x0003
+
/**********************************************************************************/
#ifdef TARGET_64BIT
#define USE_PER_FRAME_PINVOKE_INIT
diff --git a/src/coreclr/inc/gcinfotypes.h b/src/coreclr/inc/gcinfotypes.h
index ef33fc275fe282..b1e86ca718fd8c 100644
--- a/src/coreclr/inc/gcinfotypes.h
+++ b/src/coreclr/inc/gcinfotypes.h
@@ -780,8 +780,8 @@ void FASTCALL decodeCallPattern(int pattern,
#define DENORMALIZE_STACK_SLOT(x) ((x)<<3)
#define NORMALIZE_CODE_LENGTH(x) ((x)>>2) // All Instructions are 4 bytes long
#define DENORMALIZE_CODE_LENGTH(x) ((x)<<2)
-#define NORMALIZE_STACK_BASE_REGISTER(x) ((x) == 22 ? 0 : 1) // Encode Frame pointer fp=$22 as zero
-#define DENORMALIZE_STACK_BASE_REGISTER(x) ((x) == 0 ? 22 : 3)
+#define NORMALIZE_STACK_BASE_REGISTER(x) ((x) == 22 ? 0u : 1u) // Encode Frame pointer fp=$22 as zero
+#define DENORMALIZE_STACK_BASE_REGISTER(x) ((x) == 0 ? 22u : 3u)
#define NORMALIZE_SIZE_OF_STACK_AREA(x) ((x)>>3)
#define DENORMALIZE_SIZE_OF_STACK_AREA(x) ((x)<<3)
#define CODE_OFFSETS_NEED_NORMALIZATION 1
@@ -833,8 +833,8 @@ void FASTCALL decodeCallPattern(int pattern,
#define DENORMALIZE_STACK_SLOT(x) ((x)<<3)
#define NORMALIZE_CODE_LENGTH(x) ((x)>>2) // All Instructions are 4 bytes long
#define DENORMALIZE_CODE_LENGTH(x) ((x)<<2)
-#define NORMALIZE_STACK_BASE_REGISTER(x) ((x) == 8 ? 0 : 1) // Encode Frame pointer X8 as zero, sp/x2 as 1
-#define DENORMALIZE_STACK_BASE_REGISTER(x) ((x) == 0 ? 8 : 2)
+#define NORMALIZE_STACK_BASE_REGISTER(x) ((x) == 8 ? 0u : 1u) // Encode Frame pointer X8 as zero, sp/x2 as 1
+#define DENORMALIZE_STACK_BASE_REGISTER(x) ((x) == 0 ? 8u : 2u)
#define NORMALIZE_SIZE_OF_STACK_AREA(x) ((x)>>3)
#define DENORMALIZE_SIZE_OF_STACK_AREA(x) ((x)<<3)
#define CODE_OFFSETS_NEED_NORMALIZATION 1
diff --git a/src/coreclr/inc/palclr.h b/src/coreclr/inc/palclr.h
index 98321ba87f8383..c5628a1b9eee6e 100644
--- a/src/coreclr/inc/palclr.h
+++ b/src/coreclr/inc/palclr.h
@@ -612,4 +612,8 @@
#define IMAGE_FILE_MACHINE_LOONGARCH64 0x6264 // LOONGARCH64.
#endif
+#ifndef IMAGE_FILE_MACHINE_RISCV64
+#define IMAGE_FILE_MACHINE_RISCV64 0x5064 // RISCV64.
+#endif
+
#endif // defined(HOST_WINDOWS)
diff --git a/src/coreclr/jit/CMakeLists.txt b/src/coreclr/jit/CMakeLists.txt
index 58c16f5d1ccaa0..d8e56b18839c18 100644
--- a/src/coreclr/jit/CMakeLists.txt
+++ b/src/coreclr/jit/CMakeLists.txt
@@ -642,6 +642,10 @@ if (CLR_CMAKE_TARGET_ARCH_ARM64 OR CLR_CMAKE_TARGET_ARCH_AMD64)
create_standalone_jit(TARGET clrjit_universal_arm64_${ARCH_HOST_NAME} OS universal ARCH arm64)
create_standalone_jit(TARGET clrjit_unix_x64_${ARCH_HOST_NAME} OS unix_anyos ARCH x64)
create_standalone_jit(TARGET clrjit_win_x64_${ARCH_HOST_NAME} OS win ARCH x64)
+ if (CLR_CMAKE_BUILD_COMMUNITY_ALTJITS EQUAL 1)
+ create_standalone_jit(TARGET clrjit_unix_loongarch64_${ARCH_HOST_NAME} OS unix ARCH loongarch64)
+ create_standalone_jit(TARGET clrjit_unix_riscv64_${ARCH_HOST_NAME} OS unix ARCH riscv64)
+ endif(CLR_CMAKE_BUILD_COMMUNITY_ALTJITS EQUAL 1)
endif (CLR_CMAKE_TARGET_ARCH_ARM64 OR CLR_CMAKE_TARGET_ARCH_AMD64)
if (CLR_CMAKE_TARGET_ARCH_LOONGARCH64)
diff --git a/src/coreclr/jit/codegenloongarch64.cpp b/src/coreclr/jit/codegenloongarch64.cpp
index f8e26e956209aa..94390a88580012 100644
--- a/src/coreclr/jit/codegenloongarch64.cpp
+++ b/src/coreclr/jit/codegenloongarch64.cpp
@@ -174,7 +174,7 @@ void CodeGen::genStackPointerAdjustment(ssize_t spDelta, regNumber tmpReg, bool*
{
// spDelta is negative in the prolog, positive in the epilog,
// but we always tell the unwind codes the positive value.
- ssize_t spDeltaAbs = abs(spDelta);
+ ssize_t spDeltaAbs = std::abs(spDelta);
unsigned unwindSpDelta = (unsigned)spDeltaAbs;
assert((ssize_t)unwindSpDelta == spDeltaAbs); // make sure that it fits in a unsigned
@@ -2460,10 +2460,9 @@ static inline bool isImmed(GenTree* treeNode)
instruction CodeGen::genGetInsForOper(GenTree* treeNode)
{
- var_types type = treeNode->TypeGet();
- genTreeOps oper = treeNode->OperGet();
- GenTree* op1 = treeNode->gtGetOp1();
- GenTree* op2;
+ var_types type = treeNode->TypeGet();
+ genTreeOps oper = treeNode->OperGet();
+ GenTree* op1 = treeNode->gtGetOp1();
emitAttr attr = emitActualTypeSize(treeNode);
bool isImm = false;
diff --git a/src/coreclr/jit/codegenriscv64.cpp b/src/coreclr/jit/codegenriscv64.cpp
index 8efe6e0827125c..dd008c8286fb62 100644
--- a/src/coreclr/jit/codegenriscv64.cpp
+++ b/src/coreclr/jit/codegenriscv64.cpp
@@ -163,7 +163,7 @@ void CodeGen::genStackPointerAdjustment(ssize_t spDelta, regNumber tmpReg, bool*
{
// spDelta is negative in the prolog, positive in the epilog,
// but we always tell the unwind codes the positive value.
- ssize_t spDeltaAbs = abs(spDelta);
+ ssize_t spDeltaAbs = std::abs(spDelta);
unsigned unwindSpDelta = (unsigned)spDeltaAbs;
assert((ssize_t)unwindSpDelta == spDeltaAbs); // make sure that it fits in a unsigned
@@ -6330,8 +6330,6 @@ void CodeGen::genIntToIntCast(GenTreeCast* cast)
if ((desc.ExtendKind() != GenIntCastDesc::COPY) || (srcReg != dstReg))
{
- instruction ins;
-
switch (desc.ExtendKind())
{
case GenIntCastDesc::ZERO_EXTEND_SMALL_INT:
diff --git a/src/coreclr/jit/emitloongarch64.cpp b/src/coreclr/jit/emitloongarch64.cpp
index f732b353bea039..cb3292e5878249 100644
--- a/src/coreclr/jit/emitloongarch64.cpp
+++ b/src/coreclr/jit/emitloongarch64.cpp
@@ -2404,7 +2404,7 @@ void emitter::emitIns_Call(EmitCallType callType,
// Our stack level should be always greater than the bytes of arguments we push. Just
// a sanity test.
- assert((unsigned)abs(argSize) <= codeGen->genStackLevel);
+ assert((unsigned)std::abs(argSize) <= codeGen->genStackLevel);
// Trim out any callee-trashed registers from the live set.
regMaskTP savedSet = emitGetGCRegsSavedOrModified(methHnd);
@@ -4002,7 +4002,7 @@ void emitter::emitDisInsName(code_t code, const BYTE* addr, instrDesc* id)
int tmp;
instruction ins = INS_invalid;
- for (int i = 1; i < INS_count; i++)
+ for (uint32_t i = 1; i < INS_count; i++)
{
if ((code & emitGetInsMask(i)) == emitInsCode((instruction)i))
{
diff --git a/src/coreclr/jit/emitriscv64.cpp b/src/coreclr/jit/emitriscv64.cpp
index 991c6e01d9fe5f..00a1c925620ed5 100644
--- a/src/coreclr/jit/emitriscv64.cpp
+++ b/src/coreclr/jit/emitriscv64.cpp
@@ -1385,7 +1385,7 @@ void emitter::emitIns_Call(EmitCallType callType,
// Our stack level should be always greater than the bytes of arguments we push. Just
// a sanity test.
- assert((unsigned)abs(argSize) <= codeGen->genStackLevel);
+ assert((unsigned)std::abs(argSize) <= codeGen->genStackLevel);
// Trim out any callee-trashed registers from the live set.
regMaskTP savedSet = emitGetGCRegsSavedOrModified(methHnd);
@@ -4573,7 +4573,7 @@ void emitter::emitDispIns(
emitDispInsInstrNum(id);
const BYTE* instr = pCode + writeableOffset;
- size_t instrSize;
+ unsigned instrSize;
for (size_t i = 0; i < sz; instr += instrSize, i += instrSize, offset += instrSize)
{
// TODO-RISCV64: support different size instructions
diff --git a/src/coreclr/jit/lclvars.cpp b/src/coreclr/jit/lclvars.cpp
index ad9b203b454e3b..574d70b3f7b585 100644
--- a/src/coreclr/jit/lclvars.cpp
+++ b/src/coreclr/jit/lclvars.cpp
@@ -863,7 +863,7 @@ void Compiler::lvaInitUserArgs(InitVarDscInfo* varDscInfo, unsigned skipArgs, un
if (lowering->numLoweredElements == 1)
assert(varDsc->lvExactSize() <= argSize);
- cSlotsToEnregister = lowering->numLoweredElements;
+ cSlotsToEnregister = static_cast(lowering->numLoweredElements);
argRegTypeInStruct1 = JITtype2varType(lowering->loweredElements[0]);
if (lowering->numLoweredElements == 2)
argRegTypeInStruct2 = JITtype2varType(lowering->loweredElements[1]);
@@ -872,7 +872,7 @@ void Compiler::lvaInitUserArgs(InitVarDscInfo* varDscInfo, unsigned skipArgs, un
assert(floatNum > 0);
canPassArgInRegisters = varDscInfo->canEnreg(TYP_DOUBLE, floatNum);
- if (canPassArgInRegisters && (floatNum < lowering->numLoweredElements))
+ if (canPassArgInRegisters && ((unsigned)floatNum < lowering->numLoweredElements))
{
assert(floatNum == 1);
assert(lowering->numLoweredElements == 2);
diff --git a/src/coreclr/jit/targetloongarch64.cpp b/src/coreclr/jit/targetloongarch64.cpp
index fe98ab56d5d462..1e876d7eb5f65e 100644
--- a/src/coreclr/jit/targetloongarch64.cpp
+++ b/src/coreclr/jit/targetloongarch64.cpp
@@ -85,7 +85,7 @@ ABIPassingInformation LoongArch64Classifier::Classify(Compiler* comp,
if (!lowering->byIntegerCallConv)
{
- slots = lowering->numLoweredElements;
+ slots = static_cast(lowering->numLoweredElements);
if (lowering->numLoweredElements == 1)
{
canPassArgInRegisters = m_floatRegs.Count() > 0;
diff --git a/src/coreclr/jit/targetriscv64.cpp b/src/coreclr/jit/targetriscv64.cpp
index 3f39c9516812f2..b91420136fb754 100644
--- a/src/coreclr/jit/targetriscv64.cpp
+++ b/src/coreclr/jit/targetriscv64.cpp
@@ -83,7 +83,7 @@ ABIPassingInformation RiscV64Classifier::Classify(Compiler* comp,
floatFields += (unsigned)varTypeIsFloating(type);
INDEBUG(debugIntFields += (unsigned)varTypeIsIntegralOrI(type);)
}
- intFields = lowering->numLoweredElements - floatFields;
+ intFields = static_cast(lowering->numLoweredElements) - floatFields;
assert(debugIntFields == intFields);
}
}
diff --git a/src/coreclr/pal/inc/rt/ntimage.h b/src/coreclr/pal/inc/rt/ntimage.h
index 3c7de052340495..8f88791ef51cf6 100644
--- a/src/coreclr/pal/inc/rt/ntimage.h
+++ b/src/coreclr/pal/inc/rt/ntimage.h
@@ -1015,17 +1015,6 @@ typedef IMAGE_RELOCATION UNALIGNED *PIMAGE_RELOCATION;
#define IMAGE_REL_IA64_GPREL32 0x001C
#define IMAGE_REL_IA64_ADDEND 0x001F
-//
-// LOONGARCH64 relocation types
-//
-#define IMAGE_REL_LOONGARCH64_PC 0x0003
-#define IMAGE_REL_LOONGARCH64_JIR 0x0004
-
-//
-// RISCV64 relocation types
-//
-#define IMAGE_REL_RISCV64_PC 0x0003
-
//
// CEF relocation types.
//
diff --git a/src/coreclr/runtime.proj b/src/coreclr/runtime.proj
index e3b3001caa43c4..3af9a3f5a653b4 100644
--- a/src/coreclr/runtime.proj
+++ b/src/coreclr/runtime.proj
@@ -68,6 +68,7 @@
<_CoreClrBuildArg Condition="'$(ClrJitSubset)' == 'true'" Include="-component jit" />
<_CoreClrBuildArg Condition="'$(ClrPalTestsSubset)' == 'true'" Include="-component paltests" />
<_CoreClrBuildArg Condition="'$(ClrAllJitsSubset)' == 'true'" Include="-component alljits" />
+ <_CoreClrBuildArg Condition="'$(ClrAllJitsCommunitySubset)' == 'true'" Include="-component alljits;-cmakeargs "-DCLR_CMAKE_BUILD_COMMUNITY_ALTJITS=1"" />
<_CoreClrBuildArg Condition="'$(ClrILToolsSubset)' == 'true'" Include="-component iltools" />
<_CoreClrBuildArg Condition="'$(ClrNativeAotSubset)' == 'true'" Include="-component nativeaot" />
<_CoreClrBuildArg Condition="'$(ClrSpmiSubset)' == 'true'" Include="-component spmi" />