Fix GC holes for all AMD64 platforms (Windows and System V) and a bug for System...
authorLubomir Litchev <lubol@microsoft.com>
Mon, 29 Feb 2016 06:43:16 +0000 (22:43 -0800)
committerLubomir Litchev <lubol@microsoft.com>
Thu, 3 Mar 2016 07:32:42 +0000 (23:32 -0800)
commit1c81bfeceaf100daa8efffe35acbe48523bced8d
tree5e201b0b3ca4501089614e6cb3a3a99f81475c7d
parent2a93ed2e198832b22cc06add88e71d15ca599e5d
Fix GC holes for all AMD64 platforms (Windows and System V) and a bug for System V OSs in the codegen
for GS cookie comparison on amd64.

Fixes issue dotnet/coreclr#3382.

There is a bug in the genEmitGSCookieCheck method for amd64 having to do
with potentially trashing a second rgister (RDX) for a 2 register returned
struct.

It also sets the byref state for RAX, if needed. And GCRef and BrRef for
RDX, if needed.

Conflicts:
tests/src/JIT/Methodical/structs/systemvbringup/structrettest.cs

Commit migrated from https://github.com/dotnet/coreclr/commit/4e4c15840f8b3a7fcd482dfaff758e475a2a3475
src/coreclr/src/jit/codegenxarch.cpp
src/coreclr/tests/src/JIT/Methodical/structs/systemvbringup/structinregs.csproj
src/coreclr/tests/src/JIT/Methodical/structs/systemvbringup/structrettest.cs