Fix bug in ConstantCanonicalizer causing inconsistent SSA
Change-Id: Ifaeac67e48b4b85a74dd235e2998814c9c559a52
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/ConstantCanonicalizer.java b/src/main/java/com/android/tools/r8/ir/optimize/ConstantCanonicalizer.java
index db5c9dc..4633083 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/ConstantCanonicalizer.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/ConstantCanonicalizer.java
@@ -617,9 +617,7 @@
assert insertionPoint.isPhi() || instructionIterator.peekPrevious() == insertionPoint;
newInstruction.setPosition(
getPositionForCanonicalizationConstantAtInsertionPoint(insertionPoint, newInstruction));
- if (newInstruction.instructionTypeCanThrow()
- && insertionPoint.getBlock().hasCatchHandlers()
- && insertionPoint.getBlock().canThrow()) {
+ if (newInstruction.instructionTypeCanThrow() && insertionPoint.getBlock().hasCatchHandlers()) {
// Split the block and rewind the block iterator to the insertion block.
BasicBlock splitBlock =
instructionIterator.splitCopyCatchHandlers(
@@ -638,7 +636,6 @@
assert !splitBlock.canThrow();
splitBlock.listIterator().add(newInstruction);
} else {
- assert splitBlock.canThrow();
instructionIterator.addBeforeAndPositionBeforeNewInstruction(newInstruction);
}
instructionIterator.positionAfterPreviousInstruction(insertionPoint.asInstruction());