diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2017-10-06 23:45:20 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2017-10-06 23:45:20 +0000 |
commit | d1078b63db714e1afc9bc40de95de325ea427493 (patch) | |
tree | 2933454aae32ee7a341b336bd604eb8a60bf3c36 | |
parent | 76fd6fcc56db28e0ad2ca710283cd3ae77d0d80c (diff) | |
parent | a75b3015cca5dcc833f5c4834040825875742ff3 (diff) | |
download | r8-studio-master-dev.tar.gz |
Snap for 4382717 from a75b3015cca5dcc833f5c4834040825875742ff3 to studio-3.0-releasestudio-3.0gradle_3.0.0studio-master-dev
Change-Id: Icb9ea7894d142dfcbc928855f245fd80bc860c13
5 files changed, 27 insertions, 7 deletions
diff --git a/src/main/java/com/android/tools/r8/D8.java b/src/main/java/com/android/tools/r8/D8.java index 7c3855551..7280fc375 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 @@ import java.util.concurrent.ExecutorService; */ 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 a2fcbf10a..f723d7b9a 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 @@ import java.util.concurrent.Executors; 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 ff350a6aa..c0b5f44e8 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 @@ public class CodeRewriter { 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 000000000..05a43338b --- /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 5e265aa7d..e8f1c8618 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 @@ public class R8RunExamplesTest { "regress_37875803.Regress", "regress_37955340.Regress", "regress_62300145.Regress", + "regress_65104300.Regress", "memberrebinding2.Memberrebinding", "memberrebinding3.Memberrebinding", "minification.Minification", |