From 54ee97997a4e9b5a54ae8cbc765ec10da0c1a425 Mon Sep 17 00:00:00 2001 From: David Edelsohn Date: Mon, 29 Oct 2001 16:29:30 -0500 Subject: [PATCH] Undo assemble_name change in earlier patch. From-SVN: r46617 --- gcc/ChangeLog | 8 ++++++-- gcc/config/rs6000/aix31.h | 2 +- gcc/config/rs6000/darwin.h | 10 ++++++++-- gcc/config/rs6000/rs6000.c | 22 ++++++++++++++++++++-- gcc/config/rs6000/sysv4.h | 5 +++++ gcc/config/rs6000/xcoff.h | 30 ++++++++++++++++++++---------- 6 files changed, 60 insertions(+), 17 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5df28d73e63..5cd6c8db334 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,9 +1,13 @@ +2001-10-29 David Edelsohn + + Undo assemble_name change in earlier patch. + Mon Oct 29 21:11:40 2001 Nicola Pero * 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. diff --git a/gcc/config/rs6000/aix31.h b/gcc/config/rs6000/aix31.h index 8915292f40f..1156b1eb0d4 100644 --- a/gcc/config/rs6000/aix31.h +++ b/gcc/config/rs6000/aix31.h @@ -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); \ } diff --git a/gcc/config/rs6000/darwin.h b/gcc/config/rs6000/darwin.h index fe192b58d70..768f4d77e27 100644 --- a/gcc/config/rs6000/darwin.h +++ b/gcc/config/rs6000/darwin.h @@ -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) \ diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index b699edac8d9..117bb180ff5 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -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) diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h index f319fb43d82..0a24cc30be4 100644 --- a/gcc/config/rs6000/sysv4.h +++ b/gcc/config/rs6000/sysv4.h @@ -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 @. */ diff --git a/gcc/config/rs6000/xcoff.h b/gcc/config/rs6000/xcoff.h index d2e58c53b3b..558560fb2ce 100644 --- a/gcc/config/rs6000/xcoff.h +++ b/gcc/config/rs6000/xcoff.h @@ -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) -- 2.30.2