From 0c781aa8d4daaa9bfbf08529ef917f1543dcb709 Mon Sep 17 00:00:00 2001 From: Carol Eidt Date: Mon, 3 Oct 2016 16:12:46 -0700 Subject: [PATCH] Allow GT_FIELD_LIST as legal arg for RyuJIT/x86 The condition in GenTree::IsValidCallArgument() was not correct for GT_FIELD_LIST, which is used for passing a struct on the stack in RyuJIT/x86. Fix dotnet/coreclr#7460 Commit migrated from https://github.com/dotnet/coreclr/commit/28c8f0adc1c3e97ad7b15fba02eaefdafc1d212c --- src/coreclr/src/jit/gentree.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/coreclr/src/jit/gentree.h b/src/coreclr/src/jit/gentree.h index 7c12f94..2442c40 100644 --- a/src/coreclr/src/jit/gentree.h +++ b/src/coreclr/src/jit/gentree.h @@ -4972,13 +4972,13 @@ inline bool GenTree::IsValidCallArgument() } if (OperIsFieldList()) { -#if defined(LEGACY_BACKEND) || !FEATURE_MULTIREG_ARGS +#if defined(LEGACY_BACKEND) || (!FEATURE_MULTIREG_ARGS && !FEATURE_PUT_STRUCT_ARG_STK) // Not allowed to have a GT_FIELD_LIST for an argument - // unless we have a RyuJIT backend and FEATURE_MULTIREG_ARGS + // unless we have a RyuJIT backend and FEATURE_MULTIREG_ARGS or FEATURE_PUT_STRUCT_ARG_STK return false; -#else // we have RyuJIT backend and FEATURE_MULTIREG_ARGS +#else // we have RyuJIT backend and FEATURE_MULTIREG_ARGS or FEATURE_PUT_STRUCT_ARG_STK #ifdef FEATURE_UNIX_AMD64_STRUCT_PASSING // For UNIX ABI we currently only allow a GT_FIELD_LIST of GT_LCL_FLDs nodes -- 2.7.4