From: Eric Botcazou Date: Wed, 7 Aug 2013 17:15:25 +0000 (+0000) Subject: diagnostic.c (diagnostic_classify_diagnostic): Accept zero index and document its... X-Git-Tag: upstream/12.2.0~68487 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3c8ca1abdedb2c0663e24e9dc5942280a8c7820f;p=platform%2Fupstream%2Fgcc.git diagnostic.c (diagnostic_classify_diagnostic): Accept zero index and document its semantics. * diagnostic.c (diagnostic_classify_diagnostic): Accept zero index and document its semantics. (diagnostic_report_diagnostic): Adjust accordingly. From-SVN: r201574 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1dd783d..d55f0f4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-08-07 Eric Botcazou + + * diagnostic.c (diagnostic_classify_diagnostic): Accept zero index and + document its semantics. + (diagnostic_report_diagnostic): Adjust accordingly. + 2013-08-07 David Malcolm * config/sparc/sparc.c (insert_pass_work_around_errata): Move diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c index 3612ca0..dfc11f2 100644 --- a/gcc/diagnostic.c +++ b/gcc/diagnostic.c @@ -554,7 +554,8 @@ default_diagnostic_finalizer (diagnostic_context *context ATTRIBUTE_UNUSED, /* Interface to specify diagnostic kind overrides. Returns the previous setting, or DK_UNSPECIFIED if the parameters are out of - range. */ + range. If OPTION_INDEX is zero, the new setting is for all the + diagnostics. */ diagnostic_t diagnostic_classify_diagnostic (diagnostic_context *context, int option_index, @@ -563,7 +564,7 @@ diagnostic_classify_diagnostic (diagnostic_context *context, { diagnostic_t old_kind; - if (option_index <= 0 + if (option_index < 0 || option_index >= context->n_opts || new_kind >= DK_LAST_DIAGNOSTIC_KIND) return DK_UNSPECIFIED; @@ -695,9 +696,8 @@ diagnostic_report_diagnostic (diagnostic_context *context, /* This tests for #pragma diagnostic changes. */ if (context->n_classification_history > 0) { - int i; /* FIXME: Stupid search. Optimize later. */ - for (i = context->n_classification_history - 1; i >= 0; i --) + for (int i = context->n_classification_history - 1; i >= 0; i --) { if (linemap_location_before_p (line_table, @@ -709,7 +709,9 @@ diagnostic_report_diagnostic (diagnostic_context *context, i = context->classification_history[i].option; continue; } - if (context->classification_history[i].option == diagnostic->option_index) + int option = context->classification_history[i].option; + /* The option 0 is for all the diagnostics. */ + if (option == 0 || option == diagnostic->option_index) { diag_class = context->classification_history[i].kind; if (diag_class != DK_UNSPECIFIED) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ef030b0..ffa5fca 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2013-08-07 Eric Botcazou + + * gnat.dg/warn9.adb: New test. + 2013-08-07 Paolo Carlini PR c++/46206 diff --git a/gcc/testsuite/gnat.dg/warn9.adb b/gcc/testsuite/gnat.dg/warn9.adb new file mode 100644 index 0000000..38f9d71 --- /dev/null +++ b/gcc/testsuite/gnat.dg/warn9.adb @@ -0,0 +1,10 @@ +-- { dg-do compile } +-- { dg-options "-Wuninitialized" } + +pragma Warnings (Off); + +function Warn9 return Integer is + I : Integer; +begin + return I; +end;