diff options
author | Richard Guenther <rguenther@suse.de> | 2009-09-22 13:49:03 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2009-09-22 13:49:03 +0000 |
commit | cf76ef1a4605c24827dad764ea5791207458668c (patch) | |
tree | 32bde1c1dec5f70b5c044e6e187217b6d28d7305 /gcc/objcp/objcp-lang.c | |
parent | 65f753a01e7359246def8d277016a0e4ebab4e7b (diff) | |
download | gcc-cf76ef1a4605c24827dad764ea5791207458668c.zip gcc-cf76ef1a4605c24827dad764ea5791207458668c.tar.gz gcc-cf76ef1a4605c24827dad764ea5791207458668c.tar.bz2 |
re PR objc++/41430 (exception handling testsuite failures in objc++)
2009-09-22 Richard Guenther <rguenther@suse.de>
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.
From-SVN: r151979
Diffstat (limited to 'gcc/objcp/objcp-lang.c')
-rw-r--r-- | gcc/objcp/objcp-lang.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/gcc/objcp/objcp-lang.c b/gcc/objcp/objcp-lang.c index 1b54ba8..47bff9a 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) |