aboutsummaryrefslogtreecommitdiff
path: root/gcc/objcp/objcp-lang.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2009-09-22 13:49:03 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2009-09-22 13:49:03 +0000
commitcf76ef1a4605c24827dad764ea5791207458668c (patch)
tree32bde1c1dec5f70b5c044e6e187217b6d28d7305 /gcc/objcp/objcp-lang.c
parent65f753a01e7359246def8d277016a0e4ebab4e7b (diff)
downloadgcc-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.c20
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)