aboutsummaryrefslogtreecommitdiff
path: root/gcc/diagnostic.c
diff options
context:
space:
mode:
authormanu <manu@138bc75d-0d04-0410-961f-82ee72b054a4>2014-08-20 12:48:16 +0000
committermanu <manu@138bc75d-0d04-0410-961f-82ee72b054a4>2014-08-20 12:48:16 +0000
commite472ce46eb03159d7e97532ee63c890988164946 (patch)
tree3164cedfb7fb422a18eb3305ee3af6daa65943fa /gcc/diagnostic.c
parentcfcb0b368832113b30735c77239a815006672350 (diff)
gcc/ChangeLog:
2014-08-20 Manuel López-Ibáñez <manu@gcc.gnu.org> PR c/59304 * opts-common.c (set_option): Call diagnostic_classify_diagnostic before setting the option. * diagnostic.c (diagnostic_classify_diagnostic): Record command-line status. gcc/testsuite/ChangeLog: 2014-08-20 Manuel López-Ibáñez <manu@gcc.gnu.org> PR c/59304 * gcc.dg/pr59304.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@214221 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/diagnostic.c')
-rw-r--r--gcc/diagnostic.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c
index 2226821bc49..62447212d49 100644
--- a/gcc/diagnostic.c
+++ b/gcc/diagnostic.c
@@ -584,6 +584,15 @@ diagnostic_classify_diagnostic (diagnostic_context *context,
{
int i;
+ /* Record the command-line status, so we can reset it back on DK_POP. */
+ if (old_kind == DK_UNSPECIFIED)
+ {
+ old_kind = context->option_enabled (option_index,
+ context->option_state)
+ ? DK_WARNING : DK_IGNORED;
+ context->classify_diagnostic[option_index] = old_kind;
+ }
+
for (i = context->n_classification_history - 1; i >= 0; i --)
if (context->classification_history[i].option == option_index)
{