diff options
author | Carol Eidt <carol.eidt@microsoft.com> | 2017-08-18 12:12:40 -0700 |
---|---|---|
committer | Carol Eidt <carol.eidt@microsoft.com> | 2017-08-23 20:42:18 -0700 |
commit | 5495b89a1368ecb279f2d1b39e69fdab96b9faa4 (patch) | |
tree | 3a1ffa0b929936ff8604019d33a5e6d23ca3f4af /src/jit/lsraarmarch.cpp | |
parent | 90d0a3e00eab850b2bac5e685a6ce2aba96f290f (diff) | |
download | coreclr-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.cpp | 7 |
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); } |