Use target catch handlers as initial seed for catch handler blocks
Bug: b/243678704
Change-Id: Ie0a0d9b4dde1275b9f600ea0798c423a3f2ae3ff
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 5275a80..eb7671a 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
@@ -139,11 +139,9 @@
private Set<BasicBlock> computeDirectAndIndirectCatchHandlerBlocks() {
WorkList<BasicBlock> catchHandlerBlocks = WorkList.newIdentityWorkList();
- for (BasicBlock block : code.getBlocks()) {
- if (block.entry().isMoveException()) {
- catchHandlerBlocks.addIfNotSeen(block);
- }
- }
+ code.getBlocks()
+ .forEach(
+ block -> catchHandlerBlocks.addIfNotSeen(block.getCatchHandlers().getAllTargets()));
while (catchHandlerBlocks.hasNext()) {
BasicBlock block = catchHandlerBlocks.next();
catchHandlerBlocks.addIfNotSeen(block.getSuccessors());