aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/semantics.c
diff options
context:
space:
mode:
authorJason Merrill <jason@casey.cygnus.com>2000-05-15 01:31:45 +0000
committerJason Merrill <jason@gcc.gnu.org>2000-05-14 21:31:45 -0400
commit2bc9f1d1d1027f97e6bc0850c0605c79091330a9 (patch)
treefdcb7402c43aec74d3459daa95e59e5de36da6f9 /gcc/cp/semantics.c
parentc2b2bca6360e429bccc10d083edfb72618b3a658 (diff)
downloadgcc-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.c13
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;
}