From a1983d4dab10b0cc51e9d1b6bcafa9a723fabcd9 Mon Sep 17 00:00:00 2001 From: buzbee Date: Mon, 7 Apr 2014 12:35:39 -0700 Subject: [PATCH] Quick compiler: fix CmpLong pair handling OpCmpLong wasn't properly extracting the low register of a pair. Change-Id: I6d6cc3de1f543f4316e561648f371f793502fddb --- compiler/dex/quick/arm/int_arm.cc | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/compiler/dex/quick/arm/int_arm.cc b/compiler/dex/quick/arm/int_arm.cc index 1abb91d23..54c118dae 100644 --- a/compiler/dex/quick/arm/int_arm.cc +++ b/compiler/dex/quick/arm/int_arm.cc @@ -90,8 +90,7 @@ void ArmMir2Lir::OpEndIT(LIR* it) { * neg rX * done: */ -void ArmMir2Lir::GenCmpLong(RegLocation rl_dest, RegLocation rl_src1, - RegLocation rl_src2) { +void ArmMir2Lir::GenCmpLong(RegLocation rl_dest, RegLocation rl_src1, RegLocation rl_src2) { LIR* target1; LIR* target2; rl_src1 = LoadValueWide(rl_src1, kCoreReg); @@ -101,7 +100,7 @@ void ArmMir2Lir::GenCmpLong(RegLocation rl_dest, RegLocation rl_src1, OpRegReg(kOpCmp, rl_src1.reg.GetHigh(), rl_src2.reg.GetHigh()); LIR* branch1 = OpCondBranch(kCondLt, NULL); LIR* branch2 = OpCondBranch(kCondGt, NULL); - OpRegRegReg(kOpSub, t_reg, rl_src1.reg, rl_src2.reg); + OpRegRegReg(kOpSub, t_reg, rl_src1.reg.GetLow(), rl_src2.reg.GetLow()); LIR* branch3 = OpCondBranch(kCondEq, NULL); LIR* it = OpIT(kCondHi, "E"); -- 2.11.0