+ /* Find all call insns and mark them as possibly jumping
+ to all the nonlocal goto handler labels. */
+
+ for (insn = f; insn; insn = NEXT_INSN (insn))
+ if (GET_CODE (insn) == CALL_INSN)
+ {
+ rtx x;
+ for (x = nonlocal_label_list; x; x = XEXP (x, 1))
+ mark_label_ref (gen_rtx (LABEL_REF, VOIDmode, XEXP (x, 0)),
+ insn, 0);
+ /* ??? This could be made smarter:
+ in some cases it's possible to tell that certain
+ calls will not do a nonlocal goto.
+
+ For example, if the nested functions that do the
+ nonlocal gotos do not have their addresses taken, then
+ only calls to those functions or to other nested
+ functions that use them could possibly do nonlocal
+ gotos. */
+ }
+