The path-printing default of -fdiagnostics-path-format=inline-events
interacted poorly with -fdiagnostics-plain-output, so it makes most
sense to add -fdiagnostics-path-format=separate-events to
-fdiagnostics-plain-output.

Seen when adding an experimental analyzer plugin to gcc.dg/plugin.exp.

Successfully bootstrapped & regrtested on x86_64-pc-linux-gnu.
Pushed to master as 7345c89ecb1a31ce96c6789bffc7183268a040b3.

gcc/ChangeLog:
        * doc/invoke.texi (-fdiagnostics-plain-output): Add
        -fdiagnostics-path-format=separate-events to list of
        options injected by -fdiagnostics-plain-output.
        * opts-common.c (decode_cmdline_options_to_array): Likewise.

gcc/testsuite/ChangeLog:
        * g++.dg/analyzer/analyzer.exp (DEFAULT_CXXFLAGS): Remove
        -fdiagnostics-path-format=separate-events.
        * gcc.dg/analyzer/analyzer.exp (DEFAULT_CFLAGS): Likewise.
        * gcc.dg/plugin/diagnostic-path-format-default.c: Rename to...
        * gcc.dg/plugin/diagnostic-path-format-plain.c: ...this.  Remove
        dg-options directive.  Copy remainder of test from
        diagnostic-path-format-separate-events.c.
        * gcc.dg/plugin/diagnostic-test-paths-2.c: Add
        -fdiagnostics-path-format=inline-events to options.
        Fix expected output for location of conditional within "for" loop.
        * gcc.dg/plugin/plugin.exp (plugin_test_list): Update for
        renaming.
        * gfortran.dg/analyzer/analyzer.exp (DEFAULT_FFLAGS): Remove
        -fdiagnostics-path-format=separate-events.
---
 gcc/doc/invoke.texi                           |   3 +-
 gcc/opts-common.c                             |   1 +
 gcc/testsuite/g++.dg/analyzer/analyzer.exp    |   2 +-
 gcc/testsuite/gcc.dg/analyzer/analyzer.exp    |   2 +-
 .../plugin/diagnostic-path-format-default.c   | 142 ------------------
 .../plugin/diagnostic-path-format-plain.c     |  42 ++++++
 .../gcc.dg/plugin/diagnostic-test-paths-2.c   |   8 +-
 gcc/testsuite/gcc.dg/plugin/plugin.exp        |   2 +-
 .../gfortran.dg/analyzer/analyzer.exp         |   2 +-
 9 files changed, 53 insertions(+), 151 deletions(-)
 delete mode 100644 gcc/testsuite/gcc.dg/plugin/diagnostic-path-format-default.c
 create mode 100644 gcc/testsuite/gcc.dg/plugin/diagnostic-path-format-plain.c

diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index f623467b763..d8bc4cc3267 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -4345,7 +4345,8 @@ options:
 @gccoptlist{-fno-diagnostics-show-caret @gol
 -fno-diagnostics-show-line-numbers @gol
 -fdiagnostics-color=never @gol
--fdiagnostics-urls=never}
+-fdiagnostics-urls=never @gol
+-fdiagnostics-path-format=separate-events}
 In the future, if GCC changes the default appearance of its diagnostics, the
 corresponding option to disable the new behavior will be added to this list.
 
diff --git a/gcc/opts-common.c b/gcc/opts-common.c
index 237e4ce454e..8ec8c1ec1a8 100644
--- a/gcc/opts-common.c
+++ b/gcc/opts-common.c
@@ -1000,6 +1000,7 @@ decode_cmdline_options_to_array (unsigned int argc, const 
char **argv,
            "-fno-diagnostics-show-line-numbers",
            "-fdiagnostics-color=never",
            "-fdiagnostics-urls=never",
+           "-fdiagnostics-path-format=separate-events",
          };
          const int num_expanded = ARRAY_SIZE (expanded_args);
          opt_array_len += num_expanded - 1;
diff --git a/gcc/testsuite/g++.dg/analyzer/analyzer.exp 
b/gcc/testsuite/g++.dg/analyzer/analyzer.exp
index 60262f678ee..78edff2d11b 100644
--- a/gcc/testsuite/g++.dg/analyzer/analyzer.exp
+++ b/gcc/testsuite/g++.dg/analyzer/analyzer.exp
@@ -29,7 +29,7 @@ if [info exists DEFAULT_CXXFLAGS] then {
 }
 
 # If a testcase doesn't have special options, use these.
-set DEFAULT_CXXFLAGS " -fanalyzer -fdiagnostics-path-format=separate-events 
-Wanalyzer-too-complex -fanalyzer-call-summaries"
+set DEFAULT_CXXFLAGS " -fanalyzer -Wanalyzer-too-complex 
-fanalyzer-call-summaries"
 
 # Initialize `dg'.
 dg-init
