]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
* print-tree.c (debug_vec_tree): New fn.
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 27 May 2010 18:39:56 +0000 (18:39 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 27 May 2010 18:39:56 +0000 (18:39 +0000)
(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
gcc/gdbinit.in
gcc/print-tree.c
gcc/tree.h

index 61b043228310f6a9cc021d2793be1546b4c3969a..c2306ea5c08bc813242b3b3bafbd998ddcd4a656 100644 (file)
@@ -1,3 +1,14 @@
+2010-05-27  Jason Merrill  <jason@redhat.com>
+
+       * 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  <jh@suse.cz>
 
        * ipa-inline.c (cgraph_estimate_size_after_inlining): Make inline.
index 22c99a776b80ae37a8767b0e153f25bd4765fc36..e2375b280c8db6637d2b60efa05e41e5c65deffb 100644 (file)
@@ -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 \ (
index f1a2455b39613dd8d1572dca28c8d4ab3b2df385..0c2318851be0e9fdf03f06782c0b460d02d84292 100644 (file)
@@ -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 <VEC", prefix);
+  dump_addr (file, " ", vec);
+
+  for (ix = 0; VEC_iterate (tree, vec, ix, elt); ++ix)
+    {
+      char temp[10];
+      sprintf (temp, "elt %d", ix);
+      print_node (file, temp, elt, indent + 4);
+    }
+}
index 5f0098c481fb600ca0da358eee00e423fb92f14a..5acadb499cb2a3d345e921c340c214b00ae56177 100644 (file)
@@ -5120,9 +5120,11 @@ extern void print_rtl (FILE *, const_rtx);
 
 /* In print-tree.c */
 extern void debug_tree (tree);
+extern void debug_vec_tree (VEC(tree,gc) *);
 #ifdef BUFSIZ
 extern void dump_addr (FILE*, const char *, const void *);
 extern void print_node (FILE *, const char *, tree, int);
+extern void print_vec_tree (FILE *, const char *, VEC(tree,gc) *, int);
 extern void print_node_brief (FILE *, const char *, const_tree, int);
 extern void indent_to (FILE *, int);
 #endif