From 3da20a179409f6232d9844f1525f45d01c14aaa1 Mon Sep 17 00:00:00 2001 From: Carol Eidt Date: Wed, 4 Oct 2017 17:42:07 -0700 Subject: 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. --- src/jit/gtlist.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/jit/gtlist.h') diff --git a/src/jit/gtlist.h b/src/jit/gtlist.h index 939f00c334..110fe3b29c 100644 --- a/src/jit/gtlist.h +++ b/src/jit/gtlist.h @@ -57,7 +57,7 @@ GTNODE(ARR_LENGTH , GenTreeArrLen ,0,GTK_UNOP|GTK_EXOP) // array GTNODE(INTRINSIC , GenTreeIntrinsic ,0,GTK_BINOP|GTK_EXOP) // intrinsics -GTNODE(LOCKADD , GenTreeOp ,0,GTK_BINOP|GTK_NOVALUE) +GTNODE(LOCKADD , GenTreeOp ,0,GTK_BINOP) GTNODE(XADD , GenTreeOp ,0,GTK_BINOP) GTNODE(XCHG , GenTreeOp ,0,GTK_BINOP) GTNODE(CMPXCHG , GenTreeCmpXchg ,0,GTK_SPECIAL) -- cgit v1.2.3