summaryrefslogtreecommitdiff
path: root/src/jit/lsraarmarch.cpp
diff options
context:
space:
mode:
authorCarol Eidt <carol.eidt@microsoft.com>2017-08-18 12:12:40 -0700
committerCarol Eidt <carol.eidt@microsoft.com>2017-08-23 20:42:18 -0700
commit5495b89a1368ecb279f2d1b39e69fdab96b9faa4 (patch)
tree3a1ffa0b929936ff8604019d33a5e6d23ca3f4af /src/jit/lsraarmarch.cpp
parent90d0a3e00eab850b2bac5e685a6ce2aba96f290f (diff)
downloadcoreclr-5495b89a1368ecb279f2d1b39e69fdab96b9faa4.tar.gz
coreclr-5495b89a1368ecb279f2d1b39e69fdab96b9faa4.tar.bz2
coreclr-5495b89a1368ecb279f2d1b39e69fdab96b9faa4.zip
Fix ARM issues with Containment
These are changes that should have been part of PR #13198: - Correctly contain struct arguments - Correctly get number of source registers - Clear register assignments on `GT_FIELD_LIST` nodes (thanks @hseok-oh). - Remove now-redundant `ContainCheck` methods for armarch targets.
Diffstat (limited to 'src/jit/lsraarmarch.cpp')
-rw-r--r--src/jit/lsraarmarch.cpp7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/jit/lsraarmarch.cpp b/src/jit/lsraarmarch.cpp
index 08fb4ba409..471fff4930 100644
--- a/src/jit/lsraarmarch.cpp
+++ b/src/jit/lsraarmarch.cpp
@@ -236,8 +236,6 @@ void Lowering::TreeNodeInfoInitIndir(GenTreeIndir* indirTree)
//
void Lowering::TreeNodeInfoInitShiftRotate(GenTree* tree)
{
- ContainCheckShiftRotate(tree->AsOp());
-
TreeNodeInfo* info = &(tree->gtLsraInfo);
LinearScan* l = m_lsra;
@@ -534,6 +532,7 @@ void Lowering::TreeNodeInfoInitCall(GenTreeCall* call)
else if (argNode->OperGet() == GT_PUTARG_SPLIT)
{
fgArgTabEntryPtr curArgTabEntry = compiler->gtArgEntryByNode(call, argNode);
+ info->srcCount += argNode->AsPutArgSplit()->gtNumRegs;
}
#endif
else
@@ -665,7 +664,7 @@ void Lowering::TreeNodeInfoInitPutArgStk(GenTreePutArgStk* argNode)
}
}
- // We will generate all of the code for the GT_PUTARG_STK and it's child node
+ // We will generate all of the code for the GT_PUTARG_STK and its child node
// as one contained operation
//
argNode->gtLsraInfo.srcCount = putArgChild->gtLsraInfo.srcCount;
@@ -928,7 +927,7 @@ void Lowering::TreeNodeInfoInitBlockStore(GenTreeBlk* blkNode)
{
// The block size argument is a third argument to GT_STORE_DYN_BLK
assert(blkNode->gtOper == GT_STORE_DYN_BLK);
- blkNode->gtLsraInfo.setSrcCount(3);
+ blkNode->gtLsraInfo.srcCount++;
GenTree* blockSize = blkNode->AsDynBlk()->gtDynamicSize;
blockSize->gtLsraInfo.setSrcCandidates(l, RBM_ARG_2);
}