diff --git a/gcc/testsuite/gcc.dg/analyzer/analyzer.exp 
b/gcc/testsuite/gcc.dg/analyzer/analyzer.exp
index ac9c49511aa..d72fef37ede 100644
--- a/gcc/testsuite/gcc.dg/analyzer/analyzer.exp
+++ b/gcc/testsuite/gcc.dg/analyzer/analyzer.exp
@@ -30,7 +30,7 @@ if [info exists DEFAULT_CFLAGS] then {
 }
 
 # If a testcase doesn't have special options, use these.
-set DEFAULT_CFLAGS "-fanalyzer -fdiagnostics-path-format=separate-events 
-Wanalyzer-too-complex -fanalyzer-call-summaries"
+set DEFAULT_CFLAGS "-fanalyzer -Wanalyzer-too-complex 
-fanalyzer-call-summaries"
 
 # Initialize `dg'.
 dg-init
diff --git a/gcc/testsuite/gcc.dg/plugin/diagnostic-path-format-default.c 
b/gcc/testsuite/gcc.dg/plugin/diagnostic-path-format-default.c
deleted file mode 100644
index 5712dbd6472..00000000000
--- a/gcc/testsuite/gcc.dg/plugin/diagnostic-path-format-default.c
+++ /dev/null
@@ -1,142 +0,0 @@
-/* { dg-do compile } */
-/* { dg-options "-fdiagnostics-show-caret" } */
-
-#include <stdlib.h>
-
-void *wrapped_malloc (size_t size)
-{
-  return malloc (size);
-}
-
-void wrapped_free (void *ptr)
-{
-  free (ptr); /* { dg-warning "double-free of 'ptr' \\\[CWE-415\\]" } */
-  /* { dg-begin-multiline-output "" }
-   free (ptr);
-   ^~~~~~~~~~
-  'test': events 1-2
-    |
-    | {
-    | ^
-    | |
-    | (1) entering 'test'
-    |   boxed_int *obj = make_boxed_int (i);
-    |                    ~~~~~~~~~~~~~~~~~~
-    |                    |
-    |                    (2) calling 'make_boxed_int'
-    |
-    +--> 'make_boxed_int': events 3-4
-           |
-           | {
-           | ^
-           | |
-           | (3) entering 'make_boxed_int'
-           |   boxed_int *result = (boxed_int *)wrapped_malloc (sizeof 
(boxed_int));
-           |                                    
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-           |                                    |
-           |                                    (4) calling 'wrapped_malloc'
-           |
-           +--> 'wrapped_malloc': events 5-6
-                  |
-                  | {
-                  | ^
-                  | |
-                  | (5) entering 'wrapped_malloc'
-                  |   return malloc (size);
-                  |          ~~~~~~~~~~~~~
-                  |          |
-                  |          (6) calling 'malloc'
-                  |
-    <-------------+
-    |
-  'test': event 7
-    |
-    |   free_boxed_int (obj);
-    |   ^~~~~~~~~~~~~~~~~~~~
-    |   |
-    |   (7) calling 'free_boxed_int'
-    |
-    +--> 'free_boxed_int': events 8-9
-           |
-           | {
-           | ^
-           | |
-           | (8) entering 'free_boxed_int'
-           |   wrapped_free (bi);
-           |   ~~~~~~~~~~~~~~~~~
-           |   |
-           |   (9) calling 'wrapped_free'
-           |
-           +--> 'wrapped_free': events 10-11
-                  |
-                  | {
-                  | ^
-                  | |
-                  | (10) entering 'wrapped_free'
-                  |   free (ptr);
-                  |   ~~~~~~~~~~
-                  |   |
-                  |   (11) calling 'free'
-                  |
-    <-------------+
-    |
-  'test': event 12
-    |
-    |   free_boxed_int (obj);
-    |   ^~~~~~~~~~~~~~~~~~~~
-    |   |
-    |   (12) calling 'free_boxed_int'
-    |
-    +--> 'free_boxed_int': events 13-14
-           |
-           | {
-           | ^
-           | |
-           | (13) entering 'free_boxed_int'
-           |   wrapped_free (bi);
-           |   ~~~~~~~~~~~~~~~~~
-           |   |
-           |   (14) calling 'wrapped_free'
-           |
-           +--> 'wrapped_free': events 15-16
-                  |
-                  | {
-                  | ^
-                  | |
-                  | (15) entering 'wrapped_free'
-                  |   free (ptr);
-                  |   ~~~~~~~~~~
-                  |   |
-                  |   (16) calling 'free'
-                  |
-     { dg-end-multiline-output "" } */
-}
-
-typedef struct boxed_int
-{
-  int i;
-} boxed_int;
-
-boxed_int *
-make_boxed_int (int i)
-{
-  boxed_int *result = (boxed_int *)wrapped_malloc (sizeof (boxed_int));
-  result->i = i;
-  return result;
-}
-
-void
-free_boxed_int (boxed_int *bi)
-{
-  wrapped_free (bi);
-}
-
-void test (int i)
-{
-  boxed_int *obj = make_boxed_int (i);
-
-  free_boxed_int (obj);
-
-  free_boxed_int (obj);
-}
-
diff --git a/gcc/testsuite/gcc.dg/plugin/diagnostic-path-format-plain.c 
b/gcc/testsuite/gcc.dg/plugin/diagnostic-path-format-plain.c
new file mode 100644
index 00000000000..75acd258c3b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/plugin/diagnostic-path-format-plain.c
@@ -0,0 +1,42 @@
+/* { dg-do compile } */
+
+#include <stdlib.h>
+
+void *wrapped_malloc (size_t size)
+{
+  return malloc (size);
+}
+
+void wrapped_free (void *ptr)
+{
+  free (ptr); /* { dg-warning "double-free of 'ptr' \\\[CWE-415\\]" } */
+}
+
+typedef struct boxed_int
+{
+  int i;
+} boxed_int;
+
+boxed_int *
+make_boxed_int (int i)
+{
+  boxed_int *result = (boxed_int *)wrapped_malloc (sizeof (boxed_int));
+  result->i = i;
+  return result;
+}
+
+void
+free_boxed_int (boxed_int *bi)
+{
+  wrapped_free (bi);
+}
+
+void test (int i)
+{ /* { dg-message "\\(1\\) entering 'test'" } */
+  boxed_int *obj = make_boxed_int (i); /* { dg-message "\\(2\\) calling 
'make_boxed_int'" } */
+  /* etc */
+
+  free_boxed_int (obj);
+
+  free_boxed_int (obj);
+}
diff --git a/gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-2.c 
b/gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-2.c
index 946a234dd23..b2b269a12b5 100644
--- a/gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-2.c
+++ b/gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-2.c
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-fdiagnostics-show-caret -fdiagnostics-show-line-numbers" } */
+/* { dg-options "-fdiagnostics-show-caret -fdiagnostics-show-line-numbers 
-fdiagnostics-path-format=inline-events" } */
 
 #include <stddef.h>
 #include <stdlib.h>
