summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--compiler/dex/quick/gen_loadstore.cc2
-rw-r--r--compiler/dex/quick/x86/int_x86.cc1
-rw-r--r--test/083-compiler-regressions/expected.txt1
-rw-r--r--test/083-compiler-regressions/src/Main.java14
4 files changed, 17 insertions, 1 deletions
diff --git a/compiler/dex/quick/gen_loadstore.cc b/compiler/dex/quick/gen_loadstore.cc
index f7c2821afd..7aef93e7c6 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 5f04b7d152..6c3ba4ebab 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) {
diff --git a/test/083-compiler-regressions/expected.txt b/test/083-compiler-regressions/expected.txt
index 57065ef01d..541f0f8dec 100644
--- a/test/083-compiler-regressions/expected.txt
+++ b/test/083-compiler-regressions/expected.txt
@@ -4,6 +4,7 @@ b2487514 passes
b5884080 passes
largeFrame passes
largeFrameFloat passes
+mulBy1Test passes
getterSetterTest passes
identityTest passes
wideGetterSetterTest passes
diff --git a/test/083-compiler-regressions/src/Main.java b/test/083-compiler-regressions/src/Main.java
index 6829388d2a..81f5b14af0 100644
--- a/test/083-compiler-regressions/src/Main.java
+++ b/test/083-compiler-regressions/src/Main.java
@@ -35,6 +35,7 @@ public class Main {
b5884080Test();
largeFrameTest();
largeFrameTestFloat();
+ mulBy1Test();
getterSetterTest();
identityTest();
wideGetterSetterTest();
@@ -161,6 +162,19 @@ public class Main {
}
}
+ static void mulBy1Test() {
+ long res;
+ long j = 1;
+ res = 1 * j + j;
+ if (res == 2L) {
+ System.out.println("mulBy1Test passes");
+ }
+ else {
+ System.out.println("mulBy1Test fails: " + res +
+ " (expecting 2)");
+ }
+ }
+
static void b2296099Test() throws Exception {
int x = -1190771042;
int dist = 360530809;