summaryrefslogtreecommitdiff
path: root/gcc/diagnostic.c
diff options
context:
space:
mode:
authordj <dj@138bc75d-0d04-0410-961f-82ee72b054a4>2005-05-04 01:36:13 +0000
committerdj <dj@138bc75d-0d04-0410-961f-82ee72b054a4>2005-05-04 01:36:13 +0000
commitb0932b2f71e5a3b0a2780f66e8f0e5d881a74742 (patch)
tree02e58ad626b4c528bb00fa48493c8680b37ca246 /gcc/diagnostic.c
parentfd15895973887c7d54aaeef472c2eb28c319d5c0 (diff)
downloadgcc-b0932b2f71e5a3b0a2780f66e8f0e5d881a74742.tar.gz
* common.opt (fdiagnostics-show-option): No variable is needed.
* diagnostic.h (diagnostic_context): Add show_option_requested flag. * diagnostic.c (diagnostic_initialize): Initialize show_option_requested. (diagnostic_report_diagnostic): Test for enabled diagnostics here. Save and restore original message format. Use flag in context instead of global. (warning): Don't test for enabled warnings here. * opts.c (common_handle_option): Handle -fdiagnostics-show-option here. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@99204 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/diagnostic.c')
-rw-r--r--gcc/diagnostic.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c
index b50fb1410c4..e48133299af 100644
--- a/gcc/diagnostic.c
+++ b/gcc/diagnostic.c
@@ -102,6 +102,7 @@ diagnostic_initialize (diagnostic_context *context)
memset (context->diagnostic_count, 0, sizeof context->diagnostic_count);
context->issue_warnings_are_errors_message = true;
context->warning_as_error_requested = false;
+ context->show_option_requested = false;
context->abort_on_error = false;
context->internal_error = NULL;
diagnostic_starter (context) = default_diagnostic_starter;
@@ -331,11 +332,17 @@ diagnostic_report_diagnostic (diagnostic_context *context,
error_recursion (context);
}
+ if (diagnostic->option_index
+ && ! option_enabled (diagnostic->option_index))
+ return;
+
context->lock++;
if (diagnostic_count_diagnostic (context, diagnostic))
{
- if (diagnostics_show_options && diagnostic->option_index)
+ const char *saved_format_spec = diagnostic->message.format_spec;
+
+ if (context->show_option_requested && diagnostic->option_index)
diagnostic->message.format_spec
= ACONCAT ((diagnostic->message.format_spec,
" [", cl_options[diagnostic->option_index].opt_text, "]", NULL));
@@ -347,6 +354,7 @@ diagnostic_report_diagnostic (diagnostic_context *context,
(*diagnostic_finalizer (context)) (context, diagnostic);
pp_flush (context->printer);
diagnostic_action_after_output (context, diagnostic);
+ diagnostic->message.format_spec = saved_format_spec;
}
context->lock--;
@@ -424,9 +432,6 @@ warning (int opt, const char *msgid, ...)
diagnostic_info diagnostic;
va_list ap;
- if (opt && ! option_enabled (opt))
- return;
-
va_start (ap, msgid);
diagnostic_set_info (&diagnostic, msgid, &ap, input_location, DK_WARNING);
diagnostic.option_index = opt;