From: Gabriel Dos Reis Date: Tue, 26 Jun 2001 14:06:07 +0000 (+0000) Subject: diagnostic.h (struct diagnostic_context): Add new field. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f68fc4db625bf32c800bbc49e1b62fd736b78090;p=gcc.git diagnostic.h (struct diagnostic_context): Add new field. * diagnostic.h (struct diagnostic_context): Add new field. (lang_diagnostic_starter, lang_diagnostic_finalizer): Remove declaratons. (global_dc): Declare. * diagnostic.c (global_diagnostic_context): New variable. (global_output_buffer): Remove. (global_dc): Define. (lang_diagnostic_starter, lang_diagnostic_finalizer): Remove definitions. (initialize_diagnostics): Adjust initialization. (set_diagnostic_context): Adjust setting. cp/ * error.c (init_error): Adjust settings. From-SVN: r43581 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d2db6990731..03e00157d75 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,17 @@ +2001-06-26 Gabriel Dos Reis + + * diagnostic.h (struct diagnostic_context): Add new field. + (lang_diagnostic_starter, lang_diagnostic_finalizer): Remove + declaratons. + (global_dc): Declare. + * diagnostic.c (global_diagnostic_context): New variable. + (global_output_buffer): Remove. + (global_dc): Define. + (lang_diagnostic_starter, lang_diagnostic_finalizer): Remove + definitions. + (initialize_diagnostics): Adjust initialization. + (set_diagnostic_context): Adjust setting. + 2001-06-26 Rainer Orth * config/mips/iris5.h (UNALIGNED_INT_ASM_OP, diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index ea5de138d54..44233af6d74 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,7 @@ +2001-06-26 Gabriel Dos Reis + + * error.c (init_error): Adjust settings. + 2001-06-19 Richard Sandiford * except.c (initialize_handler_parm): Expect __cxa_begin_catch to diff --git a/gcc/cp/error.c b/gcc/cp/error.c index 7d2f1fab7cd..e028a109fbe 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -191,13 +191,12 @@ cp_printer * cp_printers[256] = void init_error () { - init_output_buffer (scratch_buffer, /* prefix */NULL, /* line-width */0); - print_error_function = lang_print_error_function; - lang_diagnostic_starter = cp_diagnostic_starter; - lang_diagnostic_finalizer = cp_diagnostic_finalizer; - + diagnostic_starter (global_dc) = cp_diagnostic_starter; + diagnostic_finalizer (global_dc) = cp_diagnostic_finalizer; lang_printer = cp_tree_printer; + + init_output_buffer (scratch_buffer, /* prefix */NULL, /* line-width */0); } /* Dump a scope, if deemed necessary. */ diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c index cf78b206ffd..a13c2755a2d 100644 --- a/gcc/diagnostic.c +++ b/gcc/diagnostic.c @@ -108,9 +108,12 @@ extern int warnings_are_errors; /* Front-end specific tree formatter, if non-NULL. */ printer_fn lang_printer = NULL; -/* An output_buffer surrogate for stderr. */ -static output_buffer global_output_buffer; -output_buffer *diagnostic_buffer = &global_output_buffer; +/* A diagnostic_context surrogate for stderr. */ +static diagnostic_context global_diagnostic_context; +diagnostic_context *global_dc = &global_diagnostic_context; + +/* This will be removed shortly. */ +output_buffer *diagnostic_buffer = &global_diagnostic_context.buffer; /* Function of last error message; more generally, function such that if next error message is in it @@ -126,10 +129,6 @@ static int last_error_tick; void (*print_error_function) PARAMS ((const char *)) = default_print_error_function; -/* Hooks for language specific diagnostic messages pager and finalizer. */ -diagnostic_starter_fn lang_diagnostic_starter; -diagnostic_finalizer_fn lang_diagnostic_finalizer; - /* Maximum characters per line in automatic line wrapping mode. Zero means don't wrap lines. */ @@ -189,8 +188,8 @@ initialize_diagnostics () /* Proceed to actual initialization. */ default_initialize_buffer (diagnostic_buffer); - lang_diagnostic_starter = default_diagnostic_starter; - lang_diagnostic_finalizer = default_diagnostic_finalizer; + diagnostic_starter (global_dc) = default_diagnostic_starter; + diagnostic_finalizer (global_dc) = default_diagnostic_finalizer; } void @@ -1772,8 +1771,8 @@ set_diagnostic_context (dc, msgid, args_ptr, file, line, warn) diagnostic_file_location (dc) = file; diagnostic_line_location (dc) = line; diagnostic_is_warning (dc) = warn; - diagnostic_starter (dc) = lang_diagnostic_starter; - diagnostic_finalizer (dc) = lang_diagnostic_finalizer; + diagnostic_starter (dc) = diagnostic_starter (global_dc); + diagnostic_finalizer (dc) = diagnostic_finalizer (global_dc); } void diff --git a/gcc/diagnostic.h b/gcc/diagnostic.h index fd3c92dfb39..fea82ba6039 100644 --- a/gcc/diagnostic.h +++ b/gcc/diagnostic.h @@ -132,6 +132,11 @@ struct output_buffer the context of a diagnostic message. */ struct diagnostic_context { + /* Where most of the diagnostic formatting work is done. In Object + Oriented terms, we'll say that diagnostic_context is a sub-class of + output_buffer. */ + output_buffer buffer; + /* The diagnostic message to output. */ const char *message; @@ -185,9 +190,6 @@ struct diagnostic_context extern printer_fn lang_printer; -extern diagnostic_starter_fn lang_diagnostic_starter; -extern diagnostic_finalizer_fn lang_diagnostic_finalizer; - extern int diagnostic_message_length_per_line; /* This output buffer is used by front-ends that directly output @@ -196,6 +198,7 @@ extern int diagnostic_message_length_per_line; avoided. This global buffer will go away, once all such usage has been removed. */ extern output_buffer *diagnostic_buffer; +extern diagnostic_context *global_dc; #define diagnostic_kind_count(BUFFER, DK) \ (BUFFER)->state.diagnostic_count[(int) DK]