From eb9f6ab7973947c39cfb05039f9fd16d60ad929d Mon Sep 17 00:00:00 2001 From: Jan Vorlicek Date: Tue, 3 May 2016 06:22:11 +0200 Subject: [PATCH] Fix handling of FP args on stack in the ArgIterator (dotnet/coreclr#4729) This change fixes a bug in the ArgIterator that resulted in assigning floating point arguments that didn't fit to the xmm registers to general purpose registers in the ArgIterator if there were some general purpose registers available. Commit migrated from https://github.com/dotnet/coreclr/commit/92e2d4e6fe1d1af3ee761637f1c99e4e8616282c --- src/coreclr/src/vm/callingconvention.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/coreclr/src/vm/callingconvention.h b/src/coreclr/src/vm/callingconvention.h index fbf966f..e637ff4 100644 --- a/src/coreclr/src/vm/callingconvention.h +++ b/src/coreclr/src/vm/callingconvention.h @@ -954,8 +954,8 @@ int ArgIteratorTemplate::GetNextOffset() m_fArgInRegisters = true; int cFPRegs = 0; + int cGenRegs = 0; int cbArg = StackElemSize(argSize); - int cGenRegs = cbArg / 8; // GP reg size switch (argType) { @@ -1027,6 +1027,7 @@ int ArgIteratorTemplate::GetNextOffset() } default: + cGenRegs = cbArg / 8; // GP reg size break; } -- 2.7.4