diff options
author | Jason Merrill <jason@casey.cygnus.com> | 2000-05-15 01:31:45 +0000 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2000-05-14 21:31:45 -0400 |
commit | 2bc9f1d1d1027f97e6bc0850c0605c79091330a9 (patch) | |
tree | fdcb7402c43aec74d3459daa95e59e5de36da6f9 /gcc/cp/semantics.c | |
parent | c2b2bca6360e429bccc10d083edfb72618b3a658 (diff) | |
download | gcc-2bc9f1d1d1027f97e6bc0850c0605c79091330a9.zip gcc-2bc9f1d1d1027f97e6bc0850c0605c79091330a9.tar.gz gcc-2bc9f1d1d1027f97e6bc0850c0605c79091330a9.tar.bz2 |
except.c (check_handlers): New fn.
* except.c (check_handlers): New fn.
* cp-tree.h: Declare it.
* semantics.c (finish_handler_sequence): Call it.
(finish_function_handler_sequence): Likewise.
(finish_handler_parms): Set TREE_TYPE on the handler.
* cp-tree.h (PUBLICLY_UNIQUELY_DERIVED_P): New macro.
* search.c (get_base_distance_recursive): If protect>1, ignore
special access.
(get_base_distance): Don't reduce watch_access.
From-SVN: r33904
Diffstat (limited to 'gcc/cp/semantics.c')
-rw-r--r-- | gcc/cp/semantics.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index afa9ff2..ca0704c 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -838,7 +838,10 @@ finish_handler_sequence (try_block) tree try_block; { if (building_stmt_tree ()) - RECHAIN_STMTS (try_block, TRY_HANDLERS (try_block)); + { + RECHAIN_STMTS (try_block, TRY_HANDLERS (try_block)); + check_handlers (TRY_HANDLERS (try_block)); + } else expand_end_all_catch (); } @@ -852,7 +855,10 @@ finish_function_handler_sequence (try_block) in_function_try_handler = 0; if (building_stmt_tree ()) - RECHAIN_STMTS (try_block, TRY_HANDLERS (try_block)); + { + RECHAIN_STMTS (try_block, TRY_HANDLERS (try_block)); + check_handlers (TRY_HANDLERS (try_block)); + } else expand_end_all_catch (); } @@ -901,6 +907,9 @@ finish_handler_parms (decl, handler) else if (building_stmt_tree ()) blocks = expand_start_catch_block (decl); + if (decl) + TREE_TYPE (handler) = TREE_TYPE (decl); + return blocks; } |