[RyuJit][Armel] Do not lose type information (#15449)
authorSergey Andreenko <seandree@microsoft.com>
Fri, 15 Dec 2017 02:17:53 +0000 (18:17 -0800)
committerGitHub <noreply@github.com>
Fri, 15 Dec 2017 02:17:53 +0000 (18:17 -0800)
commit9576b24e491b8a28442dec2696b862dcb29ddc25
treecfa65eb065decd55ec3bed6e45f40076ba29fb75
parent8a09729219e81a4951a6911b1b1eb4a199d0e178
[RyuJit][Armel] Do not lose type information (#15449)

* Do not lose type information

fgMorphMultiregStructArg could lose type information when replaced smth like this:
 GT_OBJ - TYP_STRUCT     <== arg
  + GT_ADDR - TYP_I_IMPL
   +  + GT_LCL_VAR - TYP_BLK  <== argValue

* Move the test to pri0 to test in ci.

* add an assert

* add the test to the arm list

* make the optimization only if struct handlers match.

* format job

* fix for the unoptimized case.

* check that we have addr node.

* change the reason to lvaSetVarDoNotEnregister
src/jit/morph.cpp
tests/src/JIT/Methodical/tailcall/_il_dbgtest_3b.ilproj
tests/testsRunningInsideARM.txt