summaryrefslogtreecommitdiffstats
path: root/jack
diff options
context:
space:
mode:
authormikaelpeltier <mikaelpeltier@google.com>2014-04-10 13:51:09 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-04-10 13:51:10 +0000
commit0cba1bddf14bffb87404029968edc8f79da98fb3 (patch)
tree96a4557cd9171ed0ea3a7f8ad4a615b6e853c712 /jack
parent1779c591bff527dfeaab7fe1d4714c262fa7cc7a (diff)
parent74861a0908feae71ebda1f2b1d035c923c353f6f (diff)
downloadtoolchain_jack-0cba1bddf14bffb87404029968edc8f79da98fb3.zip
toolchain_jack-0cba1bddf14bffb87404029968edc8f79da98fb3.tar.gz
toolchain_jack-0cba1bddf14bffb87404029968edc8f79da98fb3.tar.bz2
Merge "Fix bug in register overlapping detection" into jack-wip-dev
Diffstat (limited to 'jack')
-rw-r--r--jack/tests/com/android/jack/DxTest.java11
1 files changed, 9 insertions, 2 deletions
diff --git a/jack/tests/com/android/jack/DxTest.java b/jack/tests/com/android/jack/DxTest.java
index 34631e1..28a0738 100644
--- a/jack/tests/com/android/jack/DxTest.java
+++ b/jack/tests/com/android/jack/DxTest.java
@@ -141,8 +141,15 @@ public class DxTest {
for (AnalyzedInstruction ai : ma.getInstructions()) {
if (ai.getInstruction() instanceof Instruction23x) {
Instruction23x inst = (Instruction23x) ai.getInstruction();
- if (inst.getRegisterA() == inst.getRegisterC()
- || inst.getRegisterA() == inst.getRegisterC() + 1) {
+ // Register overlaps in the following cases
+ // v0, v1 = ..., v1, v2
+ // v0, v1 = v1, v2, ...
+ // v1, v2 = ..., v0, v1
+ // v1, v2 = v0, v1, ...
+ if (inst.getRegisterA() + 1 == inst.getRegisterC()
+ || inst.getRegisterA() + 1 == inst.getRegisterB()
+ || inst.getRegisterA() == inst.getRegisterC() + 1
+ || inst.getRegisterA() == inst.getRegisterB() + 1) {
Assert.fail("Register overlapping");
}
}