#endif // !FEATURE_UNIX_AMD64_STRUCT_PASSING
#ifdef _TARGET_ARMARCH_
- if (varTypeIsStruct(type))
+ if (varTypeIsStruct(type) || arg->OperGet() == GT_FIELD_LIST)
{
arg->SetContained();
if ((arg->OperGet() == GT_OBJ) && (arg->AsObj()->Addr()->OperGet() == GT_LCL_VAR_ADDR))
{
var_types regType = fieldListPtr->gtGetOp1()->TypeGet();
argSplit->m_regType[index] = regType;
+ fieldListPtr->gtRegNum = REG_NA;
}
}
}
GenTreePtr argLo = arg->gtGetOp1();
GenTreePtr argHi = arg->gtGetOp2();
- GenTreeFieldList* fieldListLow = new (comp, GT_FIELD_LIST) GenTreeFieldList(argLo, 0, TYP_INT, nullptr);
- GenTreeFieldList* fieldListHigh =
- new (comp, GT_FIELD_LIST) GenTreeFieldList(argHi, 4, TYP_INT, fieldListLow);
+ GenTreeFieldList* fieldList = new (comp, GT_FIELD_LIST) GenTreeFieldList(argLo, 0, TYP_INT, nullptr);
+ (void)new (comp, GT_FIELD_LIST) GenTreeFieldList(argHi, 4, TYP_INT, fieldList);
- putArg = NewPutArg(call, fieldListLow, info, TYP_INT);
+ putArg = NewPutArg(call, fieldList, info, TYP_VOID);
putArg->gtRegNum = info->regNum;
BlockRange().InsertBefore(arg, putArg);
BlockRange().Remove(arg);
- *ppArg = fieldListLow;
- info->node = fieldListLow;
+
+ *ppArg = fieldList;
+ info->node = fieldList;
// Clear the register assignments on the fieldList nodes, as these are contained.
- fieldListLow->gtRegNum = REG_NA;
- fieldListHigh->gtRegNum = REG_NA;
+ fieldList->gtRegNum = REG_NA;
}
else
{