diff options
author | Steve MacLean, Qualcomm Datacenter Technologies, Inc <sdmaclea@qti.qualcomm.com> | 2017-04-26 22:39:03 +0000 |
---|---|---|
committer | Steve MacLean, Qualcomm Datacenter Technologies, Inc <sdmaclea@qti.qualcomm.com> | 2017-04-26 22:40:29 +0000 |
commit | 47261a0e9b82b735d1efcbd8c0ca0a2a3a75b8c9 (patch) | |
tree | fc9ed96ca8985bae781eef4133adf2b53bb8c55b /src/jit/emitarm64.cpp | |
parent | 4a3a184d7187a58aa50a203186dc937b78e57b2a (diff) | |
download | coreclr-47261a0e9b82b735d1efcbd8c0ca0a2a3a75b8c9.tar.gz coreclr-47261a0e9b82b735d1efcbd8c0ca0a2a3a75b8c9.tar.bz2 coreclr-47261a0e9b82b735d1efcbd8c0ca0a2a3a75b8c9.zip |
[Arm64] Update emitOutputInstr to support GC refs in ldp forms
Diffstat (limited to 'src/jit/emitarm64.cpp')
-rw-r--r-- | src/jit/emitarm64.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/jit/emitarm64.cpp b/src/jit/emitarm64.cpp index 0328cb6712..1a56e863e5 100644 --- a/src/jit/emitarm64.cpp +++ b/src/jit/emitarm64.cpp @@ -9331,8 +9331,17 @@ size_t emitter::emitOutputInstr(insGroup* ig, instrDesc* id, BYTE** dp) { // INS_ldp etc... // We assume that "idReg1" and "idReg2" are the destination register for all instructions - emitGCregDeadUpd(id->idReg1(), dst); - emitGCregDeadUpd(id->idReg2(), dst); + // TODO-ARM64-CQ: Current limitations only allows using ldp/stp when both of the GC types match + if (id->idGCref() != GCT_NONE) + { + emitGCregLiveUpd(id->idGCref(), id->idReg1(), dst); + emitGCregLiveUpd(id->idGCref(), id->idReg2(), dst); + } + else + { + emitGCregDeadUpd(id->idReg1(), dst); + emitGCregDeadUpd(id->idReg2(), dst); + } } else { |