The "json" output format for diagnostics was deprecated in GCC 15, with
advice to users seeking machine-readable diagnostics from GCC to use
SARIF instead.

This patch eliminates it from GCC 16, simplifying the diagnostics
subsystem somewhat.

Note that the Ada frontend seems to have its own implementation of this
in errout.adb (Output_JSON_Message), and documented in
gnat_ugn.texi.  This patch does not touch Ada.

Successfully bootstrapped & regrtested on x86_64-pc-linux-gnu.
Pushed to trunk as r16-1830-g51ce373481e848.

gcc/ChangeLog:
        * Makefile.in (OBJS-libcommon): Drop diagnostic-format-json.o.
        * common.opt (fdiagnostics-format=): Drop
        "json|json-stderr|json-file".
        (diagnostics_output_format): Drop values "json", "json-stderr",
        and "json-file".
        * diagnostic-format-json.cc: Delete file.
        * diagnostic-format.h
        (diagnostic_output_format_init_json_stderr): Delete.
        (diagnostic_output_format_init_json_file): Delete.
        * diagnostic.cc (diagnostic_output_format_init): Delete cases for
        DIAGNOSTICS_OUTPUT_FORMAT_JSON_STDERR and
        DIAGNOSTICS_OUTPUT_FORMAT_JSON_FILE.
        * diagnostic.h (DIAGNOSTICS_OUTPUT_FORMAT_JSON_STDERR): Delete.
        (DIAGNOSTICS_OUTPUT_FORMAT_JSON_FILE): Delete.
        * doc/invoke.texi: Remove references to json output format.
        * doc/ux.texi: Likewise.
        * selftest-run-tests.cc (selftest::run_tests): Drop call to
        deleted selftest::diagnostic_format_json_cc_tests.
        * selftest.h (selftest::diagnostic_format_json_cc_tests): Delete.

gcc/testsuite/ChangeLog:
        * c-c++-common/analyzer/out-of-bounds-diagram-1-json.c: Deleted test.
        * c-c++-common/diagnostic-format-json-1.c: Deleted test.
        * c-c++-common/diagnostic-format-json-2.c: Deleted test.
        * c-c++-common/diagnostic-format-json-3.c: Deleted test.
        * c-c++-common/diagnostic-format-json-4.c: Deleted test.
        * c-c++-common/diagnostic-format-json-5.c: Deleted test.
        * c-c++-common/diagnostic-format-json-file-1.c: Deleted test.
        * c-c++-common/diagnostic-format-json-stderr-1.c: Deleted test.
        * c-c++-common/pr106133.c: Deleted test.
        * g++.dg/pr90462.C: Deleted test.
        * gcc.dg/plugin/diagnostic-test-paths-3.c: Deleted test.
        * gcc.dg/plugin/plugin.exp (plugin_test_list): Remove deleted
        test.
        * gfortran.dg/diagnostic-format-json-1.F90: Deleted test.
        * gfortran.dg/diagnostic-format-json-2.F90: Deleted test.
        * gfortran.dg/diagnostic-format-json-3.F90: Deleted test.
        * gfortran.dg/diagnostic-format-json-pr105916.F90: Deleted test.

Signed-off-by: David Malcolm <dmalc...@redhat.com>
---
 gcc/Makefile.in                               |   1 -
 gcc/common.opt                                |  11 +-
 gcc/diagnostic-format-json.cc                 | 605 ------------------
 gcc/diagnostic-format.h                       |   8 -
 gcc/diagnostic.cc                             |  11 -
 gcc/diagnostic.h                              |   6 -
 gcc/doc/invoke.texi                           |  23 +-
 gcc/doc/ux.texi                               |   2 +-
 gcc/selftest-run-tests.cc                     |   1 -
 gcc/selftest.h                                |   1 -
 .../analyzer/out-of-bounds-diagram-1-json.c   |  13 -
 .../c-c++-common/diagnostic-format-json-1.c   |  22 -
 .../c-c++-common/diagnostic-format-json-2.c   |  26 -
 .../c-c++-common/diagnostic-format-json-3.c   |  26 -
 .../c-c++-common/diagnostic-format-json-4.c   |  44 --
 .../c-c++-common/diagnostic-format-json-5.c   |  38 --
 .../diagnostic-format-json-file-1.c           |   8 -
 .../diagnostic-format-json-stderr-1.c         |  24 -
 gcc/testsuite/c-c++-common/pr106133.c         |   3 -
 gcc/testsuite/g++.dg/pr90462.C                |  49 --
 .../gcc.dg/plugin/diagnostic-test-paths-3.c   |  75 ---
 gcc/testsuite/gcc.dg/plugin/plugin.exp        |   1 -
 .../gfortran.dg/diagnostic-format-json-1.F90  |  24 -
 .../gfortran.dg/diagnostic-format-json-2.F90  |  26 -
 .../gfortran.dg/diagnostic-format-json-3.F90  |  26 -
 .../diagnostic-format-json-pr105916.F90       |  14 -
 26 files changed, 7 insertions(+), 1081 deletions(-)
 delete mode 100644 gcc/diagnostic-format-json.cc
 delete mode 100644 
gcc/testsuite/c-c++-common/analyzer/out-of-bounds-diagram-1-json.c
 delete mode 100644 gcc/testsuite/c-c++-common/diagnostic-format-json-1.c
 delete mode 100644 gcc/testsuite/c-c++-common/diagnostic-format-json-2.c
 delete mode 100644 gcc/testsuite/c-c++-common/diagnostic-format-json-3.c
 delete mode 100644 gcc/testsuite/c-c++-common/diagnostic-format-json-4.c
 delete mode 100644 gcc/testsuite/c-c++-common/diagnostic-format-json-5.c
 delete mode 100644 gcc/testsuite/c-c++-common/diagnostic-format-json-file-1.c
 delete mode 100644 gcc/testsuite/c-c++-common/diagnostic-format-json-stderr-1.c
 delete mode 100644 gcc/testsuite/c-c++-common/pr106133.c
 delete mode 100644 gcc/testsuite/g++.dg/pr90462.C
 delete mode 100644 gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-3.c
 delete mode 100644 gcc/testsuite/gfortran.dg/diagnostic-format-json-1.F90
 delete mode 100644 gcc/testsuite/gfortran.dg/diagnostic-format-json-2.F90
 delete mode 100644 gcc/testsuite/gfortran.dg/diagnostic-format-json-3.F90
 delete mode 100644 
gcc/testsuite/gfortran.dg/diagnostic-format-json-pr105916.F90

diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 9535804f7fb5..d5ceccc424b2 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -1853,7 +1853,6 @@ OBJS = \
 # no target dependencies.
 OBJS-libcommon = diagnostic-spec.o diagnostic.o diagnostic-color.o \
        diagnostic-format-html.o \
-       diagnostic-format-json.o \
        diagnostic-format-sarif.o \
        diagnostic-format-text.o \
        diagnostic-global-context.o \
