[committed] diagnostics: don't generate URLs that won't be used

Message ID 20200218014251.13548-1-dmalcolm@redhat.com
State New
Headers show
Series
  • [committed] diagnostics: don't generate URLs that won't be used
Related show

Commit Message

David Malcolm Feb. 18, 2020, 1:42 a.m.
The two places in diagnostics.c where URLs are printed both do
non-trivial work to generate the URL strings (including malloc/free), so
don't do this work if URL-printing is disabled.

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

gcc/ChangeLog:
	* diagnostic.c (print_any_cwe): Don't call get_cwe_url if URLs
	won't be printed.
	(print_option_information): Don't call get_option_url if URLs
	won't be printed.
---
 gcc/diagnostic.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

-- 
2.21.0

Patch

diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c
index e4a08f76def..ed52bc03d17 100644
--- a/gcc/diagnostic.c
+++ b/gcc/diagnostic.c
@@ -983,12 +983,16 @@  print_any_cwe (diagnostic_context *context,
       pp_string (pp, " [");
       pp_string (pp, colorize_start (pp_show_color (pp),
 				     diagnostic_kind_color[diagnostic->kind]));
-      char *cwe_url = get_cwe_url (cwe);
-      pp_begin_url (pp, cwe_url);
-      free (cwe_url);
+      if (pp->url_format != URL_FORMAT_NONE)
+	{
+	  char *cwe_url = get_cwe_url (cwe);
+	  pp_begin_url (pp, cwe_url);
+	  free (cwe_url);
+	}
       pp_printf (pp, "CWE-%i", cwe);
       pp_set_prefix (context->printer, saved_prefix);
-      pp_end_url (pp);
+      if (pp->url_format != URL_FORMAT_NONE)
+	pp_end_url (pp);
       pp_string (pp, colorize_stop (pp_show_color (pp)));
       pp_character (pp, ']');
     }
@@ -1011,7 +1015,8 @@  print_option_information (diagnostic_context *context,
   if (option_text)
     {
       char *option_url = NULL;
-      if (context->get_option_url)
+      if (context->get_option_url
+	  && context->printer->url_format != URL_FORMAT_NONE)
 	option_url = context->get_option_url (context,
 					      diagnostic->option_index);
       pretty_printer *pp = context->printer;