diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3bfb9960a72..c1b0859f4bf 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2004-02-03 Richard Sandiford + + * config/mips/iris5.h (ASM_OUTPUT_ASCII): Use mips_output_ascii to + put the original string in a comment. + * config/mips/mips-protos.h (mips_output_ascii): Add prefix argument. + * config/mips/mips.c (mips_output_ascii): Likewise. + * config/mips/mips.h (ASM_OUTPUT_ASCII): Adjust accordingly. + 2004-02-03 Kazu Hirata * system.h (GIV_SORT_CRITERION): Poison. diff --git a/gcc/config/mips/iris5.h b/gcc/config/mips/iris5.h index 41de65223f9..c1edeed295d 100644 --- a/gcc/config/mips/iris5.h +++ b/gcc/config/mips/iris5.h @@ -193,13 +193,16 @@ Boston, MA 02111-1307, USA. */ #define MIPS_DEFAULT_GVALUE 0 /* Some assemblers have a bug that causes backslash escaped chars in .ascii - to be misassembled, so we just completely avoid it. */ + to be misassembled, so avoid it by using .byte instead. Write the original + string in a comment, partly to improve readability and partly for the sake + of scan-assembler-type tests. */ #undef ASM_OUTPUT_ASCII #define ASM_OUTPUT_ASCII(FILE,PTR,LEN) \ do { \ const unsigned char *s_ = (const unsigned char *)(PTR); \ unsigned len_ = (LEN); \ unsigned i_; \ + mips_output_ascii (FILE, (const char *) s_, len_, "\t# "); \ for (i_ = 0; i_ < len_; s_++, i_++) \ { \ if ((i_ % 8) == 0) \ diff --git a/gcc/config/mips/mips-protos.h b/gcc/config/mips/mips-protos.h index 5c0081f0fba..8a55e1ac125 100644 --- a/gcc/config/mips/mips-protos.h +++ b/gcc/config/mips/mips-protos.h @@ -101,7 +101,7 @@ extern void irix_output_external_libcall (rtx); #endif extern void mips_output_filename (FILE *, const char *); extern void mips_output_lineno (FILE *, int); -extern void mips_output_ascii (FILE *, const char *, size_t); +extern void mips_output_ascii (FILE *, const char *, size_t, const char *); extern void mips_output_aligned_bss (FILE *, tree, const char *, unsigned HOST_WIDE_INT, int); extern void mips_declare_object (FILE *, const char *, const char *, diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index 44ed4f898b4..9b07a0dd64e 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -5816,17 +5816,20 @@ mips_output_lineno (FILE *stream, int line) } } -/* Output an ASCII string, in a space-saving way. */ +/* Output an ASCII string, in a space-saving way. PREFIX is the string + that should be written before the opening quote, such as "\t.ascii\t" + for real string data or "\t# " for a comment. */ void -mips_output_ascii (FILE *stream, const char *string_param, size_t len) +mips_output_ascii (FILE *stream, const char *string_param, size_t len, + const char *prefix) { size_t i; int cur_pos = 17; register const unsigned char *string = (const unsigned char *)string_param; - fprintf (stream, "\t.ascii\t\""); + fprintf (stream, "%s\"", prefix); for (i = 0; i < len; i++) { register int c = string[i]; @@ -5886,7 +5889,7 @@ mips_output_ascii (FILE *stream, const char *string_param, size_t len) if (cur_pos > 72 && i+1 < len) { cur_pos = 17; - fprintf (stream, "\"\n\t.ascii\t\""); + fprintf (stream, "\"\n%s\"", prefix); } } fprintf (stream, "\"\n"); diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h index 9541c4ecf57..6b137e422bb 100644 --- a/gcc/config/mips/mips.h +++ b/gcc/config/mips/mips.h @@ -3301,7 +3301,7 @@ do { \ /* This is how to output a string. */ #undef ASM_OUTPUT_ASCII #define ASM_OUTPUT_ASCII(STREAM, STRING, LEN) \ - mips_output_ascii (STREAM, STRING, LEN) + mips_output_ascii (STREAM, STRING, LEN, "\t.ascii\t") /* Output #ident as a in the read-only data section. */ #undef ASM_OUTPUT_IDENT