+2014-12-04 David Malcolm <dmalcolm@redhat.com>
+
+ PR jit/63854
+ * tree-pretty-print.c: Eliminate include of <new>.
+ (buffer): Convert this variable from a pretty_printer to a
+ pretty_printer *.
+ (initialized): Eliminate this variable in favor of the NULL-ness
+ of "buffer".
+ (print_generic_decl): Update for "buffer" becoming a pointer.
+ (print_generic_stmt): Likewise.
+ (print_generic_stmt_indented): Likewise.
+ (print_generic_expr): Likewise.
+ (maybe_init_pretty_print): Likewise, allocating "buffer" on the
+ heap and using its non-NULL-ness to ensure idempotency.
+
2014-12-04 David Malcolm <dmalcolm@redhat.com>
PR jit/63854
#include "wide-int-print.h"
#include "internal-fn.h"
-#include <new> // For placement-new.
-
/* Local functions, macros and variables. */
static const char *op_symbol (const_tree);
static void pretty_print_string (pretty_printer *, const char*);
#define NIY do_niy (buffer, node)
-static pretty_printer buffer;
-static int initialized = 0;
+static pretty_printer *buffer;
/* Try to print something for an unknown tree code. */
print_generic_decl (FILE *file, tree decl, int flags)
{
maybe_init_pretty_print (file);
- print_declaration (&buffer, decl, 2, flags);
- pp_write_text_to_stream (&buffer);
+ print_declaration (buffer, decl, 2, flags);
+ pp_write_text_to_stream (buffer);
}
/* Print tree T, and its successors, on file FILE. FLAGS specifies details
print_generic_stmt (FILE *file, tree t, int flags)
{
maybe_init_pretty_print (file);
- dump_generic_node (&buffer, t, 0, flags, true);
- pp_newline_and_flush (&buffer);
+ dump_generic_node (buffer, t, 0, flags, true);
+ pp_newline_and_flush (buffer);
}
/* Print tree T, and its successors, on file FILE. FLAGS specifies details
maybe_init_pretty_print (file);
for (i = 0; i < indent; i++)
- pp_space (&buffer);
- dump_generic_node (&buffer, t, indent, flags, true);
- pp_newline_and_flush (&buffer);
+ pp_space (buffer);
+ dump_generic_node (buffer, t, indent, flags, true);
+ pp_newline_and_flush (buffer);
}
/* Print a single expression T on file FILE. FLAGS specifies details to show
print_generic_expr (FILE *file, tree t, int flags)
{
maybe_init_pretty_print (file);
- dump_generic_node (&buffer, t, 0, flags, false);
- pp_flush (&buffer);
+ dump_generic_node (buffer, t, 0, flags, false);
+ pp_flush (buffer);
}
/* Dump the name of a _DECL node and its DECL_UID if TDF_UID is set
static void
maybe_init_pretty_print (FILE *file)
{
- if (!initialized)
+ if (!buffer)
{
- new (&buffer) pretty_printer ();
- pp_needs_newline (&buffer) = true;
- pp_translate_identifiers (&buffer) = false;
- initialized = 1;
+ buffer = new pretty_printer ();
+ pp_needs_newline (buffer) = true;
+ pp_translate_identifiers (buffer) = false;
}
- buffer.buffer->stream = file;
+ buffer->buffer->stream = file;
}
static void