summaryrefslogtreecommitdiffstats
path: root/compiler
diff options
context:
space:
mode:
authorBill Buzbee <buzbee@android.com>2014-03-03 18:52:03 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2014-03-03 18:52:03 +0000
commitf796ca0715d0cb6f5afe00b3df00e80f99e186f7 (patch)
treefd6c9d547ce6b1c8b3877838e93d48a47cc976f5 /compiler
parent45042c09062e23bc7bc7aa5b0ccc66b2c327e6d9 (diff)
parentc17ebe866beb50eb6da1e6a47555cb4731467f3b (diff)
downloadart-f796ca0715d0cb6f5afe00b3df00e80f99e186f7.zip
art-f796ca0715d0cb6f5afe00b3df00e80f99e186f7.tar.gz
art-f796ca0715d0cb6f5afe00b3df00e80f99e186f7.tar.bz2
Merge "Incorrect result of the "mul-long by 1" operation"
Diffstat (limited to 'compiler')
-rw-r--r--compiler/dex/quick/gen_loadstore.cc2
-rw-r--r--compiler/dex/quick/x86/int_x86.cc1
2 files changed, 2 insertions, 1 deletions
diff --git a/compiler/dex/quick/gen_loadstore.cc b/compiler/dex/quick/gen_loadstore.cc
index f7c2821..7aef93e 100644
--- a/compiler/dex/quick/gen_loadstore.cc
+++ b/compiler/dex/quick/gen_loadstore.cc
@@ -240,6 +240,8 @@ void Mir2Lir::StoreValueWide(RegLocation rl_dest, RegLocation rl_src) {
DCHECK_EQ(IsFpReg(rl_src.low_reg), IsFpReg(rl_src.high_reg));
DCHECK(rl_dest.wide);
DCHECK(rl_src.wide);
+ rl_src = UpdateLocWide(rl_src);
+ rl_dest = UpdateLocWide(rl_dest);
if (rl_src.location == kLocPhysReg) {
if (IsLive(rl_src.low_reg) ||
IsLive(rl_src.high_reg) ||
diff --git a/compiler/dex/quick/x86/int_x86.cc b/compiler/dex/quick/x86/int_x86.cc
index 5f04b7d..6c3ba4e 100644
--- a/compiler/dex/quick/x86/int_x86.cc
+++ b/compiler/dex/quick/x86/int_x86.cc
@@ -923,7 +923,6 @@ void X86Mir2Lir::GenMulLong(Instruction::Code, RegLocation rl_dest, RegLocation
StoreValueWide(rl_dest, rl_result);
return;
} else if (val == 1) {
- rl_src1 = EvalLocWide(rl_src1, kCoreReg, true);
StoreValueWide(rl_dest, rl_src1);
return;
} else if (val == 2) {