From 8ee76a8d4bc70282a00eb456d70adbcef2f02c38 Mon Sep 17 00:00:00 2001 From: jason Date: Thu, 27 May 2010 18:39:56 +0000 Subject: * print-tree.c (debug_vec_tree): New fn. (print_vec_tree): New fn. * tree.h: Declare them. * gdbinit.in (ptv): New command. * print-tree.c (print_node) [TREE_VEC]: Print elements normally. * gdbinit.in (pdd): New command. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@159941 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 11 +++++++++++ gcc/gdbinit.in | 16 ++++++++++++++++ gcc/print-tree.c | 41 +++++++++++++++++++++++++++++++++++++++-- gcc/tree.h | 2 ++ 4 files changed, 68 insertions(+), 2 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 61b04322831..c2306ea5c08 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2010-05-27 Jason Merrill + + * print-tree.c (debug_vec_tree): New fn. + (print_vec_tree): New fn. + * tree.h: Declare them. + * gdbinit.in (pvt): New command. + + * print-tree.c (print_node) [TREE_VEC]: Print elements normally. + + * gdbinit.in (pdd): New command. + 2010-05-27 Jan Hubicka * ipa-inline.c (cgraph_estimate_size_after_inlining): Make inline. diff --git a/gcc/gdbinit.in b/gcc/gdbinit.in index 22c99a776b8..e2375b280c8 100644 --- a/gcc/gdbinit.in +++ b/gcc/gdbinit.in @@ -122,6 +122,22 @@ document ptn Print the name of the type-node that is $. end +define pvt +set debug_vec_tree ($) +end + +document pvt +Print the VEC(tree) that is in $. +end + +define pdd +set debug_dwarf_die ($) +end + +document pdd +Print the dw_die_ref that is in $. +end + define prc output (enum rtx_code) $.code echo \ ( diff --git a/gcc/print-tree.c b/gcc/print-tree.c index f1a2455b396..0c2318851be 100644 --- a/gcc/print-tree.c +++ b/gcc/print-tree.c @@ -60,6 +60,20 @@ debug_tree (tree node) putc ('\n', stderr); } +/* Print the vector of trees VEC on standard error, for debugging. + Most nodes referred to by this one are printed recursively + down to a depth of six. */ + +void +debug_vec_tree (VEC(tree,gc) *vec) +{ + table = XCNEWVEC (struct bucket *, HASH_SIZE); + print_vec_tree (stderr, "", vec, 0); + free (table); + table = 0; + putc ('\n', stderr); +} + /* Print PREFIX and ADDR to FILE. */ void dump_addr (FILE *file, const char *prefix, const void *addr) @@ -860,8 +874,7 @@ print_node (FILE *file, const char *prefix, tree node, int indent) { char temp[10]; sprintf (temp, "elt %d", i); - indent_to (file, indent + 4); - print_node_brief (file, temp, TREE_VEC_ELT (node, i), 0); + print_node (file, temp, TREE_VEC_ELT (node, i), indent + 4); } break; @@ -979,3 +992,27 @@ print_node (FILE *file, const char *prefix, tree node, int indent) fprintf (file, ">"); } + +/* Print the tree vector VEC in full on file FILE, preceded by PREFIX, + starting in column INDENT. */ + +void +print_vec_tree (FILE *file, const char *prefix, VEC(tree,gc) *vec, int indent) +{ + tree elt; + unsigned ix; + + /* Indent to the specified column, since this is the long form. */ + indent_to (file, indent); + + /* Print the slot this node is in, and its code, and address. */ + fprintf (file, "%s