summaryrefslogtreecommitdiff
path: root/src/jit/gentree.h
diff options
context:
space:
mode:
authorCarol Eidt <carol.eidt@microsoft.com>2018-08-29 14:58:10 -0700
committerCarol Eidt <carol.eidt@microsoft.com>2018-09-12 07:53:20 -0700
commit6d58642cd13e639501fcb3c1289af3ac9cc40c34 (patch)
tree6f4a88a411172ca3c4f7d2cde597ec19b29b81d9 /src/jit/gentree.h
parent598fca6348cbedc9cadb92aabf00b0f6f181bf83 (diff)
downloadcoreclr-6d58642cd13e639501fcb3c1289af3ac9cc40c34.tar.gz
coreclr-6d58642cd13e639501fcb3c1289af3ac9cc40c34.tar.bz2
coreclr-6d58642cd13e639501fcb3c1289af3ac9cc40c34.zip
Arm: Correctly handle multi-reg COPY
Fix #19448
Diffstat (limited to 'src/jit/gentree.h')
-rw-r--r--src/jit/gentree.h13
1 files changed, 4 insertions, 9 deletions
diff --git a/src/jit/gentree.h b/src/jit/gentree.h
index d14ad1a802..c6466506e2 100644
--- a/src/jit/gentree.h
+++ b/src/jit/gentree.h
@@ -3618,10 +3618,6 @@ struct GenTreeCall final : public GenTree
// Return Value:
// True if the call is returning a multi-reg return value. False otherwise.
//
- // Note:
- // This is implemented only for x64 Unix and yet to be implemented for
- // other multi-reg return target arch (arm64/arm32/x86).
- //
bool HasMultiRegRetVal() const
{
#if defined(_TARGET_X86_)
@@ -3967,14 +3963,13 @@ struct GenTreeMultiRegOp : public GenTreeOp
var_types GetRegType(unsigned index)
{
assert(index < 2);
- // The type of register is usually the same as GenTree type
- // since most of time GenTreeMultiRegOp uses only a single reg (when gtOtherReg is REG_NA).
- // The special case is when we have TYP_LONG here, which was `TYP_DOUBLE` originally
- // (copied to int regs for argument push on armel). Then we need to separate them into int for each index.
+ // The type of register is usually the same as GenTree type, since GenTreeMultiRegOp usually defines a single
+ // reg.
+ // The special case is when we have TYP_LONG, which may be a MUL_LONG, or a DOUBLE arg passed as LONG,
+ // in which case we need to separate them into int for each index.
var_types result = TypeGet();
if (result == TYP_LONG)
{
- assert(gtOtherReg != REG_NA);
result = TYP_INT;
}
return result;