This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Clean up pretty printers [7/n]


Same topic as previous patch in this series.

-- Gaby

2013-08-16  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* sched-vis.c (rtl_slim_pp_initialized): Remove.
	(rtl_slim_pp): Likewise.
	(init_rtl_slim_pretty_print): Likewise.
	(dump_value_slim):  Don't call it.  Use local pretty printer.
	(dump_insn_slim): Likewise.
	(dump_rtl_slim): Likewise.
	(str_pattern_slim): Likewise.
	* tree-mudflap.c (mf_varname_tree): Use local pretty printer.
	Simplify.

Index: sched-vis.c
===================================================================
--- sched-vis.c	(revision 201784)
+++ sched-vis.c	(working copy)
@@ -47,10 +47,6 @@
    It is also possible to obtain a string for a single pattern as a string
    pointer, via str_pattern_slim, but this usage is discouraged.  */
 
-/* A pretty-printer for slim rtl printing.  */
-static bool rtl_slim_pp_initialized = false;
-static pretty_printer rtl_slim_pp;
-
 /* For insns we print patterns, and for some patterns we print insns...  */
 static void print_insn_with_notes (pretty_printer *, const_rtx);
 
@@ -760,24 +756,6 @@
       }
 }
 
-/* Return a pretty-print buffer set up to print to file F.  */
-
-static pretty_printer *
-init_rtl_slim_pretty_print (FILE *f)
-{
-  if (! rtl_slim_pp_initialized)
-    {
-      pp_construct (&rtl_slim_pp, /*prefix=*/NULL, /*linewidth=*/0);
-      rtl_slim_pp_initialized = true;
-    }
-  else
-    /* Clean out any data that str_insn_slim may have left here.  */
-    pp_clear_output_area (&rtl_slim_pp);
-
-  rtl_slim_pp.buffer->stream = f;
-  return &rtl_slim_pp;
-}
-
 /* Print X, an RTL value node, to file F in slim format.  Include
    additional information if VERBOSE is nonzero.
 
@@ -787,9 +765,11 @@
 void
 dump_value_slim (FILE *f, const_rtx x, int verbose)
 {
-  pretty_printer *pp = init_rtl_slim_pretty_print (f);
-  print_value (pp, x, verbose);
-  pp_flush (pp);
+  pretty_printer rtl_slim_pp;
+  pp_construct (&rtl_slim_pp, /*prefix=*/NULL, /*linewidth=*/0);
+  rtl_slim_pp.buffer->stream = f;
+  print_value (&rtl_slim_pp, x, verbose);
+  pp_flush (&rtl_slim_pp);
 }
 
 /* Emit a slim dump of X (an insn) to the file F, including any register
@@ -797,9 +777,11 @@
 void
 dump_insn_slim (FILE *f, const_rtx x)
 {
-  pretty_printer *pp = init_rtl_slim_pretty_print (f);
-  print_insn_with_notes (pp, x);
-  pp_flush (pp);
+  pretty_printer rtl_slim_pp;
+  pp_construct (&rtl_slim_pp, /*prefix=*/NULL, /*linewidth=*/0);
+  rtl_slim_pp.buffer->stream = f;
+  print_insn_with_notes (&rtl_slim_pp, x);
+  pp_flush (&rtl_slim_pp);
 }
 
 /* Same as above, but stop at LAST or when COUNT == 0.
@@ -810,19 +792,21 @@
 	       int count, int flags ATTRIBUTE_UNUSED)
 {
   const_rtx insn, tail;
-  pretty_printer *pp = init_rtl_slim_pretty_print (f);
+  pretty_printer rtl_slim_pp;
+  pp_construct (&rtl_slim_pp, /*prefix=*/NULL, /*linewidth=*/0);
+  rtl_slim_pp.buffer->stream = f;
 
   tail = last ? NEXT_INSN (last) : NULL_RTX;
   for (insn = first;
        (insn != NULL) && (insn != tail) && (count != 0);
        insn = NEXT_INSN (insn))
     {
-      print_insn_with_notes (pp, insn);
+      print_insn_with_notes (&rtl_slim_pp, insn);
       if (count > 0)
         count--;
     }
 
