diff options
author | mikaelpeltier <mikaelpeltier@google.com> | 2014-04-10 13:51:09 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-04-10 13:51:10 +0000 |
commit | 0cba1bddf14bffb87404029968edc8f79da98fb3 (patch) | |
tree | 96a4557cd9171ed0ea3a7f8ad4a615b6e853c712 /jack | |
parent | 1779c591bff527dfeaab7fe1d4714c262fa7cc7a (diff) | |
parent | 74861a0908feae71ebda1f2b1d035c923c353f6f (diff) | |
download | toolchain_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.java | 11 |
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"); } } |