diff --git a/gcc/common.opt b/gcc/common.opt
index 0e50305dde8e..6db0f3a4ac74 100644
--- a/gcc/common.opt
+++ b/gcc/common.opt
@@ -1481,7 +1481,7 @@ Common Joined RejectNegative UInteger
 
 fdiagnostics-format=
 Common Joined RejectNegative Enum(diagnostics_output_format)
--fdiagnostics-format=[text|sarif-stderr|sarif-file|json|json-stderr|json-file] 
Select output format.
+-fdiagnostics-format=[text|sarif-stderr|sarif-file]    Select output format.
 
 fdiagnostics-add-output=
 Common Joined RejectNegative
@@ -1523,15 +1523,6 @@ Name(diagnostics_output_format) Type(int)
 EnumValue
 Enum(diagnostics_output_format) String(text) 
Value(DIAGNOSTICS_OUTPUT_FORMAT_TEXT)
 
-EnumValue
-Enum(diagnostics_output_format) String(json) 
Value(DIAGNOSTICS_OUTPUT_FORMAT_JSON_STDERR)
-
-EnumValue
-Enum(diagnostics_output_format) String(json-stderr) 
Value(DIAGNOSTICS_OUTPUT_FORMAT_JSON_STDERR)
-
-EnumValue
-Enum(diagnostics_output_format) String(json-file) 
Value(DIAGNOSTICS_OUTPUT_FORMAT_JSON_FILE)
-
 EnumValue
 Enum(diagnostics_output_format) String(sarif-stderr) 
Value(DIAGNOSTICS_OUTPUT_FORMAT_SARIF_STDERR)
 
