diff options
author | jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-08-09 10:45:00 +0000 |
---|---|---|
committer | jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-08-09 10:45:00 +0000 |
commit | 2c440a1334f71402905241113ec103d0e92d165e (patch) | |
tree | a2b2205f5538c97f3d3612a644b1c184a46ccb8f /gcc/cp/parse.y | |
parent | 7fea7f4a7d3fef7a98ddc65dac7ccb00c8ec6754 (diff) | |
download | gcc-2c440a1334f71402905241113ec103d0e92d165e.tar.gz |
* semantics.c (begin_function_try_block, finish_function_try_block,
finish_function_handler_sequence): New fns.
* parse.y (function_try_block): Use them.
* pt.c (instantiate_decl): Likewise.
* cp-tree.h: Declare in_function_try_handler.
* decl.c: Define it.
(start_function): Clear it.
(struct cp_function, push_cp_function_context): Save it.
(pop_cp_function_context): Restore it.
* parse.y (function_try_block): Set and clear it.
* except.c (expand_end_catch_block): Rethrow if we reach the end
of a function-try-block handler in a ctor or dtor.
* typeck.c (c_expand_return): Complain about returning from a
function-try-block handler of a ctor.
* parse.y (function_try_block): Call end_protect_partials
before expand_start_all_catch.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28624 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cp/parse.y')
-rw-r--r-- | gcc/cp/parse.y | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/gcc/cp/parse.y b/gcc/cp/parse.y index 1fd3c5a1bf0..fc62c0f1dba 100644 --- a/gcc/cp/parse.y +++ b/gcc/cp/parse.y @@ -3384,18 +3384,12 @@ simple_stmt: function_try_block: TRY - { - if (! current_function_parms_stored) - store_parm_decls (); - expand_start_early_try_stmts (); - } + { $<ttype>$ = begin_function_try_block (); } ctor_initializer_opt compstmt - { - expand_start_all_catch (); - } + { finish_function_try_block ($<ttype>2); } handler_seq { - expand_end_all_catch (); + finish_function_handler_sequence ($<ttype>2); $$ = $3; } ; |