summaryrefslogtreecommitdiff
path: root/gcc/lto-streamer-out.c
diff options
context:
space:
mode:
authordavek <davek@138bc75d-0d04-0410-961f-82ee72b054a4>2010-12-10 14:28:58 +0000
committerdavek <davek@138bc75d-0d04-0410-961f-82ee72b054a4>2010-12-10 14:28:58 +0000
commitd86d364d2d6e1cb56a043f57dd46d3e076048314 (patch)
treecb0845f24d59969509e47111a1b3af34cd9b8773 /gcc/lto-streamer-out.c
parenta1f90215d4b7737856c0ed6bc54a7195347dcd3d (diff)
downloadgcc-d86d364d2d6e1cb56a043f57dd46d3e076048314.tar.gz
gcc/ChangeLog:
PR middle-end/46674 PR lto/43157 * target.def (mangle_assembler_name): New target asm_out hook. * targhooks.c (default_mangle_assembler_name): Add default hook implementation. * targhooks.h (default_mangle_assembler_name): Add prototype. * lto-symtab.c (lto_symtab_register_decl): Use new hook when processing DECL_ASSEMBLER_NAMEs for lto symtabs. (lto_symtab_get_resolution): Likewise. (lto_cgraph_replace_node): Likewise. (lto_symtab_prevailing_decl): Likewise. * lto-streamer-out.c (write_symbol): Likewise. * doc/tm.texi.in (TARGET_MANGLE_ASSEMBLER_NAME): Add @hook directive. * doc/tm.texi: Regenerate. * config/i386/cygming.h (TARGET_MANGLE_ASSEMBLER_NAME): Define to point at i386_pe_mangle_assembler_name. * config/i386/winnt.c (i386_pe_mangle_assembler_name): New function. * config/i386/i386-protos.h (i386_pe_mangle_assembler_name): Add prototype. lto-plugin/ChangeLog: PR middle-end/46674 PR lto/43157 * configure.ac (SYM_STYLE): Don't AC_DEFINE. * lto-plugin.c (sym_style): Don't use it; default to ss_none. * configure: Regenerate. * config.h.in: Likewise. gcc/testsuite/ChangeLog: PR middle-end/46674 PR lto/43157 * gcc.dg/pr43157.c: New file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@167688 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/lto-streamer-out.c')
-rw-r--r--gcc/lto-streamer-out.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/gcc/lto-streamer-out.c b/gcc/lto-streamer-out.c
index a3f7b1cc019..2bf83bebde4 100644
--- a/gcc/lto-streamer-out.c
+++ b/gcc/lto-streamer-out.c
@@ -2368,16 +2368,14 @@ write_symbol (struct lto_streamer_cache_d *cache,
name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (t));
+ /* This behaves like assemble_name_raw in varasm.c, performing the
+ same name manipulations that ASM_OUTPUT_LABELREF does. */
+ name = IDENTIFIER_POINTER ((*targetm.asm_out.mangle_assembler_name) (name));
+
if (pointer_set_contains (seen, name))
return;
pointer_set_insert (seen, name);
- /* FIXME lto: this is from assemble_name_raw in varasm.c. For some
- architectures we might have to do the same name manipulations that
- ASM_OUTPUT_LABELREF does. */
- if (name[0] == '*')
- name = &name[1];
-
lto_streamer_cache_lookup (cache, t, &slot_num);
gcc_assert (slot_num >= 0);