summaryrefslogtreecommitdiff
path: root/gcc/opts.c
diff options
context:
space:
mode:
authorDJ Delorie <dj@redhat.com>2010-06-21 16:58:57 -0400
committerDJ Delorie <dj@gcc.gnu.org>2010-06-21 16:58:57 -0400
commitcd7fe53b723e8f24dc2efc21bc68a2ac174ee882 (patch)
treebed45f50f0a58fddadbef5bd923786107ade4104 /gcc/opts.c
parentfa188ff0f28cb5fe194837825d41dea4e5aa3cdc (diff)
downloadgcc-cd7fe53b723e8f24dc2efc21bc68a2ac174ee882.tar.gz
diagnostic.h (diagnostic_classification_change_t): New.
* diagnostic.h (diagnostic_classification_change_t): New. (diagnostic_context): Add history and push/pop list. (diagnostic_push_diagnostics): Declare. (diagnostic_pop_diagnostics): Declare. * diagnostic.c (diagnostic_classify_diagnostic): Store changes from pragmas in a history chain instead of the global table. (diagnostic_push_diagnostics): New. (diagnostic_pop_diagnostics): New. (diagnostic_report_diagnostic): Scan history chain to find state of diagnostics as of the diagnostic location. * opts.c (set_option): Pass UNKNOWN_LOCATION to diagnostic_classify_diagnostic. (enable_warning_as_error): Likewise. * diagnostic-core.h (DK_POP): Add after "real" diagnostics, for use in the history chain. * c-family/c-pragma.c (handle_pragma_diagnostic): Add push/pop, allow these pragmas anywhere. * doc/extend.texi: Document pragma GCC diagnostic changes. * gcc.dg/pragma-diag-1.c: New. From-SVN: r161115
Diffstat (limited to 'gcc/opts.c')
-rw-r--r--gcc/opts.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/opts.c b/gcc/opts.c
index 006e0f18b16..55f8c77d7f1 100644
--- a/gcc/opts.c
+++ b/gcc/opts.c
@@ -2396,7 +2396,8 @@ set_option (int opt_index, int value, const char *arg, int kind)
}
if ((diagnostic_t)kind != DK_UNSPECIFIED)
- diagnostic_classify_diagnostic (global_dc, opt_index, (diagnostic_t)kind);
+ diagnostic_classify_diagnostic (global_dc, opt_index, (diagnostic_t)kind,
+ UNKNOWN_LOCATION);
}
@@ -2434,7 +2435,8 @@ enable_warning_as_error (const char *arg, int value, unsigned int lang_mask)
{
const diagnostic_t kind = value ? DK_ERROR : DK_WARNING;
- diagnostic_classify_diagnostic (global_dc, option_index, kind);
+ diagnostic_classify_diagnostic (global_dc, option_index, kind,
+ UNKNOWN_LOCATION);
if (kind == DK_ERROR)
{
const struct cl_option * const option = cl_options + option_index;