ART: Fix UninitializedReference handling
The merge rules in the verifier allowed Object to be successfully
merged with uninitialized references. This is invalid and should
result in a conflict. Fix by moving UninitializedReference rules
earlier.
Also add a test that forward merging is correctly allowed, both
with a valid result as well as a conflict.
Also add tests that backwards branches have the expected behavior.
Bug: 22411633
Change-Id: If837376c15f0b3550d6ce1721a3cde5901c80c7f
diff --git a/test/800-smali/src/Main.java b/test/800-smali/src/Main.java
index 8be6418..8da2af4 100644
--- a/test/800-smali/src/Main.java
+++ b/test/800-smali/src/Main.java
@@ -109,6 +109,16 @@
new Object[] { false }, null, null));
testCases.add(new TestCase("b/22331663 (fail)", "B22331663Fail", "run",
new Object[] { false }, new VerifyError(), null));
+ testCases.add(new TestCase("b/22411633 (1)", "B22411633_1", "run", new Object[] { false },
+ null, null));
+ testCases.add(new TestCase("b/22411633 (2)", "B22411633_2", "run", new Object[] { false },
+ new VerifyError(), null));
+ testCases.add(new TestCase("b/22411633 (3)", "B22411633_3", "run", new Object[] { false },
+ null, null));
+ testCases.add(new TestCase("b/22411633 (4)", "B22411633_4", "run", new Object[] { false },
+ new VerifyError(), null));
+ testCases.add(new TestCase("b/22411633 (5)", "B22411633_5", "run", new Object[] { false },
+ null, null));
}
public void runTests() {