No functional change intended.

gcc/ada/ChangeLog:
        * gcc-interface/misc.cc: Make
        diagnostics::context::m_source_printing private.

gcc/analyzer/ChangeLog:
        * program-point.cc: Make diagnostics::context::m_source_printing
        private.

gcc/c-family/ChangeLog:
        * c-common.cc: Make diagnostics::context::m_source_printing
        private.
        * c-format.cc: Likewise.
        * c-opts.cc: Likewise.

gcc/ChangeLog:
        * diagnostic.h (diagnostic_set_caret_max_width): Drop forward
        decl.
        (diagnostic_same_line): Make
        diagnostics::context::m_source_printing private.
        * diagnostics/context.cc (diagnostic_set_caret_max_width): Convert
        to...
        (diagnostics::context::set_caret_max_width): ...this.
        * diagnostics/context.h
        (diagnostics::context::get_source_printing_options): New
        accessors.
        (diagnostics::context::m_source_printing): Make private.
        * diagnostics/html-sink.cc: Make
        diagnostics::context::m_source_printing private.
        * diagnostics/paths-output.cc: Likewise.
        * diagnostics/sarif-sink.cc: Likewise.
        * diagnostics/selftest-context.cc: Likewise.
        * diagnostics/selftest-context.h
        (diagnostics::selftest::test_context::colorize_source): New.
        (diagnostics::selftest::test_context::show_labels): New.
        (diagnostics::selftest::test_context::show_line_numbers): New.
        (diagnostics::selftest::test_context::show_ruler): New.
        (diagnostics::selftest::test_context::show_event_links): New.
        (diagnostics::selftest::test_context::set_caret_char): New.
        * diagnostics/source-printing.cc: Make
        diagnostics::context::m_source_printing private.
        * diagnostics/text-sink.h: Likewise.
        * libgdiagnostics.cc: Likewise.
        * opts.cc: Likewise.
        * toplev.cc: Likewise.

gcc/fortran/ChangeLog:
        * error.cc: Make diagnostics::context::m_source_printing private.

gcc/testsuite/ChangeLog:
        * gcc.dg/plugin/diagnostic_plugin_show_trees.cc: Make
        diagnostics::context::m_source_printing private.
        * gcc.dg/plugin/diagnostic_plugin_test_inlining.cc: Likewise.
        * gcc.dg/plugin/diagnostic_plugin_test_string_literals.cc:
        Likewise.
        * gcc.dg/plugin/diagnostic_plugin_test_tree_expression_range.cc:
        Likewise.
        * gcc.dg/plugin/diagnostic_plugin_test_paths.cc: Likewise.
        * gcc.dg/plugin/diagnostic_plugin_test_show_locus.cc: Likewise.
        * gcc.dg/plugin/expensive_selftests_plugin.cc: Likewise.
---
 gcc/ada/gcc-interface/misc.cc                 |  2 +-
 gcc/analyzer/program-point.cc                 |  5 +-
 gcc/c-family/c-common.cc                      |  2 +-
 gcc/c-family/c-format.cc                      |  2 +-
 gcc/c-family/c-opts.cc                        |  2 +-
 gcc/diagnostic.h                              |  5 +-
 gcc/diagnostics/context.cc                    | 13 +--
 gcc/diagnostics/context.h                     | 15 +++-
 gcc/diagnostics/html-sink.cc                  | 13 +--
 gcc/diagnostics/paths-output.cc               | 44 +++++-----
 gcc/diagnostics/sarif-sink.cc                 |  9 +-
 gcc/diagnostics/selftest-context.cc           | 10 ++-
 gcc/diagnostics/selftest-context.h            | 28 ++++++
 gcc/diagnostics/source-printing.cc            | 87 ++++++++++---------
 gcc/diagnostics/text-sink.h                   |  2 +-
 gcc/fortran/error.cc                          | 12 +--
 gcc/libgdiagnostics.cc                        | 13 +--
 gcc/opts.cc                                   | 12 +--
 .../plugin/diagnostic_plugin_show_trees.cc    |  2 +-
 .../plugin/diagnostic_plugin_test_inlining.cc |  2 +-
 .../plugin/diagnostic_plugin_test_paths.cc    |  2 +-
 .../diagnostic_plugin_test_show_locus.cc      | 26 +++---
 .../diagnostic_plugin_test_string_literals.cc |  2 +-
 ...ostic_plugin_test_tree_expression_range.cc |  2 +-
 .../plugin/expensive_selftests_plugin.cc      |  2 +-
 gcc/toplev.cc                                 | 11 +--
 26 files changed, 191 insertions(+), 134 deletions(-)

diff --git a/gcc/ada/gcc-interface/misc.cc b/gcc/ada/gcc-interface/misc.cc
index 6de9b42dc9b1..7711f8b0f82a 100644
--- a/gcc/ada/gcc-interface/misc.cc
+++ b/gcc/ada/gcc-interface/misc.cc
@@ -271,7 +271,7 @@ gnat_post_options (const char **pfilename ATTRIBUTE_UNUSED)
 
   /* No caret by default for Ada.  */
   if (!OPTION_SET_P (flag_diagnostics_show_caret))
-    global_dc->m_source_printing.enabled = false;
+    global_dc->get_source_printing_options ().enabled = false;
 
   /* Copy global settings to local versions.  */
   gnat_encodings = global_options.x_gnat_encodings;
