summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Forstall <brucefo@microsoft.com>2017-04-27 10:45:36 -0700
committerGitHub <noreply@github.com>2017-04-27 10:45:36 -0700
commit368ee30f34fda812d8d936dff4d59b91270453c1 (patch)
tree591909af107cb6d812f21e02b4a4805a8cfeff11
parentbeda361f505e8607ca05fea0bee61e21177ef23b (diff)
parent5b7163c660a81ee39a286c2b28f054678c7109c9 (diff)
downloadcoreclr-368ee30f34fda812d8d936dff4d59b91270453c1.tar.gz
coreclr-368ee30f34fda812d8d936dff4d59b91270453c1.tar.bz2
coreclr-368ee30f34fda812d8d936dff4d59b91270453c1.zip
Merge pull request #11255 from mskvortsov/FixPutArgReg
[RyuJIT/ARM32] Update putarg_reg codegen
-rw-r--r--src/jit/codegenarm.cpp20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/jit/codegenarm.cpp b/src/jit/codegenarm.cpp
index c28b27bf9b..56508038d9 100644
--- a/src/jit/codegenarm.cpp
+++ b/src/jit/codegenarm.cpp
@@ -900,18 +900,18 @@ void CodeGen::genCodeForTreeNode(GenTreePtr treeNode)
break;
case GT_PUTARG_REG:
- {
- NYI_IF(targetType == TYP_STRUCT, "GT_PUTARG_REG: struct support not implemented");
-
- // commas show up here commonly, as part of a nullchk operation
- GenTree* op1 = treeNode->gtOp.gtOp1->gtEffectiveVal();
- // If child node is not already in the register we need, move it
- genConsumeReg(op1);
- if (treeNode->gtRegNum != op1->gtRegNum)
+ assert(targetType != TYP_STRUCT); // Any TYP_STRUCT register args should have been removed by
+ // fgMorphMultiregStructArg
+ // We have a normal non-Struct targetType
{
- inst_RV_RV(ins_Move_Extend(targetType, true), treeNode->gtRegNum, op1->gtRegNum, targetType);
+ GenTree* op1 = treeNode->gtOp.gtOp1;
+ // If child node is not already in the register we need, move it
+ genConsumeReg(op1);
+ if (targetReg != op1->gtRegNum)
+ {
+ inst_RV_RV(ins_Copy(targetType), targetReg, op1->gtRegNum, targetType);
+ }
}
- }
genProduceReg(treeNode);
break;