summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/diagnostic.c22
-rw-r--r--gcc/diagnostic.h5
-rw-r--r--gcc/toplev.c2
4 files changed, 37 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 953922e1dbb..bb11b06d0d7 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,14 @@
+2000-09-06 Gabriel Dos Reis <gdr@codesourcery.com>
+
+ * toplev.c (display_help): Fix thinko in documentation.
+
+ * diagnostic.h (output_buffer::indent_skip): New fields.
+ (output_indentation): New macro.
+
+ * diagnostic.c (output_indent): New function.
+ (output_set_prefix, clear_diagnostic_info): Use.
+ (output_emit_prefix): Predict future indentation.
+
2000-09-06 DJ Delorie <dj@redhat.com>
* Makefile.in (stage_*): add more dependencies to ensure parallel
diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c
index 075f439a0e2..afb25c1ef3b 100644
--- a/gcc/diagnostic.c
+++ b/gcc/diagnostic.c
@@ -67,6 +67,7 @@ static void output_do_verbatim PARAMS ((output_buffer *,
const char *, va_list *));
static void output_to_stream PARAMS ((output_buffer *, FILE *));
static void output_format PARAMS ((output_buffer *));
+static void output_indent PARAMS ((output_buffer *));
static char *vbuild_message_string PARAMS ((const char *, va_list));
static char *build_message_string PARAMS ((const char *, ...))
@@ -267,6 +268,7 @@ output_set_prefix (buffer, prefix)
output_prefix (buffer) = prefix;
set_real_maximum_length (buffer);
prefix_was_emitted_for (buffer) = 0;
+ output_indentation (buffer) = 0;
}
/* Free BUFFER's prefix, a previously malloc'd string. */
@@ -301,6 +303,7 @@ clear_diagnostic_info (buffer)
output_buffer_text_cursor (buffer) = NULL;
output_buffer_ptr_to_format_args (buffer) = NULL;
prefix_was_emitted_for (buffer) = 0;
+ output_indentation (buffer) = 0;
}
/* Construct an output BUFFER with PREFIX and of MAXIMUM_LENGTH
@@ -395,8 +398,12 @@ output_emit_prefix (buffer)
case DIAGNOSTICS_SHOW_PREFIX_ONCE:
if (prefix_was_emitted_for (buffer))
- break;
- /* Else fall through. */
+ {
+ output_indent (buffer);
+ break;
+ }
+ output_indentation (buffer) += 3;
+ /* Fall through. */
case DIAGNOSTICS_SHOW_PREFIX_EVERY_LINE:
{
@@ -549,6 +556,17 @@ output_append (buffer, start, end)
output_append_r (buffer, start, end - start);
}
+static void
+output_indent (buffer)
+ output_buffer *buffer;
+{
+ int n = output_indentation (buffer);
+ int i;
+
+ for (i = 0; i < n; ++i)
+ output_add_character (buffer, ' ');
+}
+
/* Wrap a text delimited by START and END into BUFFER. */
static void
diff --git a/gcc/diagnostic.h b/gcc/diagnostic.h
index 39f650e10f5..f3ebcf86a64 100644
--- a/gcc/diagnostic.h
+++ b/gcc/diagnostic.h
@@ -51,6 +51,10 @@ typedef struct
/* The ideal upper bound of number of characters per line, as suggested
by front-end. */
int ideal_maximum_length;
+
+ /* Indentation count. */
+ int indent_skip;
+
/* Nonzero if current PREFIX was emitted at least once. */
int emitted_prefix_p;
@@ -88,6 +92,7 @@ struct output_buffer
#define output_buffer_format_args(BUFFER) *((BUFFER)->state.format_args)
#define output_needs_newline(BUFFER) (BUFFER)->state.need_newline_p
#define output_buffer_state(BUFFER) (BUFFER)->state
+#define output_indentation(BUFFER) (BUFFER)->state.indent_skip
/* This data structure bundles altogether any information relevent to
the context of a diagnostic message. */
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 20c6385edcf..d657d49ba48 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -3774,7 +3774,7 @@ display_help ()
printf (_(" -fcall-saved-<register> Mark <register> as being preserved across functions\n"));
printf (_(" -finline-limit=<number> Limits the size of inlined functions to <number>\n"));
printf (_(" -fmessage-length=<number> Limits diagnostics messages lengths to <number> characters per line. 0 suppresses line-wrapping\n"));
- printf (_(" -fdiagnostics-show-location=[once | never] Indicates how often source location information should be emitted, as prefix, at the beginning of diagnostics when line-wrapping\n"));
+ printf (_(" -fdiagnostics-show-location=[once | every-line] Indicates how often source location information should be emitted, as prefix, at the beginning of diagnostics when line-wrapping\n"));
for (i = ARRAY_SIZE (f_options); i--;)
{