diff --git a/gcc/diagnostic-format-json.cc b/gcc/diagnostic-format-json.cc
deleted file mode 100644
index fb5489778358..000000000000
--- a/gcc/diagnostic-format-json.cc
+++ /dev/null
@@ -1,605 +0,0 @@
-/* JSON output for diagnostics
-   Copyright (C) 2018-2025 Free Software Foundation, Inc.
-   Contributed by David Malcolm <dmalc...@redhat.com>.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-for more details.
-
-You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING3.  If not see
-<http://www.gnu.org/licenses/>.  */
-
-
-#include "config.h"
-#define INCLUDE_VECTOR
-#include "system.h"
-#include "coretypes.h"
-#include "diagnostic.h"
-#include "selftest-diagnostic.h"
-#include "diagnostic-metadata.h"
-#include "diagnostic-path.h"
-#include "diagnostic-format.h"
-#include "diagnostic-buffer.h"
-#include "json.h"
-#include "selftest.h"
-#include "diagnostic-client-data-hooks.h"
-#include "logical-location.h"
-
-class json_output_format;
-
-/* Concrete buffering implementation subclass for JSON output.  */
-
-class diagnostic_json_format_buffer : public diagnostic_per_format_buffer
-{
-public:
-  friend class json_output_format;
-
-  diagnostic_json_format_buffer (json_output_format &format)
-  : m_format (format)
-  {}
-
-  void dump (FILE *out, int indent) const final override;
-  bool empty_p () const final override;
-  void move_to (diagnostic_per_format_buffer &dest) final override;
-  void clear () final override;
-  void flush () final override;
-
-private:
-  json_output_format &m_format;
-  std::vector<std::unique_ptr<json::object>> m_results;
-};
-
-/* Subclass of diagnostic_output_format for JSON output.  */
-
-class json_output_format : public diagnostic_output_format
-{
-public:
-  friend class diagnostic_json_format_buffer;
-
-  void dump (FILE *out, int indent) const override
-  {
-    fprintf (out, "%*sjson_output_format\n", indent, "");
-    diagnostic_output_format::dump (out, indent);
-  }
-
-  std::unique_ptr<diagnostic_per_format_buffer>
-  make_per_format_buffer () final override
-  {
-    return std::make_unique<diagnostic_json_format_buffer> (*this);
-  }
-  void set_buffer (diagnostic_per_format_buffer *base_buffer) final override
-  {
-    diagnostic_json_format_buffer *buffer
-      = static_cast<diagnostic_json_format_buffer *> (base_buffer);
-    m_buffer = buffer;
-  }
-
-  void on_begin_group () final override
-  {
-    /* No-op.  */
-  }
-  void on_end_group () final override
-  {
-    m_cur_group = nullptr;
-    m_cur_children_array = nullptr;
-  }
-  void
-  on_report_diagnostic (const diagnostic_info &diagnostic,
-                       diagnostic_t orig_diag_kind) final override;
-  void on_diagram (const diagnostic_diagram &) final override
-  {
-    /* No-op.  */
-  }
-  void after_diagnostic (const diagnostic_info &) final override
-  {
-    /* No-op.  */
-  }
-  void update_printer () final override
-  {
-    m_printer = m_context.clone_printer ();
-    pp_show_color (m_printer.get ()) = false;
-  }
-  bool follows_reference_printer_p () const final override
-  {
-    return false;
-  }
-
-protected:
-  json_output_format (diagnostic_context &context,
-                     bool formatted)
-  : diagnostic_output_format (context),
-    m_buffer (nullptr),
-    m_toplevel_array (std::make_unique<json::array> ()),
-    m_cur_group (nullptr),
-    m_cur_children_array (nullptr),
-    m_formatted (formatted)
-  {
-  }
-
-  /* Flush the top-level array to OUTF.  */
-  void
-  flush_to_file (FILE *outf)
-  {
-    m_toplevel_array->dump (outf, m_formatted);
-    fprintf (outf, "\n");
-    m_toplevel_array = nullptr;
-  }
-
-private:
-  diagnostic_json_format_buffer *m_buffer;
-
-  /* The top-level JSON array of pending diagnostics.  */
-  std::unique_ptr<json::array> m_toplevel_array;
-
-  /* The JSON object for the current diagnostic group.  */
-  json::object *m_cur_group; // borrowed
-
-  /* The JSON array for the "children" array within the current diagnostic
-     group.  */
-  json::array *m_cur_children_array; // borrowed
-
-  bool m_formatted;
-};
-
-/* Generate a JSON object for LOC.  */
-
-static std::unique_ptr<json::object>
-json_from_expanded_location (diagnostic_context &context, location_t loc)
-{
-  expanded_location exploc = expand_location (loc);
-  std::unique_ptr<json::object> result = std::make_unique <json::object> ();
-  if (exploc.file)
-    result->set_string ("file", exploc.file);
-  result->set_integer ("line", exploc.line);
-
-  const enum diagnostics_column_unit orig_unit = context.m_column_unit;
-  struct
-  {
-    const char *name;
-    enum diagnostics_column_unit unit;
-  } column_fields[] = {
-    {"display-column", DIAGNOSTICS_COLUMN_UNIT_DISPLAY},
-    {"byte-column", DIAGNOSTICS_COLUMN_UNIT_BYTE}
-  };
-  int the_column = INT_MIN;
-  for (int i = 0; i != ARRAY_SIZE (column_fields); ++i)
-    {
-      context.m_column_unit = column_fields[i].unit;
-      diagnostic_column_policy col_policy (context);
-      const int col = col_policy.converted_column (exploc);
-      result->set_integer (column_fields[i].name, col);
-      if (column_fields[i].unit == orig_unit)
-       the_column = col;
-    }
-  gcc_assert (the_column != INT_MIN);
-  result->set_integer ("column", the_column);
-  context.m_column_unit = orig_unit;
-  return result;
-}
-
-/* Generate a JSON object for LOC_RANGE.  */
-
-static std::unique_ptr<json::object>
-json_from_location_range (diagnostic_context &context,
-                         const location_range *loc_range, unsigned range_idx)
-{
-  location_t caret_loc = get_pure_location (loc_range->m_loc);
-
-  if (caret_loc == UNKNOWN_LOCATION)
-    return nullptr;
-
-  location_t start_loc = get_start (loc_range->m_loc);
-  location_t finish_loc = get_finish (loc_range->m_loc);
-
-  std::unique_ptr<json::object> result = std::make_unique <json::object> ();
-  result->set ("caret",
-              json_from_expanded_location (context, caret_loc));
-  if (start_loc != caret_loc
-      && start_loc != UNKNOWN_LOCATION)
-    result->set ("start",
-                json_from_expanded_location (context, start_loc));
-  if (finish_loc != caret_loc
-      && finish_loc != UNKNOWN_LOCATION)
-    result->set ("finish",
-                json_from_expanded_location (context, finish_loc));
-
-  if (loc_range->m_label)
-    {
-      label_text text (loc_range->m_label->get_text (range_idx));
-      if (text.get ())
-       result->set_string ("label", text.get ());
-    }
-
-  return result;
-}
-
-/* Generate a JSON object for HINT.  */
-
-static std::unique_ptr<json::object>
-json_from_fixit_hint (diagnostic_context &context, const fixit_hint *hint)
-{
-  std::unique_ptr<json::object> fixit_obj = std::make_unique <json::object> ();
-
-  location_t start_loc = hint->get_start_loc ();
-  fixit_obj->set ("start",
-                 json_from_expanded_location (context, start_loc));
-  location_t next_loc = hint->get_next_loc ();
-  fixit_obj->set ("next",
-                 json_from_expanded_location (context, next_loc). release ());
-  fixit_obj->set_string ("string", hint->get_string ());
-
-  return fixit_obj;
-}
-
-/* Generate a JSON object for METADATA.  */
-
-static std::unique_ptr<json::object>
-json_from_metadata (const diagnostic_metadata *metadata)
-{
-  std::unique_ptr<json::object> metadata_obj = std::make_unique <json::object> 
();
-
-  if (metadata->get_cwe ())
-    metadata_obj->set_integer ("cwe", metadata->get_cwe ());
-
-  return metadata_obj;
-}
-
-/* Make a JSON value for PATH.  */
-
-static std::unique_ptr<json::array>
-make_json_for_path (diagnostic_context &context,
-                   pretty_printer *ref_pp,
-                   const diagnostic_path *path)
-{
-  std::unique_ptr<json::array> path_array = std::make_unique<json::array> ();
-  for (unsigned i = 0; i < path->num_events (); i++)
-    {
-      const diagnostic_event &event = path->get_event (i);
-
-      std::unique_ptr<json::object> event_obj = std::make_unique 
<json::object> ();
-      if (event.get_location ())
-       event_obj->set ("location",
-                       json_from_expanded_location (context,
-                                                    event.get_location ()));
-      auto pp = ref_pp->clone ();
-      event.print_desc (*pp.get ());
-      event_obj->set_string ("description", pp_formatted_text (pp.get ()));
-      if (logical_location logical_loc = event.get_logical_location ())
-       if (auto hooks = context.get_client_data_hooks ())
-         if (auto mgr = hooks->get_logical_location_manager ())
-           {
-             label_text name (mgr->get_name_for_path_output (logical_loc));
-             event_obj->set_string ("function", name.get ());
-           }
-      event_obj->set_integer ("depth", event.get_stack_depth ());
-      path_array->append (std::move (event_obj));
-    }
-  return path_array;
-}
-
-/* class diagnostic_json_format_buffer : public diagnostic_per_format_buffer.  
*/
-
-void
-diagnostic_json_format_buffer::dump (FILE *out, int indent) const
-{
-  fprintf (out, "%*sdiagnostic_json_format_buffer:\n", indent, "");
-  int idx = 0;
-  for (auto &result : m_results)
-    {
-      fprintf (out, "%*sresult[%i]:\n", indent + 2, "", idx);
-      result->dump (out, true);
-      fprintf (out, "\n");
-      ++idx;
-    }
-}
-
-bool
-diagnostic_json_format_buffer::empty_p () const
-{
-  return m_results.empty ();
-}
-
-void
-diagnostic_json_format_buffer::move_to (diagnostic_per_format_buffer &base)
-{
-  diagnostic_json_format_buffer &dest
-    = static_cast<diagnostic_json_format_buffer &> (base);
-  for (auto &&result : m_results)
-    dest.m_results.push_back (std::move (result));
-  m_results.clear ();
-}
-
-void
-diagnostic_json_format_buffer::clear ()
-{
-  m_results.clear ();
-}
-
-void
-diagnostic_json_format_buffer::flush ()
-{
-  for (auto &&result : m_results)
-    m_format.m_toplevel_array->append (std::move (result));
-  m_results.clear ();
-}
-
-/* Implementation of "on_report_diagnostic" vfunc for JSON output.
-   Generate a JSON object for DIAGNOSTIC, and store for output
-   within current diagnostic group.  */
-
-void
-json_output_format::on_report_diagnostic (const diagnostic_info &diagnostic,
-                                         diagnostic_t orig_diag_kind)
-{
-  pretty_printer *const pp = get_printer ();
-  pp_output_formatted_text (pp, m_context.get_urlifier ());
-
-  json::object *diag_obj = new json::object ();
-
-  /* Get "kind" of diagnostic.  */
-  {
-    /* Lose the trailing ": ".  */
-    const char *kind_text = get_diagnostic_kind_text (diagnostic.kind);
-    size_t len = strlen (kind_text);
-    gcc_assert (len > 2);
-    gcc_assert (kind_text[len - 2] == ':');
-    gcc_assert (kind_text[len - 1] == ' ');
-    char *rstrip = xstrdup (kind_text);
-    rstrip[len - 2] = '\0';
-    diag_obj->set_string ("kind", rstrip);
-    free (rstrip);
-  }
-
-  // FIXME: encoding of the message (json::string requires UTF-8)
-  diag_obj->set_string ("message", pp_formatted_text (pp));
-  pp_clear_output_area (pp);
-
-  if (char *option_text = m_context.make_option_name (diagnostic.option_id,
-                                                     orig_diag_kind,
-                                                     diagnostic.kind))
-    {
-      diag_obj->set_string ("option", option_text);
-      free (option_text);
-    }
-
-  if (char *option_url = m_context.make_option_url (diagnostic.option_id))
-    {
-      diag_obj->set_string ("option_url", option_url);
-      free (option_url);
-    }
-
-  if (m_buffer)
-    {
-      gcc_assert (!m_cur_group);
-      m_buffer->m_results.push_back (std::unique_ptr<json::object> (diag_obj));
-    }
-  else
-    {
-      /* If we've already emitted a diagnostic within this 
auto_diagnostic_group,
-        then add diag_obj to its "children" array.  */
-      if (m_cur_group)
-       {
-         gcc_assert (m_cur_children_array);
-         m_cur_children_array->append (diag_obj);
-       }
-      else
-       {
-         /* Otherwise, make diag_obj be the top-level object within the group;
-            add a "children" array and record the column origin.  */
-         m_cur_group = diag_obj;
-         std::unique_ptr<json::array> children_array
-           = std::make_unique<json::array> ();
-         m_cur_children_array = children_array.get (); // borrowed
-         diag_obj->set ("children", std::move (children_array));
-         diag_obj->set_integer ("column-origin", m_context.m_column_origin);
-         m_toplevel_array->append (diag_obj);
-       }
-    }
-
-  /* diag_obj is now owned by either m_cur_children_array or
-     m_toplevel_array; further uses of diag_obj are borrowing it.  */
-
-  const rich_location *richloc = diagnostic.richloc;
-
-  {
-    std::unique_ptr<json::array> loc_array = std::make_unique<json::array> ();
-    for (unsigned int i = 0; i < richloc->get_num_locations (); i++)
-      {
-       const location_range *loc_range = richloc->get_range (i);
-       if (std::unique_ptr<json::object> loc_obj
-             = json_from_location_range (m_context, loc_range, i))
-         loc_array->append (std::move (loc_obj));
-      }
-    diag_obj->set ("locations", std::move (loc_array));
-  }
-
-  if (richloc->get_num_fixit_hints ())
-    {
-      std::unique_ptr<json::array> fixit_array = std::make_unique<json::array> 
();
-      for (unsigned int i = 0; i < richloc->get_num_fixit_hints (); i++)
-       {
-         const fixit_hint *hint = richloc->get_fixit_hint (i);
-         fixit_array->append (json_from_fixit_hint (m_context, hint));
-       }
-      diag_obj->set ("fixits", std::move (fixit_array));
-    }
-
-  /* TODO: tree-ish things:
-     TODO: functions
-     TODO: inlining information
-     TODO: macro expansion information.  */
-
-  if (diagnostic.metadata)
-    diag_obj->set ("metadata", json_from_metadata (diagnostic.metadata));
-
-  const diagnostic_path *path = richloc->get_path ();
-  if (path)
-    diag_obj->set ("path", make_json_for_path (m_context, get_printer (), 
path));
-
-  diag_obj->set_bool ("escape-source", richloc->escape_on_output_p ());
-}
-
-class json_stderr_output_format : public json_output_format
-{
-public:
-  json_stderr_output_format (diagnostic_context &context,
-                            bool formatted)
-    : json_output_format (context, formatted)
-  {
-  }
-  ~json_stderr_output_format ()
-  {
-    flush_to_file (stderr);
-  }
-  bool machine_readable_stderr_p () const final override
-  {
-    return true;
-  }
-};
-
-class json_file_output_format : public json_output_format
-{
-public:
-  json_file_output_format (diagnostic_context &context,
-                          bool formatted,
-                          const char *base_file_name)
-  : json_output_format (context, formatted),
-    m_base_file_name (xstrdup (base_file_name))
-  {
-  }
-
-  ~json_file_output_format ()
-  {
-    char *filename = concat (m_base_file_name, ".gcc.json", nullptr);
-    free (m_base_file_name);
-    m_base_file_name = nullptr;
-    FILE *outf = fopen (filename, "w");
-    if (!outf)
-      {
-       const char *errstr = xstrerror (errno);
-       fnotice (stderr, "error: unable to open '%s' for writing: %s\n",
-                filename, errstr);
-       free (filename);
-       return;
-      }
-    flush_to_file (outf);
-    fclose (outf);
-    free (filename);
-  }
-  bool machine_readable_stderr_p () const final override
-  {
-    return false;
-  }
-
-private:
-  char *m_base_file_name;
-};
-
-/* Populate CONTEXT in preparation for JSON output (either to stderr, or
-   to a file) using FMT.  Return a reference to *FMT.  */
-
-static diagnostic_output_format &
-diagnostic_output_format_init_json (diagnostic_context &context,
-                                   std::unique_ptr<json_output_format> fmt)
-{
-  gcc_assert (fmt);
-  diagnostic_output_format &out = *fmt;
-
-  /* Don't colorize the text.  */
-  pp_show_color (fmt->get_printer ()) = false;
-  context.set_show_highlight_colors (false);
-
-  context.set_output_format (std::move (fmt));
-
-  return out;
-}
-
-/* Populate CONTEXT in preparation for JSON output to stderr.
-   Return a reference to the context's new sink.  */
-
-diagnostic_output_format &
-diagnostic_output_format_init_json_stderr (diagnostic_context &context,
-                                          bool formatted)
-{
-  return diagnostic_output_format_init_json
-    (context,
-     std::make_unique<json_stderr_output_format> (context,
-                                                 formatted));
-}
-
-/* Populate CONTEXT in preparation for JSON output to a file named
-   BASE_FILE_NAME.gcc.json.
-   Return a reference to the context's new sink.  */
-
-diagnostic_output_format &
-diagnostic_output_format_init_json_file (diagnostic_context &context,
-                                        bool formatted,
-                                        const char *base_file_name)
-{
-  return diagnostic_output_format_init_json
-    (context,
-     std::make_unique<json_file_output_format> (context,
-                                               formatted,
-                                               base_file_name));
-}
-
-#if CHECKING_P
-
-namespace selftest {
-
-/* We shouldn't call json_from_expanded_location on UNKNOWN_LOCATION,
-   but verify that we handle this gracefully.  */
-
-static void
-test_unknown_location ()
-{
-  test_diagnostic_context dc;
-  json_from_expanded_location (dc, UNKNOWN_LOCATION);
-}
-
-/* Verify that we gracefully handle attempts to serialize bad
-   compound locations.  */
-
-static void
-test_bad_endpoints ()
-{
-  location_t bad_endpoints
-    = make_location (BUILTINS_LOCATION,
-                    UNKNOWN_LOCATION, UNKNOWN_LOCATION);
-
-  location_range loc_range;
-  loc_range.m_loc = bad_endpoints;
-  loc_range.m_range_display_kind = SHOW_RANGE_WITH_CARET;
-  loc_range.m_label = nullptr;
-
-  test_diagnostic_context dc;
-  std::unique_ptr<json::object> obj
-    = json_from_location_range (dc, &loc_range, 0);
-  /* We should have a "caret" value, but no "start" or "finish" values.  */
-  ASSERT_TRUE (obj != nullptr);
-  ASSERT_TRUE (obj->get ("caret") != nullptr);
-  ASSERT_TRUE (obj->get ("start") == nullptr);
-  ASSERT_TRUE (obj->get ("finish") == nullptr);
-}
-
-/* Run all of the selftests within this file.  */
-
-void
-diagnostic_format_json_cc_tests ()
-{
-  test_unknown_location ();
-  test_bad_endpoints ();
-}
-
-} // namespace selftest
-
-#endif /* #if CHECKING_P */
diff --git a/gcc/diagnostic-format.h b/gcc/diagnostic-format.h
index 4de5842ad2c2..07db2cd4daa1 100644
--- a/gcc/diagnostic-format.h
+++ b/gcc/diagnostic-format.h
@@ -100,12 +100,4 @@ diagnostic_output_format_init (diagnostic_context &,
                               enum diagnostics_output_format,
                               bool json_formatting);
 
