This patch stops the gimple printer from using global pretty printers. Applied to trunk.
-- Gaby 2013-08-05 Gabriel Dos Reis <g...@integrable-solutions.net> * gimple-pretty-print.c (buffer): Remove. (initialized): Likewise. (maybe_init_pretty_print): Likewise. (print_gimple_stmt): Do not call it. Use non-static local pretty_printer variable. (print_gimple_expr): Likewise. (print_gimple_seq): Likewise. (gimple_dump_bb): Likewise. Index: gimple-pretty-print.c =================================================================== --- gimple-pretty-print.c (revision 201481) +++ gimple-pretty-print.c (working copy) @@ -36,9 +36,6 @@ #define INDENT(SPACE) \ do { int i; for (i = 0; i < SPACE; i++) pp_space (buffer); } while (0) -static pretty_printer buffer; -static bool initialized = false; - #define GIMPLE_NIY do_niy (buffer,gs) /* Try to print on BUFFER a default message for the unrecognized @@ -52,22 +49,6 @@ } -/* Initialize the pretty printer on FILE if needed. */ - -static void -maybe_init_pretty_print (FILE *file) -{ - if (!initialized) - { - pp_construct (&buffer, NULL, 0); - pp_needs_newline (&buffer) = true; - initialized = true; - } - - buffer.buffer->stream = file; -} - - /* Emit a newline and SPC indentation spaces to BUFFER. */ static void @@ -93,7 +74,10 @@ void print_gimple_stmt (FILE *file, gimple g, int spc, int flags) { - maybe_init_pretty_print (file); + pretty_printer buffer; + pp_construct (&buffer, NULL, 0); + pp_needs_newline (&buffer) = true; + buffer.buffer->stream = file; pp_gimple_stmt_1 (&buffer, g, spc, flags); pp_newline_and_flush (&buffer); } @@ -122,7 +106,10 @@ print_gimple_expr (FILE *file, gimple g, int spc, int flags) { flags |= TDF_RHS_ONLY; - maybe_init_pretty_print (file); + pretty_printer buffer; + pp_construct (&buffer, NULL, 0); + pp_needs_newline (&buffer) = true; + buffer.buffer->stream = file; pp_gimple_stmt_1 (&buffer, g, spc, flags); pp_flush (&buffer); } @@ -155,7 +142,10 @@ void print_gimple_seq (FILE *file, gimple_seq seq, int spc, int flags) { - maybe_init_pretty_print (file); + pretty_printer buffer; + pp_construct (&buffer, NULL, 0); + pp_needs_newline (&buffer) = true; + buffer.buffer->stream = file; dump_gimple_seq (&buffer, seq, spc, flags); pp_newline_and_flush (&buffer); } @@ -2279,7 +2269,10 @@ dump_gimple_bb_header (file, bb, indent, flags); if (bb->index >= NUM_FIXED_BLOCKS) { - maybe_init_pretty_print (file); + pretty_printer buffer; + pp_construct (&buffer, NULL, 0); + pp_needs_newline (&buffer) = true; + buffer.buffer->stream = file; gimple_dump_bb_buff (&buffer, bb, indent, flags); } dump_gimple_bb_footer (file, bb, indent, flags);