aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDavid Edelsohn <dje@gcc.gnu.org>2001-10-29 16:29:30 -0500
committerDavid Edelsohn <dje@gcc.gnu.org>2001-10-29 16:29:30 -0500
commit54ee97997a4e9b5a54ae8cbc765ec10da0c1a425 (patch)
treeedc942936d3f5f4a78e0d940e7dc38438f0ce341 /gcc
parent26e51caa4d5c885118c3b0ce9e07e77178029d4b (diff)
downloadgcc-54ee97997a4e9b5a54ae8cbc765ec10da0c1a425.zip
gcc-54ee97997a4e9b5a54ae8cbc765ec10da0c1a425.tar.gz
gcc-54ee97997a4e9b5a54ae8cbc765ec10da0c1a425.tar.bz2
Undo assemble_name change in earlier patch.
From-SVN: r46617
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/rs6000/aix31.h2
-rw-r--r--gcc/config/rs6000/darwin.h10
-rw-r--r--gcc/config/rs6000/rs6000.c22
-rw-r--r--gcc/config/rs6000/sysv4.h5
-rw-r--r--gcc/config/rs6000/xcoff.h30
6 files changed, 60 insertions, 17 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5df28d7..5cd6c8d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/config/rs6000/aix31.h b/gcc/config/rs6000/aix31.h
index 8915292..1156b1e 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 fe192b5..768f4d7 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 b699eda..117bb18 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 f319fb4..0a24cc3 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 d2e58c5..558560fb 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)