Merge "Modify printuses to also print keeprules"
diff --git a/src/main/java/com/android/tools/r8/Version.java b/src/main/java/com/android/tools/r8/Version.java
index 2ff296e..4288e55 100644
--- a/src/main/java/com/android/tools/r8/Version.java
+++ b/src/main/java/com/android/tools/r8/Version.java
@@ -11,7 +11,7 @@
// This field is accessed from release scripts using simple pattern matching.
// Therefore, changing this field could break our release scripts.
- public static final String LABEL = "1.4.18-dev";
+ public static final String LABEL = "1.4.19-dev";
private Version() {
}
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java b/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java
index 13fb6cb..4b2fabb 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java
@@ -3,8 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.ir.conversion;
-import com.android.tools.r8.code.Const4;
-import com.android.tools.r8.code.ConstWide16;
import com.android.tools.r8.code.FillArrayData;
import com.android.tools.r8.code.FillArrayDataPayload;
import com.android.tools.r8.code.Format31t;
@@ -35,7 +33,6 @@
import com.android.tools.r8.code.MoveWideFrom16;
import com.android.tools.r8.code.Nop;
import com.android.tools.r8.code.ReturnVoid;
-import com.android.tools.r8.code.ReturnWide;
import com.android.tools.r8.code.Throw;
import com.android.tools.r8.dex.Constants;
import com.android.tools.r8.errors.Unreachable;
@@ -220,22 +217,14 @@
if (options.canHaveTracingPastInstructionsStreamBug()
&& dexInstructions.get(dexInstructions.size() - 1) instanceof Throw
&& hasBackwardsBranch) {
- List<Instruction> instructions = new ArrayList<>();
- DexType returnType = ir.method.method.proto.returnType;
- if (returnType.isVoidType()) {
- instructions.add(new ReturnVoid());
- } else if (returnType.isDoubleType() || returnType.isLongType()) {
- instructions.add(new ConstWide16(0, 0));
- instructions.add(new ReturnWide(0));
- } else {
- instructions.add(new Const4(0, 0));
- instructions.add(new com.android.tools.r8.code.Return(0));
- }
- for (Instruction instruction : instructions) {
- instruction.setOffset(offset);
- offset += instruction.getSize();
- dexInstructions.add(instruction);
- }
+ // Generating a throw with the right type makes some Art constant propagation
+ // implementations crash. Therefore, since this is dead code anyway, we do not
+ // generate a return of the right type. Instead we just generate an unreachable
+ // return-void. See b/121355317.
+ Instruction returnVoid = new ReturnVoid();
+ returnVoid.setOffset(offset);
+ offset += returnVoid.getSize();
+ dexInstructions.add(returnVoid);
}
// Compute switch payloads.