Fix for RETURNTRAP xarch codegen. (#16292)
authorEugene Rozenfeld <erozen@microsoft.com>
Fri, 9 Feb 2018 23:45:37 +0000 (15:45 -0800)
committerGitHub <noreply@github.com>
Fri, 9 Feb 2018 23:45:37 +0000 (15:45 -0800)
commit08fcf96de5595cfebcc035654ed0c305d4a52668
treea8e73cf8f53669dd813c6194ebe5cacb5476db04
parent355b458ab9ec00245996e40d5b0898093aa7ccc2
Fix for RETURNTRAP xarch codegen. (#16292)

This fixes a bug that caused an assert in GetSingleTempReg.
In this case we had an an interop call (resulting in RETURNTRAP in its epilog)
when there are live 256 bit values at the callsite.
The bug was that codegen for RETURNTRAP node requested a single temp register
and asserted that there was only one. In this case the set of temp registers
includes floating-point registers that may be needed for saving/restoring the upper
part of 256-bit registers. The fix was for codegen to request a single temp int register.
GetSingleTempReg will assert that there was only one int register in this case.
src/jit/codegenxarch.cpp
tests/src/JIT/Regression/JitBlue/DevDiv_546018/DevDiv_546018.cs [new file with mode: 0644]
tests/src/JIT/Regression/JitBlue/DevDiv_546018/DevDiv_546018.csproj [new file with mode: 0644]