summaryrefslogtreecommitdiff
path: root/gcc/cp/parse.y
diff options
context:
space:
mode:
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>1999-08-09 10:45:00 +0000
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>1999-08-09 10:45:00 +0000
commit2c440a1334f71402905241113ec103d0e92d165e (patch)
treea2b2205f5538c97f3d3612a644b1c184a46ccb8f /gcc/cp/parse.y
parent7fea7f4a7d3fef7a98ddc65dac7ccb00c8ec6754 (diff)
downloadgcc-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.y12
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;
}
;