diff --git a/gcc/analyzer/program-point.cc b/gcc/analyzer/program-point.cc
index a07d3c80a34d..9baa0074b2b9 100644
--- a/gcc/analyzer/program-point.cc
+++ b/gcc/analyzer/program-point.cc
@@ -243,8 +243,9 @@ public:
   debug_diagnostic_context ()
   {
     diagnostic_initialize (this, 0);
-    m_source_printing.show_line_numbers_p = true;
-    m_source_printing.enabled = true;
+    auto &source_printing_opts = get_source_printing_options ();
+    source_printing_opts.show_line_numbers_p = true;
+    source_printing_opts.enabled = true;
   }
   ~debug_diagnostic_context ()
   {
diff --git a/gcc/c-family/c-common.cc b/gcc/c-family/c-common.cc
index 07059dc1f920..e7dd4602ac11 100644
--- a/gcc/c-family/c-common.cc
+++ b/gcc/c-family/c-common.cc
@@ -10114,7 +10114,7 @@ maybe_add_include_fixit (rich_location *richloc, const 
char *header,
   richloc->add_fixit_insert_before (include_insert_loc, text);
   free (text);
 
-  if (override_location && global_dc->m_source_printing.enabled)
+  if (override_location && global_dc->get_source_printing_options ().enabled)
     {
       /* Replace the primary location with that of the insertion point for the
         fix-it hint.
diff --git a/gcc/c-family/c-format.cc b/gcc/c-family/c-format.cc
index c8e00b27181c..bf144d0f63eb 100644
--- a/gcc/c-family/c-format.cc
+++ b/gcc/c-family/c-format.cc
@@ -5588,7 +5588,7 @@ test_type_mismatch_range_labels ()
 
   diagnostics::selftest::test_context dc;
   diagnostic_show_locus (&dc,
-                        dc.m_source_printing,
+                        dc.get_source_printing_options (),
                         &richloc,
                         diagnostics::kind::error,
                         dc.get_reference_printer ());
diff --git a/gcc/c-family/c-opts.cc b/gcc/c-family/c-opts.cc
index 2ce05e5c7ce6..c652e82a8c7a 100644
--- a/gcc/c-family/c-opts.cc
+++ b/gcc/c-family/c-opts.cc
@@ -278,7 +278,7 @@ c_common_init_options (unsigned int decoded_options_count,
   if (c_dialect_cxx ())
     set_std_cxx17 (/*ISO*/false);
 
-  global_dc->m_source_printing.colorize_source_p = true;
+  global_dc->get_source_printing_options ().colorize_source_p = true;
 }
 
 /* Handle switch SCODE with argument ARG.  VALUE is true, unless no-
diff --git a/gcc/diagnostic.h b/gcc/diagnostic.h
index d22d77b19882..17048472a388 100644
--- a/gcc/diagnostic.h
+++ b/gcc/diagnostic.h
@@ -206,8 +206,6 @@ void default_text_finalizer (diagnostics::text_sink &,
                             enum diagnostics::kind);
 } // namespace diagnostics
 
-void diagnostic_set_caret_max_width (diagnostics::context *context, int value);
-
 int get_terminal_width (void);
 
 /* Return the location associated to this diagnostic. Parameter WHICH
@@ -253,7 +251,8 @@ diagnostic_same_line (const diagnostics::context *context,
                      expanded_location s1, expanded_location s2)
 {
   return (s2.column && s1.line == s2.line
-         && (context->m_source_printing.max_width - CARET_LINE_MARGIN
+         && ((context->get_source_printing_options ().max_width
+              - CARET_LINE_MARGIN)
              > abs (s1.column - s2.column)));
 }
 
diff --git a/gcc/diagnostics/context.cc b/gcc/diagnostics/context.cc
index 842baedc89e9..e8a87c82f23e 100644
--- a/gcc/diagnostics/context.cc
+++ b/gcc/diagnostics/context.cc
@@ -112,23 +112,24 @@ get_terminal_width (void)
   return INT_MAX;
 }
 
+namespace diagnostics {
+
 /* Set caret_max_width to value.  */
+
 void
-diagnostic_set_caret_max_width (diagnostics::context *context, int value)
+context::set_caret_max_width (int value)
 {
   /* One minus to account for the leading empty space.  */
   value = value ? value - 1
-    : (isatty (fileno (pp_buffer (context->get_reference_printer 
())->m_stream))
+    : (isatty (fileno (pp_buffer (get_reference_printer ())->m_stream))
        ? get_terminal_width () - 1 : INT_MAX);
 
   if (value <= 0)
     value = INT_MAX;
 
-  context->m_source_printing.max_width = value;
+  m_source_printing.max_width = value;
 }
 
-namespace diagnostics {
-
 /* Initialize the diagnostic message outputting machinery.  */
 
 void
@@ -144,7 +145,7 @@ context::initialize (int n_opts)
   m_n_opts = n_opts;
   m_option_classifier.init (n_opts);
   m_source_printing.enabled = false;
-  diagnostic_set_caret_max_width (this, pp_line_cutoff (get_reference_printer 
()));
+  set_caret_max_width (pp_line_cutoff (get_reference_printer ()));
   for (int i = 0; i < rich_location::STATICALLY_ALLOCATED_RANGES; i++)
     m_source_printing.caret_chars[i] = '^';
   m_show_cwe = false;
diff --git a/gcc/diagnostics/context.h b/gcc/diagnostics/context.h
index 835403e5c8b5..3c0ca4dd6bf8 100644
--- a/gcc/diagnostics/context.h
+++ b/gcc/diagnostics/context.h
@@ -678,6 +678,19 @@ public:
   void
   inhibit_notes () { m_inhibit_notes_p = true; }
 
+  source_printing_options &
+  get_source_printing_options ()
+  {
+    return m_source_printing;
+  }
+  const source_printing_options &
+  get_source_printing_options () const
+  {
+    return m_source_printing;
+  }
+
+  void set_caret_max_width (int value);
+
 private:
   void error_recursion () ATTRIBUTE_NORETURN;
 
@@ -822,10 +835,8 @@ private:
 
   bool m_inhibit_notes_p;
 
-public:
   source_printing_options m_source_printing;
 
-private:
   /* True if -freport-bug option is used.  */
   bool m_report_bug;
 
diff --git a/gcc/diagnostics/html-sink.cc b/gcc/diagnostics/html-sink.cc
index a0202546a59f..35525cb890c5 100644
--- a/gcc/diagnostics/html-sink.cc
+++ b/gcc/diagnostics/html-sink.cc
@@ -1102,12 +1102,13 @@ html_builder::make_element_for_diagnostic (const 
diagnostic_info &diagnostic,
     // TODO: m_context.m_last_location should be moved into the sink
     location_t saved = m_context.m_last_location;
     m_context.m_last_location = m_last_location;
-    m_context.maybe_show_locus_as_html (*diagnostic.m_richloc,
-                                       m_context.m_source_printing,
-                                       diagnostic.m_kind,
-                                       xp,
-                                       nullptr,
-                                       nullptr);
+    m_context.maybe_show_locus_as_html
+      (*diagnostic.m_richloc,
+       m_context.get_source_printing_options (),
+       diagnostic.m_kind,
+       xp,
+       nullptr,
+       nullptr);
     m_context.m_last_location = saved;
     m_last_location = m_context.m_last_location;
   }
diff --git a/gcc/diagnostics/paths-output.cc b/gcc/diagnostics/paths-output.cc
index c132d6735042..a3ac9a0519ac 100644
--- a/gcc/diagnostics/paths-output.cc
+++ b/gcc/diagnostics/paths-output.cc
@@ -604,7 +604,7 @@ struct event_range
     /* Emit a span indicating the filename (and line/column) if the
        line has changed relative to the last call to
        diagnostic_show_locus.  */
-    if (dc.m_source_printing.enabled)
+    if (dc.get_source_printing_options ().enabled)
       {
        expanded_location exploc
          = linemap_client_expand_location_to_spelling_point
@@ -662,7 +662,7 @@ struct event_range
     /* Emit a span indicating the filename (and line/column) if the
        line has changed relative to the last call to
        diagnostic_show_locus.  */
-    if (dc.m_source_printing.enabled)
+    if (dc.get_source_printing_options ().enabled)
       {
        expanded_location exploc
          = linemap_client_expand_location_to_spelling_point
@@ -701,7 +701,7 @@ struct event_range
 
     /* Call diagnostic_show_locus_as_html to show the source,
        showing events using labels.  */
-    diagnostic_show_locus_as_html (&dc, dc.m_source_printing,
+    diagnostic_show_locus_as_html (&dc, dc.get_source_printing_options (),
                                   &m_richloc, diagnostics::kind::path, xp,
                                   effect_info, event_label_writer);
 
@@ -1895,7 +1895,7 @@ test_control_flow_1 (const line_table_case &case_,
   {
     selftest::test_context dc;
     dc.set_text_art_charset (DIAGNOSTICS_TEXT_ART_CHARSET_ASCII);
-    dc.m_source_printing.show_event_links_p = true;
+    dc.show_event_links (true);
     text_sink text_output (dc);
     path_print_policy policy (text_output);
     path_summary summary (policy, *event_pp, path, true);
@@ -1921,7 +1921,7 @@ test_control_flow_1 (const line_table_case &case_,
   {
     selftest::test_context dc;
     dc.set_text_art_charset (DIAGNOSTICS_TEXT_ART_CHARSET_ASCII);
-    dc.m_source_printing.show_event_links_p = false;
+    dc.show_event_links (false);
     text_sink text_output (dc);
     path_print_policy policy (text_output);
     path_summary summary (policy, *event_pp, path, true);
@@ -1944,8 +1944,8 @@ test_control_flow_1 (const line_table_case &case_,
   {
     selftest::test_context dc;
     dc.set_text_art_charset (DIAGNOSTICS_TEXT_ART_CHARSET_ASCII);
-    dc.m_source_printing.show_line_numbers_p = true;
-    dc.m_source_printing.show_event_links_p = true;
+    dc.show_line_numbers (true);
+    dc.show_event_links (true);
     text_sink text_output (dc);
     path_print_policy policy (text_output);
     path_summary summary (policy, *event_pp, path, true);
@@ -1971,8 +1971,8 @@ test_control_flow_1 (const line_table_case &case_,
   {
     selftest::test_context dc;
     dc.set_text_art_charset (DIAGNOSTICS_TEXT_ART_CHARSET_ASCII);
-    dc.m_source_printing.show_line_numbers_p = true;
-    dc.m_source_printing.show_event_links_p = false;
+    dc.show_line_numbers (true);
+    dc.show_event_links (false);
     text_sink text_output (dc);
     path_print_policy policy (text_output);
     path_summary summary (policy, *event_pp, path, true);
@@ -1995,7 +1995,7 @@ test_control_flow_1 (const line_table_case &case_,
   {
     selftest::test_context dc;
     dc.set_text_art_charset (DIAGNOSTICS_TEXT_ART_CHARSET_UNICODE);
-    dc.m_source_printing.show_event_links_p = true;
+    dc.show_event_links (true);
     text_sink text_output (dc);
     path_print_policy policy (text_output);
     path_summary summary (policy, *event_pp, path, true);
@@ -2021,8 +2021,8 @@ test_control_flow_1 (const line_table_case &case_,
   {
     selftest::test_context dc;
     dc.set_text_art_charset (DIAGNOSTICS_TEXT_ART_CHARSET_UNICODE);
-    dc.m_source_printing.show_event_links_p = true;
-    dc.m_source_printing.show_line_numbers_p = true;
+    dc.show_event_links (true);
+    dc.show_line_numbers (true);
     text_sink text_output (dc);
     path_print_policy policy (text_output);
     path_summary summary (policy, *event_pp, path, true);
@@ -2093,8 +2093,8 @@ test_control_flow_2 (const line_table_case &case_,
   {
     selftest::test_context dc;
     dc.set_text_art_charset (DIAGNOSTICS_TEXT_ART_CHARSET_ASCII);
-    dc.m_source_printing.show_event_links_p = true;
-    dc.m_source_printing.show_line_numbers_p = true;
+    dc.show_event_links (true);
+    dc.show_line_numbers (true);
     text_sink text_output (dc);
     path_print_policy policy (text_output);
     path_summary summary (policy, *event_pp, path, true);
@@ -2181,8 +2181,8 @@ test_control_flow_3 (const line_table_case &case_,
   {
     selftest::test_context dc;
     dc.set_text_art_charset (DIAGNOSTICS_TEXT_ART_CHARSET_ASCII);
-    dc.m_source_printing.show_event_links_p = true;
-    dc.m_source_printing.show_line_numbers_p = true;
+    dc.show_event_links (true);
+    dc.show_line_numbers (true);
     text_sink text_output (dc);
     path_print_policy policy (text_output);
     path_summary summary (policy, *event_pp, path, true);
@@ -2240,8 +2240,8 @@ assert_cfg_edge_path_streq (const location &loc,
 
   selftest::test_context dc;
   dc.set_text_art_charset (DIAGNOSTICS_TEXT_ART_CHARSET_ASCII);
-  dc.m_source_printing.show_event_links_p = true;
-  dc.m_source_printing.show_line_numbers_p = true;
+  dc.show_event_links (true);
+  dc.show_line_numbers (true);
   text_sink text_output (dc);
   path_print_policy policy (text_output);
   path_summary summary (policy, *event_pp, path, true);
@@ -2565,8 +2565,8 @@ test_control_flow_5 (const line_table_case &case_,
   {
     selftest::test_context dc;
     dc.set_text_art_charset (DIAGNOSTICS_TEXT_ART_CHARSET_ASCII);
-    dc.m_source_printing.show_event_links_p = true;
-    dc.m_source_printing.show_line_numbers_p = true;
+    dc.show_event_links (true);
+    dc.show_line_numbers (true);
     text_sink text_output (dc);
     path_print_policy policy (text_output);
     path_summary summary (policy, *event_pp, path, true);
@@ -2655,8 +2655,8 @@ test_control_flow_6 (const line_table_case &case_,
   {
     selftest::test_context dc;
     dc.set_text_art_charset (DIAGNOSTICS_TEXT_ART_CHARSET_ASCII);
-    dc.m_source_printing.show_event_links_p = true;
-    dc.m_source_printing.show_line_numbers_p = true;
+    dc.show_event_links (true);
+    dc.show_line_numbers (true);
     text_sink text_output (dc);
     path_print_policy policy (text_output);
     path_summary summary (policy, *event_pp, path, true);
diff --git a/gcc/diagnostics/sarif-sink.cc b/gcc/diagnostics/sarif-sink.cc
index 592a690ee9a4..74252b4b77a1 100644
--- a/gcc/diagnostics/sarif-sink.cc
+++ b/gcc/diagnostics/sarif-sink.cc
@@ -2269,10 +2269,11 @@ sarif_builder::make_location_object 
(sarif_location_manager *loc_mgr,
     {
       diagnostics::context dc;
       diagnostic_initialize (&dc, 0);
-      dc.m_source_printing.enabled = true;
-      dc.m_source_printing.colorize_source_p = false;
-      dc.m_source_printing.show_labels_p = true;
-      dc.m_source_printing.show_line_numbers_p = true;
+      auto &source_printing_opts = dc.get_source_printing_options ();
+      source_printing_opts.enabled = true;
+      source_printing_opts.colorize_source_p = false;
+      source_printing_opts.show_labels_p = true;
+      source_printing_opts.show_line_numbers_p = true;
 
       rich_location my_rich_loc (m_richloc);
       my_rich_loc.set_escape_on_output (true);
diff --git a/gcc/diagnostics/selftest-context.cc 
b/gcc/diagnostics/selftest-context.cc
index 4f215c222e25..31dbe823c433 100644
--- a/gcc/diagnostics/selftest-context.cc
+++ b/gcc/diagnostics/selftest-context.cc
@@ -39,12 +39,14 @@ test_context::test_context ()
 {
   diagnostic_initialize (this, 0);
   pp_show_color (get_reference_printer ()) = false;
-  m_source_printing.enabled = true;
-  m_source_printing.show_labels_p = true;
+
+  auto &source_printing_opts = get_source_printing_options ();
+  source_printing_opts.enabled = true;
+  source_printing_opts.show_labels_p = true;
   m_show_column = true;
   start_span (this) = start_span_cb;
-  m_source_printing.min_margin_width = 6;
-  m_source_printing.max_width = 80;
+  source_printing_opts.min_margin_width = 6;
+  source_printing_opts.max_width = 80;
   pp_buffer (get_sink (0).get_printer ())->m_flush_p = false;
 }
 
diff --git a/gcc/diagnostics/selftest-context.h 
b/gcc/diagnostics/selftest-context.h
index faa81bf5456a..cfba99743898 100644
--- a/gcc/diagnostics/selftest-context.h
+++ b/gcc/diagnostics/selftest-context.h
@@ -55,6 +55,34 @@ class test_context : public context
          const char * fmt, ...) ATTRIBUTE_GCC_DIAG(6,7);
 
   const char *test_show_locus (rich_location &richloc);
+
+  /* Setters for the context's source_printing_options
+     for use in selftests.  */
+  void colorize_source (bool val)
+  {
+    get_source_printing_options ().colorize_source_p = val;
+  }
+  void show_labels (bool val)
+  {
+    get_source_printing_options ().show_labels_p = val;
+  }
+  void show_line_numbers (bool val)
+  {
+    get_source_printing_options ().show_line_numbers_p = val;
+  }
+  void show_ruler (bool val)
+  {
+    get_source_printing_options ().show_ruler_p = val;
+  }
+  void show_event_links (bool val)
+  {
+    get_source_printing_options ().show_event_links_p = val;
+  }
+  void set_caret_char (unsigned idx, char ch)
+  {
+    gcc_assert (idx < rich_location::STATICALLY_ALLOCATED_RANGES);
+    get_source_printing_options ().caret_chars[idx] = ch;
+  }
 };
 
 } // namespace selftest
diff --git a/gcc/diagnostics/source-printing.cc 
b/gcc/diagnostics/source-printing.cc
index 9f06728366e1..5e0a57f12bbc 100644
--- a/gcc/diagnostics/source-printing.cc
+++ b/gcc/diagnostics/source-printing.cc
@@ -3843,8 +3843,9 @@ add_location_if_nearby (const diagnostics::context &dc,
                        bool restrict_to_current_line_spans,
                        const range_label *label)
 {
-  diagnostics::source_print_policy source_policy (dc,
-                                                 dc.m_source_printing);
+  diagnostics::source_print_policy
+    source_policy (dc,
+                  dc.get_source_printing_options ());
   return add_location_if_nearby (source_policy, loc,
                                 restrict_to_current_line_spans, label);
 }
@@ -4057,7 +4058,7 @@ make_element_for_locus (const rich_location &rich_loc,
   xml::element wrapper ("wrapper", false);
   xml::printer xp (wrapper);
   dc.maybe_show_locus_as_html (rich_loc,
-                              dc.m_source_printing,
+                              dc.get_source_printing_options (),
                               kind,
                               xp,
                               nullptr,
@@ -4171,11 +4172,12 @@ test_offset_impl (int caret_byte_col, int max_width,
                  int left_margin = test_left_margin)
 {
   test_context dc;
-  dc.m_source_printing.max_width = max_width;
+  auto &source_printing_opts = dc.get_source_printing_options ();
+  source_printing_opts.max_width = max_width;
   /* min_margin_width sets the minimum space reserved for
      the line number plus one space after.  */
-  dc.m_source_printing.min_margin_width = left_margin - test_linenum_sep + 1;
-  dc.m_source_printing.show_line_numbers_p = true;
+  source_printing_opts.min_margin_width = left_margin - test_linenum_sep + 1;
+  dc.show_line_numbers (true);
   diagnostics::source_print_policy source_policy (dc);
   rich_location richloc (line_table,
                         linemap_position_for_column (line_table,
@@ -4287,11 +4289,12 @@ test_layout_x_offset_display_utf8 (const 
line_table_case &case_)
   /* Test that the source line is offset as expected when printed.  */
   {
     test_context dc;
-    dc.m_source_printing.max_width = small_width - 6;
-    dc.m_source_printing.min_margin_width
+    auto &source_printing_opts = dc.get_source_printing_options ();
+    source_printing_opts.max_width = small_width - 6;
+    source_printing_opts.min_margin_width
       = test_left_margin - test_linenum_sep + 1;
-    dc.m_source_printing.show_line_numbers_p = true;
-    dc.m_source_printing.show_ruler_p = true;
+    dc.show_line_numbers (true);
+    dc.show_ruler (true);
     diagnostics::source_print_policy policy (dc);
     rich_location richloc (line_table,
                           linemap_position_for_column (line_table,
@@ -4317,11 +4320,12 @@ test_layout_x_offset_display_utf8 (const 
line_table_case &case_)
      it with a padding space in this case.  */
   {
     test_context dc;
-    dc.m_source_printing.max_width = small_width - 5;
-    dc.m_source_printing.min_margin_width
+    auto &source_printing_opts = dc.get_source_printing_options ();
+    source_printing_opts.max_width = small_width - 5;
+    source_printing_opts.min_margin_width
       = test_left_margin - test_linenum_sep + 1;
-    dc.m_source_printing.show_line_numbers_p = true;
-    dc.m_source_printing.show_ruler_p = true;
+    dc.show_line_numbers (true);
+    dc.show_ruler (true);
     diagnostics::source_print_policy policy (dc);
     rich_location richloc (line_table,
                           linemap_position_for_column (line_table,
@@ -4433,10 +4437,11 @@ test_layout_x_offset_display_tab (const line_table_case 
&case_)
       test_context dc;
       dc.m_tabstop = tabstop;
       static const int small_width = 24;
-      dc.m_source_printing.max_width = small_width - 4;
-      dc.m_source_printing.min_margin_width
+      auto &source_printing_opts = dc.get_source_printing_options ();
+      source_printing_opts.max_width = small_width - 4;
+      source_printing_opts.min_margin_width
        = test_left_margin - test_linenum_sep + 1;
-      dc.m_source_printing.show_line_numbers_p = true;
+      dc.show_line_numbers (true);
       diagnostics::source_print_policy policy (dc);
       layout test_layout (policy, richloc, nullptr);
       colorizer col (*dc.get_reference_printer (),
@@ -4538,7 +4543,7 @@ test_one_liner_caret_and_range ()
   }
   {
     test_context dc;
-    dc.m_source_printing.show_line_numbers_p = true;
+    dc.show_line_numbers (true);
     auto out = make_raw_html_for_locus (richloc, diagnostics::kind::error, dc);
      ASSERT_STREQ
        ("<table class=\"locus\">\n"
@@ -4561,19 +4566,19 @@ test_one_liner_multiple_carets_and_ranges ()
     = make_location (linemap_position_for_column (line_table, 2),
                     linemap_position_for_column (line_table, 1),
                     linemap_position_for_column (line_table, 3));
-  dc.m_source_printing.caret_chars[0] = 'A';
+  dc.set_caret_char (0, 'A');
 
   location_t bar
     = make_location (linemap_position_for_column (line_table, 8),
                     linemap_position_for_column (line_table, 7),
                     linemap_position_for_column (line_table, 9));
-  dc.m_source_printing.caret_chars[1] = 'B';
+  dc.set_caret_char (1, 'B');
 
   location_t field
     = make_location (linemap_position_for_column (line_table, 13),
                     linemap_position_for_column (line_table, 11),
                     linemap_position_for_column (line_table, 15));
-  dc.m_source_printing.caret_chars[2] = 'C';
+  dc.set_caret_char (2, 'C');
 
   rich_location richloc (line_table, foo);
   richloc.add_range (bar, SHOW_RANGE_WITH_CARET);
@@ -4651,8 +4656,9 @@ test_one_liner_fixit_remove ()
   /* Normal, with ruler.  */
   {
     test_context dc;
-    dc.m_source_printing.show_ruler_p = true;
-    dc.m_source_printing.max_width = 104;
+    auto &source_printing_opts = dc.get_source_printing_options ();
+    dc.show_ruler (true);
+    source_printing_opts.max_width = 104;
     ASSERT_STREQ ("          0         0         0         0         0         
0         0         0         0         1    \n"
                  "          1         2         3         4         5         
6         7         8         9         0    \n"
                  " 
12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234\n"
@@ -4665,8 +4671,9 @@ test_one_liner_fixit_remove ()
   /* Test of adding a prefix, with ruler.  */
   {
     test_context dc;
-    dc.m_source_printing.show_ruler_p = true;
-    dc.m_source_printing.max_width = 50;
+    auto &source_printing_opts = dc.get_source_printing_options ();
+    dc.show_ruler (true);
+    source_printing_opts.max_width = 50;
     pp_prefixing_rule (dc.get_reference_printer ()) = 
DIAGNOSTICS_SHOW_PREFIX_EVERY_LINE;
     pp_set_prefix (dc.get_reference_printer (), xstrdup ("TEST PREFIX:"));
     ASSERT_STREQ ("TEST PREFIX:          1         2         3         4       
  5\n"
@@ -4680,9 +4687,10 @@ test_one_liner_fixit_remove ()
   /* Test of adding a prefix, with ruler and line numbers.  */
   {
     test_context dc;
-    dc.m_source_printing.show_ruler_p = true;
-    dc.m_source_printing.max_width = 50;
-    dc.m_source_printing.show_line_numbers_p = true;
+    auto &source_printing_opts = dc.get_source_printing_options ();
+    dc.show_ruler (true);
+    source_printing_opts.max_width = 50;
+    dc.show_line_numbers (true);
     pp_prefixing_rule (dc.get_reference_printer ()) = 
DIAGNOSTICS_SHOW_PREFIX_EVERY_LINE;
     pp_set_prefix (dc.get_reference_printer (), xstrdup ("TEST PREFIX:"));
     ASSERT_STREQ ("TEST PREFIX:      |          1         2         3         
4         5\n"
@@ -4942,7 +4950,7 @@ test_one_liner_labels ()
     /* Verify that we can disable label-printing.  */
     {
       test_context dc;
-      dc.m_source_printing.show_labels_p = false;
+      dc.show_labels (false);
       ASSERT_STREQ (" foo = bar.field;\n"
                    " ^~~   ~~~ ~~~~~\n",
                    dc.test_show_locus (richloc));
@@ -4969,7 +4977,7 @@ test_one_liner_labels ()
 
     {
       test_context dc;
-      dc.m_source_printing.show_line_numbers_p = true;
+      dc.show_line_numbers (true);
       auto out
        = make_raw_html_for_locus (richloc, diagnostics::kind::error, dc);
       ASSERT_STREQ
@@ -5195,19 +5203,19 @@ test_one_liner_multiple_carets_and_ranges_utf8 ()
     = make_location (linemap_position_for_column (line_table, 7),
                     linemap_position_for_column (line_table, 1),
                     linemap_position_for_column (line_table, 8));
-  dc.m_source_printing.caret_chars[0] = 'A';
+  dc.set_caret_char (0, 'A');
 
   location_t bar
     = make_location (linemap_position_for_column (line_table, 16),
                     linemap_position_for_column (line_table, 12),
                     linemap_position_for_column (line_table, 17));
-  dc.m_source_printing.caret_chars[1] = 'B';
+  dc.set_caret_char (1, 'B');
 
   location_t field
     = make_location (linemap_position_for_column (line_table, 26),
                     linemap_position_for_column (line_table, 19),
                     linemap_position_for_column (line_table, 30));
-  dc.m_source_printing.caret_chars[2] = 'C';
+  dc.set_caret_char (2, 'C');
   rich_location richloc (line_table, foo);
   richloc.add_range (bar, SHOW_RANGE_WITH_CARET);
   richloc.add_range (field, SHOW_RANGE_WITH_CARET);
@@ -5674,7 +5682,7 @@ static void
 test_one_liner_colorized_utf8 ()
 {
   test_context dc;
-  dc.m_source_printing.colorize_source_p = true;
+  dc.colorize_source (true);
   diagnostic_color_init (&dc, DIAGNOSTICS_COLOR_YES);
   const location_t pi = linemap_position_for_column (line_table, 12);
   rich_location richloc (line_table, pi);
@@ -5892,7 +5900,7 @@ test_diagnostic_show_locus_fixit_lines (const 
line_table_case &case_)
     richloc.add_fixit_insert_before (y, ".");
     richloc.add_fixit_replace (colon, "=");
     test_context dc;
-    dc.m_source_printing.show_line_numbers_p = true;
+    dc.show_line_numbers (true);
     ASSERT_STREQ ("    3 |                        y\n"
                  "      |                        .\n"
                  "......\n"
@@ -6621,7 +6629,7 @@ test_fixit_insert_containing_newline (const 
line_table_case &case_)
     /* With line numbers.  */
     {
       test_context dc;
-      dc.m_source_printing.show_line_numbers_p = true;
+      dc.show_line_numbers (true);
       ASSERT_STREQ ("    2 |       x = a;\n"
                    "  +++ |+      break;\n"
                    "    3 |     case 'b':\n"
@@ -6697,7 +6705,7 @@ test_fixit_insert_containing_newline_2 (const 
line_table_case &case_)
      consolidated, since it makes little sense to skip line 2.  */
   {
     test_context dc;
-    dc.m_source_printing.show_line_numbers_p = true;
+    dc.show_line_numbers (true);
     ASSERT_STREQ ("  +++ |+#include <stdio.h>\n"
                  "    1 | test (int ch)\n"
                  "    2 | {\n"
@@ -6980,8 +6988,9 @@ test_line_numbers_multiline_range ()
   location_t loc = make_location (caret, start, finish);
 
   test_context dc;
-  dc.m_source_printing.show_line_numbers_p = true;
-  dc.m_source_printing.min_margin_width = 0;
+  dc.show_line_numbers (true);
+  auto &source_printing_opts = dc.get_source_printing_options ();
+  source_printing_opts.min_margin_width = 0;
   gcc_rich_location richloc (loc);
   ASSERT_STREQ (" 9 | this is line 9\n"
                "   |         ~~~~~~\n"
diff --git a/gcc/diagnostics/text-sink.h b/gcc/diagnostics/text-sink.h
index de7b71d6a0ca..460e53e630cb 100644
--- a/gcc/diagnostics/text-sink.h
+++ b/gcc/diagnostics/text-sink.h
@@ -44,7 +44,7 @@ public:
     m_includes_seen (nullptr),
     m_source_printing (source_printing
                       ? *source_printing
-                      : dc.m_source_printing),
+                      : dc.get_source_printing_options ()),
     m_follows_reference_printer (follows_reference_printer),
     m_show_nesting (false),
     m_show_nesting_levels (false)
diff --git a/gcc/fortran/error.cc b/gcc/fortran/error.cc
index 564513da64c5..ebf9e6197d22 100644
--- a/gcc/fortran/error.cc
+++ b/gcc/fortran/error.cc
@@ -573,7 +573,7 @@ gfc_diagnostic_text_starter (diagnostics::text_sink 
&text_output,
     ? gfc_diagnostic_build_locus_prefix (loc_policy, s1, colorize)
     : gfc_diagnostic_build_locus_prefix (loc_policy, s1, s2, colorize);
 
-  if (!context->m_source_printing.enabled
+  if (!context->get_source_printing_options ().enabled
       || diagnostic_location (diagnostic, 0) <= BUILTINS_LOCATION
       || diagnostic_location (diagnostic, 0) == context->m_last_location)
     {
@@ -960,8 +960,9 @@ gfc_diagnostics_init (void)
   diagnostics::start_span (global_dc) = gfc_diagnostic_start_span;
   diagnostics::text_finalizer (global_dc) = gfc_diagnostic_text_finalizer;
   global_dc->set_format_decoder (gfc_format_decoder);
-  global_dc->m_source_printing.caret_chars[0] = '1';
-  global_dc->m_source_printing.caret_chars[1] = '2';
+  auto &source_printing_opts = global_dc->get_source_printing_options ();
+  source_printing_opts.caret_chars[0] = '1';
+  source_printing_opts.caret_chars[1] = '2';
   pp_warning_buffer = new diagnostics::buffer (*global_dc);
   error_buffer = new gfc_error_buffer ();
   pp_error_buffer = &(error_buffer->buffer);
@@ -975,8 +976,9 @@ gfc_diagnostics_finish (void)
      defaults.  */
   diagnostics::text_starter (global_dc) = gfc_diagnostic_text_starter;
   diagnostics::text_finalizer (global_dc) = gfc_diagnostic_text_finalizer;
-  global_dc->m_source_printing.caret_chars[0] = '^';
-  global_dc->m_source_printing.caret_chars[1] = '^';
+  auto &source_printing_opts = global_dc->get_source_printing_options ();
+  source_printing_opts.caret_chars[0] = '^';
+  source_printing_opts.caret_chars[1] = '^';
   delete error_buffer;
   error_buffer = nullptr;
   pp_error_buffer = nullptr;
diff --git a/gcc/libgdiagnostics.cc b/gcc/libgdiagnostics.cc
index 04fcc689ace1..7df8c95cb83d 100644
--- a/gcc/libgdiagnostics.cc
+++ b/gcc/libgdiagnostics.cc
@@ -657,14 +657,15 @@ public:
     m_dc.set_show_cwe (true);
     m_dc.set_show_rules (true);
     m_dc.m_show_column = true;
-    m_dc.m_source_printing.enabled = true;
-    m_dc.m_source_printing.colorize_source_p = true;
+    auto &source_printing_opts = m_dc.get_source_printing_options ();
+    source_printing_opts.enabled = true;
+    source_printing_opts.colorize_source_p = true;
 
     /* We don't currently expose a way for clients to manipulate the
        following.  */
-    m_dc.m_source_printing.show_labels_p = true;
-    m_dc.m_source_printing.show_line_numbers_p = true;
-    m_dc.m_source_printing.min_margin_width = 6;
+    source_printing_opts.show_labels_p = true;
+    source_printing_opts.show_line_numbers_p = true;
+    source_printing_opts.min_margin_width = 6;
     m_dc.set_path_format (DPF_INLINE_EVENTS);
 
     m_dc.m_client_aux_data = this;
@@ -1412,7 +1413,7 @@ diagnostic_text_sink::diagnostic_text_sink 
(diagnostic_manager &mgr,
                                            FILE *dst_stream,
                                            enum diagnostic_colorize colorize)
 : sink (mgr),
-  m_source_printing (mgr.get_dc ().m_source_printing)
+  m_source_printing (mgr.get_dc ().get_source_printing_options ())
 {
   auto inner_sink
     = std::make_unique<diagnostics::text_sink> (mgr.get_dc (),
diff --git a/gcc/opts.cc b/gcc/opts.cc
index ec999be39100..c21e66ba9171 100644
--- a/gcc/opts.cc
+++ b/gcc/opts.cc
@@ -2962,19 +2962,19 @@ common_handle_option (struct gcc_options *opts,
       break;
 
     case OPT_fdiagnostics_show_caret:
-      dc->m_source_printing.enabled = value;
+      dc->get_source_printing_options ().enabled = value;
       break;
 
     case OPT_fdiagnostics_show_event_links:
-      dc->m_source_printing.show_event_links_p = value;
+      dc->get_source_printing_options ().show_event_links_p = value;
       break;
 
     case OPT_fdiagnostics_show_labels:
-      dc->m_source_printing.show_labels_p = value;
+      dc->get_source_printing_options ().show_labels_p = value;
       break;
 
     case OPT_fdiagnostics_show_line_numbers:
-      dc->m_source_printing.show_line_numbers_p = value;
+      dc->get_source_printing_options ().show_line_numbers_p = value;
       break;
 
     case OPT_fdiagnostics_color_:
@@ -3052,7 +3052,7 @@ common_handle_option (struct gcc_options *opts,
       break;
 
     case OPT_fdiagnostics_minimum_margin_width_:
-      dc->m_source_printing.min_margin_width = value;
+      dc->get_source_printing_options ().min_margin_width = value;
       break;
 
     case OPT_fdump_:
@@ -3090,7 +3090,7 @@ common_handle_option (struct gcc_options *opts,
 
     case OPT_fmessage_length_:
       pp_set_line_maximum_length (dc->get_reference_printer (), value);
-      diagnostic_set_caret_max_width (dc, value);
+      dc->set_caret_max_width (value);
       break;
 
     case OPT_fopt_info:
diff --git a/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_show_trees.cc 
b/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_show_trees.cc
index 44b94dafad39..7e34a42c5bb7 100644
--- a/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_show_trees.cc
+++ b/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_show_trees.cc
@@ -115,7 +115,7 @@ plugin_init (struct plugin_name_args *plugin_info,
   if (!plugin_default_version_check (version, &gcc_version))
     return 1;
 
-  global_dc->m_source_printing.max_width = 80;
+  global_dc->get_source_printing_options ().max_width = 80;
 
   register_callback (plugin_name,
                     PLUGIN_PRE_GENERICIZE,
diff --git a/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_inlining.cc 
b/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_inlining.cc
index 7edce1fe2d43..d38538d74844 100644
--- a/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_inlining.cc
+++ b/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_inlining.cc
@@ -169,7 +169,7 @@ plugin_init (struct plugin_name_args *plugin_info,
   if (!plugin_default_version_check (version, &gcc_version))
     return 1;
 
-  global_dc->m_source_printing.max_width = 80;
+  global_dc->get_source_printing_options ().max_width = 80;
 
   pass_info.pass = new pass_test_inlining (g);
   pass_info.reference_pass_name = "*warn_function_noreturn";
diff --git a/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_paths.cc 
b/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_paths.cc
index 6d3f6f88c021..2c9ff1c5b065 100644
--- a/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_paths.cc
+++ b/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_paths.cc
@@ -558,7 +558,7 @@ plugin_init (struct plugin_name_args *plugin_info,
   if (!plugin_default_version_check (version, &gcc_version))
     return 1;
 
-  global_dc->m_source_printing.max_width = 80;
+  global_dc->get_source_printing_options ().max_width = 80;
 
   pass_info.pass = make_pass_test_show_path (g);
   pass_info.reference_pass_name = "whole-program";
diff --git a/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_show_locus.cc 
b/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_show_locus.cc
index e1fc56cde643..92839cd35b7f 100644
--- a/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_show_locus.cc
+++ b/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_show_locus.cc
@@ -181,7 +181,7 @@ test_show_locus (function *fun)
 
   /* Hardcode the "terminal width", to verify the behavior of
      very wide lines.  */
-  global_dc->m_source_printing.max_width = 71;
+  global_dc->get_source_printing_options ().max_width = 71;
 
   if (0 == strcmp (fnname, "test_simple"))
     {
@@ -252,7 +252,7 @@ test_show_locus (function *fun)
   if (0 == strcmp (fnname, "test_very_wide_line"))
     {
       const int line = fnstart_line + 2;
-      global_dc->m_source_printing.show_ruler_p = true;
+      global_dc->get_source_printing_options ().show_ruler_p = true;
       text_range_label label0 ("label 0");
       text_range_label label1 ("label 1");
       rich_location richloc (line_table,
@@ -264,7 +264,7 @@ test_show_locus (function *fun)
                         &label1);
       richloc.add_fixit_replace ("bar * foo");
       warning_at (&richloc, 0, "test");
-      global_dc->m_source_printing.show_ruler_p = false;
+      global_dc->get_source_printing_options ().show_ruler_p = false;
     }
 
   /* Likewise, but with a secondary location that's immediately before
@@ -272,7 +272,7 @@ test_show_locus (function *fun)
   if (0 == strcmp (fnname, "test_very_wide_line_2"))
     {
       const int line = fnstart_line + 2;
-      global_dc->m_source_printing.show_ruler_p = true;
+      global_dc->get_source_printing_options ().show_ruler_p = true;
       text_range_label label0 ("label 0");
       text_range_label label1 ("label 1");
       rich_location richloc (line_table,
@@ -284,7 +284,7 @@ test_show_locus (function *fun)
       richloc.add_range (get_loc (line, 34), SHOW_RANGE_WITHOUT_CARET,
                         &label1);
       warning_at (&richloc, 0, "test");
-      global_dc->m_source_printing.show_ruler_p = false;
+      global_dc->get_source_printing_options ().show_ruler_p = false;
     }
 
   /* Example of multiple carets.  */
@@ -295,11 +295,11 @@ test_show_locus (function *fun)
       location_t caret_b = get_loc (line, 11);
       rich_location richloc (line_table, caret_a);
       add_range (&richloc, caret_b, caret_b, SHOW_RANGE_WITH_CARET);
-      global_dc->m_source_printing.caret_chars[0] = 'A';
-      global_dc->m_source_printing.caret_chars[1] = 'B';
+      global_dc->get_source_printing_options ().caret_chars[0] = 'A';
+      global_dc->get_source_printing_options ().caret_chars[1] = 'B';
       warning_at (&richloc, 0, "test");
-      global_dc->m_source_printing.caret_chars[0] = '^';
-      global_dc->m_source_printing.caret_chars[1] = '^';
+      global_dc->get_source_printing_options ().caret_chars[0] = '^';
+      global_dc->get_source_printing_options ().caret_chars[1] = '^';
     }
 
   /* Tests of rendering fixit hints.  */
@@ -413,11 +413,11 @@ test_show_locus (function *fun)
       location_t caret_b = get_loc (line - 1, 19);
       rich_location richloc (line_table, caret_a);
       richloc.add_range (caret_b, SHOW_RANGE_WITH_CARET);
-      global_dc->m_source_printing.caret_chars[0] = '1';
-      global_dc->m_source_printing.caret_chars[1] = '2';
+      global_dc->get_source_printing_options ().caret_chars[0] = '1';
+      global_dc->get_source_printing_options ().caret_chars[1] = '2';
       warning_at (&richloc, 0, "test");
-      global_dc->m_source_printing.caret_chars[0] = '^';
-      global_dc->m_source_printing.caret_chars[1] = '^';
+      global_dc->get_source_printing_options ().caret_chars[0] = '^';
+      global_dc->get_source_printing_options ().caret_chars[1] = '^';
     }
 
   /* Example of using the "%q+D" format code, which as well as printing
diff --git 
a/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_string_literals.cc 
b/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_string_literals.cc
index 1b5fad2bc662..b64d60f7bd79 100644
--- a/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_string_literals.cc
+++ b/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_string_literals.cc
@@ -208,7 +208,7 @@ plugin_init (struct plugin_name_args *plugin_info,
   if (!plugin_default_version_check (version, &gcc_version))
     return 1;
 
-  global_dc->m_source_printing.max_width = 80;
+  global_dc->get_source_printing_options ().max_width = 80;
 
   pass_info.pass = new pass_test_string_literals (g);
   pass_info.reference_pass_name = "ssa";
diff --git 
a/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_tree_expression_range.cc 
b/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_tree_expression_range.cc
index fbdb2f899d68..bbd0faae1954 100644
--- 
a/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_tree_expression_range.cc
+++ 
b/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_tree_expression_range.cc
@@ -89,7 +89,7 @@ plugin_init (struct plugin_name_args *plugin_info,
   if (!plugin_default_version_check (version, &gcc_version))
     return 1;
 
-  global_dc->m_source_printing.max_width = 130;
+  global_dc->get_source_printing_options ().max_width = 130;
 
   register_callback (plugin_name,
                     PLUGIN_PRE_GENERICIZE,
diff --git a/gcc/testsuite/gcc.dg/plugin/expensive_selftests_plugin.cc 
b/gcc/testsuite/gcc.dg/plugin/expensive_selftests_plugin.cc
index ea37921acacb..67722d45d6e6 100644
--- a/gcc/testsuite/gcc.dg/plugin/expensive_selftests_plugin.cc
+++ b/gcc/testsuite/gcc.dg/plugin/expensive_selftests_plugin.cc
@@ -48,7 +48,7 @@ test_richloc (rich_location *richloc)
 {
   /* Run the diagnostic and fix-it printing code.  */
   diagnostics::selftest::test_context dc;
-  diagnostic_show_locus (&dc, dc.m_source_printing,
+  diagnostic_show_locus (&dc, dc.get_source_printing_options (),
                         richloc, diagnostics::kind::error,
                         dc.get_reference_printer ());
 
diff --git a/gcc/toplev.cc b/gcc/toplev.cc
index 75f807bd6a00..70dbb3e717f6 100644
--- a/gcc/toplev.cc
+++ b/gcc/toplev.cc
@@ -1070,13 +1070,14 @@ general_init (const char *argv0, bool init_signals, 
unique_argv original_argv)
 
   global_dc->set_original_argv (std::move (original_argv));
 
-  global_dc->m_source_printing.enabled
+  auto &source_printing_opts = global_dc->get_source_printing_options ();
+  source_printing_opts.enabled
     = global_options_init.x_flag_diagnostics_show_caret;
-  global_dc->m_source_printing.show_event_links_p
+  source_printing_opts.show_event_links_p
     = global_options_init.x_flag_diagnostics_show_event_links;
-  global_dc->m_source_printing.show_labels_p
+  source_printing_opts.show_labels_p
     = global_options_init.x_flag_diagnostics_show_labels;
-  global_dc->m_source_printing.show_line_numbers_p
+  source_printing_opts.show_line_numbers_p
     = global_options_init.x_flag_diagnostics_show_line_numbers;
   global_dc->set_show_cwe (global_options_init.x_flag_diagnostics_show_cwe);
   global_dc->set_show_rules 
(global_options_init.x_flag_diagnostics_show_rules);
@@ -1087,7 +1088,7 @@ general_init (const char *argv0, bool init_signals, 
unique_argv original_argv)
     (global_options_init.x_flag_diagnostics_show_path_depths);
   global_dc->set_show_option_requested
     (global_options_init.x_flag_diagnostics_show_option);
-  global_dc->m_source_printing.min_margin_width
+  source_printing_opts.min_margin_width
     = global_options_init.x_diagnostics_minimum_margin_width;
   global_dc->m_show_column
     = global_options_init.x_flag_show_column;
-- 
2.26.3

Reply via email to