summaryrefslogtreecommitdiff
path: root/src/jit/lsraarmarch.cpp
diff options
context:
space:
mode:
authorCarol Eidt <carol.eidt@microsoft.com>2017-10-04 17:42:07 -0700
committerCarol Eidt <carol.eidt@microsoft.com>2017-10-11 11:13:15 -0700
commit3da20a179409f6232d9844f1525f45d01c14aaa1 (patch)
tree934ec47fe75eb6dbd046ef2b9438a2a3b6c439c7 /src/jit/lsraarmarch.cpp
parent65738239e7a50615d0fc50dcbe5b1b6086f96ef2 (diff)
downloadcoreclr-3da20a179409f6232d9844f1525f45d01c14aaa1.tar.gz
coreclr-3da20a179409f6232d9844f1525f45d01c14aaa1.tar.bz2
coreclr-3da20a179409f6232d9844f1525f45d01c14aaa1.zip
Cleanup of Lowering & LsraInfo
These are preparatory changes for eliminating gtLsraInfo. Register requirements should never be set on contained nodes. This includes setting isDelayFree and restricting to byte registers for x86. - This results in net positive diffs for the framework (eliminating incorrect setting of hasDelayFreeSrc), though a net regression for the tests on x86 (including many instances of effectively the same code). - The regressions are largely related to issue #11274. Improve consistency of IsValue(): - Any node that can be contained should produce a value, and have a type (e.g. GT_FIELD_LIST). - Some value nodes (GTK_NOVALUE isn't set) are allowed to have TYP_VOID, in which case IsValue() should return false. - This simplifies IsValue(). - Any node that can be assigned a register should return true for IsValue() (e.g. GT_LOCKADD). - PUTARG_STK doesn't produce a value; get type from its operand. - This requires some fixing up of SIMD12 operands. - Unused GT_LONG nodes shouldn't define any registers Eliminate isNoRegCompare, by setting type of JTRUE operand to TYP_VOID - Set GTF_SET_FLAGS on the operand to ensure it is not eliminated as dead code.
Diffstat (limited to 'src/jit/lsraarmarch.cpp')
-rw-r--r--src/jit/lsraarmarch.cpp9
1 files changed, 1 insertions, 8 deletions
diff --git a/src/jit/lsraarmarch.cpp b/src/jit/lsraarmarch.cpp
index 53e223dab6..9351ede35c 100644
--- a/src/jit/lsraarmarch.cpp
+++ b/src/jit/lsraarmarch.cpp
@@ -92,15 +92,8 @@ void LinearScan::TreeNodeInfoInitCmp(GenTreePtr tree)
{
TreeNodeInfo* info = &(tree->gtLsraInfo);
+ assert((info->dstCount == 1) || (tree->TypeGet() == TYP_VOID));
info->srcCount = tree->gtOp.gtOp2->isContained() ? 1 : 2;
- if (info->isNoRegCompare)
- {
- info->dstCount = 0;
- }
- else
- {
- assert((info->dstCount == 1) || tree->OperIs(GT_CMP, GT_TEST_EQ, GT_TEST_NE));
- }
}
void LinearScan::TreeNodeInfoInitGCWriteBarrier(GenTree* tree)