diff options
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; } |