diff options
Diffstat (limited to 'gcc/print-tree.c')
-rw-r--r-- | gcc/print-tree.c | 46 |
1 files changed, 41 insertions, 5 deletions
diff --git a/gcc/print-tree.c b/gcc/print-tree.c index 5ab844dc6d1..5ca762eecf2 100644 --- a/gcc/print-tree.c +++ b/gcc/print-tree.c @@ -25,12 +25,11 @@ along with GCC; see the file COPYING3. If not see #include "coretypes.h" #include "tm.h" #include "tree.h" -#include "real.h" -#include "fixed-value.h" #include "ggc.h" #include "langhooks.h" #include "tree-iterator.h" #include "diagnostic.h" +#include "gimple-pretty-print.h" #include "tree-flow.h" #include "tree-pass.h" @@ -51,7 +50,7 @@ static struct bucket **table; Most nodes referred to by this one are printed recursively down to a depth of six. */ -void +DEBUG_FUNCTION void debug_tree (tree node) { table = XCNEWVEC (struct bucket *, HASH_SIZE); @@ -61,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. */ + +DEBUG_FUNCTION 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) @@ -861,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; @@ -980,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 <VEC", prefix); + dump_addr (file, " ", vec); + + FOR_EACH_VEC_ELT (tree, vec, ix, elt) + { + char temp[10]; + sprintf (temp, "elt %d", ix); + print_node (file, temp, elt, indent + 4); + } +} |