diff options
Diffstat (limited to 'contrib/gcc/cp/ptree.c')
-rw-r--r-- | contrib/gcc/cp/ptree.c | 84 |
1 files changed, 30 insertions, 54 deletions
diff --git a/contrib/gcc/cp/ptree.c b/contrib/gcc/cp/ptree.c index 6a7b26c..7979504 100644 --- a/contrib/gcc/cp/ptree.c +++ b/contrib/gcc/cp/ptree.c @@ -1,36 +1,35 @@ /* Prints out trees in human readable form. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, - 1999 Free Software Foundation, Inc. + 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. Hacked by Michael Tiemann (tiemann@cygnus.com) -This file is part of GNU CC. +This file is part of GCC. -GNU CC is free software; you can redistribute it and/or modify +GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. -GNU CC is distributed in the hope that it will be useful, +GCC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License -along with GNU CC; see the file COPYING. If not, write to +along with GCC; see the file COPYING. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "config.h" #include "system.h" +#include "coretypes.h" +#include "tm.h" #include "tree.h" #include "cp-tree.h" void -cxx_print_decl (file, node, indent) - FILE *file; - tree node; - int indent; +cxx_print_decl (FILE *file, tree node, int indent) { if (TREE_CODE (node) == FIELD_DECL) { @@ -47,29 +46,20 @@ cxx_print_decl (file, node, indent) indent_to (file, indent + 3); if (TREE_CODE (node) == FUNCTION_DECL && DECL_PENDING_INLINE_INFO (node)) - { - fprintf (file, " pending-inline-info "); - fprintf (file, HOST_PTR_PRINTF, DECL_PENDING_INLINE_INFO (node)); - } + fprintf (file, " pending-inline-info " HOST_PTR_PRINTF, + (void *) DECL_PENDING_INLINE_INFO (node)); if (TREE_CODE (node) == TYPE_DECL && DECL_SORTED_FIELDS (node)) - { - fprintf (file, " sorted-fields "); - fprintf (file, HOST_PTR_PRINTF, DECL_SORTED_FIELDS (node)); - } + fprintf (file, " sorted-fields " HOST_PTR_PRINTF, + (void *) DECL_SORTED_FIELDS (node)); if ((TREE_CODE (node) == FUNCTION_DECL || TREE_CODE (node) == VAR_DECL) && DECL_TEMPLATE_INFO (node)) - { - fprintf (file, " template-info "); - fprintf (file, HOST_PTR_PRINTF, DECL_TEMPLATE_INFO (node)); - } + fprintf (file, " template-info " HOST_PTR_PRINTF, + (void *) DECL_TEMPLATE_INFO (node)); } void -cxx_print_type (file, node, indent) - FILE *file; - register tree node; - int indent; +cxx_print_type (FILE *file, tree node, int indent) { switch (TREE_CODE (node)) { @@ -77,12 +67,10 @@ cxx_print_type (file, node, indent) case TEMPLATE_TEMPLATE_PARM: case BOUND_TEMPLATE_TEMPLATE_PARM: indent_to (file, indent + 3); - fputs ("index ", file); - fprintf (file, HOST_WIDE_INT_PRINT_DEC, TEMPLATE_TYPE_IDX (node)); - fputs (" level ", file); - fprintf (file, HOST_WIDE_INT_PRINT_DEC, TEMPLATE_TYPE_LEVEL (node)); - fputs (" orig_level ", file); - fprintf (file, HOST_WIDE_INT_PRINT_DEC, TEMPLATE_TYPE_ORIG_LEVEL (node)); + fprintf (file, "index " HOST_WIDE_INT_PRINT_DEC " level " + HOST_WIDE_INT_PRINT_DEC " orig_level " HOST_WIDE_INT_PRINT_DEC, + TEMPLATE_TYPE_IDX (node), TEMPLATE_TYPE_LEVEL (node), + TEMPLATE_TYPE_ORIG_LEVEL (node)); return; case FUNCTION_TYPE: @@ -135,12 +123,6 @@ cxx_print_type (file, node, indent) fputs (" delete[]", file); if (TYPE_HAS_ASSIGN_REF (node)) fputs (" this=(X&)", file); - if (TYPE_OVERLOADS_CALL_EXPR (node)) - fputs (" op()", file); - if (TYPE_OVERLOADS_ARRAY_REF (node)) - fputs (" op[]", file); - if (TYPE_OVERLOADS_ARROW (node)) - fputs (" op->", file); if (TYPE_USES_MULTIPLE_INHERITANCE (node)) fputs (" uses-multiple-inheritance", file); @@ -157,22 +139,21 @@ cxx_print_type (file, node, indent) } } + static void cxx_print_binding (FILE *stream, cxx_binding *binding, const char *prefix) { - fprintf (stream, "%s <", prefix); - fprintf (stream, HOST_PTR_PRINTF, (char *) binding); - fprintf (stream, ">"); + fprintf (stream, "%s <" HOST_PTR_PRINTF ">", + prefix, (void *) binding); } void -cxx_print_identifier (file, node, indent) - FILE *file; - tree node; - int indent; +cxx_print_identifier (FILE *file, tree node, int indent) { + indent_to (file, indent); cxx_print_binding (file, IDENTIFIER_NAMESPACE_BINDINGS (node), "bindings"); print_node (file, "class", IDENTIFIER_CLASS_VALUE (node), indent + 4); + indent_to (file, indent); cxx_print_binding (file, IDENTIFIER_BINDING (node), "local bindings"); print_node (file, "label", IDENTIFIER_LABEL_VALUE (node), indent + 4); print_node (file, "template", IDENTIFIER_TEMPLATE (node), indent + 4); @@ -181,10 +162,7 @@ cxx_print_identifier (file, node, indent) } void -cxx_print_xnode (file, node, indent) - FILE *file; - tree node; - int indent; +cxx_print_xnode (FILE *file, tree node, int indent) { switch (TREE_CODE (node)) { @@ -194,12 +172,10 @@ cxx_print_xnode (file, node, indent) break; case TEMPLATE_PARM_INDEX: indent_to (file, indent + 3); - fputs ("index ", file); - fprintf (file, HOST_WIDE_INT_PRINT_DEC, TEMPLATE_PARM_IDX (node)); - fputs (" level ", file); - fprintf (file, HOST_WIDE_INT_PRINT_DEC, TEMPLATE_PARM_LEVEL (node)); - fputs (" orig_level ", file); - fprintf (file, HOST_WIDE_INT_PRINT_DEC, TEMPLATE_PARM_ORIG_LEVEL (node)); + fprintf (file, "index " HOST_WIDE_INT_PRINT_DEC " level " + HOST_WIDE_INT_PRINT_DEC " orig_level " HOST_WIDE_INT_PRINT_DEC, + TEMPLATE_PARM_IDX (node), TEMPLATE_PARM_LEVEL (node), + TEMPLATE_PARM_ORIG_LEVEL (node)); break; default: break; |