Remove more redundant blocks
Change-Id: I5d758440e910d0b64cf6504d67405b808f1a064e
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/ClassInitializerDefaultsOptimization.java b/src/main/java/com/android/tools/r8/ir/optimize/ClassInitializerDefaultsOptimization.java
index 8d2b4bb..9c94862 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/ClassInitializerDefaultsOptimization.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/ClassInitializerDefaultsOptimization.java
@@ -301,6 +301,9 @@
fieldsWithStaticValues.forEach(DexEncodedField::setStaticValue);
}
+ if (!fieldsWithStaticValues.isEmpty()) {
+ code.removeRedundantBlocks();
+ }
return new ClassInitializerDefaultsResult(fieldsWithStaticValues);
}
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/RuntimeWorkaroundCodeRewriter.java b/src/main/java/com/android/tools/r8/ir/optimize/RuntimeWorkaroundCodeRewriter.java
index 855f985..02e3b25 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/RuntimeWorkaroundCodeRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/RuntimeWorkaroundCodeRewriter.java
@@ -78,7 +78,7 @@
}
private static void rewriteSwitchForMaxIntOnly(IRCode code, AppView<?> appView) {
- boolean needToSplitCriticalEdges = false;
+ boolean hasChanged = false;
BranchSimplifier branchSimplifier = new BranchSimplifier(appView);
ListIterator<BasicBlock> blocksIterator = code.listIterator();
while (blocksIterator.hasNext()) {
@@ -108,7 +108,7 @@
ImmutableList.of(newSwitchSequences),
outliers);
}
- needToSplitCriticalEdges = true;
+ hasChanged = true;
}
}
}
@@ -117,8 +117,9 @@
// Rewriting of switches introduces new branching structure. It relies on critical edges
// being split on the way in but does not maintain this property. We therefore split
// critical edges at exit.
- if (needToSplitCriticalEdges) {
+ if (hasChanged) {
code.splitCriticalEdges();
+ code.removeRedundantBlocks();
}
}