-extern diagnostic_output_format &
-diagnostic_output_format_init_json_stderr (diagnostic_context &context,
-                                          bool formatted);
-extern diagnostic_output_format &
-diagnostic_output_format_init_json_file (diagnostic_context &context,
-                                        bool formatted,
-                                        const char *base_file_name);
-
 #endif /* ! GCC_DIAGNOSTIC_FORMAT_H */
diff --git a/gcc/diagnostic.cc b/gcc/diagnostic.cc
index 8547d4882d3e..3c2c9b9fb0f8 100644
--- a/gcc/diagnostic.cc
+++ b/gcc/diagnostic.cc
@@ -1881,17 +1881,6 @@ diagnostic_output_format_init (diagnostic_context 
&context,
       /* The default; do nothing.  */
       break;
 
-    case DIAGNOSTICS_OUTPUT_FORMAT_JSON_STDERR:
-      new_sink = &diagnostic_output_format_init_json_stderr (context,
-                                                            json_formatting);
-      break;
-
-    case DIAGNOSTICS_OUTPUT_FORMAT_JSON_FILE:
-      new_sink = &diagnostic_output_format_init_json_file (context,
-                                                          json_formatting,
-                                                          base_file_name);
-      break;
-
     case DIAGNOSTICS_OUTPUT_FORMAT_SARIF_STDERR:
       new_sink = &diagnostic_output_format_init_sarif_stderr (context,
                                                              line_table,
diff --git a/gcc/diagnostic.h b/gcc/diagnostic.h
index 9df429275f0b..00f6e352d401 100644
--- a/gcc/diagnostic.h
+++ b/gcc/diagnostic.h
@@ -71,12 +71,6 @@ enum diagnostics_output_format
   /* The default: textual output.  */
   DIAGNOSTICS_OUTPUT_FORMAT_TEXT,
 
-  /* JSON-based output, to stderr.  */
-  DIAGNOSTICS_OUTPUT_FORMAT_JSON_STDERR,
-
-  /* JSON-based output, to a file.  */
-  DIAGNOSTICS_OUTPUT_FORMAT_JSON_FILE,
-
   /* SARIF-based output, as JSON to stderr.  */
   DIAGNOSTICS_OUTPUT_FORMAT_SARIF_STDERR,
 
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index a0c6d3d082e6..96cdc62b8552 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -312,7 +312,7 @@ Objective-C and Objective-C++ Dialects}.
 -fdiagnostics-show-location=@r{[}once@r{|}every-line@r{]}
 -fdiagnostics-color=@r{[}auto@r{|}never@r{|}always@r{]}
 -fdiagnostics-urls=@r{[}auto@r{|}never@r{|}always@r{]}
--fdiagnostics-format=@r{[}text@r{|}sarif-stderr@r{|}sarif-file@r{|}json@r{|}json-stderr@r{|}json-file@r{]}
+-fdiagnostics-format=@r{[}text@r{|}sarif-stderr@r{|}sarif-file@r{]}
 -fdiagnostics-add-output=@var{DIAGNOSTICS-OUTPUT-SPEC}
 -fdiagnostics-set-output=@var{DIAGNOSTICS-OUTPUT-SPEC}
 -fno-diagnostics-json-formatting
@@ -5958,8 +5958,7 @@ column numbers, such as @command{dejagnu}.
 @opindex fdiagnostics-column-unit
 @item -fdiagnostics-column-unit=@var{UNIT}
 Select the units for the column number.  This affects traditional diagnostics
-(in the absence of @option{-fno-show-column}), as well as JSON format
-diagnostics if requested.
+(in the absence of @option{-fno-show-column}).
 
 The default @var{UNIT}, @samp{display}, considers the number of display
 columns occupied by each character.  This may be larger than the number
@@ -6035,8 +6034,7 @@ is set to @samp{C}, in which case the default is 
@samp{ascii}.
 @opindex fdiagnostics-format
 @item -fdiagnostics-format=@var{FORMAT}
 Select a different format for printing diagnostics.
-@var{FORMAT} is @samp{text}, @samp{sarif-stderr}, @samp{sarif-file},
-@samp{json}, @samp{json-stderr}, or @samp{json-file}.
+@var{FORMAT} is @samp{text}, @samp{sarif-stderr} or @samp{sarif-file}.
 
 Using this option replaces any additional ``output sinks'' added by
 @option{-fdiagnostics-add-output=}, or that set by
@@ -6048,14 +6046,6 @@ The @samp{sarif-stderr} and @samp{sarif-file} formats 
both emit
 diagnostics in SARIF Version 2.1.0 format, either to stderr, or to a file
 named @file{@var{source}.sarif}, respectively.
 
-The various @samp{json}, @samp{json-stderr}, and @samp{json-file} values
-are deprecated and refer to a legacy JSON-based output format.
-The @samp{json} format is a synonym for @samp{json-stderr}.
-The @samp{json-stderr} and @samp{json-file} formats are identical, apart from
-where the JSON is emitted to.  With @samp{json-stderr}, the JSON is emitted
-to stderr, whereas with @samp{json-file} it is written to
-@file{@var{source}.gcc.json}.
-
 @opindex fdiagnostics-add-output
 @item -fdiagnostics-add-output=@var{DIAGNOSTICS-OUTPUT-SPEC}
 Add an additional ``output sink'' for emitting diagnostics.
@@ -6238,11 +6228,8 @@ replaces all existing output sinks, such as from 
@option{-fdiagnostics-format=},
 @opindex fdiagnostics-json-formatting
 @item -fno-diagnostics-json-formatting
 By default, when JSON is emitted for diagnostics (via
-@option{-fdiagnostics-format=sarif-stderr},
-@option{-fdiagnostics-format=sarif-file},
-@option{-fdiagnostics-format=json},
-@option{-fdiagnostics-format=json-stderr},
-@option{-fdiagnostics-format=json-file}),
+@option{-fdiagnostics-format=sarif-stderr} or
+@option{-fdiagnostics-format=sarif-file}),
 GCC will add newlines and indentation to visually emphasize the
 hierarchical structure of the JSON.
 
