OSDN Git Service

PR debug/9963
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 5 Apr 2005 04:08:56 +0000 (04:08 +0000)
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 5 Apr 2005 04:08:56 +0000 (04:08 +0000)
* config/i386/cygming.h (ASM_OUTPUT_EXTERNAL): Pass DECL to
i386_pe_record_external_function.
(i386_pe_record_external_function): Update declaration.
* config/i386/winnt.c (struct extern_list): Add decl field.
(i386_pe_record_external_function): Add decl parameter.
(i386_pe_file_end): Check TREE_ASM_WRITTEN on decl, not
identifier.
* config/i386/i386-protos.h (i386_pe_record_external_function):
Update declaration.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@97602 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/i386/cygming.h
gcc/config/i386/i386-protos.h
gcc/config/i386/winnt.c

index 99b3d1c..b29d81d 100644 (file)
@@ -1,3 +1,16 @@
+2005-04-05  Ian Lance Taylor  <ian@airs.com>
+
+       PR debug/9963
+       * config/i386/cygming.h (ASM_OUTPUT_EXTERNAL): Pass DECL to
+       i386_pe_record_external_function.
+       (i386_pe_record_external_function): Update declaration.
+       * config/i386/winnt.c (struct extern_list): Add decl field.
+       (i386_pe_record_external_function): Add decl parameter.
+       (i386_pe_file_end): Check TREE_ASM_WRITTEN on decl, not
+       identifier.
+       * config/i386/i386-protos.h (i386_pe_record_external_function):
+       Update declaration.
+
 2005-04-05  Kazu Hirata  <kazu@cs.umass.edu>
 
        * config/m68k/m68k-protos.h: Add a prototype for
index de731bb..89d35a7 100644 (file)
@@ -297,7 +297,7 @@ extern void i386_pe_unique_section (TREE, int);
   do                                                                   \
     {                                                                  \
       if (TREE_CODE (DECL) == FUNCTION_DECL)                           \
-       i386_pe_record_external_function (NAME);                        \
+       i386_pe_record_external_function ((DECL), (NAME));              \
     }                                                                  \
   while (0)
 
@@ -345,7 +345,7 @@ extern void i386_pe_unique_section (TREE, int);
 
 /* External function declarations.  */
 
-extern void i386_pe_record_external_function (const char *);
+extern void i386_pe_record_external_function (tree, const char *);
 extern void i386_pe_declare_function_type (FILE *, const char *, int);
 extern void i386_pe_record_exported_symbol (const char *, int);
 extern void i386_pe_file_end (void);
index 1ecc3ae..2f949bd 100644 (file)
@@ -234,7 +234,7 @@ extern int i386_pe_dllexport_name_p (const char *);
 extern int i386_pe_dllimport_name_p (const char *);
 extern void i386_pe_unique_section (tree, int);
 extern void i386_pe_declare_function_type (FILE *, const char *, int);
-extern void i386_pe_record_external_function (const char *);
+extern void i386_pe_record_external_function (tree, const char *);
 extern void i386_pe_record_exported_symbol (const char *, int);
 extern void i386_pe_asm_file_end (FILE *);
 extern void i386_pe_encode_section_info (tree, rtx, int);
index cfab227..cecc97b 100644 (file)
@@ -719,6 +719,7 @@ i386_pe_declare_function_type (FILE *file, const char *name, int public)
 struct extern_list GTY(())
 {
   struct extern_list *next;
+  tree decl;
   const char *name;
 };
 
@@ -731,12 +732,13 @@ static GTY(()) struct extern_list *extern_head;
    for it then.  */
 
 void
-i386_pe_record_external_function (const char *name)
+i386_pe_record_external_function (tree decl, const char *name)
 {
   struct extern_list *p;
 
   p = (struct extern_list *) ggc_alloc (sizeof *p);
   p->next = extern_head;
+  p->decl = decl;
   p->name = name;
   extern_head = p;
 }
@@ -785,10 +787,11 @@ i386_pe_file_end (void)
     {
       tree decl;
 
-      decl = get_identifier (p->name);
+      decl = p->decl;
 
       /* Positively ensure only one declaration for any given symbol.  */
-      if (! TREE_ASM_WRITTEN (decl) && TREE_SYMBOL_REFERENCED (decl))
+      if (! TREE_ASM_WRITTEN (decl)
+         && TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (decl)))
        {
          TREE_ASM_WRITTEN (decl) = 1;
          i386_pe_declare_function_type (asm_out_file, p->name,