Support GT_OBJ for x86
authorCarol Eidt <carol.eidt@microsoft.com>
Sat, 10 Sep 2016 15:24:51 +0000 (08:24 -0700)
committerCarol Eidt <carol.eidt@microsoft.com>
Tue, 20 Sep 2016 21:20:52 +0000 (14:20 -0700)
commitbce65e4b178fdb0766bb4f437fc3dce74854a0c5
treea366ba6627b03f73090756a3f33679e27070e961
parent8b58a55a88883580b14af80ac47ea12fae7d7592
Support GT_OBJ for x86

Add support for GT_OBJ for x86, and allow them to be transformed into a list
of fields (in morph) if it is a promoted struct. Add a new list type for
this (GT_FIELD_LIST) with the type and offset, and use it for the multireg
arg passing as well for consistency.
Also refactor fgMorphArgs so that there is a positive check for reMorphing,
rather than relying on gtCallLateArgs, which can be null if there are no
register args.
In codegenxarch, modify the struct passing (genPutStructArgStk) to work for
both the x64/ux and x86 case, including the option of pushing fields onto
the stack.
Eliminate the redundant INS_movs_ptr, and replace with the pre-existing
INS_movsp.

Commit migrated from https://github.com/dotnet/coreclr/commit/e550cf35bd5ff8e7eefcb1a605219f71a3672d83
23 files changed:
src/coreclr/src/jit/codegenarm.cpp
src/coreclr/src/jit/codegenarm64.cpp
src/coreclr/src/jit/codegencommon.cpp
src/coreclr/src/jit/codegenlinear.h
src/coreclr/src/jit/codegenxarch.cpp
src/coreclr/src/jit/compiler.h
src/coreclr/src/jit/flowgraph.cpp
src/coreclr/src/jit/gentree.cpp
src/coreclr/src/jit/gentree.h
src/coreclr/src/jit/gtlist.h
src/coreclr/src/jit/gtstructs.h
src/coreclr/src/jit/importer.cpp
src/coreclr/src/jit/instr.h
src/coreclr/src/jit/jit.h
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
src/coreclr/src/jit/rationalize.cpp
src/coreclr/src/jit/regalloc.cpp
src/coreclr/src/jit/valuenum.cpp