-  pp_flush (pp);
+  pp_flush (&rtl_slim_pp);
 }
 
 /* Dumps basic block BB to pretty-printer PP in slim form and without and
@@ -857,9 +841,10 @@
 const char *
 str_pattern_slim (const_rtx x)
 {
-  pretty_printer *pp = init_rtl_slim_pretty_print (NULL);
-  print_pattern (pp, x, 0);
-  return pp_formatted_text (pp);
+  pretty_printer rtl_slim_pp;
+  pp_construct (&rtl_slim_pp, /*prefix=*/NULL, /*linewidth=*/0);
+  print_pattern (&rtl_slim_pp, x, 0);
+  return ggc_strdup (pp_formatted_text (&rtl_slim_pp));
 }
 
 /* Emit a slim dump of X (an insn) to stderr.  */
Index: tree-mudflap.c
===================================================================
--- tree-mudflap.c	(revision 201784)
+++ tree-mudflap.c	(working copy)
@@ -106,20 +106,14 @@
 static tree
 mf_varname_tree (tree decl)
 {
-  static pretty_printer buf_rec;
-  static int initialized = 0;
-  pretty_printer *buf = & buf_rec;
   const char *buf_contents;
   tree result;
 
   gcc_assert (decl);
 
-  if (!initialized)
-    {
-      pp_construct (buf, /* prefix */ NULL, /* line-width */ 0);
-      initialized = 1;
-    }
-  pp_clear_output_area (buf);
+  pretty_printer buf;
+  pp_construct (&buf, /* prefix */ NULL, /* line-width */ 0);
+  pp_clear_output_area (&buf);
 
   /* Add FILENAME[:LINENUMBER[:COLUMNNUMBER]].  */
   {
@@ -134,17 +128,17 @@
     if (sourcefile == NULL)
       sourcefile = "<unknown file>";
 
-    pp_string (buf, sourcefile);
+    pp_string (&buf, sourcefile);
 
     if (sourceline != 0)
       {
-        pp_colon (buf);
-        pp_decimal_int (buf, sourceline);
+        pp_colon (&buf);
+        pp_decimal_int (&buf, sourceline);
 
         if (sourcecolumn != 0)
           {
-            pp_colon (buf);
-            pp_decimal_int (buf, sourcecolumn);
+            pp_colon (&buf);
+            pp_decimal_int (&buf, sourcecolumn);
           }
       }
   }
@@ -152,7 +146,7 @@
   if (current_function_decl != NULL_TREE)
     {
       /* Add (FUNCTION) */
-      pp_string (buf, " (");
+      pp_string (&buf, " (");
       {
         const char *funcname = NULL;
         if (DECL_NAME (current_function_decl))
@@ -160,12 +154,12 @@
         if (funcname == NULL)
           funcname = "anonymous fn";
 
-        pp_string (buf, funcname);
+        pp_string (&buf, funcname);
       }
-      pp_string (buf, ") ");
+      pp_string (&buf, ") ");
     }
   else
-    pp_space (buf);
+    pp_space (&buf);
 
   /* Add <variable-declaration>, possibly demangled.  */
   {
@@ -186,13 +180,13 @@
     if (declname == NULL)
       declname = "<unnamed variable>";
 
-    pp_string (buf, declname);
+    pp_string (&buf, declname);
   }
 
   /* Return the lot as a new STRING_CST.  */
-  buf_contents = pp_formatted_text (buf);
+  buf_contents = ggc_strdup (pp_formatted_text (&buf));
   result = mf_build_string (buf_contents);
-  pp_clear_output_area (buf);
+  pp_clear_output_area (&buf);
 
   return result;
 }


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]