OSDN Git Service

* som.h (ASM_OUTPUT_EXTERNAL): Improve formatting.
authordanglin <danglin@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 24 Sep 2001 16:30:28 +0000 (16:30 +0000)
committerdanglin <danglin@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 24 Sep 2001 16:30:28 +0000 (16:30 +0000)
(ASM_OUTPUT_EXTERNAL_LIBCALL): Only generate a .IMPORT statement for
the libcall if there isn't a referenced identifier for the symbol.

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

gcc/ChangeLog
gcc/config/pa/som.h

index d526acf..982fc5a 100644 (file)
@@ -1,5 +1,11 @@
 2001-09-24  John David Anglin  <dave@hiauly1.hia.nrc.ca>
 
+       * som.h (ASM_OUTPUT_EXTERNAL): Improve formatting.
+       (ASM_OUTPUT_EXTERNAL_LIBCALL): Only generate a .IMPORT statement for
+       the libcall if there isn't a referenced identifier for the symbol.
+
+2001-09-24  John David Anglin  <dave@hiauly1.hia.nrc.ca>
+
        * pa.h (TRAMPOLINE_TEMPLATE): Add two words to the template for
        non 64-bit machines.  Use these as a plabel for the trampoline.
        (TRAMPOLINE_SIZE): Adjust size for new words.
index 7588b66..7ce97ef 100644 (file)
@@ -312,8 +312,8 @@ readonly_data ()                                                    \
 #define ASM_OUTPUT_EXTERNAL(FILE, DECL, NAME)  \
   do { int save_referenced;                                    \
        save_referenced = TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (DECL)); \
-       fputs ("\t.IMPORT ", FILE);                                     \
-        assemble_name (FILE, NAME);                            \
+       fputs ("\t.IMPORT ", FILE);                             \
+       assemble_name (FILE, NAME);                             \
        if (FUNCTION_NAME_P (NAME))                                     \
         fputs (",CODE\n", FILE);                               \
        else                                                    \
@@ -327,14 +327,25 @@ readonly_data ()                                                  \
 
    Also note not all libcall names are passed to ENCODE_SECTION_INFO
    (__main for example).  To make sure all libcall names have section
-   info recorded in them, we do it here.  */
+   info recorded in them, we do it here.  We must also ensure that
+   we don't import a libcall that has been previously exported since
+   the HP assembler may change an ENTRY symbol to a CODE symbol.  */
 
 #define ASM_OUTPUT_EXTERNAL_LIBCALL(FILE, RTL) \
-  do { fputs ("\t.IMPORT ", FILE);                                     \
+  do { const char *name;                                               \
+       tree id;                                                                \
+                                                                       \
        if (!function_label_operand (RTL, VOIDmode))                    \
         hppa_encode_label (RTL);                                       \
-       assemble_name (FILE, XSTR ((RTL), 0));                          \
-       fputs (",CODE\n", FILE);                                                \
+                                                                       \
+       STRIP_NAME_ENCODING (name, XSTR ((RTL), 0));                    \
+       id = maybe_get_identifier (name);                               \
+       if (! id || ! TREE_SYMBOL_REFERENCED (id))                      \
+        {                                                              \
+          fputs ("\t.IMPORT ", FILE);                                  \
+          assemble_name (FILE, XSTR ((RTL), 0));                       \
+          fputs (",CODE\n", FILE);                                     \
+        }                                                              \
      } while (0)
 
 #define ASM_FILE_END(FILE) output_deferred_plabels (FILE)