diff --git a/gcc/doc/ux.texi b/gcc/doc/ux.texi
index 243b3e08b112..22df88f61cea 100644
--- a/gcc/doc/ux.texi
+++ b/gcc/doc/ux.texi
@@ -407,7 +407,7 @@ Use @code{auto_diagnostic_group} when issuing multiple 
related
 diagnostics (seen in various examples on this page).  This informs the
 diagnostic subsystem that all diagnostics issued within the lifetime
 of the @code{auto_diagnostic_group} are related.  For example,
-@option{-fdiagnostics-format=json} will treat the first diagnostic
+@option{-fdiagnostics-add-output=sarif} will treat the first diagnostic
 emitted within the group as a top-level diagnostic, and all subsequent
 diagnostics within the group as its children.  Also, if a warning in the
 group is inhibited at nesting depth D, all subsequent notes at that depth
diff --git a/gcc/selftest-run-tests.cc b/gcc/selftest-run-tests.cc
index 139c7b381b60..324545302f79 100644
--- a/gcc/selftest-run-tests.cc
+++ b/gcc/selftest-run-tests.cc
@@ -101,7 +101,6 @@ selftest::run_tests ()
   diagnostic_color_cc_tests ();
   diagnostic_show_locus_cc_tests ();
   diagnostic_format_html_cc_tests ();
