aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@gcc.gnu.org>1999-04-06 15:10:24 -0700
committerRichard Henderson <rth@gcc.gnu.org>1999-04-06 15:10:24 -0700
commit89c846727b4f86ef2592842cd1ac5ef09d82b037 (patch)
tree62088bcc9e3096bafd2d426a84c647a741b2f77a /gcc/expr.c
parente8f5c18f1a3990928272cc48901a8808735769f1 (diff)
downloadgcc-89c846727b4f86ef2592842cd1ac5ef09d82b037.zip
gcc-89c846727b4f86ef2592842cd1ac5ef09d82b037.tar.gz
gcc-89c846727b4f86ef2592842cd1ac5ef09d82b037.tar.bz2
expr.c (expand_builtin_setjmp): Put setjmp return label on nonlocal_goto_handler_labels for flow.
* expr.c (expand_builtin_setjmp): Put setjmp return label on nonlocal_goto_handler_labels for flow. From-SVN: r26225
Diffstat (limited to 'gcc/expr.c')
-rw-r--r--gcc/expr.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index d2ebdc3..8d5fa10 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -8442,7 +8442,7 @@ expand_builtin_setjmp (buf_addr, target, first_label, next_label)
(gen_rtx_MEM (Pmode,
plus_constant (buf_addr,
GET_MODE_SIZE (Pmode)))),
- gen_rtx_LABEL_REF (Pmode, lab1));
+ force_reg (Pmode, gen_rtx_LABEL_REF (Pmode, lab1)));
stack_save = gen_rtx_MEM (sa_mode,
plus_constant (buf_addr,
@@ -8461,8 +8461,13 @@ expand_builtin_setjmp (buf_addr, target, first_label, next_label)
emit_barrier ();
emit_label (lab1);
- /* Tell flow about the strange goings on. */
+ /* Tell flow about the strange goings on. Putting `lab1' on
+ `nonlocal_goto_handler_labels' to indicates that function
+ calls may traverse the arc back to this label. */
+
current_function_has_nonlocal_label = 1;
+ nonlocal_goto_handler_labels =
+ gen_rtx_EXPR_LIST (VOIDmode, lab1, nonlocal_goto_handler_labels);
/* Clobber the FP when we get here, so we have to make sure it's
marked as used by this function. */