Set the lvIsMultiRegArgOrRet for a variable containing the result of
authorLubomir Litchev <lubol@microsoft.com>
Thu, 14 Apr 2016 22:36:25 +0000 (15:36 -0700)
committerLubomir Litchev <lubol@microsoft.com>
Fri, 15 Apr 2016 20:59:38 +0000 (13:59 -0700)
commit7ca311c09b75140eeb15bd067ef0590fb1b9f783
tree425926c8a9746eb203f07ee81562149870d2aa3c
parent8cb03be9b2cdd9c14deeedab7f59348be3c18613
Set the lvIsMultiRegArgOrRet for a variable containing the result of
inlined multi-register return call.

This change makes sure the lvIsMultiRegArgOrRet on a variable used to
store the result of inlined multi-register return function is set.
The way the code works today, this is not an issue since the code in
fgAttachStructInlineeToAsg always uses a CopyObj/Blk to asign the return
value from the registers to the var on stack. The CopyBlock/Obj gets the
address of the variable making it address-exposed and that prevents struct
promotion.
In the future (when CopyObj/Blk is not used) not having
lvIsMultiRegArgOrRet set could cause a problem.

Fixes issue 4276.

Commit migrated from https://github.com/dotnet/coreclr/commit/d07a34f33a862a40a1456cbff245a1e141a7264d
src/coreclr/src/jit/codegenxarch.cpp
src/coreclr/src/jit/flowgraph.cpp