@@ -43,9 +43,9 @@ make_a_list_of_random_ints_badly(PyObject *self,
     |      |          (1) when 'PyList_New' fails, returning NULL
     |   26 | 
     |   27 |   for (i = 0; i < count; i++) {
-    |      |   ~~~     
-    |      |   |
-    |      |   (2) when 'i < count'
+    |      |               ~~~~~~~~~
+    |      |                 |
+    |      |                 (2) when 'i < count'
     |   28 |     item = PyLong_FromLong(random());
     |   29 |     PyList_Append(list, item);
     |      |     ~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/gcc/testsuite/gcc.dg/plugin/plugin.exp 
b/gcc/testsuite/gcc.dg/plugin/plugin.exp
index c02b0082715..5dd102ae05c 100644
--- a/gcc/testsuite/gcc.dg/plugin/plugin.exp
+++ b/gcc/testsuite/gcc.dg/plugin/plugin.exp
@@ -100,7 +100,7 @@ set plugin_test_list [list \
          diagnostic-test-paths-2.c \
          diagnostic-test-paths-3.c \
          diagnostic-test-paths-4.c \
-         diagnostic-path-format-default.c \
+         diagnostic-path-format-plain.c \
          diagnostic-path-format-none.c \
          diagnostic-path-format-separate-events.c \
          diagnostic-path-format-inline-events-1.c \
diff --git a/gcc/testsuite/gfortran.dg/analyzer/analyzer.exp 
b/gcc/testsuite/gfortran.dg/analyzer/analyzer.exp
index 00edfa54dce..462395c935c 100644
--- a/gcc/testsuite/gfortran.dg/analyzer/analyzer.exp
+++ b/gcc/testsuite/gfortran.dg/analyzer/analyzer.exp
@@ -33,7 +33,7 @@ if [info exists DEFAULT_FFLAGS] then {
 }
 
 # If a testcase doesn't have special options, use these.
-set DEFAULT_FFLAGS "-fanalyzer -fdiagnostics-path-format=separate-events 
-Wanalyzer-too-complex -fanalyzer-call-summaries"
+set DEFAULT_FFLAGS "-fanalyzer -Wanalyzer-too-complex 
-fanalyzer-call-summaries"
 
 # Initialize `dg'.
 dg-init
-- 
2.26.2

Reply via email to