Skip to content

Delete FEATURE_MULTIREG_RETURN #116122

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
May 30, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
28 changes: 6 additions & 22 deletions src/coreclr/clrdefinitions.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -6,34 +6,21 @@ endif(FEATURE_JIT)

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

if (CLR_CMAKE_TARGET_ARCH_ARM64)
if (CLR_CMAKE_TARGET_UNIX)
add_definitions(-DFEATURE_EMULATE_SINGLESTEP)
endif()
add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_ARCH>>>:FEATURE_MULTIREG_RETURN>)
elseif (CLR_CMAKE_TARGET_ARCH_ARM)
if (CLR_CMAKE_HOST_WIN32 AND NOT DEFINED CLR_CROSS_COMPONENTS_BUILD)
Copy link
Member Author

Choose a reason for hiding this comment

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

This was left-over from Win Arm32 that I have deleted as well.

# Set this to ensure we can use Arm SDK for Desktop binary linkage when doing native (Arm32) build
add_definitions(-D_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE)
add_definitions(-D_ARM_WORKAROUND_)
endif (CLR_CMAKE_HOST_WIN32 AND NOT DEFINED CLR_CROSS_COMPONENTS_BUILD)
add_definitions(-DFEATURE_EMULATE_SINGLESTEP)
elseif (CLR_CMAKE_TARGET_ARCH_RISCV64)
add_definitions(-DFEATURE_EMULATE_SINGLESTEP)
add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_ARCH>>>:FEATURE_MULTIREG_RETURN>)
endif (CLR_CMAKE_TARGET_ARCH_ARM64)

if (CLR_CMAKE_TARGET_UNIX)

if (CLR_CMAKE_TARGET_ARCH_AMD64)
add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_ARCH>>>:UNIX_AMD64_ABI>)
add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_ARCH>>>:FEATURE_MULTIREG_RETURN>)
elseif (CLR_CMAKE_TARGET_ARCH_ARM64)
add_compile_definitions(FEATURE_EMULATE_SINGLESTEP)
elseif (CLR_CMAKE_TARGET_ARCH_ARM)
add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_ARCH>>>:UNIX_ARM_ABI>)
add_compile_definitions(FEATURE_EMULATE_SINGLESTEP)
elseif (CLR_CMAKE_TARGET_ARCH_I386)
add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_ARCH>>>:UNIX_X86_ABI>)
elseif (CLR_CMAKE_TARGET_ARCH_LOONGARCH64)
add_definitions(-DFEATURE_EMULATE_SINGLESTEP)
add_compile_definitions(FEATURE_EMULATE_SINGLESTEP)
elseif (CLR_CMAKE_TARGET_ARCH_RISCV64)
add_compile_definitions(FEATURE_EMULATE_SINGLESTEP)
endif()

endif(CLR_CMAKE_TARGET_UNIX)
Expand Down Expand Up @@ -239,7 +226,6 @@ function(set_target_definitions_to_custom_os_and_arch)
target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE TARGET_UNIX)
if (TARGETDETAILS_ARCH STREQUAL "x64")
target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE UNIX_AMD64_ABI)
target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE FEATURE_MULTIREG_RETURN)
elseif ((TARGETDETAILS_ARCH STREQUAL "arm") OR (TARGETDETAILS_ARCH STREQUAL "armel"))
target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE UNIX_ARM_ABI)
elseif (TARGETDETAILS_ARCH STREQUAL "x86")
Expand Down Expand Up @@ -270,11 +256,9 @@ function(set_target_definitions_to_custom_os_and_arch)
elseif(TARGETDETAILS_ARCH STREQUAL "arm64")
target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE TARGET_64BIT)
target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE TARGET_ARM64)
target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE FEATURE_MULTIREG_RETURN)
elseif(TARGETDETAILS_ARCH STREQUAL "loongarch64")
target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE TARGET_64BIT)
target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE TARGET_LOONGARCH64)
target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE FEATURE_MULTIREG_RETURN)
elseif((TARGETDETAILS_ARCH STREQUAL "arm") OR (TARGETDETAILS_ARCH STREQUAL "armel"))
target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE TARGET_ARM)
elseif((TARGETDETAILS_ARCH STREQUAL "riscv64"))
Expand Down
10 changes: 0 additions & 10 deletions src/coreclr/inc/gcinfotypes.h
Original file line number Diff line number Diff line change
Expand Up @@ -211,15 +211,6 @@ inline bool IsPointerFieldReturnKind(ReturnKind returnKind)
return (returnKind == RT_Object || returnKind == RT_ByRef);
}

inline bool IsValidReturnRegister(size_t regNo)
{
return (regNo == 0)
#ifdef FEATURE_MULTIREG_RETURN
|| (regNo == 1)
#endif // FEATURE_MULTIREG_RETURN
;
}

inline bool IsStructReturnKind(ReturnKind returnKind)
{
// Two bits encode integer/ref/float return-kinds.
Expand Down Expand Up @@ -260,7 +251,6 @@ inline ReturnKind GetStructReturnKind(ReturnKind reg0, ReturnKind reg1)
inline ReturnKind ExtractRegReturnKind(ReturnKind returnKind, size_t returnRegOrdinal, bool& moreRegs)
{
_ASSERTE(IsValidReturnKind(returnKind));
_ASSERTE(IsValidReturnRegister(returnRegOrdinal));

// Return kind of each return register is encoded in two bits at returnRegOrdinal*2 position from LSB
ReturnKind regReturnKind = (ReturnKind)((returnKind >> (returnRegOrdinal * 2)) & 3);
Expand Down
16 changes: 8 additions & 8 deletions src/coreclr/vm/amd64/cgencpu.h
Original file line number Diff line number Diff line change
Expand Up @@ -547,13 +547,7 @@ extern "C" void getFPReturn(int fpSize, INT64 *retval);

struct HijackArgs
{
#ifndef FEATURE_MULTIREG_RETURN
union
{
ULONG64 Rax;
ULONG64 ReturnValue[1];
};
#else // !FEATURE_MULTIREG_RETURN
#ifdef UNIX_AMD64_ABI
union
{
struct
Expand All @@ -563,7 +557,13 @@ struct HijackArgs
};
ULONG64 ReturnValue[2];
};
#endif // !FEATURE_MULTIREG_RETURN
#else // UNIX_AMD64_ABI
union
{
ULONG64 Rax;
ULONG64 ReturnValue[1];
};
#endif // UNIX_AMD64_ABI
union
{
ULONG64 Rcx;
Expand Down
9 changes: 0 additions & 9 deletions src/coreclr/vm/threads.h
Original file line number Diff line number Diff line change
Expand Up @@ -392,15 +392,6 @@ BOOL MatchThreadHandleToOsId ( HANDLE h, DWORD osId );
// unstarted System.Thread), then this instance can be found in the TLS
// of that physical thread.

// FEATURE_MULTIREG_RETURN is set for platforms where a struct return value
// can be returned in multiple registers
// ex: Windows/Unix ARM/ARM64, Unix-AMD64.
//
//
// UNIX_AMD64_ABI is a specific kind of FEATURE_MULTIREG_RETURN
// specified by SystemV ABI for AMD64
//

#ifdef FEATURE_HIJACK // Hijack function returning
EXTERN_C void STDCALL OnHijackWorker(HijackArgs * pArgs);
#endif // FEATURE_HIJACK
Expand Down
Loading