diff options
author | ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-05-19 09:33:27 +0000 |
---|---|---|
committer | ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-05-19 09:33:27 +0000 |
commit | 97354ae4d5a266ad985277a02cbc65638e517156 (patch) | |
tree | 1a601dd44371c7e5dd197e955db6b56a8a9dd835 /gcc/calls.c | |
parent | a8b58ffbf5223484ebd033c8239ad6cd66f316a9 (diff) | |
download | gcc-97354ae4d5a266ad985277a02cbc65638e517156.tar.gz |
* insn-notes.def (UPDATE_SJLJ_CONTEXT): New note.
* builtins.c (expand_builtin_update_setjmp_buf): Make global.
(expand_stack_restore): Call record_new_stack_level.
(expand_stack_save): Do not call do_pending_stack_adjust.
* builtins.h (expand_builtin_update_setjmp_buf): Declare.
* calls.c (expand_call): Call record_new_stack_level for alloca.
* except.c (sjlj_mark_call_sites): Expand builtin_update_setjmp_buf
wherever a NOTE_INSN_UPDATE_SJLJ_CONTEXT note is present.
(update_sjlj_context): New global function.
* except.h (update_sjlj_context): Declare.
* explow.c (record_new_stack_level): New global function.
(allocate_dynamic_stack_space): Call record_new_stack_level.
* explow.h (record_new_stack_level): Declare.
* final.c (final_scan_insn): Deal with NOTE_INSN_UPDATE_SJLJ_CONTEXT.
* cfgrtl.c (duplicate_insn_chain): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@223348 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/calls.c')
-rw-r--r-- | gcc/calls.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/gcc/calls.c b/gcc/calls.c index d631cc0165e..9cd488d175d 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -3649,12 +3649,9 @@ expand_call (tree exp, rtx target, int ignore) stack_usage_map = initial_stack_usage_map; } - /* If this was alloca, record the new stack level for nonlocal gotos. - Check for the handler slots since we might not have a save area - for non-local gotos. */ - - if ((flags & ECF_MAY_BE_ALLOCA) && cfun->nonlocal_goto_save_area != 0) - update_nonlocal_goto_save_area (); + /* If this was alloca, record the new stack level. */ + if (flags & ECF_MAY_BE_ALLOCA) + record_new_stack_level (); /* Free up storage we no longer need. */ for (i = 0; i < num_actuals; ++i) |