summaryrefslogtreecommitdiff
path: root/src/jit/codegenarmarch.cpp
diff options
context:
space:
mode:
authorCarol Eidt <carol.eidt@microsoft.com>2017-07-09 22:55:28 -0700
committerGitHub <noreply@github.com>2017-07-09 22:55:28 -0700
commit74a3f9691e490e9732da55c46b678159c64fae74 (patch)
tree6e6982ada8cd67b795e32c8563b5f6353f463707 /src/jit/codegenarmarch.cpp
parent07207c0402a0d822b910935e3054faaca293ddfd (diff)
parent0c1b669e53f73e8c1e4967ff436eb25b0cb57155 (diff)
downloadcoreclr-74a3f9691e490e9732da55c46b678159c64fae74.tar.gz
coreclr-74a3f9691e490e9732da55c46b678159c64fae74.tar.bz2
coreclr-74a3f9691e490e9732da55c46b678159c64fae74.zip
Merge pull request #12572 from wateret/armel/dblarg_stack
[RyuJIT/armel] Passing stack double arguments
Diffstat (limited to 'src/jit/codegenarmarch.cpp')
-rw-r--r--src/jit/codegenarmarch.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/jit/codegenarmarch.cpp b/src/jit/codegenarmarch.cpp
index bb5069ac1d..e5146445a4 100644
--- a/src/jit/codegenarmarch.cpp
+++ b/src/jit/codegenarmarch.cpp
@@ -555,6 +555,16 @@ void CodeGen::genPutArgStk(GenTreePutArgStk* treeNode)
{
genConsumeReg(source);
emit->emitIns_S_R(storeIns, storeAttr, source->gtRegNum, varNumOut, argOffsetOut);
+ if (compiler->opts.compUseSoftFP && targetType == TYP_LONG)
+ {
+ // This case currently only occurs for double types that are passed as TYP_LONG;
+ // actual long types would have been decomposed by now.
+ assert(source->IsCopyOrReload());
+ regNumber otherReg = (regNumber)source->AsCopyOrReload()->GetRegNumByIdx(1);
+ assert(otherReg != REG_NA);
+ argOffsetOut += EA_4BYTE;
+ emit->emitIns_S_R(storeIns, storeAttr, otherReg, varNumOut, argOffsetOut);
+ }
}
argOffsetOut += EA_SIZE_IN_BYTES(storeAttr);
assert(argOffsetOut <= argOffsetMax); // We can't write beyound the outgoing area area