OSDN Git Service

Undo assemble_name change in earlier patch.
authordje <dje@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 29 Oct 2001 21:29:30 +0000 (21:29 +0000)
committerdje <dje@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 29 Oct 2001 21:29:30 +0000 (21:29 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@46617 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/rs6000/aix31.h
gcc/config/rs6000/darwin.h
gcc/config/rs6000/rs6000.c
gcc/config/rs6000/sysv4.h
gcc/config/rs6000/xcoff.h

index 5df28d7..5cd6c8d 100644 (file)
@@ -1,9 +1,13 @@
+2001-10-29  David Edelsohn  <edelsohn@gnu.org>
+
+       Undo assemble_name change in earlier patch.
+
 Mon Oct 29 21:11:40 2001  Nicola Pero  <n.pero@mi.flashnet.it>
        
        * objc/objc-act.c (finish_message_expr): For the GNU runtime: when
        determining the type of the receiver, do not check that TREE_CODE
-       of receiver is CALL_EXPR before calling receiver_is_class_object
-       ().  (receiver_is_class_object): For the GNU runtime: recognize
+       of receiver is CALL_EXPR before calling receiver_is_class_object().
+       (receiver_is_class_object): For the GNU runtime: recognize
        the case that the receiver is self in a class method context.
        Check that TREE_CODE of receiver is CALL_EXPR when checking that
        the receiver is a call to objc_get_class.
index 8915292..1156b1e 100644 (file)
@@ -45,7 +45,7 @@ Boston, MA 02111-1307, USA.  */
   if (TREE_CODE (DECL) == FUNCTION_DECL)       \
     {                                          \
       fputs ("\n\t.extern .", FILE);           \
-      assemble_name (FILE, XSTR (_symref, 0)); \
+      RS6000_OUTPUT_BASENAME (FILE, XSTR (_symref, 0));        \
     }                                          \
   putc ('\n', FILE);                           \
 }
index fe192b5..768f4d7 100644 (file)
@@ -79,6 +79,12 @@ Boston, MA 02111-1307, USA.  */
 #undef REGISTER_NAMES
 #define REGISTER_NAMES DEBUG_REGISTER_NAMES
 
+/* This outputs NAME to FILE.  */
+
+#undef  RS6000_OUTPUT_BASENAME
+#define RS6000_OUTPUT_BASENAME(FILE, NAME)     \
+    assemble_name (FILE, NAME);
+
 /* Output before instructions.  */
 /* This is how to output the definition of a user-level label named NAME,
    such as the label on a static function or variable NAME.  */
@@ -92,7 +98,7 @@ Boston, MA 02111-1307, USA.  */
 #undef ASM_GLOBALIZE_LABEL
 #define ASM_GLOBALIZE_LABEL(FILE,NAME) \
   do { fputs ("\t.globl ", FILE);      \
-       assemble_name (FILE, NAME); putc ('\n', FILE);} while (0)
+       RS6000_OUTPUT_BASENAME (FILE, NAME); putc ('\n', FILE);} while (0)
 
 /* This is how to output an internal label prefix.  rs6000.c uses this
    when generating traceback tables.  */
@@ -116,7 +122,7 @@ Boston, MA 02111-1307, USA.  */
 #undef  ASM_OUTPUT_ALIGNED_COMMON
 #define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED)   \
   do { fputs (".comm ", (FILE));                       \
-       assemble_name ((FILE), (NAME));         \
+       RS6000_OUTPUT_BASENAME ((FILE), (NAME));                \
        fprintf ((FILE), ",%d\n", (SIZE)); } while (0)
 
 #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
index b699eda..117bb18 100644 (file)
@@ -4691,7 +4691,11 @@ print_operand (file, x, code)
              break;
            }
        }
+#if TARGET_AIX
+      RS6000_OUTPUT_BASENAME (file, XSTR (x, 0));
+#else
       assemble_name (file, XSTR (x, 0));
+#endif
       return;
 
     case 'Z':
@@ -7045,9 +7049,17 @@ rs6000_output_function_epilogue (file, size)
       /* Offset from start of code to tb table.  */
       fputs ("\t.long ", file);
       ASM_OUTPUT_INTERNAL_LABEL_PREFIX (file, "LT");
+#if TARGET_AIX
+      RS6000_OUTPUT_BASENAME (file, fname);
+#else
       assemble_name (file, fname);
+#endif
       fputs ("-.", file);
+#if TARGET_AIX
+      RS6000_OUTPUT_BASENAME (file, fname);
+#else
       assemble_name (file, fname);
+#endif
       putc ('\n', file);
 
       /* Interrupt handler mask.  */
@@ -7464,7 +7476,13 @@ rs6000_output_symbol_ref (file, x)
      we emit the TOC reference to reference the symbol and not the
      section.  */
   const char *name = XSTR (x, 0);
