diff options
author | Richard Henderson <rth@redhat.com> | 2004-06-17 18:20:53 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2004-06-17 18:20:53 -0700 |
commit | 093c7153029151d28e4f60d9204d0edc31e7e3a2 (patch) | |
tree | 76b8fd18403158028bfbeeb8db6ac71d470a33aa /gcc/objc/objc-act.h | |
parent | a776161b8bb455734cb3019976b5718bc208ba8f (diff) | |
download | gcc-093c7153029151d28e4f60d9204d0edc31e7e3a2.zip gcc-093c7153029151d28e4f60d9204d0edc31e7e3a2.tar.gz gcc-093c7153029151d28e4f60d9204d0edc31e7e3a2.tar.bz2 |
c-common.c (flag_objc_sjlj_exceptions): New.
* c-common.c (flag_objc_sjlj_exceptions): New.
* c-common.h (flag_objc_sjlj_exceptions): Declare.
* c-opts.c (c_common_handle_option): Set it.
(c_common_post_options): Handle interation of different
objective-c exception and runtime switches.
* c-decl.c (c_eh_initialized_p): New.
(finish_decl): Use it instead of local eh_initialized_p.
* c-parse.in (nested_function, notype_nested_function): Record
the result of compstmt.
(compstmt_or_error): Likewise.
(compstmt): Don't add_stmt the result.
(stmt): Don't return anything. Rewrite objc try and sync rules.
(objc_try_stmt, objc_catch_list): Remove.
(objc_catch_block, objc_finally_block): Remove.
(objc_catch_prefix, objc_catch_clause, objc_opt_catch_list): New.
(objc_try_catch_clause, objc_finally_clause): New.
(objc_try_catch_stmt): Rewrite.
* c-tree.h (c_eh_initialized_p): Declare.
* c-opt (fobjc-sjlj-exceptions): New.
* except.c (output_function_exception_table): Don't call cgraph
on non-decls.
* objc/objc-act.c (UTAG_EXCDATA_VAR, UTAG_CAUGHTEXC_VAR,
UTAG_RETHROWEXC_VAR, UTAG_EVALONCE_VAR, struct val_stack,
catch_count_stack, exc_binding_stack, if_nesting_count,
blk_nesting_count, objc_enter_block, objc_exit_block,
objc_declare_variable, val_stack_push, val_stack_pop,
objc_build_try_enter_fragment, objc_build_extract_expr,
objc_build_try_exit_fragment, objc_build_extract_fragment,
objc_build_try_prologue, objc_build_try_epilogue,
objc_build_catch_stmt, objc_build_catch_epilogue,
objc_build_finally_prologue, objc_build_finally_epilogue,
objc_build_try_catch_finally_stmt, objc_build_synchronized_prologue,
objc_build_synchronized_epilogue): Remove.
(objc_create_temporary_var, struct objc_try_context, cur_try_context,
objc_eh_runtime_type, objc_init_exceptions, objc_build_exc_ptr,
next_sjlj_build_try_exit, next_sjlj_build_enter_and_setjmp,
next_sjlj_build_exc_extract, next_sjlj_build_catch_list,
next_sjlj_build_try_catch_finally, objc_begin_try_stmt,
objc_begin_catch_clause, objc_finish_catch_clause,
objc_build_finally_clause, objc_finish_try_stmt,
objc_build_synchronized): New.
(objc_is_object_id, objc_is_class_id): New.
(objc_comptypes): Use them.
(build_next_objc_exception_stuff): Break NeXT sjlj out from
build_objc_exception_stuff.
(synth_module_prologue): Update to match.
(objc_build_throw_stmt): Use cur_try_context to decide if
we're in a @catch.
* objc/objc-act.h: Update prototypes.
(OCTI_EXCEPTION_BLK_STACK, objc_exception_block_stack): Remove.
testsuite/
* objc.dg/sync-1.m: New.
* objc.dg/try-catch-1.m: Don't force next runtime.
* objc.dg/try-catch-3.m, objc.dg/try-catch-4.m: Likewise.
* objc.dg/try-catch-2.m: Likewise. Enable everywhere. Remove
shadowed catch clause.
* objc.dg/try-catch-5.m: New.
From-SVN: r83332
Diffstat (limited to 'gcc/objc/objc-act.h')
-rw-r--r-- | gcc/objc/objc-act.h | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/gcc/objc/objc-act.h b/gcc/objc/objc-act.h index 5738bc9..8794aa4 100644 --- a/gcc/objc/objc-act.h +++ b/gcc/objc/objc-act.h @@ -39,16 +39,13 @@ void finish_method_def (void); tree start_protocol (enum tree_code, tree, tree); void finish_protocol (tree); -tree objc_build_throw_stmt (tree); -tree objc_build_try_catch_finally_stmt (int, int); -void objc_build_synchronized_prologue (tree); -tree objc_build_synchronized_epilogue (void); -tree objc_build_try_prologue (void); -void objc_build_try_epilogue (int); -void objc_build_catch_stmt (tree); -void objc_build_catch_epilogue (void); -tree objc_build_finally_prologue (void); -tree objc_build_finally_epilogue (void); +void objc_build_throw_stmt (tree); +void objc_begin_try_stmt (location_t, tree); +void objc_begin_catch_clause (tree); +void objc_finish_catch_clause (void); +void objc_build_finally_clause (location_t, tree); +void objc_finish_try_stmt (void); +void objc_build_synchronized (location_t, tree, tree); tree is_ivar (tree, tree); int is_private (tree); @@ -282,7 +279,6 @@ enum objc_tree_index OCTI_LOCAL_EXCEPTION_DECL, OCTI_RETHROW_EXCEPTION_DECL, OCTI_EVAL_ONCE_DECL, - OCTI_EXCEPTION_BLK_STACK, OCTI_CATCH_TYPE, OCTI_MAX @@ -402,8 +398,6 @@ extern GTY(()) tree objc_global_trees[OCTI_MAX]; #define objc_caught_exception objc_global_trees[OCTI_LOCAL_EXCEPTION_DECL] #define objc_rethrow_exception objc_global_trees[OCTI_RETHROW_EXCEPTION_DECL] #define objc_eval_once objc_global_trees[OCTI_EVAL_ONCE_DECL] -#define objc_exception_block_stack \ - objc_global_trees[OCTI_EXCEPTION_BLK_STACK] #define objc_catch_type objc_global_trees[OCTI_CATCH_TYPE] #define objc_method_template objc_global_trees[OCTI_METH_TEMPL] |