aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>2000-04-22 11:41:05 -0700
committerRichard Henderson <rth@gcc.gnu.org>2000-04-22 11:41:05 -0700
commit6f81b1ade69b0a968ba6fe5ea1e633cb75a11db4 (patch)
tree1cdfebb14f928bf66cf2dcec028f0342806d1b1e
parentd9490f2f4ebedc6c568b963b230f20b298a22159 (diff)
downloadgcc-6f81b1ade69b0a968ba6fe5ea1e633cb75a11db4.zip
gcc-6f81b1ade69b0a968ba6fe5ea1e633cb75a11db4.tar.gz
gcc-6f81b1ade69b0a968ba6fe5ea1e633cb75a11db4.tar.bz2
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
-rw-r--r--gcc/ChangeLog10
-rw-r--r--gcc/diagnostic.c24
-rw-r--r--gcc/system.h8
3 files changed, 28 insertions, 14 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index be2cd8a..2fcc64a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,15 @@
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
the collected condition is not a constant.
diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c
index 28b6998..93678ac 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 0d1da2c..4078977 100644
--- a/gcc/system.h
+++ b/gcc/system.h
@@ -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. */