-  assemble_name (file, name);
+
+  if (VTABLE_NAME_P (name)) 
+    {
+      RS6000_OUTPUT_BASENAME (file, name);
+    }
+  else
+    assemble_name (file, name);
 }
 
 /* Output a TOC entry.  We derive the entry name from what is being
@@ -7697,7 +7715,7 @@ output_toc (file, x, labelno, mode)
      section.  */
   if (VTABLE_NAME_P (name))
     {
-      assemble_name (file, name);
+      RS6000_OUTPUT_BASENAME (file, name);
       if (offset < 0)
        fprintf (file, "%d", offset);
       else if (offset > 0)
index f319fb4..0a24cc3 100644 (file)
@@ -886,6 +886,11 @@ do {                                                                       \
 #undef ENCODE_SECTION_INFO
 #define        ENCODE_SECTION_INFO(DECL) rs6000_encode_section_info (DECL)
 
+/* The ELF version doesn't encode [DS] or whatever at the end of symbols.  */
+
+#define        RS6000_OUTPUT_BASENAME(FILE, NAME)      \
+    assemble_name (FILE, NAME)
+
 /* This macro gets just the user-specified name
    out of the string in a SYMBOL_REF.  Discard
    a leading * or @.  */
index d2e58c5..558560f 100644 (file)
@@ -231,18 +231,28 @@ toc_section ()                                            \
 #define RS6000_ITRUNC "__itrunc"
 #define RS6000_UITRUNC "__uitrunc"
 
+/* This outputs NAME to FILE up to the first null or '['.  */
+
+#define RS6000_OUTPUT_BASENAME(FILE, NAME)     \
+  {                                            \
+    const char *_p;                            \
+                                               \
+    STRIP_NAME_ENCODING (_p, (NAME));          \
+    assemble_name ((FILE), _p);                        \
+  }
+
 /* This is how to output the definition of a user-level label named NAME,
    such as the label on a static function or variable NAME.  */
 
 #define ASM_OUTPUT_LABEL(FILE,NAME)    \
-  do { assemble_name (FILE, NAME); fputs (":\n", FILE); } while (0)
+  do { RS6000_OUTPUT_BASENAME (FILE, NAME); fputs (":\n", FILE); } while (0)
 
 /* This is how to output a command to make the user-level label named NAME
    defined for reference from other files.  */
 
 #define ASM_GLOBALIZE_LABEL(FILE,NAME) \
   do { fputs ("\t.globl ", FILE);      \
-       assemble_name (FILE, NAME); putc ('\n', FILE);} while (0)
+       RS6000_OUTPUT_BASENAME (FILE, NAME); putc ('\n', FILE);} while (0)
 
 /* Remove any trailing [DS] or the like from the symbol name.  */
 
@@ -333,27 +343,27 @@ toc_section ()                                            \
   if (TREE_PUBLIC (DECL))                                      \
     {                                                          \
       fputs ("\t.globl .", FILE);                              \
-      assemble_name (FILE, NAME);                              \
+      RS6000_OUTPUT_BASENAME (FILE, NAME);                     \
       putc ('\n', FILE);                                       \
     }                                                          \
   else                                                         \
     {                                                          \
       fputs ("\t.lglobl .", FILE);                             \
-      assemble_name (FILE, NAME);                              \
+      RS6000_OUTPUT_BASENAME (FILE, NAME);                     \
       putc ('\n', FILE);                                       \
     }                                                          \
   fputs ("\t.csect ", FILE);                                   \
-  assemble_name (FILE, NAME);                                  \
+  RS6000_OUTPUT_BASENAME (FILE, NAME);                         \
   fputs (TARGET_32BIT ? "[DS]\n" : "[DS],3\n", FILE);          \
-  assemble_name (FILE, NAME);                                  \
+  RS6000_OUTPUT_BASENAME (FILE, NAME);                         \
   fputs (":\n", FILE);                                         \
   fputs (TARGET_32BIT ? "\t.long ." : "\t.llong .", FILE);     \
-  assemble_name (FILE, NAME);                                  \
+  RS6000_OUTPUT_BASENAME (FILE, NAME);                         \
   fputs (", TOC[tc0], 0\n", FILE);                             \
   in_section = no_section;                                     \
   function_section(DECL);                                      \
   putc ('.', FILE);                                            \
-  assemble_name (FILE, NAME);                                  \
+  RS6000_OUTPUT_BASENAME (FILE, NAME);                         \
   fputs (":\n", FILE);                                         \
   if (write_symbols == XCOFF_DEBUG)                            \
     xcoffout_declare_function (FILE, DECL, NAME);              \
@@ -421,7 +431,7 @@ toc_section ()                                              \
 
 #define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGNMENT) \
   do { fputs ("\t.comm ", (FILE));                     \
-       assemble_name ((FILE), (NAME));                 \
+       RS6000_OUTPUT_BASENAME ((FILE), (NAME));                \
        if ( (SIZE) > 4)                                        \
          fprintf ((FILE), ",%d,3\n", (SIZE));          \
        else                                            \
@@ -439,7 +449,7 @@ toc_section ()                                              \
 
 #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)    \
   do { fputs ("\t.lcomm ", (FILE));                    \
-       assemble_name ((FILE), (NAME));                 \
+       RS6000_OUTPUT_BASENAME ((FILE), (NAME));                \
        fprintf ((FILE), ",%d,%s\n", (TARGET_32BIT ? (SIZE) : (ROUNDED)), \
                xcoff_bss_section_name);                \
      } while (0)