OSDN Git Service

2010-02-26 Manuel López-Ibáñez <manu@gcc.gnu.org>
authormanu <manu@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 26 Feb 2010 22:06:56 +0000 (22:06 +0000)
committermanu <manu@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 26 Feb 2010 22:06:56 +0000 (22:06 +0000)
* diagnostic.c (diagnostic_initialize): Update.
(diagnostic_report_diagnostic): Test inhibit_notes_p for
informative notes.
* diagnostic.h (diagnostic_context): New bool inhibit_notes_p.
(diagnostic_inhibit_notes): New.
* toplev.c (process_options): inhibit notes with -fcompare-debug.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@157100 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/diagnostic.c
gcc/diagnostic.h
gcc/toplev.c

index 07fae6a..f731855 100644 (file)
@@ -1,5 +1,14 @@
 2010-02-26  Manuel López-Ibáñez  <manu@gcc.gnu.org>
 
+       * diagnostic.c (diagnostic_initialize): Update.
+       (diagnostic_report_diagnostic): Test inhibit_notes_p for
+       informative notes.
+       * diagnostic.h (diagnostic_context): New bool inhibit_notes_p.
+       (diagnostic_inhibit_notes): New.
+       * toplev.c (process_options): inhibit notes with -fcompare-debug.
+
+2010-02-26  Manuel López-Ibáñez  <manu@gcc.gnu.org>
+
        PR c/20631
        * doc/cpp.texi: Use c90 instead of c89 and gnu90 instead of gnu89.
        * doc/standards.texi: Likewise.
index 28217a7..4322d65 100644 (file)
@@ -109,6 +109,7 @@ diagnostic_initialize (diagnostic_context *context)
   context->last_module = 0;
   context->last_function = NULL;
   context->lock = 0;
+  context->inhibit_notes_p = false;
 }
 
 /* Initialize DIAGNOSTIC, where the message MSG has already been
@@ -317,11 +318,11 @@ diagnostic_report_diagnostic (diagnostic_context *context,
       && !diagnostic_report_warnings_p (location))
     return false;
 
-  if (diagnostic->kind == DK_NOTE && flag_compare_debug)
-    return false;
-
   if (diagnostic->kind == DK_PEDWARN)
     diagnostic->kind = pedantic_warning_kind ();
+  if (diagnostic->kind == DK_NOTE && context->inhibit_notes_p)
+    return false;
 
   if (context->lock > 0)
     {
index 0cfadb6..e2dc8c8 100644 (file)
@@ -113,8 +113,17 @@ struct diagnostic_context
   const struct line_map *last_module;
 
   int lock;
+
+  bool inhibit_notes_p;
 };
 
+static inline void
+diagnostic_inhibit_notes (diagnostic_context * context)
+{
+  context->inhibit_notes_p = true;
+}
+
+
 /* Client supplied function to announce a diagnostic.  */
 #define diagnostic_starter(DC) (DC)->begin_diagnostic
 
index 402ad82..385d5e1 100644 (file)
@@ -1810,6 +1810,10 @@ process_options (void)
   OVERRIDE_OPTIONS;
 #endif
 
+  /* Avoid any informative notes in the second run of -fcompare-debug.  */
+  if (flag_compare_debug) 
+    diagnostic_inhibit_notes (global_dc);
+
   if (flag_section_anchors && !target_supports_section_anchors_p ())
     {
       warning (OPT_fsection_anchors,