diff options
| -rw-r--r-- | compiler/dex/quick/x86/int_x86.cc | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/compiler/dex/quick/x86/int_x86.cc b/compiler/dex/quick/x86/int_x86.cc index d12c05799a..d7eeeac110 100644 --- a/compiler/dex/quick/x86/int_x86.cc +++ b/compiler/dex/quick/x86/int_x86.cc @@ -1200,8 +1200,12 @@ void X86Mir2Lir::GenLongArith(RegLocation rl_dest, RegLocation rl_src1, // We need at least one of them to be a temporary. if (!(IsTemp(rl_src2.reg.GetReg()) && IsTemp(rl_src2.reg.GetHighReg()))) { rl_src1 = ForceTempWide(rl_src1); + GenLongRegOrMemOp(rl_src1, rl_src2, op); + } else { + GenLongRegOrMemOp(rl_src2, rl_src1, op); + StoreFinalValueWide(rl_dest, rl_src2); + return; } - GenLongRegOrMemOp(rl_src1, rl_src2, op); } else { // Need LHS to be the temp. rl_src1 = ForceTempWide(rl_src1); |