dumpfile.c: fix stray dump_loc output (PR tree-optimization/87309)
authorDavid Malcolm <dmalcolm@redhat.com>
Fri, 21 Sep 2018 14:17:07 +0000 (14:17 +0000)
committerDavid Malcolm <dmalcolm@gcc.gnu.org>
Fri, 21 Sep 2018 14:17:07 +0000 (14:17 +0000)
In r262891 I reimplemented this call:
  dump_printf_loc (MSG_NOTE, loc, "=== %s ===\n", name);
in dump_begin_scope to use direct calls to dump_loc:
  if (dump_file)
    {
      dump_loc (MSG_NOTE, dump_file, loc.get_location_t ());
      fprintf (dump_file, "=== %s ===\n", name);
    }

  if (alt_dump_file)
   {
     dump_loc (MSG_NOTE, alt_dump_file, loc.get_location_t ());
     fprintf (alt_dump_file, "=== %s ===\n", name);
   }

However ::dump_loc doesn't filter with pflags and alt_flags.

This lead to stray output of the form:
  test.cpp:1:6: note: test.cpp:1:11: note:
when using -fopt-info with "optimized" or "missed".

This patch adds this missing filtering, eliminating the stray partial
note output.

gcc/ChangeLog:
PR tree-optimization/87309
* dumpfile.c (dump_context::begin_scope): Filter the dump_loc
calls with pflags and alt_flags.
(selftest::test_capture_of_dump_calls): Add test of interaction of
MSG_OPTIMIZED_LOCATIONS with AUTO_DUMP_SCOPE.

gcc/testsuite/ChangeLog:
PR tree-optimization/87309
* gcc.dg/pr87309.c: New test.

From-SVN: r264481

gcc/ChangeLog
gcc/dumpfile.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr87309.c [new file with mode: 0644]

index e9b8e96552e494d53f225ab65b38dbcd74a85505..667ecca4ed0c32cacd27c1d4865c4f9331dcc564 100644 (file)
@@ -1,3 +1,11 @@
+2018-09-21  David Malcolm  <dmalcolm@redhat.com>
+
+       PR tree-optimization/87309
+       * dumpfile.c (dump_context::begin_scope): Filter the dump_loc
+       calls with pflags and alt_flags.
+       (selftest::test_capture_of_dump_calls): Add test of interaction of
+       MSG_OPTIMIZED_LOCATIONS with AUTO_DUMP_SCOPE.
+
 2018-09-21  Olivier Hainque  <hainque@adacore.com>
 
        * config.gcc: Factorize and comment inclusion of vxworks-dummy.h.
index a81ab3ed3c6da46dcb1ecd289414d73d99e61a0f..5655e460a5ab4b47d3bada18efd26b4b2834586b 100644 (file)
@@ -1048,14 +1048,14 @@ dump_context::get_scope_depth () const
 void
 dump_context::begin_scope (const char *name, const dump_location_t &loc)
 {
-  if (dump_file)
+  if (dump_file && (MSG_NOTE & pflags))
     ::dump_loc (MSG_NOTE, dump_file, loc.get_location_t ());
 
-  if (alt_dump_file)
+  if (alt_dump_file && (MSG_NOTE & alt_flags))
     ::dump_loc (MSG_NOTE, alt_dump_file, loc.get_location_t ());
 
   /* Support for temp_dump_context in selftests.  */
-  if (m_test_pp)
+  if (m_test_pp && (MSG_NOTE & m_test_pp_flags))
     ::dump_loc (MSG_NOTE, m_test_pp, loc.get_location_t ());
 
   pretty_printer pp;
@@ -2304,6 +2304,29 @@ test_capture_of_dump_calls (const line_table_case &case_)
                 OPTINFO_KIND_FAILURE);
     }
   }
+
+  /* Verify that MSG_* affect AUTO_DUMP_SCOPE and the dump calls.  */
+  {
+    temp_dump_context tmp (false, MSG_OPTIMIZED_LOCATIONS);
+    dump_printf_loc (MSG_NOTE, stmt, "msg 1\n");
+    {
+      AUTO_DUMP_SCOPE ("outer scope", stmt);
+      dump_printf_loc (MSG_NOTE, stmt, "msg 2\n");
+      {
+       AUTO_DUMP_SCOPE ("middle scope", stmt);
+       dump_printf_loc (MSG_NOTE, stmt, "msg 3\n");
+       {
+         AUTO_DUMP_SCOPE ("inner scope", stmt);
+         dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, stmt, "msg 4\n");
+       }
+       dump_printf_loc (MSG_NOTE, stmt, "msg 5\n");
+      }
+      dump_printf_loc (MSG_NOTE, stmt, "msg 6\n");
+    }
+    dump_printf_loc (MSG_NOTE, stmt, "msg 7\n");
+
+    ASSERT_DUMPED_TEXT_EQ (tmp, "test.txt:5:10: note:    msg 4\n");
+  }
 }
 
 /* Run all of the selftests within this file.  */
index 6f338c2e84c5ca6ebcf3fb160a231edfdbb14ca1..b861eabc0e812e8ef1bfcb16dab25ecd076511d8 100644 (file)
@@ -1,3 +1,8 @@
+2018-09-21  David Malcolm  <dmalcolm@redhat.com>
+
+       PR tree-optimization/87309
+       * gcc.dg/pr87309.c: New test.
+
 2018-09-21  Eric Botcazou  <ebotcazou@adacore.com>
 
        * c-c++-common/dump-ada-spec-14.c: New test.
diff --git a/gcc/testsuite/gcc.dg/pr87309.c b/gcc/testsuite/gcc.dg/pr87309.c
new file mode 100644 (file)
index 0000000..8bd5a44
--- /dev/null
@@ -0,0 +1,4 @@
+/* { dg-do compile } */
+/* { dg-options "-fopt-info-vec-optimized -O3" } */
+
+void a() {} /* { dg-bogus "note" } */