]> gcc.gnu.org Git - gcc.git/commitdiff
(expand_goto): Set LABEL_REF_NONLOCAL_P in the LABEL_REF we make in
authorRichard Kenner <kenner@gcc.gnu.org>
Wed, 16 Dec 1992 12:25:13 +0000 (07:25 -0500)
committerRichard Kenner <kenner@gcc.gnu.org>
Wed, 16 Dec 1992 12:25:13 +0000 (07:25 -0500)
the non-local case.

From-SVN: r2882

gcc/stmt.c

index 6719a5c0cf65aa9187532463c5eb4f7736e26a18..98c2c9e507906c7ece240992d934552f09e1d32c 100644 (file)
@@ -625,8 +625,11 @@ expand_goto (label)
   if (context != 0 && context != current_function_decl)
     {
       struct function *p = find_function_data (context);
+      rtx label_ref = gen_rtx (LABEL_REF, Pmode, label_rtx (label));
       rtx temp;
+
       p->has_nonlocal_label = 1;
+      LABEL_REF_NONLOCAL_P (label_ref) = 1;
 
       /* Copy the rtl for the slots so that they won't be shared in
         case the virtual stack vars register gets instantiated differently
@@ -637,8 +640,7 @@ expand_goto (label)
        emit_insn (gen_nonlocal_goto (lookup_static_chain (label),
                                      copy_rtx (p->nonlocal_goto_handler_slot),
                                      copy_rtx (p->nonlocal_goto_stack_level),
-                                     gen_rtx (LABEL_REF, Pmode,
-                                              label_rtx (label))));
+                                     label_ref));
       else
 #endif
        {
@@ -671,8 +673,7 @@ expand_goto (label)
          emit_stack_restore (SAVE_NONLOCAL, addr, NULL_RTX);
 
          /* Put in the static chain register the nonlocal label address.  */
-         emit_move_insn (static_chain_rtx,
-                         gen_rtx (LABEL_REF, Pmode, label_rtx (label)));
+         emit_move_insn (static_chain_rtx, label_ref);
          /* USE of frame_pointer_rtx added for consistency; not clear if
             really needed.  */
          emit_insn (gen_rtx (USE, VOIDmode, frame_pointer_rtx));
This page took 0.072468 seconds and 5 git commands to generate.