From: Carol Eidt Date: Mon, 3 Oct 2016 23:12:46 +0000 (-0700) Subject: Allow GT_FIELD_LIST as legal arg for RyuJIT/x86 X-Git-Tag: submit/tizen/20210909.063632~11030^2~9283^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0c781aa8d4daaa9bfbf08529ef917f1543dcb709;p=platform%2Fupstream%2Fdotnet%2Fruntime.git 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 --- 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