Skip to content

Commit 3b5bcb4

Browse files
Delete FEATURE_MULTIREG_RETURN (#116122)
It was made obsolete by earlier thread suspension changes Co-authored-by: Theodore Tsirpanis <[email protected]>
1 parent a3225a9 commit 3b5bcb4

File tree

4 files changed

+14
-49
lines changed

4 files changed

+14
-49
lines changed

src/coreclr/clrdefinitions.cmake

Lines changed: 6 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -6,34 +6,21 @@ endif(FEATURE_JIT)
66

77
add_compile_definitions($<$<BOOL:$<TARGET_PROPERTY:DAC_COMPONENT>>:DACCESS_COMPILE>)
88

9-
if (CLR_CMAKE_TARGET_ARCH_ARM64)
10-
if (CLR_CMAKE_TARGET_UNIX)
11-
add_definitions(-DFEATURE_EMULATE_SINGLESTEP)
12-
endif()
13-
add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_ARCH>>>:FEATURE_MULTIREG_RETURN>)
14-
elseif (CLR_CMAKE_TARGET_ARCH_ARM)
15-
if (CLR_CMAKE_HOST_WIN32 AND NOT DEFINED CLR_CROSS_COMPONENTS_BUILD)
16-
# Set this to ensure we can use Arm SDK for Desktop binary linkage when doing native (Arm32) build
17-
add_definitions(-D_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE)
18-
add_definitions(-D_ARM_WORKAROUND_)
19-
endif (CLR_CMAKE_HOST_WIN32 AND NOT DEFINED CLR_CROSS_COMPONENTS_BUILD)
20-
add_definitions(-DFEATURE_EMULATE_SINGLESTEP)
21-
elseif (CLR_CMAKE_TARGET_ARCH_RISCV64)
22-
add_definitions(-DFEATURE_EMULATE_SINGLESTEP)
23-
add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_ARCH>>>:FEATURE_MULTIREG_RETURN>)
24-
endif (CLR_CMAKE_TARGET_ARCH_ARM64)
25-
269
if (CLR_CMAKE_TARGET_UNIX)
2710

2811
if (CLR_CMAKE_TARGET_ARCH_AMD64)
2912
add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_ARCH>>>:UNIX_AMD64_ABI>)
30-
add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_ARCH>>>:FEATURE_MULTIREG_RETURN>)
13+
elseif (CLR_CMAKE_TARGET_ARCH_ARM64)
14+
add_compile_definitions(FEATURE_EMULATE_SINGLESTEP)
3115
elseif (CLR_CMAKE_TARGET_ARCH_ARM)
3216
add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_ARCH>>>:UNIX_ARM_ABI>)
17+
add_compile_definitions(FEATURE_EMULATE_SINGLESTEP)
3318
elseif (CLR_CMAKE_TARGET_ARCH_I386)
3419
add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_ARCH>>>:UNIX_X86_ABI>)
3520
elseif (CLR_CMAKE_TARGET_ARCH_LOONGARCH64)
36-
add_definitions(-DFEATURE_EMULATE_SINGLESTEP)
21+
add_compile_definitions(FEATURE_EMULATE_SINGLESTEP)
22+
elseif (CLR_CMAKE_TARGET_ARCH_RISCV64)
23+
add_compile_definitions(FEATURE_EMULATE_SINGLESTEP)
3724
endif()
3825

3926
endif(CLR_CMAKE_TARGET_UNIX)
@@ -239,7 +226,6 @@ function(set_target_definitions_to_custom_os_and_arch)
239226
target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE TARGET_UNIX)
240227
if (TARGETDETAILS_ARCH STREQUAL "x64")
241228
target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE UNIX_AMD64_ABI)
242-
target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE FEATURE_MULTIREG_RETURN)
243229
elseif ((TARGETDETAILS_ARCH STREQUAL "arm") OR (TARGETDETAILS_ARCH STREQUAL "armel"))
244230
target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE UNIX_ARM_ABI)
245231
elseif (TARGETDETAILS_ARCH STREQUAL "x86")
@@ -270,11 +256,9 @@ function(set_target_definitions_to_custom_os_and_arch)
270256
elseif(TARGETDETAILS_ARCH STREQUAL "arm64")
271257
target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE TARGET_64BIT)
272258
target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE TARGET_ARM64)
273-
target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE FEATURE_MULTIREG_RETURN)
274259
elseif(TARGETDETAILS_ARCH STREQUAL "loongarch64")
275260
target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE TARGET_64BIT)
276261
target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE TARGET_LOONGARCH64)
277-
target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE FEATURE_MULTIREG_RETURN)
278262
elseif((TARGETDETAILS_ARCH STREQUAL "arm") OR (TARGETDETAILS_ARCH STREQUAL "armel"))
279263
target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE TARGET_ARM)
280264
elseif((TARGETDETAILS_ARCH STREQUAL "riscv64"))

