diff options
author | Carol Eidt <carol.eidt@microsoft.com> | 2017-07-09 22:55:28 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-07-09 22:55:28 -0700 |
commit | 74a3f9691e490e9732da55c46b678159c64fae74 (patch) | |
tree | 6e6982ada8cd67b795e32c8563b5f6353f463707 /src/jit/codegenarmarch.cpp | |
parent | 07207c0402a0d822b910935e3054faaca293ddfd (diff) | |
parent | 0c1b669e53f73e8c1e4967ff436eb25b0cb57155 (diff) | |
download | coreclr-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.cpp | 10 |
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 |