Version 0.1.14.
Merge: Fix bug in shortening of live ranges.
CL: https://r8-review.googlesource.com/c/r8/+/6802
Change-Id: I3c283fed6937b47c416b5dbfbf885012d1890612
diff --git a/src/main/java/com/android/tools/r8/D8.java b/src/main/java/com/android/tools/r8/D8.java
index 7c38555..7280fc3 100644
--- a/src/main/java/com/android/tools/r8/D8.java
+++ b/src/main/java/com/android/tools/r8/D8.java
@@ -55,7 +55,7 @@
*/
public final class D8 {
- private static final String VERSION = "v0.1.13";
+ private static final String VERSION = "v0.1.14";
private static final int STATUS_ERROR = 1;
private D8() {}
diff --git a/src/main/java/com/android/tools/r8/R8.java b/src/main/java/com/android/tools/r8/R8.java
index a2fcbf1..f723d7b 100644
--- a/src/main/java/com/android/tools/r8/R8.java
+++ b/src/main/java/com/android/tools/r8/R8.java
@@ -71,7 +71,7 @@
public class R8 {
- private static final String VERSION = "v0.1.13";
+ private static final String VERSION = "v0.1.14";
private final Timing timing = new Timing("R8");
private final InternalOptions options;
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java b/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
index ff350a6..c0b5f44 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
@@ -966,11 +966,10 @@
InstructionListIterator insertAt = block.listIterator();
// Place the instruction as late in the block as we can. It needs to go before users
// and if we have catch handlers it needs to be placed before the throwing instruction.
- insertAt.nextUntil(i -> {
- return i.inValues().contains(instruction.outValue())
- || i.isJumpInstruction()
- || (hasCatchHandlers && i.instructionInstanceCanThrow());
- });
+ insertAt.nextUntil(i ->
+ i.inValues().contains(instruction.outValue())
+ || i.isJumpInstruction()
+ || (hasCatchHandlers && i.instructionTypeCanThrow()));
insertAt.previous();
insertAt.add(instruction);
}
diff --git a/src/test/examples/regress_65104300/Regress.java b/src/test/examples/regress_65104300/Regress.java
new file mode 100644
index 0000000..05a4333
--- /dev/null
+++ b/src/test/examples/regress_65104300/Regress.java
@@ -0,0 +1,20 @@
+// Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+package regress_65104300;
+
+public class Regress {
+ // We correctly deduce that the array put cannot throw. However, we had a bug
+ // where we did not remove the handler but we allowed lowering the const 0 below
+ // the array put which makes it unavailable in the handler block.
+ public static void main(String[] args) {
+ Object[] objects = new Object[10];
+ Object o = new Object();
+ try {
+ objects[4] = o;
+ System.out.println(0);
+ } catch (Exception e) {
+ System.out.println(0);
+ }
+ }
+}
diff --git a/src/test/java/com/android/tools/r8/R8RunExamplesTest.java b/src/test/java/com/android/tools/r8/R8RunExamplesTest.java
index 5e265aa..e8f1c86 100644
--- a/src/test/java/com/android/tools/r8/R8RunExamplesTest.java
+++ b/src/test/java/com/android/tools/r8/R8RunExamplesTest.java
@@ -103,6 +103,7 @@
"regress_37875803.Regress",
"regress_37955340.Regress",
"regress_62300145.Regress",
+ "regress_65104300.Regress",
"memberrebinding2.Memberrebinding",
"memberrebinding3.Memberrebinding",
"minification.Minification",