diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d242366e058128fb38ffb8421e2b1d400186ca8a..bb1be3c9caf11fdd12be1e8699049d94ad6e473b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2006-10-13  Eric Christopher  <echristo@apple.com>
+
+	* config/darwin.c (darwin_emit_unwind_label): Strip
+	name encoding. Use DECL_ASSEMBLER_NAME_SET_P.
+
 2006-10-13  Richard Guenther  <rguenther@suse.de>
 
 	PR tree-optimization/29446
@@ -202,7 +207,7 @@
 	Use <modeconstraint> instead of "r" as operand 1 constraint.
 
 2006-10-06  Olivier Hainque  <hainque@adacore.com>
-	
+
 	* gimplify.c (gimplify_type_sizes) [POINTER_TYPE, REFERENCE_TYPE]:
 	Don't recurse on the pointed-to type.
 	* c-decl.c (grokdeclarator) [cdk_pointer]: If we are in a NORMAL or
@@ -278,7 +283,7 @@
 	(get_emutls_object_name, get_emutls_object_type): New.
 	(get_emutls_init_templ_addr, emutls_decl): New.
 	(emutls_common_1, emutls_finish): New.
-        (assemble_variable): When emulating tls, swap decls; generate 
+        (assemble_variable): When emulating tls, swap decls; generate
 	constructor for the emutls objects.
 	(do_assemble_alias): When emulating tls, swap decl and target name.
         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
diff --git a/gcc/config/darwin.c b/gcc/config/darwin.c
index e486594b702f29c3255d48612bf307f1dba28969..124d4af4e88e1cc9593cb00a8221227bc2393630 100644
--- a/gcc/config/darwin.c
+++ b/gcc/config/darwin.c
@@ -1338,14 +1338,17 @@ no_dead_strip (FILE *file, const char *lab)
 void
 darwin_emit_unwind_label (FILE *file, tree decl, int for_eh, int empty)
 {
-  tree id = DECL_ASSEMBLER_NAME (decl)
-    ? DECL_ASSEMBLER_NAME (decl)
-    : DECL_NAME (decl);
+  const char *base;
+  char *lab;
+  bool need_quotes;
 
-  const char *base = IDENTIFIER_POINTER (id);
+  if (DECL_ASSEMBLER_NAME_SET_P (decl))
+    base = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl));
+  else
+    base = IDENTIFIER_POINTER (DECL_NAME (decl));
 
-  bool need_quotes = name_needs_quotes (base);
-  char *lab;
+  base = targetm.strip_name_encoding (base);
+  need_quotes = name_needs_quotes (base);
 
   if (! for_eh)
     return;