summaryrefslogtreecommitdiff
path: root/gcc/print-tree.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/print-tree.c')
-rw-r--r--gcc/print-tree.c46
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);
+ }
+}