1st Class Struct Block Assignments
authorCarol Eidt <carol.eidt@microsoft.com>
Thu, 21 Jul 2016 06:07:32 +0000 (23:07 -0700)
committerCarol Eidt <carol.eidt@microsoft.com>
Thu, 1 Sep 2016 19:23:30 +0000 (12:23 -0700)
commitbced93512b54a47ecfc18174c71fa7e3f5499aba
tree1951d27aee23fd3b91d313e53658ef9cb91ce6e7
parenta547628ec39834d77b95fe085cdc5ef70a5fa095
1st Class Struct Block Assignments

Change block ops to assignments, with block nodes (GT_BLK, GT_OBJ and GT_DYN_BLK) as the lhs, and with GT_STORE_* in the backend.
For this initial change, existing behavior is preserved as much as possible, with a few differences in lea generation for SIMD types.
This causes pessimization in some areas; those, as well as the additional opportunities that can be enabled after this change, have all been marked TODO-1stClassStructs.

Commit migrated from https://github.com/dotnet/coreclr/commit/cbaf04647bf4fddaeefb35af024b4d099ee4c25a
28 files changed:
src/coreclr/src/jit/assertionprop.cpp
src/coreclr/src/jit/codegenarm64.cpp
src/coreclr/src/jit/codegenlegacy.cpp
src/coreclr/src/jit/codegenlinear.h
src/coreclr/src/jit/codegenxarch.cpp [changed mode: 0755->0644]
src/coreclr/src/jit/compiler.cpp
src/coreclr/src/jit/compiler.h
src/coreclr/src/jit/compiler.hpp
src/coreclr/src/jit/flowgraph.cpp
src/coreclr/src/jit/gentree.cpp
src/coreclr/src/jit/gentree.h
src/coreclr/src/jit/gschecks.cpp
src/coreclr/src/jit/gtlist.h
src/coreclr/src/jit/gtstructs.h
src/coreclr/src/jit/importer.cpp
src/coreclr/src/jit/liveness.cpp
src/coreclr/src/jit/lower.cpp
src/coreclr/src/jit/lower.h
src/coreclr/src/jit/lowerarm64.cpp
src/coreclr/src/jit/lowerxarch.cpp
src/coreclr/src/jit/lsra.cpp
src/coreclr/src/jit/morph.cpp [changed mode: 0755->0644]
src/coreclr/src/jit/optimizer.cpp
src/coreclr/src/jit/rationalize.cpp
src/coreclr/src/jit/rationalize.h
src/coreclr/src/jit/regalloc.cpp
src/coreclr/src/jit/simd.cpp
src/coreclr/src/jit/valuenum.cpp