/* Tree browser.
- Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Sebastian Pop <s.pop@laposte.net>
This file is part of GCC.
You should have received a copy of the GNU General Public License
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. */
+Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301, USA. */
#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "tm.h"
-#include "errors.h"
#include "tree.h"
#include "tree-inline.h"
#include "diagnostic.h"
};
#define DEFTBCODE(code, str, help) { help, str, sizeof(str) - 1, code },
-#ifdef HOST_EBCDIC
-static struct tb_command tb_commands[] =
-#else
static const struct tb_command tb_commands[] =
-#endif
{
#include "tree-browser.def"
};
};
#define DEFTREECODE(SYM, STRING, TYPE, NARGS) { SYM, STRING, sizeof (STRING) - 1 },
-#ifdef HOST_EBCDIC
-static struct tb_tree_code tb_tree_codes[] =
-#else
static const struct tb_tree_code tb_tree_codes[] =
-#endif
{
#include "tree.def"
};
break;
case TB_SUBBLOCKS:
- if (head && TREE_CODE_CLASS (TREE_CODE (head)) == 'b')
+ if (head && TREE_CODE (head) == BLOCK)
TB_SET_HEAD (BLOCK_SUBBLOCKS (head));
else
TB_WF;
break;
case TB_SUPERCONTEXT:
- if (head && TREE_CODE_CLASS (TREE_CODE (head)) == 'b')
+ if (head && TREE_CODE (head) == BLOCK)
TB_SET_HEAD (BLOCK_SUPERCONTEXT (head));
else
TB_WF;
break;
case TB_VARS:
- if (head && TREE_CODE_CLASS (TREE_CODE (head)) == 'b')
+ if (head && TREE_CODE (head) == BLOCK)
TB_SET_HEAD (BLOCK_VARS (head));
else if (head && TREE_CODE (head) == BIND_EXPR)
TB_SET_HEAD (TREE_OPERAND (head, 0));
break;
case TB_REFERENCE_TO_THIS:
- if (head && TREE_CODE_CLASS (TREE_CODE (head)) == 't')
+ if (head && TYPE_P (head))
TB_SET_HEAD (TYPE_REFERENCE_TO (head));
else
TB_WF;
break;
case TB_POINTER_TO_THIS:
- if (head && TREE_CODE_CLASS (TREE_CODE (head)) == 't')
+ if (head && TYPE_P (head))
TB_SET_HEAD (TYPE_POINTER_TO (head));
else
TB_WF;
break;
case TB_DOMAIN:
- if (head && (TREE_CODE (head) == ARRAY_TYPE
- || TREE_CODE (head) == SET_TYPE))
+ if (head && TREE_CODE (head) == ARRAY_TYPE)
TB_SET_HEAD (TYPE_DOMAIN (head));
else
TB_WF;
TB_WF;
break;
- case TB_ARG_TYPE_AS_WRITTEN:
- if (head && TREE_CODE (head) == PARM_DECL)
- TB_SET_HEAD (DECL_ARG_TYPE_AS_WRITTEN (head));
- else
- TB_WF;
- break;
-
case TB_ARG_TYPE:
if (head && TREE_CODE (head) == PARM_DECL)
TB_SET_HEAD (DECL_ARG_TYPE (head));
break;
case TB_INITIAL:
- if (head && TREE_CODE_CLASS (TREE_CODE (head)) == 'd')
+ if (head && DECL_P (head))
TB_SET_HEAD (DECL_INITIAL (head));
else
TB_WF;
break;
case TB_RESULT:
- if (head && TREE_CODE_CLASS (TREE_CODE (head)) == 'd')
+ if (head && DECL_P (head))
TB_SET_HEAD (DECL_RESULT_FLD (head));
else
TB_WF;
break;
case TB_ARGUMENTS:
- if (head && TREE_CODE_CLASS (TREE_CODE (head)) == 'd')
+ if (head && DECL_P (head))
TB_SET_HEAD (DECL_ARGUMENTS (head));
else
TB_WF;
break;
case TB_ABSTRACT_ORIGIN:
- if (head && TREE_CODE_CLASS (TREE_CODE (head)) == 'd')
+ if (head && DECL_P (head))
TB_SET_HEAD (DECL_ABSTRACT_ORIGIN (head));
- else if (head && TREE_CODE_CLASS (TREE_CODE (head)) == 'b')
+ else if (head && TREE_CODE (head) == BLOCK)
TB_SET_HEAD (BLOCK_ABSTRACT_ORIGIN (head));
else
TB_WF;
break;
case TB_ATTRIBUTES:
- if (head && TREE_CODE_CLASS (TREE_CODE (head)) == 'd')
+ if (head && DECL_P (head))
TB_SET_HEAD (DECL_ATTRIBUTES (head));
- else if (head && TREE_CODE_CLASS (TREE_CODE (head)) == 't')
+ else if (head && TYPE_P (head))
TB_SET_HEAD (TYPE_ATTRIBUTES (head));
else
TB_WF;
break;
case TB_CONTEXT:
- if (head && TREE_CODE_CLASS (TREE_CODE (head)) == 'd')
+ if (head && DECL_P (head))
TB_SET_HEAD (DECL_CONTEXT (head));
- else if (head && TREE_CODE_CLASS (TREE_CODE (head)) == 't'
+ else if (head && TYPE_P (head)
&& TYPE_CONTEXT (head))
TB_SET_HEAD (TYPE_CONTEXT (head));
else
break;
case TB_UNIT_SIZE:
- if (head && TREE_CODE_CLASS (TREE_CODE (head)) == 'd')
+ if (head && DECL_P (head))
TB_SET_HEAD (DECL_SIZE_UNIT (head));
- else if (head && TREE_CODE_CLASS (TREE_CODE (head)) == 't')
+ else if (head && TYPE_P (head))
TB_SET_HEAD (TYPE_SIZE_UNIT (head));
else
TB_WF;
break;
case TB_SIZE:
- if (head && TREE_CODE_CLASS (TREE_CODE (head)) == 'd')
+ if (head && DECL_P (head))
TB_SET_HEAD (DECL_SIZE (head));
- else if (head && TREE_CODE_CLASS (TREE_CODE (head)) == 't')
+ else if (head && TYPE_P (head))
TB_SET_HEAD (TYPE_SIZE (head));
else
TB_WF;
break;
case TB_CHILD_0:
- if (head && IS_EXPR_CODE_CLASS (TREE_CODE_CLASS (TREE_CODE (head)))
- && TREE_OPERAND (head, 0))
+ if (head && EXPR_P (head) && TREE_OPERAND (head, 0))
TB_SET_HEAD (TREE_OPERAND (head, 0));
else
TB_WF;
break;
case TB_CHILD_1:
- if (head && IS_EXPR_CODE_CLASS (TREE_CODE_CLASS (TREE_CODE (head)))
- && TREE_OPERAND (head, 1))
+ if (head && EXPR_P (head) && TREE_OPERAND (head, 1))
TB_SET_HEAD (TREE_OPERAND (head, 1));
else
TB_WF;
break;
case TB_CHILD_2:
- if (head && IS_EXPR_CODE_CLASS (TREE_CODE_CLASS (TREE_CODE (head)))
- && TREE_OPERAND (head, 2))
+ if (head && EXPR_P (head) && TREE_OPERAND (head, 2))
TB_SET_HEAD (TREE_OPERAND (head, 2));
else
TB_WF;
break;
case TB_CHILD_3:
- if (head && IS_EXPR_CODE_CLASS (TREE_CODE_CLASS (TREE_CODE (head)))
- && TREE_OPERAND (head, 3))
+ if (head && EXPR_P (head) && TREE_OPERAND (head, 3))
TB_SET_HEAD (TREE_OPERAND (head, 3));
else
TB_WF;
case TB_CHAIN:
/* Don't go further if it's the last node in this chain. */
- if (head && TREE_CODE_CLASS (TREE_CODE (head)) == 'b')
+ if (head && TREE_CODE (head) == BLOCK)
TB_SET_HEAD (BLOCK_CHAIN (head));
else if (head && TREE_CHAIN (head))
TB_SET_HEAD (TREE_CHAIN (head));
node = *tp;
/* 'node' is the parent of 'TREE_OPERAND (node, *)'. */
- if (TREE_CODE_CLASS (TREE_CODE (node)) == 'e')
+ if (EXPRESSION_CLASS_P (node))
{
#define STORE_CHILD(N) do { \
if (p1 == NULL || p2 == NULL)
return 0;
- if (TREE_CODE_CLASS(TREE_CODE(parent)) == 'e')
+ if (EXPRESSION_CLASS_P (parent))
{
#define TEST_CHILD(N) do { \