aboutsummaryrefslogtreecommitdiff
path: root/gcc/java
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/java')
-rw-r--r--gcc/java/ChangeLog10
-rw-r--r--gcc/java/Make-lang.in2
-rw-r--r--gcc/java/decl.c12
-rw-r--r--gcc/java/lang.c20
4 files changed, 32 insertions, 12 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 569b5fe..6b7d930 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,13 @@
+2009-09-13 Richard Guenther <rguenther@suse.de>
+ Rafael Avila de Espindola <espindola@google.com>
+
+ * decl.c (do_nothing): Remove.
+ (java_init_decl_processing): Do not set lang_eh_runtime_type.
+ * Make-lang.in (lang.o): Add $(EXCEPT_H) dependency.
+ * lang.c (java_eh_personality): New.
+ (java_eh_personality_decl): Likewise.
+ (LANG_HOOKS_EH_PERSONALITY): Define.
+
2009-09-03 Diego Novillo <dnovillo@google.com>
* lang.c (lang_hooks): Remove const qualifier.
diff --git a/gcc/java/Make-lang.in b/gcc/java/Make-lang.in
index ff330fd..a56e2b6 100644
--- a/gcc/java/Make-lang.in
+++ b/gcc/java/Make-lang.in
@@ -284,7 +284,7 @@ java/jvgenmain.o: java/jvgenmain.c $(CONFIG_H) $(JAVA_TREE_H) $(SYSTEM_H) \
coretypes.h $(TM_H) intl.h
java/lang.o: java/lang.c $(CONFIG_H) $(JAVA_TREE_H) java/jcf.h input.h \
toplev.h $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(EXPR_H) $(DIAGNOSTIC_H) \
- langhooks.h $(LANGHOOKS_DEF_H) gt-java-lang.h opts.h options.h
+ langhooks.h $(LANGHOOKS_DEF_H) gt-java-lang.h opts.h options.h $(EXCEPT_H)
java/mangle.o: java/mangle.c $(CONFIG_H) java/jcf.h $(JAVA_TREE_H) $(SYSTEM_H) \
coretypes.h $(TM_H) toplev.h $(GGC_H) gt-java-mangle.h $(LANGHOOKS_DEF_H)
java/mangle_name.o: java/mangle_name.c $(CONFIG_H) java/jcf.h $(JAVA_TREE_H) \
diff --git a/gcc/java/decl.c b/gcc/java/decl.c
index 4ab67d6..c9ccc9d 100644
--- a/gcc/java/decl.c
+++ b/gcc/java/decl.c
@@ -510,12 +510,6 @@ create_primitive_vtable (const char *name)
return r;
}
-static tree
-do_nothing (tree t)
-{
- return t;
-}
-
/* Parse the version string and compute the ABI version number. */
static void
parse_version (void)
@@ -1195,16 +1189,12 @@ java_init_decl_processing (void)
0, NOT_BUILT_IN, NULL, NULL_TREE);
/* Initialize variables for except.c. */
- eh_personality_libfunc = init_one_libfunc (USING_SJLJ_EXCEPTIONS
- ? "__gcj_personality_sj0"
- : "__gcj_personality_v0");
+
if (targetm.arm_eabi_unwinder)
unwind_resume_libfunc = init_one_libfunc ("__cxa_end_cleanup");
else
default_init_unwind_resume_libfunc ();
- lang_eh_runtime_type = do_nothing;
-
initialize_builtins ();
soft_fmod_node = built_in_decls[BUILT_IN_FMOD];
diff --git a/gcc/java/lang.c b/gcc/java/lang.c
index d97b508..504d029 100644
--- a/gcc/java/lang.c
+++ b/gcc/java/lang.c
@@ -45,6 +45,7 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */
#include "tree-dump.h"
#include "opts.h"
#include "options.h"
+#include "except.h"
static bool java_init (void);
static void java_finish (void);
@@ -64,6 +65,8 @@ static bool java_decl_ok_for_sibcall (const_tree);
static enum classify_record java_classify_record (tree type);
+static tree java_eh_personality (void);
+
#ifndef TARGET_OBJECT_SUFFIX
# define TARGET_OBJECT_SUFFIX ".o"
#endif
@@ -158,6 +161,9 @@ struct GTY(()) language_function {
#undef LANG_HOOKS_ATTRIBUTE_TABLE
#define LANG_HOOKS_ATTRIBUTE_TABLE java_attribute_table
+#undef LANG_HOOKS_EH_PERSONALITY
+#define LANG_HOOKS_EH_PERSONALITY java_eh_personality
+
/* Each front end provides its own. */
struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER;
@@ -880,4 +886,18 @@ java_classify_record (tree type)
return RECORD_IS_CLASS;
}
+static GTY(()) tree java_eh_personality_decl;
+
+static tree
+java_eh_personality (void)
+{
+ if (!java_eh_personality_decl)
+ java_eh_personality_decl
+ = build_personality_function (USING_SJLJ_EXCEPTIONS
+ ? "__gcj_personality_sj0"
+ : "__gcj_personality_v0");
+
+ return java_eh_personality_decl;
+}
+
#include "gt-java-lang.h"