summaryrefslogtreecommitdiffstats
path: root/test/800-smali/smali/b_22331663_fail.smali
diff options
context:
space:
mode:
authorAndreas Gampe <agampe@google.com>2015-07-09 11:30:14 -0700
committerAndreas Gampe <agampe@google.com>2015-07-09 15:18:13 -0700
commit25e1af5b4e1ce7e03a188ca1d0197a9f5b6acaf8 (patch)
tree9e1c4605e49d0e9ee7243696d7a8a98e5897c336 /test/800-smali/smali/b_22331663_fail.smali
parentc08e0c73bb397bc535c299dc0b9062f9ee2d86a0 (diff)
downloadart-25e1af5b4e1ce7e03a188ca1d0197a9f5b6acaf8.zip
art-25e1af5b4e1ce7e03a188ca1d0197a9f5b6acaf8.tar.gz
art-25e1af5b4e1ce7e03a188ca1d0197a9f5b6acaf8.tar.bz2
ART: Change merges with Undefined to Undefined
The result of a merge with an Undefined type should be Undefined. Conflicts are allowed to be copied around, but Undefined registers should not be touched at all, except to be written into. Add a success test case (the register isn't used) and a fail test case (the register is tried to be copied). Bug: 22331663 Bug: 22371999 (cherry picked from commit 97a1ff353f254b6e46c7501fe3f0e3254c2517b4) Change-Id: I9697ce31c1d2ab5aee0433dcf1253bcca79c2983
Diffstat (limited to 'test/800-smali/smali/b_22331663_fail.smali')
-rw-r--r--test/800-smali/smali/b_22331663_fail.smali20
1 files changed, 20 insertions, 0 deletions
diff --git a/test/800-smali/smali/b_22331663_fail.smali b/test/800-smali/smali/b_22331663_fail.smali
new file mode 100644
index 0000000..0c25e30
--- /dev/null
+++ b/test/800-smali/smali/b_22331663_fail.smali
@@ -0,0 +1,20 @@
+.class public LB22331663Fail;
+.super Ljava/lang/Object;
+
+
+.method public static run(Z)V
+.registers 6
+ if-eqz v5, :Label1
+
+ # Construct a java.lang.Object completely. This makes v4 of reference type.
+ new-instance v4, Ljava/lang/Object;
+ invoke-direct {v4}, Ljava/lang/Object;-><init>()V
+
+:Label1
+ # At this point, v4 is the merge of Undefined and ReferenceType. The verifier should
+ # reject any use of this, even a copy. Previously this was a conflict. Conflicts must
+ # be movable now, so ensure that we do not get a conflict (and then allow the move).
+ move-object v0, v4
+
+ return-void
+.end method