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());