aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/i386/cygming.h
diff options
context:
space:
mode:
authorDanny Smith <dannysmith@users.sourceforge.net>2007-05-24 10:11:49 +0000
committerDanny Smith <dannysmith@gcc.gnu.org>2007-05-24 10:11:49 +0000
commit5234b8f573b0c5fa3c2c2694d183668423382b23 (patch)
treef82b188a73ec315cce237f81bc0dfa75447a66db /gcc/config/i386/cygming.h
parent4f5497a9245ac73f32f4d202e3b7497c61e79925 (diff)
downloadgcc-5234b8f573b0c5fa3c2c2694d183668423382b23.zip
gcc-5234b8f573b0c5fa3c2c2694d183668423382b23.tar.gz
gcc-5234b8f573b0c5fa3c2c2694d183668423382b23.tar.bz2
re PR target/27067 (Compile errors with multiple inheritance where the stdcall attribute is applied to virtual functions.)
ChangeLog PR target/27067 * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document. * targhooks.h (default_mangle_decl_assembler_name): Declare default hook. * targhooks.c (default_mangle_decl_assembler_name): Define default hook. * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to default hook. * target.h (struct gcc_target): Add mangle_decl_assembler_name field. * langhooks.c (lhd_set_decl_assembler_name): Call targetm.mangle_decl_assembler_name for names with global scope. * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override default. (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME. * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name): Declare. * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name): New. Factored out of i386_pe_encode_section_info. (gen_stdcall_or_fastcall_suffix): Get name identifier as argument. Move check for prior decoration of stdcall symbols to i386_pe_encode_section_info. (i386_pe_encode_section_info): Adjust call to gen_stdcall_or_fastcall_suffix. Use i386_pe_maybe_mangle_decl_assembler_name, if needed. (i386_pe_mangle_decl_assembler_name): New. Wrap i386_pe_maybe_mangle_decl_assembler_name. cp/ChangeLog * mangle.c (mangle_decl): Call targetm.mangle_decl_assembler_name. From-SVN: r125020
Diffstat (limited to 'gcc/config/i386/cygming.h')
-rw-r--r--gcc/config/i386/cygming.h13
1 files changed, 5 insertions, 8 deletions
diff --git a/gcc/config/i386/cygming.h b/gcc/config/i386/cygming.h
index f7e8feb..9ce11b2 100644
--- a/gcc/config/i386/cygming.h
+++ b/gcc/config/i386/cygming.h
@@ -1,7 +1,7 @@
/* Operating system specific defines to be used when targeting GCC for
hosting on Windows32, using a Unix style C library and tools.
Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
- 2004, 2005
+ 2004, 2005, 2007
Free Software Foundation, Inc.
This file is part of GCC.
@@ -347,15 +347,11 @@ do { \
/* This implements the `alias' attribute, keeping any stdcall or
fastcall decoration. */
#undef ASM_OUTPUT_DEF_FROM_DECLS
-#define ASM_OUTPUT_DEF_FROM_DECLS(STREAM, DECL, TARGET) \
+#define ASM_OUTPUT_DEF_FROM_DECLS(STREAM, DECL, TARGET) \
do \
{ \
- const char *alias; \
- rtx rtlname = XEXP (DECL_RTL (DECL), 0); \
- if (GET_CODE (rtlname) == SYMBOL_REF) \
- alias = XSTR (rtlname, 0); \
- else \
- abort (); \
+ const char *alias \
+ = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (DECL)); \
if (TREE_CODE (DECL) == FUNCTION_DECL) \
i386_pe_declare_function_type (STREAM, alias, \
TREE_PUBLIC (DECL)); \
@@ -394,6 +390,7 @@ do { \
#define TARGET_VALID_DLLIMPORT_ATTRIBUTE_P i386_pe_valid_dllimport_attribute_p
#define TARGET_CXX_ADJUST_CLASS_AT_DEFINITION i386_pe_adjust_class_at_definition
+#define TARGET_MANGLE_DECL_ASSEMBLER_NAME i386_pe_mangle_decl_assembler_name
#undef TREE