| Index: src/arm64/macro-assembler-arm64.cc
|
| diff --git a/src/arm64/macro-assembler-arm64.cc b/src/arm64/macro-assembler-arm64.cc
|
| index f2e49b4639cd175e8398a4798a83b327d06ffc4f..ef0fe9be284c5f6c7e7f27ff25941d3e65a02e6a 100644
|
| --- a/src/arm64/macro-assembler-arm64.cc
|
| +++ b/src/arm64/macro-assembler-arm64.cc
|
| @@ -434,7 +434,10 @@ void MacroAssembler::AddSubMacro(const Register& rd,
|
| (rn.IsZero() && !operand.IsShiftedRegister()) ||
|
| (operand.IsShiftedRegister() && (operand.shift() == ROR))) {
|
| UseScratchRegisterScope temps(this);
|
| - Register temp = temps.AcquireSameSizeAs(rn);
|
| + // Use rd as a temp if possible.
|
| + Register temp =
|
| + (rd.Is(rn) || rd.IsSP() || rd.IsZero()) ?
|
| + temps.AcquireSameSizeAs(rn) : rd;
|
| Mov(temp, operand);
|
| AddSub(rd, rn, temp, S, op);
|
| } else {
|
|
|