Grr. Used the wrong patchfile last time.
authorJeff Law <law@gcc.gnu.org>
Fri, 28 Nov 1997 04:42:28 +0000 (21:42 -0700)
committerJeff Law <law@gcc.gnu.org>
Fri, 28 Nov 1997 04:42:28 +0000 (21:42 -0700)
From-SVN: r16816

gcc/flow.c

index 27409de005b8d3c8a1180b0d1040d3cc2c4d1a90..8311566e9c82f14222c4d6e2a4d34f16f5a04da7 100644 (file)
@@ -574,7 +574,11 @@ find_basic_blocks (f, nonlocal_label_list)
                           associated insns aren't marked dead, so we make
                           the block in question live and create an edge from
                           this insn to the label.  This is not strictly
-                          correct, but it is close enough for now.  */
+                          correct, but it is close enough for now.
+
+                          We also need to mark the CODE_LABEL as reaching
+                          its exception handler for nested exceptions to
+                          to work.  */
                        for (note = REG_NOTES (insn);
                             note;
                             note = XEXP (note, 1))
@@ -586,6 +590,14 @@ find_basic_blocks (f, nonlocal_label_list)
                                mark_label_ref (gen_rtx (LABEL_REF,
                                                         VOIDmode, x),
                                                insn, 0);
+
+                               /* If the CODE_LABEL has an active exception
+                                  handler, then make an edge to the exception
+                                  handler from this insn.  */
+                               if (active_eh_handler[INSN_UID (x)])
+                                 mark_label_ref (gen_rtx (LABEL_REF, VOIDmode,
+                                                          active_eh_handler[INSN_UID (x)]),
+                                                 insn, 0);
                              }
                          }