diff options
Diffstat (limited to 'gcc/config/ia64/ia64.c')
-rw-r--r-- | gcc/config/ia64/ia64.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c index daddb86..68bbbc8 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); |