-  diagnostic_format_json_cc_tests ();
   diagnostic_format_sarif_cc_tests ();
   diagnostic_output_spec_cc_tests ();
   edit_context_cc_tests ();
diff --git a/gcc/selftest.h b/gcc/selftest.h
index 4af647cca9e1..eb9e604a321f 100644
--- a/gcc/selftest.h
+++ b/gcc/selftest.h
@@ -223,7 +223,6 @@ extern void convert_cc_tests ();
 extern void dbgcnt_cc_tests ();
 extern void diagnostic_color_cc_tests ();
 extern void diagnostic_format_html_cc_tests ();
-extern void diagnostic_format_json_cc_tests ();
 extern void diagnostic_format_sarif_cc_tests ();
 extern void diagnostic_output_spec_cc_tests ();
 extern void diagnostic_path_output_cc_tests ();
diff --git a/gcc/testsuite/c-c++-common/analyzer/out-of-bounds-diagram-1-json.c 
b/gcc/testsuite/c-c++-common/analyzer/out-of-bounds-diagram-1-json.c
deleted file mode 100644
index 0a2cc3493ab4..000000000000
--- a/gcc/testsuite/c-c++-common/analyzer/out-of-bounds-diagram-1-json.c
+++ /dev/null
@@ -1,13 +0,0 @@
-/* { dg-additional-options "-fdiagnostics-format=json-file" } */
-
-/* The custom JSON format doesn't support text art, so this is just a simple
-   smoketext.  */
-
-#include <stdint.h>
-
-int32_t arr[10];
-
-void int_arr_write_element_after_end_off_by_one(int32_t x)
-{
-  arr[10] = x;
-}
diff --git a/gcc/testsuite/c-c++-common/diagnostic-format-json-1.c 
b/gcc/testsuite/c-c++-common/diagnostic-format-json-1.c
deleted file mode 100644
index c95218c3cfe3..000000000000
--- a/gcc/testsuite/c-c++-common/diagnostic-format-json-1.c
+++ /dev/null
@@ -1,22 +0,0 @@
-/* { dg-do compile } */
-/* { dg-options "-fdiagnostics-format=json" } */
-
-#error message
-
-/* { dg-begin-multiline-output "" }
-[{"kind": "error",
-  "message": "#error message",
-  "children": [],
-  "column-origin": 1,
-  "locations": [{"caret": {"file":
-                           "line": 4,
-                           "display-column": 2,
-                           "byte-column": 2,
-                           "column": 2},
-                 "finish": {"file":
-                            "line": 4,
-                            "display-column": 6,
-                            "byte-column": 6,
-                            "column": 6}}],
-  "escape-source": false}]
-   { dg-end-multiline-output "" } */
diff --git a/gcc/testsuite/c-c++-common/diagnostic-format-json-2.c 
b/gcc/testsuite/c-c++-common/diagnostic-format-json-2.c
deleted file mode 100644
index a8828b7b2df7..000000000000
--- a/gcc/testsuite/c-c++-common/diagnostic-format-json-2.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* { dg-do compile } */
-/* { dg-options "-fdiagnostics-format=json" } */
-
-#warning message
-
-/* { dg-begin-multiline-output "" }
-[{"kind": "warning",
-  "message": "#warning message",
-  "option": "-Wcpp",
-   { dg-end-multiline-output "" } */
-/* { dg-regexp "  \"option_url\": \"https:\[^\n\r\"\]*#index-Wcpp\",\n" } */
-/* { dg-begin-multiline-output "" }
-  "children": [],
-  "column-origin": 1,
-  "locations": [{"caret": {"file":
-                           "line": 4,
-                           "display-column": 2,
-                           "byte-column": 2,
-                           "column": 2},
-                 "finish": {"file":
-                            "line": 4,
-                            "display-column": 8,
-                            "byte-column": 8,
-                            "column": 8}}],
-  "escape-source": false}]
-   { dg-end-multiline-output "" } */
diff --git a/gcc/testsuite/c-c++-common/diagnostic-format-json-3.c 
b/gcc/testsuite/c-c++-common/diagnostic-format-json-3.c
deleted file mode 100644
index 178bbf94b5b2..000000000000
--- a/gcc/testsuite/c-c++-common/diagnostic-format-json-3.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* { dg-do compile } */
-/* { dg-options "-fdiagnostics-format=json -Werror" } */
-
-#warning message
-
-/* { dg-begin-multiline-output "" }
-[{"kind": "error",
-  "message": "#warning message",
-  "option": "-Werror=cpp",
-   { dg-end-multiline-output "" } */
-/* { dg-regexp "  \"option_url\": \"https:\[^\n\r\"\]*#index-Wcpp\",\n" } */
-/* { dg-begin-multiline-output "" }
-  "children": [],
-  "column-origin": 1,
-  "locations": [{"caret": {"file":
-                           "line": 4,
-                           "display-column": 2,
-                           "byte-column": 2,
-                           "column": 2},
-                 "finish": {"file":
-                            "line": 4,
-                            "display-column": 8,
-                            "byte-column": 8,
-                            "column": 8}}],
-  "escape-source": false}]
-   { dg-end-multiline-output "" } */
diff --git a/gcc/testsuite/c-c++-common/diagnostic-format-json-4.c 
b/gcc/testsuite/c-c++-common/diagnostic-format-json-4.c
deleted file mode 100644
index 899a03f0e5e5..000000000000
--- a/gcc/testsuite/c-c++-common/diagnostic-format-json-4.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* { dg-do compile } */
-/* { dg-options "-fdiagnostics-format=json -Wmisleading-indentation" } */
-
-int test (void)
-{
-  if (1)
-    return 3;
-    return 4;
-  return 5;
-}
-
-/* { dg-begin-multiline-output "" }
-[{"kind": "warning",
-  "message": "this 'if' clause does not guard...",
-  "option": "-Wmisleading-indentation",
-   { dg-end-multiline-output "" } */
-/* { dg-regexp "  \"option_url\": 
\"https:\[^\n\r\"\]*#index-Wmisleading-indentation\",\n" } */
-/* { dg-begin-multiline-output "" }
-  "children": [{"kind": "note",
-                "message": "...this statement, but the latter is misleadingly 
indented as if it were guarded by the 'if'",
-                "locations": [{"caret": {"file":
-                                         "line": 8,
-                                         "display-column": 5,
-                                         "byte-column": 5,
-                                         "column": 5},
-                               "finish": {"file":
-                                          "line": 8,
-                                          "display-column": 10,
-                                          "byte-column": 10,
-                                          "column": 10}}],
-                "escape-source": false}],
-  "column-origin": 1,
-  "locations": [{"caret": {"file":
-                           "line": 6,
-                           "display-column": 3,
-                           "byte-column": 3,
-                           "column": 3},
-                 "finish": {"file":
-                            "line": 6,
-                            "display-column": 4,
-                            "byte-column": 4,
-                            "column": 4}}],
-  "escape-source": false}]
-   { dg-end-multiline-output "" } */
diff --git a/gcc/testsuite/c-c++-common/diagnostic-format-json-5.c 
b/gcc/testsuite/c-c++-common/diagnostic-format-json-5.c
deleted file mode 100644
index ed3139c7f1b2..000000000000
--- a/gcc/testsuite/c-c++-common/diagnostic-format-json-5.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* { dg-do compile } */
-/* { dg-options "-fdiagnostics-format=json" } */
-
-struct s { int color; };
-
-int test (struct s *ptr)
-{
-  return ptr->colour;
-}
-
-/* { dg-begin-multiline-output "" }
-[{"kind": "error",
-  "message": "'struct s' has no member named 'colour'; did you mean 'color'?",
-  "children": [],
-  "column-origin": 1,
-  "locations": [{"caret": {"file":
-                           "line": 8,
-                           "display-column": 15,
-                           "byte-column": 15,
-                           "column": 15},
-                 "finish": {"file":
-                            "line": 8,
-                            "display-column": 20,
-                            "byte-column": 20,
-                            "column": 20}}],
-  "fixits": [{"start": {"file":
-                        "line": 8,
-                        "display-column": 15,
-                        "byte-column": 15,
-                        "column": 15},
-              "next": {"file":
-                       "line": 8,
-                       "display-column": 21,
-                       "byte-column": 21,
-                       "column": 21},
-              "string": "color"}],
-  "escape-source": false}]
-   { dg-end-multiline-output "" } */
diff --git a/gcc/testsuite/c-c++-common/diagnostic-format-json-file-1.c 
b/gcc/testsuite/c-c++-common/diagnostic-format-json-file-1.c
deleted file mode 100644
index ddac780f07b1..000000000000
--- a/gcc/testsuite/c-c++-common/diagnostic-format-json-file-1.c
+++ /dev/null
@@ -1,8 +0,0 @@
-/* Check that -fdiagnostics-format=json-file works.  */
-/* { dg-do compile } */
-/* { dg-options "-fdiagnostics-format=json-file" } */
-
-#warning message
-
-/* Verify that some JSON was written to a file with the expected name.  */
-/* { dg-final { scan-file "diagnostic-format-json-file-1.c.gcc.json" 
"\"message\": \"#warning message\"" } } */
diff --git a/gcc/testsuite/c-c++-common/diagnostic-format-json-stderr-1.c 
b/gcc/testsuite/c-c++-common/diagnostic-format-json-stderr-1.c
deleted file mode 100644
index e798c6b21e1e..000000000000
--- a/gcc/testsuite/c-c++-common/diagnostic-format-json-stderr-1.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Check that "json" and "json-stderr" are synonymous when used as
-   arguments to "-fdiagnostics-format=".  */
-/* { dg-do compile } */
-/* { dg-options "-fdiagnostics-format=json-stderr" } */
-
-#error message
-
-/* { dg-begin-multiline-output "" }
-[{"kind": "error",
-  "message": "#error message",
-  "children": [],
-  "column-origin": 1,
-  "locations": [{"caret": {"file":
-                           "line": 6,
-                           "display-column": 2,
-                           "byte-column": 2,
-                           "column": 2},
-                 "finish": {"file":
-                            "line": 6,
-                            "display-column": 6,
-                            "byte-column": 6,
-                            "column": 6}}],
-  "escape-source": false}]
-   { dg-end-multiline-output "" } */
diff --git a/gcc/testsuite/c-c++-common/pr106133.c 
b/gcc/testsuite/c-c++-common/pr106133.c
deleted file mode 100644
index 7d2c5afe4177..000000000000
--- a/gcc/testsuite/c-c++-common/pr106133.c
+++ /dev/null
@@ -1,3 +0,0 @@
-/* PR middle-end/106133 */
-/* { dg-do compile } */
-/* { dg-options "-fdiagnostics-format=json-file -E" } */
diff --git a/gcc/testsuite/g++.dg/pr90462.C b/gcc/testsuite/g++.dg/pr90462.C
deleted file mode 100644
index b35e41921a60..000000000000
--- a/gcc/testsuite/g++.dg/pr90462.C
+++ /dev/null
@@ -1,49 +0,0 @@
-/* { dg-options "-Wdeprecated-copy -fno-diagnostics-json-formatting 
-fdiagnostics-format=json" } */
-
-template <class> class b;
-struct B {
-  typedef b<char> *c;
-};
-class d {
-public:
-  B::c operator->();
-};
-template <class> struct e;
-class f {
-  typedef int g;
-};
-template <class, class> class h;
-template <class i> class b {
-public:
-  i j;
-  i k;
-  int l;
-  void assign() {
-    int m;
-    h<i, int> n(&m);
-    n.o(&j, &k, l);
-  }
-};
-template <class i, class> class s : f { s &p(const i *, const i *, g); };
-template <class i, class t> s<i, t> &s<i, t>::p(const i *, const i *, g) {
-  d q;
-  q->assign();
-}
-struct G {
-  G();
-  G(int);
-  G(G &);
-};
-template <class i, class> class h {
-public:
-  h(int *);
-  void o(const i *, const i *, unsigned);
-  i r();
-};
-template <class i, class t> void h<i, t>::o(const i *, const i *, unsigned) {
-  G a;
-  a = r();
-}
-template s<char, e<char>> &s<char, e<char>>::p(const char *, const char *, g);
-
-/* { dg-regexp ".*" } */
diff --git a/gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-3.c 
b/gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-3.c
deleted file mode 100644
index a315d208cab7..000000000000
--- a/gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-3.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* { dg-do compile } */
-/* { dg-options "-fdiagnostics-format=json" } */
-
-#include <stddef.h>
-#include <stdlib.h>
-
-/* Minimal reimplementation of cpython API.  */
-typedef struct PyObject {} PyObject;
-extern int PyArg_ParseTuple (PyObject *args, const char *fmt, ...);
-extern PyObject *PyList_New (int);
-extern PyObject *PyLong_FromLong(long);
-extern void PyList_Append(PyObject *list, PyObject *item);
-
-PyObject *
-make_a_list_of_random_ints_badly(PyObject *self,
-                                PyObject *args)
-{
-  PyObject *list, *item;
-  long count, i;
-
-  if (!PyArg_ParseTuple(args, "i", &count)) {
-    return NULL;
-  }
-
-  list = PyList_New(0);
-       
-  for (i = 0; i < count; i++) {
-    item = PyLong_FromLong(random());
-    PyList_Append(list, item);
-  }
-  
-  return list;
-}
-
-/* { dg-begin-multiline-output "" }
-[{"kind": "error",
-  "message": "passing NULL as argument 1 to 'PyList_Append' which requires a 
non-NULL parameter",
-  "children": [],
-  "column-origin": 1,
-  "locations": [{"caret": {"file": "
-                           "line": 29,
-                           "display-column": 5,
-                           "byte-column": 5,
-                           "column": 5},
-                 "finish": {"file": "
-                            "line": 29,
-                            "display-column": 29,
-                            "byte-column": 29,
-                            "column": 29}}],
-  "path": [{"location": {"file": "
-                         "line": 25,
-                         "display-column": 10,
-                         "byte-column": 10,
-                         "column": 10},
-            "description": "when 'PyList_New' fails, returning NULL",
-            "function": "make_a_list_of_random_ints_badly",
-            "depth": 0},
-           {"location": {"file": "
-                         "line": 27,
-                         "display-column": 17,
-                         "byte-column": 17,
-                         "column": 17},
-            "description": "when 'i < count'",
-            "function": "make_a_list_of_random_ints_badly",
-            "depth": 0},
-           {"location": {"file": "
-                         "line": 29,
-                         "display-column": 5,
-                         "byte-column": 5,
-                         "column": 5},
-            "description": "when calling 'PyList_Append', passing NULL from 
(1) as argument 1",
-            "function": "make_a_list_of_random_ints_badly",
-            "depth": 0}],
-  "escape-source": false}]
-{ dg-end-multiline-output "" } */
diff --git a/gcc/testsuite/gcc.dg/plugin/plugin.exp 
b/gcc/testsuite/gcc.dg/plugin/plugin.exp
index a066b67bb9a1..d1d7f5dbc037 100644
--- a/gcc/testsuite/gcc.dg/plugin/plugin.exp
+++ b/gcc/testsuite/gcc.dg/plugin/plugin.exp
@@ -116,7 +116,6 @@ set plugin_test_list [list \
     { diagnostic_plugin_test_paths.cc \
          diagnostic-test-paths-1.c \
          diagnostic-test-paths-2.c \
-         diagnostic-test-paths-3.c \
          diagnostic-test-paths-4.c \
          diagnostic-test-paths-5.c \
          diagnostic-test-paths-multithreaded-inline-events.c \
diff --git a/gcc/testsuite/gfortran.dg/diagnostic-format-json-1.F90 
b/gcc/testsuite/gfortran.dg/diagnostic-format-json-1.F90
deleted file mode 100644
index b8cd61cff23a..000000000000
--- a/gcc/testsuite/gfortran.dg/diagnostic-format-json-1.F90
+++ /dev/null
@@ -1,24 +0,0 @@
-! { dg-do compile }
-! { dg-options "-fdiagnostics-format=json" }
-
-#error message
-
-#if 0
-{ dg-begin-multiline-output "" }
-[{"kind": "error",
-  "message": "#error message",
-  "children": [],
-  "column-origin": 1,
-  "locations": [{"caret": {"file":
-                           "line": 4,
-                           "display-column": 2,
-                           "byte-column": 2,
-                           "column": 2},
-                 "finish": {"file":
-                            "line": 4,
-                            "display-column": 6,
-                            "byte-column": 6,
-                            "column": 6}}],
-  "escape-source": false}]
-{ dg-end-multiline-output "" }
-#endif  
diff --git a/gcc/testsuite/gfortran.dg/diagnostic-format-json-2.F90 
b/gcc/testsuite/gfortran.dg/diagnostic-format-json-2.F90
deleted file mode 100644
index 9ff1ef59b343..000000000000
--- a/gcc/testsuite/gfortran.dg/diagnostic-format-json-2.F90
+++ /dev/null
@@ -1,26 +0,0 @@
-! { dg-do compile }
-! { dg-options "-fdiagnostics-format=json" }
-
-#warning message
-
-#if 0
-{ dg-begin-multiline-output "" }
-[{"kind": "warning",
-  "message": "#warning message",
-  "option": "-Wcpp",
-  "option_url":
-  "children": [],
-  "column-origin": 1,
-  "locations": [{"caret": {"file":
-                           "line": 4,
-                           "display-column": 2,
-                           "byte-column": 2,
-                           "column": 2},
-                 "finish": {"file":
-                            "line": 4,
-                            "display-column": 8,
-                            "byte-column": 8,
-                            "column": 8}}],
-  "escape-source": false}]
-{ dg-end-multiline-output "" }
-#endif  
diff --git a/gcc/testsuite/gfortran.dg/diagnostic-format-json-3.F90 
b/gcc/testsuite/gfortran.dg/diagnostic-format-json-3.F90
deleted file mode 100644
index 750e186c8acf..000000000000
--- a/gcc/testsuite/gfortran.dg/diagnostic-format-json-3.F90
+++ /dev/null
@@ -1,26 +0,0 @@
-! { dg-do compile }
-! { dg-options "-fdiagnostics-format=json -Werror" }
-
-#warning message
-
-#if 0
-{ dg-begin-multiline-output "" }
-[{"kind": "error",
-  "message": "#warning message",
-  "option": "-Werror=cpp",
-  "option_url":
-  "children": [],
-  "column-origin": 1,
-  "locations": [{"caret": {"file":
-                           "line": 4,
-                           "display-column": 2,
-                           "byte-column": 2,
-                           "column": 2},
-                 "finish": {"file":
-                            "line": 4,
-                            "display-column": 8,
-                            "byte-column": 8,
-                            "column": 8}}],
-  "escape-source": false}]
-{ dg-end-multiline-output "" }
-#endif  
diff --git a/gcc/testsuite/gfortran.dg/diagnostic-format-json-pr105916.F90 
b/gcc/testsuite/gfortran.dg/diagnostic-format-json-pr105916.F90
deleted file mode 100644
index bf22a86867bc..000000000000
--- a/gcc/testsuite/gfortran.dg/diagnostic-format-json-pr105916.F90
+++ /dev/null
@@ -1,14 +0,0 @@
-! { dg-do compile }
-! { dg-options "-fdiagnostics-format=json-stderr -fmax-errors=1 
-Wfatal-errors" }
-
-program main
-    implicit none
-    print*, "Hello World!"
-end program main
-
-! We expect an empty array as the JSON output.
-#if 0
-{ dg-begin-multiline-output "" }
-[]
-{ dg-end-multiline-output "" }
-#endif  
-- 
2.26.3

Reply via email to