summaryrefslogtreecommitdiff
path: root/src/jit/gtlist.h
diff options
context:
space:
mode:
authorCarol Eidt <carol.eidt@microsoft.com>2016-11-09 09:09:49 -0800
committerCarol Eidt <carol.eidt@microsoft.com>2016-11-18 15:32:24 -0800
commitaa676e8b01b29942e82c58011b0e183f923ff2bc (patch)
tree7b5cc4342c35545c2de6d4c5374fd0b3d06b8a72 /src/jit/gtlist.h
parentf4b527dfb2ed02e268e4f1d5318fa79053ede064 (diff)
downloadcoreclr-aa676e8b01b29942e82c58011b0e183f923ff2bc.tar.gz
coreclr-aa676e8b01b29942e82c58011b0e183f923ff2bc.tar.bz2
coreclr-aa676e8b01b29942e82c58011b0e183f923ff2bc.zip
Reinstate the struct optimization changes:
Remove many of the restrictions on structs that were added to preserve behavior of the old IR form. Change the init block representation to not require changing the parent when a copy block is changed to an init. In addition, fix the bug that was causing the corefx ValueTuple tests to fail. This was a bug in assertion prop where it was not invaliding the assertions about the parent struct when a field is modified. Add a repro test case for that bug. Incorporate the fix to #7954, which was encountered after the earlier version of these changes. This was a case where we reused a struct temp, and then it wound up eventually getting assigned the value it originally contained, so we had V09 = V09. This hit the assert in liveness where it wasn't expecting to find a struct assignment with the same lclVar on the lhs and rhs. This assert should have been eliminated with the IR change to struct assignments, but when this situation arises we may run into issues if we call a helper that doesn't expect the lhs and rhs to be the same. So, change morph to eliminate such assignments.
Diffstat (limited to 'src/jit/gtlist.h')
-rw-r--r--src/jit/gtlist.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/jit/gtlist.h b/src/jit/gtlist.h
index a330a6bb37..92265a7359 100644
--- a/src/jit/gtlist.h
+++ b/src/jit/gtlist.h
@@ -93,6 +93,8 @@ GTNODE(SIMD_CHK , "simdChk" ,GenTreeBoundsChk ,0,GTK_SPECIAL|GTK_
GTNODE(ALLOCOBJ , "allocObj" ,GenTreeAllocObj ,0,GTK_UNOP|GTK_EXOP) // object allocator
+GTNODE(INIT_VAL , "initVal" ,GenTreeOp ,0,GTK_UNOP) // Initialization value for an initBlk
+
//-----------------------------------------------------------------------------
// Binary operators (2 operands):
//-----------------------------------------------------------------------------