Fix case where block has no predecessor for StringChange.

Removes part that checks for throwing half of instruction. It's no
longer necessary. Also adds regression test.

Bug: 21902684
Change-Id: Ic600165e6b3719de3d83a73b8a1fa64473668fc8
diff --git a/compiler/dex/mir_optimization.cc b/compiler/dex/mir_optimization.cc
index 727d0fd..5bb0ce3 100644
--- a/compiler/dex/mir_optimization.cc
+++ b/compiler/dex/mir_optimization.cc
@@ -1667,15 +1667,9 @@
       if (opcode == Instruction::NEW_INSTANCE) {
         uint32_t type_idx = mir->dalvikInsn.vB;
         if (cu_->compiler_driver->IsStringTypeIndex(type_idx, cu_->dex_file)) {
-          // Change NEW_INSTANCE and throwing half of the insn (if it exists) into CONST_4 of 0
+          // Change NEW_INSTANCE into CONST_4 of 0
           mir->dalvikInsn.opcode = Instruction::CONST_4;
           mir->dalvikInsn.vB = 0;
-          MIR* check_mir = GetBasicBlock(bb->predecessors[0])->last_mir_insn;
-          if (check_mir != nullptr &&
-              static_cast<int>(check_mir->dalvikInsn.opcode) == kMirOpCheck) {
-            check_mir->dalvikInsn.opcode = static_cast<Instruction::Code>(kMirOpNop);
-            check_mir->dalvikInsn.vB = 0;
-          }
         }
       } else if ((opcode == Instruction::INVOKE_DIRECT) ||
                  (opcode == Instruction::INVOKE_DIRECT_RANGE)) {
diff --git a/test/800-smali/expected.txt b/test/800-smali/expected.txt
index e2075da..284c7ec 100644
--- a/test/800-smali/expected.txt
+++ b/test/800-smali/expected.txt
@@ -18,4 +18,5 @@
 b/20224106
 b/21873167
 b/21614284
+b/21902684
 Done!
diff --git a/test/800-smali/smali/b_21902684.smali b/test/800-smali/smali/b_21902684.smali
new file mode 100644
index 0000000..2d906b6
--- /dev/null
+++ b/test/800-smali/smali/b_21902684.smali
@@ -0,0 +1,17 @@
+.class public LB21902684;
+.super Ljava/lang/Object;
+
+.method public constructor <init>()V
+    .registers 1
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+    return-void
+.end method
+
+.method public test()V
+    .registers 1
+    goto :end
+    new-instance v0, Ljava/lang/String;
+    invoke-direct {v0}, Ljava/lang/String;-><init>()V
+    :end
+    return-void
+.end method
diff --git a/test/800-smali/src/Main.java b/test/800-smali/src/Main.java
index 4c6da63..8d66783 100644
--- a/test/800-smali/src/Main.java
+++ b/test/800-smali/src/Main.java
@@ -84,6 +84,7 @@
         testCases.add(new TestCase("b/21873167", "B21873167", "test", null, null, null));
         testCases.add(new TestCase("b/21614284", "B21614284", "test", new Object[] { null },
             new NullPointerException(), null));
+        testCases.add(new TestCase("b/21902684", "B21902684", "test", null, null, null));
     }
 
     public void runTests() {