aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/ada/ChangeLog7
-rw-r--r--gcc/ada/gcc-interface/misc.c6
-rw-r--r--gcc/ada/raise-gcc.c8
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/cp-lang.c13
-rw-r--r--gcc/cp/except.c5
-rw-r--r--gcc/expr.c24
-rw-r--r--gcc/java/ChangeLog5
-rw-r--r--gcc/java/lang.c6
-rw-r--r--gcc/objc/ChangeLog5
-rw-r--r--gcc/objc/objc-act.c9
-rw-r--r--gcc/objcp/ChangeLog5
-rw-r--r--gcc/objcp/objcp-lang.c6
-rw-r--r--gcc/tree.c6
15 files changed, 71 insertions, 48 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 531b889..1fbd881 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2010-10-13 Richard Henderson <rth@redhat.com>
+
+ * expr.c (build_personality_function): Take parameter LANG instead
+ of parameter NAME. Build the name based on the lang prefix and the
+ unwind method in use.
+ * tree.c (lhd_gcc_personality): Update call to
+ build_personality_function.
+
2010-10-13 Richard Guenther <rguenther@suse.de>
PR objc/45878
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 3fd613a..df5b433 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,10 @@
+2010-10-13 Richard Henderson <rth@redhat.com>
+
+ * gcc-interface/misc.c (gnat_eh_personality): Update call to
+ build_personality_function.
+ * raise-gcc.c (PERSONALITY_FUNCTION): Change to match other languages;
+ use__gnat_personality_{v,sj}0.
+
2010-10-12 Vincent Celier <celier@adacore.com>
* prj-nmsc.adb (Add_Source): Put source in hash table Source_Files_HT
diff --git a/gcc/ada/gcc-interface/misc.c b/gcc/ada/gcc-interface/misc.c
index 7703e2e..a1b2490 100644
--- a/gcc/ada/gcc-interface/misc.c
+++ b/gcc/ada/gcc-interface/misc.c
@@ -687,11 +687,7 @@ static tree
gnat_eh_personality (void)
{
if (!gnat_eh_personality_decl)
- gnat_eh_personality_decl
- = build_personality_function (targetm.except_unwind_info () == UI_SJLJ
- ? "__gnat_eh_personality_sj"
- : "__gnat_eh_personality");
-
+ gnat_eh_personality_decl = build_personality_function ("gnat");
return gnat_eh_personality_decl;
}
diff --git a/gcc/ada/raise-gcc.c b/gcc/ada/raise-gcc.c
index 3589bc5..512ff36 100644
--- a/gcc/ada/raise-gcc.c
+++ b/gcc/ada/raise-gcc.c
@@ -407,7 +407,7 @@ db_phases (int phases)
===================================
The major point of this unit is to provide an exception propagation
- personality routine for Ada. This is __gnat_eh_personality.
+ personality routine for Ada. This is __gnat_personality_v0.
It is provided with a pointer to the propagated exception, an unwind
context describing a location the propagation is going through, and a
@@ -440,7 +440,7 @@ db_phases (int phases)
|
| (Ada frame)
|
- +--> __gnat_eh_personality (context, exception)
+ +--> __gnat_personality_v0 (context, exception)
|
+--> get_region_descriptor_for (context)
|
@@ -1028,9 +1028,9 @@ extern void __gnat_notify_unhandled_exception (void);
GNU-Ada exceptions are met. */
#ifdef __USING_SJLJ_EXCEPTIONS__
-#define PERSONALITY_FUNCTION __gnat_eh_personality_sj
+#define PERSONALITY_FUNCTION __gnat_personality_sj0
#else
-#define PERSONALITY_FUNCTION __gnat_eh_personality
+#define PERSONALITY_FUNCTION __gnat_personality_v0
#endif
/* Major tweak for ia64-vms : the CHF propagation phase calls this personality
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 9ac7a4a..683e439 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2010-10-13 Richard Henderson <rth@redhat.com>
+
+ * cp-lang.c (cp_eh_personality): Update call to
+ build_personality_function.
+ * except.c (choose_personality_routine): Update function comment.
+
2010-10-13 Richard Guenther <rguenther@suse.de>
* tree.c (cp_free_lang_data): Free DECL_NAMESPACE_USERS and
diff --git a/gcc/cp/cp-lang.c b/gcc/cp/cp-lang.c
index 0b70444..a07d7be 100644
--- a/gcc/cp/cp-lang.c
+++ b/gcc/cp/cp-lang.c
@@ -166,17 +166,8 @@ cp_eh_personality (void)
{
if (!cp_eh_personality_decl)
{
- const char *name;
-
- name = (targetm.except_unwind_info () == UI_SJLJ
- ? (pragma_java_exceptions
- ? "__gcj_personality_sj0"
- : "__gxx_personality_sj0")
- : (pragma_java_exceptions
- ? "__gcj_personality_v0"
- : "__gxx_personality_v0"));
-
- cp_eh_personality_decl = build_personality_function (name);
+ const char *lang = (pragma_java_exceptions ? "gcj" : "gxx");
+ cp_eh_personality_decl = build_personality_function (lang);
}
return cp_eh_personality_decl;
diff --git a/gcc/cp/except.c b/gcc/cp/except.c
index 9d19aa9..b917664 100644
--- a/gcc/cp/except.c
+++ b/gcc/cp/except.c
@@ -295,9 +295,8 @@ decl_is_java_type (tree decl, int err)
/* Select the personality routine to be used for exception handling,
or issue an error if we need two different ones in the same
translation unit.
- ??? At present eh_personality_decl is set to
- __gxx_personality_(sj|v)0 in init_exception_processing - should it
- be done here instead? */
+ ??? At present DECL_FUNCTION_PERSONALITY is set via
+ LANG_HOOKS_EH_PERSONALITY. Should it be done here instead? */
void
choose_personality_routine (enum languages lang)
{
diff --git a/gcc/expr.c b/gcc/expr.c
index b0c160f..0050518 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -10255,13 +10255,31 @@ const_vector_from_tree (tree exp)
return gen_rtx_CONST_VECTOR (mode, v);
}
-
-/* Build a decl for a EH personality function named NAME. */
+/* Build a decl for a personality function given a language prefix. */
tree
-build_personality_function (const char *name)
+build_personality_function (const char *lang)
{
+ const char *unwind_and_version;
tree decl, type;
+ char *name;
+
+ switch (targetm.except_unwind_info ())
+ {
+ case UI_NONE:
+ return NULL;
+ case UI_SJLJ:
+ unwind_and_version = "_sj0";
+ break;
+ case UI_DWARF2:
+ case UI_TARGET:
+ unwind_and_version = "_v0";
+ break;
+ default:
+ gcc_unreachable ();
+ }
+
+ name = ACONCAT (("__", lang, "_personality", unwind_and_version, NULL));
type = build_function_type_list (integer_type_node, integer_type_node,
long_long_unsigned_type_node,
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index a7edd3b..41ae31c 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,8 @@
+2010-10-13 Richard Henderson <rth@redhat.com>
+
+ * lang.c (java_eh_personality): Update call to
+ build_personality_function.
+
2010-10-12 Joseph Myers <joseph@codesourcery.com>
* Make-lang.in (java/lang.o): Use $(OPTIONS_H) instead of
diff --git a/gcc/java/lang.c b/gcc/java/lang.c
index fbe25ad..45722e5 100644
--- a/gcc/java/lang.c
+++ b/gcc/java/lang.c
@@ -911,11 +911,7 @@ static tree
java_eh_personality (void)
{
if (!java_eh_personality_decl)
- java_eh_personality_decl
- = build_personality_function (targetm.except_unwind_info () == UI_SJLJ
- ? "__gcj_personality_sj0"
- : "__gcj_personality_v0");
-
+ java_eh_personality_decl = build_personality_function ("gcj");
return java_eh_personality_decl;
}
diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog
index ed1bc2e..81a872d 100644
--- a/gcc/objc/ChangeLog
+++ b/gcc/objc/ChangeLog
@@ -1,3 +1,8 @@
+2010-10-13 Richard Henderson <rth@redhat.com>
+
+ * objc-act.c (objc_eh_personality): Update call to
+ build_personality_function.
+
2010-10-13 Iain Sandoe <iains@gcc.gnu.org>
merge from FSF apple 'trunk' branch.
diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c
index 26d490e..edde784 100644
--- a/gcc/objc/objc-act.c
+++ b/gcc/objc/objc-act.c
@@ -3716,13 +3716,8 @@ objc_eh_runtime_type (tree type)
tree
objc_eh_personality (void)
{
- if (!flag_objc_sjlj_exceptions
- && !objc_eh_personality_decl)
- objc_eh_personality_decl
- = build_personality_function (targetm.except_unwind_info () == UI_SJLJ
- ? "__gnu_objc_personality_sj0"
- : "__gnu_objc_personality_v0");
-
+ if (!flag_objc_sjlj_exceptions && !objc_eh_personality_decl)
+ objc_eh_personality_decl = build_personality_function ("gnu_objc");
return objc_eh_personality_decl;
}
#endif
diff --git a/gcc/objcp/ChangeLog b/gcc/objcp/ChangeLog
index ab44899..26e3c7a 100644
--- a/gcc/objcp/ChangeLog
+++ b/gcc/objcp/ChangeLog
@@ -1,3 +1,8 @@
+2010-10-13 Richard Henderson <rth@redhat.com>
+
+ * objcp-lang.c (objcxx_eh_personality): Update call to
+ build_personality_function.
+
2010-10-11 Andi Kleen <ak@linux.intel.com>
* Make-lang.in (cc1objplus-checksum.c): Use correct temporary
diff --git a/gcc/objcp/objcp-lang.c b/gcc/objcp/objcp-lang.c
index fdb2976..6a45404 100644
--- a/gcc/objcp/objcp-lang.c
+++ b/gcc/objcp/objcp-lang.c
@@ -147,11 +147,7 @@ static tree
objcxx_eh_personality (void)
{
if (!objcp_eh_personality_decl)
- objcp_eh_personality_decl
- = build_personality_function (targetm.except_unwind_info () == UI_SJLJ
- ? "__gxx_personality_sj0"
- : "__gxx_personality_v0");
-
+ objcp_eh_personality_decl = build_personality_function ("gxx");
return objcp_eh_personality_decl;
}
diff --git a/gcc/tree.c b/gcc/tree.c
index cf5881a..28cc2d8 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -10874,11 +10874,7 @@ tree
lhd_gcc_personality (void)
{
if (!gcc_eh_personality_decl)
- gcc_eh_personality_decl
- = build_personality_function (targetm.except_unwind_info () == UI_SJLJ
- ? "__gcc_personality_sj0"
- : "__gcc_personality_v0");
-
+ gcc_eh_personality_decl = build_personality_function ("gcc");
return gcc_eh_personality_decl;
}