From 6f81b1ade69b0a968ba6fe5ea1e633cb75a11db4 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Sat, 22 Apr 2000 11:41:05 -0700 Subject: [PATCH] diagnostic.c (init_output_buffer): Don't initialize format_args. * diagnostic.c (init_output_buffer): Don't initialize format_args. (output_clear): Likewise. (output_printf): Use va_copy. (vline_wrapper_message_with_location): Likewise. (v_message_with_decl): Likewise. (line_wrapper_printf): VA_START infor buffer.format_args directly. * system.h (va_copy): Provide default implementation. From-SVN: r33341 --- gcc/ChangeLog | 10 ++++++++++ gcc/diagnostic.c | 24 ++++++++++-------------- gcc/system.h | 8 ++++++++ 3 files changed, 28 insertions(+), 14 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index be2cd8a000a..2fcc64a8aad 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2000-04-22 Richard Henderson + + * diagnostic.c (init_output_buffer): Don't initialize format_args. + (output_clear): Likewise. + (output_printf): Use va_copy. + (vline_wrapper_message_with_location): Likewise. + (v_message_with_decl): Likewise. + (line_wrapper_printf): VA_START infor buffer.format_args directly. + * system.h (va_copy): Provide default implementation. + 2000-04-22 Richard Henderson * predict.c (expected_value_to_br_prob): Don't bomb if op1 of diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c index 28b6998de33..93678ac5f2f 100644 --- a/gcc/diagnostic.c +++ b/gcc/diagnostic.c @@ -198,7 +198,6 @@ init_output_buffer (buffer, prefix, maximum_length) output_set_prefix (buffer, prefix); buffer->cursor = NULL; - buffer->format_args = NULL; } /* Reinitialize BUFFER. */ @@ -209,7 +208,6 @@ output_clear (buffer) obstack_free (&buffer->obstack, obstack_base (&buffer->obstack)); buffer->line_length = 0; buffer->cursor = NULL; - buffer->format_args = NULL; } /* Finishes to construct a NULL-terminated character string representing @@ -493,7 +491,7 @@ output_printf VPARAMS ((struct output_buffer *buffer, const char *msgid, ...)) msgid = va_arg (ap, const char *); #endif - buffer->format_args = ap; + va_copy (buffer->format_args, ap); output_notice (buffer, msgid); va_end (buffer->format_args); } @@ -510,17 +508,15 @@ line_wrapper_printf VPARAMS ((FILE *file, const char *msgid, ...)) const char *msgid; #endif output_buffer buffer; - va_list ap; - VA_START (ap, msgid); + init_output_buffer (&buffer, NULL, output_maximum_width); + VA_START (buffer.format_args, msgid); #ifndef ANSI_PROTOTYPES - file = va_arg (ap, FILE *); - msgid = va_arg (ap, const char *); + file = va_arg (buffer.format_args, FILE *); + msgid = va_arg (buffer.format_args, const char *); #endif - init_output_buffer (&buffer, NULL, output_maximum_width); - buffer.format_args = ap; output_notice (&buffer, msgid); output_flush_on (&buffer, file); @@ -538,9 +534,9 @@ vline_wrapper_message_with_location (file, line, warn, msgid, ap) { output_buffer buffer; - init_output_buffer - (&buffer, build_location_prefix (file, line, warn), output_maximum_width); - buffer.format_args = ap; + init_output_buffer (&buffer, build_location_prefix (file, line, warn), + output_maximum_width); + va_copy (buffer.format_args, ap); output_notice (&buffer, msgid); output_flush_on (&buffer, stderr); @@ -681,9 +677,9 @@ v_message_with_decl (decl, warn, msgid, ap) { if (doing_line_wrapping ()) { - buffer.format_args = ap; + va_copy (buffer.format_args, ap); output_notice (&buffer, p); - ap = buffer.format_args; + va_copy (ap, buffer.format_args); } else vfprintf (stderr, p, ap); diff --git a/gcc/system.h b/gcc/system.h index 0d1da2cd3f2..407897759cf 100644 --- a/gcc/system.h +++ b/gcc/system.h @@ -35,6 +35,14 @@ Boston, MA 02111-1307, USA. */ #include #endif +#ifndef va_copy +# ifdef __va_copy +# define va_copy(d,s) __va_copy((d),(s)) +# else +# define va_copy(d,s) ((d) = (s)) +# endif +#endif + #include /* Define a generic NULL if one hasn't already been defined. */ -- 2.30.2