diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f2f70b0a163900897ad43f62e18af3ccb2bdda70..7b4b91d7a4e6e289a13342152bcb45f35ab47289 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2002-12-09  Steve Ellcey  <sje@cup.hp.com>
+
+	* config/ia64/ia64.c (ia64_hpux_asm_file_end): Don't send stripped
+	name to globalize_label or assemble_name.
+
 Wed Dec 11 20:15:19 2002  J"orn Rennecke <joern.rennecke@superh.com>
 
 	* sh.h (REG_CLASS_HAS_GENERAL_REG): Only true for SIBCALL_REGS
diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c
index daddb86a5531b1223f1935b6db522bce286831ca..68bbbc877564fdd38e9a0519bf1b1cf21500a94a 100644
--- a/gcc/config/ia64/ia64.c
+++ b/gcc/config/ia64/ia64.c
@@ -8141,16 +8141,19 @@ ia64_hpux_asm_file_end (file)
 {
   while (extern_func_head)
     {
-      const char *const real_name =
-	(* targetm.strip_name_encoding) (extern_func_head->name);
-      tree decl = get_identifier (real_name);
+      char *real_name;
+      tree decl;
 
-      if (decl && ! TREE_ASM_WRITTEN (decl) && TREE_SYMBOL_REFERENCED (decl))
+      real_name = (* targetm.strip_name_encoding) (extern_func_head->name);
+      tree decl = maybe_get_identifier (real_name);
+
+      if (!decl || ! TREE_ASM_WRITTEN (decl) && TREE_SYMBOL_REFERENCED (decl))
         {
-	  TREE_ASM_WRITTEN (decl) = 1;
-	  (*targetm.asm_out.globalize_label) (file, real_name);
+	  if (decl)
+	    TREE_ASM_WRITTEN (decl) = 1;
+	  (*targetm.asm_out.globalize_label) (file, extern_func_head->name);
 	  fprintf (file, "%s", TYPE_ASM_OP);
-	  assemble_name (file, real_name);
+	  assemble_name (file, extern_func_head->name);
 	  putc (',', file);
 	  fprintf (file, TYPE_OPERAND_FMT, "function");
 	  putc ('\n', file);