diagnostic.c (init_output_buffer): Don't initialize format_args.
authorRichard Henderson <rth@cygnus.com>
Sat, 22 Apr 2000 18:41:05 +0000 (11:41 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Sat, 22 Apr 2000 18:41:05 +0000 (11:41 -0700)
        * 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
gcc/diagnostic.c
gcc/system.h

index be2cd8a000a3591aae8959677ba988515b6355f5..2fcc64a8aad3e80d22b958d85722e40339d25bf2 100644 (file)
@@ -1,3 +1,13 @@
+2000-04-22  Richard Henderson  <rth@cygnus.com>
+
+       * 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  <rth@cygnus.com>
 
        * predict.c (expected_value_to_br_prob): Don't bomb if op1 of
index 28b6998de339f6a5cf93d58f54329a86b22a4532..93678ac5f2f78696330ea615ea268294cabeb446 100644 (file)
@@ -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);
index 0d1da2cd3f26722a853192b8dd271cc4ad999b4b..407897759cfa009bf97b53a88b97ce796e613c49 100644 (file)
@@ -35,6 +35,14 @@ Boston, MA 02111-1307, USA.  */
 #include <varargs.h>
 #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 <stdio.h>
 
 /* Define a generic NULL if one hasn't already been defined.  */