From e550cf35bd5ff8e7eefcb1a605219f71a3672d83 Mon Sep 17 00:00:00 2001 From: Carol Eidt Date: Sat, 10 Sep 2016 08:24:51 -0700 Subject: 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. --- src/jit/gtlist.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/jit/gtlist.h') diff --git a/src/jit/gtlist.h b/src/jit/gtlist.h index 3bf360355b..edd246d328 100644 --- a/src/jit/gtlist.h +++ b/src/jit/gtlist.h @@ -202,7 +202,8 @@ GTNODE(SIMD , "simd" ,GenTreeSIMD ,0,GTK_BINOP|GTK_EX GTNODE(JTRUE , "jmpTrue" ,GenTreeOp ,0,GTK_UNOP|GTK_NOVALUE) GTNODE(JCC , "jcc" ,GenTreeJumpCC ,0,GTK_LEAF|GTK_NOVALUE) -GTNODE(LIST , "" ,GenTreeOp ,0,GTK_BINOP) +GTNODE(LIST , "" ,GenTreeArgList ,0,GTK_BINOP|GTK_NOVALUE) +GTNODE(FIELD_LIST , "" ,GenTreeFieldList ,0,GTK_BINOP) // List of fields of a struct, when passed as an argument //----------------------------------------------------------------------------- // Other nodes that have special structure: -- cgit v1.2.3