Undo assemble_name change in earlier patch.

From-SVN: r46617
This commit is contained in:
David Edelsohn 2001-10-29 16:29:30 -05:00
parent 26e51caa4d
commit 54ee97997a
6 changed files with 60 additions and 17 deletions

View 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.

View 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); \
}

View 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) \

View 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)

View 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 @. */

View 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)