src/coreclr/inc/gcinfotypes.h

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -211,15 +211,6 @@ inline bool IsPointerFieldReturnKind(ReturnKind returnKind)
211211
return (returnKind == RT_Object || returnKind == RT_ByRef);
212212
}
213213

214-
inline bool IsValidReturnRegister(size_t regNo)
215-
{
216-
return (regNo == 0)
217-
#ifdef FEATURE_MULTIREG_RETURN
218-
|| (regNo == 1)
219-
#endif // FEATURE_MULTIREG_RETURN
220-
;
221-
}
222-
223214
inline bool IsStructReturnKind(ReturnKind returnKind)
224215
{
225216
// Two bits encode integer/ref/float return-kinds.
@@ -260,7 +251,6 @@ inline ReturnKind GetStructReturnKind(ReturnKind reg0, ReturnKind reg1)
260251
inline ReturnKind ExtractRegReturnKind(ReturnKind returnKind, size_t returnRegOrdinal, bool& moreRegs)
261252
{
262253
_ASSERTE(IsValidReturnKind(returnKind));
263-
_ASSERTE(IsValidReturnRegister(returnRegOrdinal));
264254

265255
// Return kind of each return register is encoded in two bits at returnRegOrdinal*2 position from LSB
266256
ReturnKind regReturnKind = (ReturnKind)((returnKind >> (returnRegOrdinal * 2)) & 3);

src/coreclr/vm/amd64/cgencpu.h

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -547,13 +547,7 @@ extern "C" void getFPReturn(int fpSize, INT64 *retval);
547547

548548
struct HijackArgs
549549
{
550-
#ifndef FEATURE_MULTIREG_RETURN
551-
union
552-
{
553-
ULONG64 Rax;
554-
ULONG64 ReturnValue[1];
555-
};
556-
#else // !FEATURE_MULTIREG_RETURN
550+
#ifdef UNIX_AMD64_ABI
557551
union
558552
{
559553
struct
@@ -563,7 +557,13 @@ struct HijackArgs
563557
};
564558
ULONG64 ReturnValue[2];
565559
};
566-
#endif // !FEATURE_MULTIREG_RETURN
560+
#else // UNIX_AMD64_ABI
561+
union
562+
{
563+
ULONG64 Rax;
564+
ULONG64 ReturnValue[1];
565+
};
566+
#endif // UNIX_AMD64_ABI
567567
union
568568
{
569569
ULONG64 Rcx;

src/coreclr/vm/threads.h

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -392,15 +392,6 @@ BOOL MatchThreadHandleToOsId ( HANDLE h, DWORD osId );
392392
// unstarted System.Thread), then this instance can be found in the TLS
393393
// of that physical thread.
394394

395-
// FEATURE_MULTIREG_RETURN is set for platforms where a struct return value
396-
// can be returned in multiple registers
397-
// ex: Windows/Unix ARM/ARM64, Unix-AMD64.
398-
//
399-
//
400-
// UNIX_AMD64_ABI is a specific kind of FEATURE_MULTIREG_RETURN
401-
// specified by SystemV ABI for AMD64
402-
//
403-
404395
#ifdef FEATURE_HIJACK // Hijack function returning
405396
EXTERN_C void STDCALL OnHijackWorker(HijackArgs * pArgs);
406397
#endif // FEATURE_HIJACK

0 commit comments

Comments
 (0)