diff options
author | Carol Eidt <carol.eidt@microsoft.com> | 2018-08-29 14:58:10 -0700 |
---|---|---|
committer | Carol Eidt <carol.eidt@microsoft.com> | 2018-09-12 07:53:20 -0700 |
commit | 6d58642cd13e639501fcb3c1289af3ac9cc40c34 (patch) | |
tree | 6f4a88a411172ca3c4f7d2cde597ec19b29b81d9 /src/jit/gentree.h | |
parent | 598fca6348cbedc9cadb92aabf00b0f6f181bf83 (diff) | |
download | coreclr-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.h | 13 |
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; |