From 4e8b9ae1bb4321f00513a58a470f16afba8cd136 Mon Sep 17 00:00:00 2001 From: rguenth Date: Tue, 22 Sep 2009 13:49:03 +0000 Subject: 2009-09-22 Richard Guenther PR objc++/41430 * Make-lang.in (objcp-lang.o): Add $(EXCEPT_H) dependency. * objcp-lang.c (LANG_HOOKS_EH_PERSONALITY): Define. (LANG_HOOKS_EH_RUNTIME_TYPE): Likewise. (objcxx_eh_personality): New function. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@151979 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/objcp/objcp-lang.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'gcc/objcp/objcp-lang.c') diff --git a/gcc/objcp/objcp-lang.c b/gcc/objcp/objcp-lang.c index 1b54ba81754..47bff9ab2ff 100644 --- a/gcc/objcp/objcp-lang.c +++ b/gcc/objcp/objcp-lang.c @@ -33,9 +33,11 @@ along with GCC; see the file COPYING3. If not see #include "diagnostic.h" #include "debug.h" #include "cp-objcp-common.h" +#include "except.h" enum c_language_kind c_language = clk_objcxx; static void objcxx_init_ts (void); +static tree objcxx_eh_personality (void); /* Lang hooks common to C++ and ObjC++ are declared in cp/cp-objcp-common.h; consequently, there should be very few hooks below. */ @@ -50,6 +52,10 @@ static void objcxx_init_ts (void); #define LANG_HOOKS_GIMPLIFY_EXPR objc_gimplify_expr #undef LANG_HOOKS_INIT_TS #define LANG_HOOKS_INIT_TS objcxx_init_ts +#undef LANG_HOOKS_EH_PERSONALITY +#define LANG_HOOKS_EH_PERSONALITY objcxx_eh_personality +#undef LANG_HOOKS_EH_RUNTIME_TYPE +#define LANG_HOOKS_EH_RUNTIME_TYPE build_eh_type_type /* Each front end provides its own lang hook initializer. */ struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER; @@ -138,6 +144,20 @@ objcxx_init_ts (void) init_shadowed_var_for_decl (); } +static GTY(()) tree objcp_eh_personality_decl; + +static tree +objcxx_eh_personality (void) +{ + if (!objcp_eh_personality_decl) + objcp_eh_personality_decl + = build_personality_function (USING_SJLJ_EXCEPTIONS + ? "__gxx_personality_sj0" + : "__gxx_personality_v0"); + + return objcp_eh_personality_decl; +} + void finish_file (void) -- cgit v1.2.1