aboutsummaryrefslogtreecommitdiff
path: root/gcc/targhooks.c
diff options
context:
space:
mode:
authorDave Korn <dave.korn.cygwin@gmail.com>2010-12-10 14:28:58 +0000
committerDave Korn <dave.korn.cygwin@gmail.com>2010-12-10 14:28:58 +0000
commit3e8a567606658f709417b224d8bae630b77754da (patch)
treecb0845f24d59969509e47111a1b3af34cd9b8773 /gcc/targhooks.c
parent90dd2c5d3b2b0b5e3f2135e9f44dca706589a200 (diff)
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: https://gcc.gnu.org/svn/gcc/trunk@167688 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/targhooks.c')
-rw-r--r--gcc/targhooks.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/targhooks.c b/gcc/targhooks.c
index 0eee5288b6c..30a58911d2e 100644
--- a/gcc/targhooks.c
+++ b/gcc/targhooks.c
@@ -358,6 +358,17 @@ default_print_operand_punct_valid_p (unsigned char code ATTRIBUTE_UNUSED)
#endif
}
+/* The default implementation of TARGET_MANGLE_ASSEMBLER_NAME. */
+tree
+default_mangle_assembler_name (const char *name ATTRIBUTE_UNUSED)
+{
+ const char *skipped = name + (*name == '*' ? 1 : 0);
+ const char *stripped = targetm.strip_name_encoding (skipped);
+ if (*name != '*' && user_label_prefix[0])
+ stripped = ACONCAT ((user_label_prefix, stripped, NULL));
+ return get_identifier (stripped);
+}
+
/* The default implementation of TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA. */
bool