diff mbox

Clean up pretty printers [3/n]

Message ID 877gg0lnor.fsf@euclid.axiomatics.org
State New
Headers show

Commit Message

Gabriel Dos Reis Aug. 5, 2013, 5:19 a.m. UTC
This patchlet makes the asan module stop using a global pretty printer.
As a result, the code is cleaner that way -- and this is in preparation
of having pretty printers initialize themselves through constructors.

-- Gaby

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

	* asan.c (asan_pp): Remove.
	(asan_pp_initialized): Likewise.
	(asan_pp_initialize): Likewise.
	(asan_pp_string): Take a pretty_printer parameter.  Adjust callers.
	(asan_emit_stack_protection): Tidy.  Use local pretty printer.
	(asan_add_global): Likewise.
diff mbox

Patch

Index: asan.c
===================================================================
--- asan.c	(revision 201479)
+++ asan.c	(working copy)
@@ -842,25 +842,12 @@ 
   initialize_sanitizer_builtins ();
 }
 
-/* Asan pretty-printer, used for buidling of the description STRING_CSTs.  */
-static pretty_printer asan_pp;
-static bool asan_pp_initialized;
+/* Create ADDR_EXPR of STRING_CST with the PP pretty printer text.  */
 
-/* Initialize asan_pp.  */
-
-static void
-asan_pp_initialize (void)
-{
-  pp_construct (&asan_pp, /* prefix */NULL, /* line-width */0);
-  asan_pp_initialized = true;
-}
-
-/* Create ADDR_EXPR of STRING_CST with asan_pp text.  */
-
 static tree
-asan_pp_string (void)
+asan_pp_string (pretty_printer *pp)
 {
-  const char *buf = pp_formatted_text (&asan_pp);
+  const char *buf = pp_formatted_text (pp);
   size_t len = strlen (buf);
   tree ret = build_string (len + 1, buf);
   TREE_TYPE (ret)
@@ -950,9 +937,9 @@ 
     asan_init_shadow_ptr_types ();
 
   /* First of all, prepare the description string.  */
-  if (!asan_pp_initialized)
-    asan_pp_initialize ();
-
+  pretty_printer asan_pp;
+  pp_construct (&asan_pp, /* prefix */NULL, /* line-width */0);
+  
   pp_clear_output_area (&asan_pp);
   if (DECL_NAME (current_function_decl))
     pp_tree_identifier (&asan_pp, DECL_NAME (current_function_decl));
@@ -978,7 +965,7 @@ 
 	pp_string (&asan_pp, "9 <unknown>");
       pp_space (&asan_pp);
     }
-  str_cst = asan_pp_string ();
+  str_cst = asan_pp_string (&asan_pp);
 
   /* Emit the prologue sequence.  */
   base = expand_binop (Pmode, add_optab, base, GEN_INT (base_offset),
@@ -1976,8 +1963,8 @@ 
   tree str_cst, refdecl = decl;
   vec<constructor_elt, va_gc> *vinner = NULL;
 
-  if (!asan_pp_initialized)
-    asan_pp_initialize ();
+  pretty_printer asan_pp;
+  pp_construct (&asan_pp, /* prefix */NULL, /* line-width */0);
 
   pp_clear_output_area (&asan_pp);
   if (DECL_NAME (decl))
@@ -1988,7 +1975,7 @@ 
   pp_left_paren (&asan_pp);
   pp_string (&asan_pp, main_input_filename);
   pp_right_paren (&asan_pp);
-  str_cst = asan_pp_string ();
+  str_cst = asan_pp_string (&asan_pp);
 
   if (asan_needs_local_alias (decl))
     {