Commit 0a6969ad by John F. Carr Committed by Jeff Law

tree.c, tree.h: Change tree_code_type, tree_code_length, and tree_code_name from…

tree.c, tree.h: Change tree_code_type, tree_code_length, and tree_code_name from pointers to arrays.

        * tree.c, tree.h: Change tree_code_type, tree_code_length, and
        tree_code_name from pointers to arrays.
        * tree.c: Remove standard_tree_code_* variables, no longer used.
        * print-tree.c: Remove declaration of tree_code_name.

        * cp/lex.c (init_lex): Update for tree_code_* changes.
        * objc/objc-act.c (init_objc): Likewise.

        * tree.def, cp/cp-tree.def, objc/objc-tree.def: Update for tree_code
        changes.

From-SVN: r17061
parent c55dcc7d
Thu Dec 11 23:50:17 1997 John F. Carr <jfc@mit.edu>
* tree.c, tree.h: Change tree_code_type, tree_code_length, and
tree_code_name from pointers to arrays.
* tree.c: Remove standard_tree_code_* variables, no longer used.
* print-tree.c: Remove declaration of tree_code_name.
* cp/lex.c (init_lex): Update for tree_code_* changes.
* objc/objc-act.c (init_objc): Likewise.
* tree.def, cp/cp-tree.def, objc/objc-tree.def: Update for tree_code
changes.
Thu Dec 11 23:34:54 1997 Fred Fish <fnf@ninemoons.com> Thu Dec 11 23:34:54 1997 Fred Fish <fnf@ninemoons.com>
* config.sub: Add support for BeOS target. * config.sub: Add support for BeOS target.
......
...@@ -27,43 +27,43 @@ Boston, MA 02111-1307, USA. */ ...@@ -27,43 +27,43 @@ Boston, MA 02111-1307, USA. */
Operand 0 is the object within which the offset is taken. Operand 0 is the object within which the offset is taken.
Operand 1 is the offset. The language independent OFFSET_REF Operand 1 is the offset. The language independent OFFSET_REF
just won't work for us. */ just won't work for us. */
DEFTREECODE (OFFSET_REF, "offset_ref", "r", 2) DEFTREECODE (OFFSET_REF, "offset_ref", 'r', 2)
/* For DELETE_EXPR, operand 0 is the store to be destroyed. /* For DELETE_EXPR, operand 0 is the store to be destroyed.
Operand 1 is the value to pass to the destroying function Operand 1 is the value to pass to the destroying function
saying whether the store should be deallocated as well. */ saying whether the store should be deallocated as well. */
DEFTREECODE (DELETE_EXPR, "dl_expr", "e", 2) DEFTREECODE (DELETE_EXPR, "dl_expr", 'e', 2)
DEFTREECODE (VEC_DELETE_EXPR, "vec_dl_expr", "e", 2) DEFTREECODE (VEC_DELETE_EXPR, "vec_dl_expr", 'e', 2)
/* Value is reference to particular overloaded class method. /* Value is reference to particular overloaded class method.
Operand 0 is the class name (an IDENTIFIER_NODE); Operand 0 is the class name (an IDENTIFIER_NODE);
operand 1 is the field (also an IDENTIFIER_NODE). operand 1 is the field (also an IDENTIFIER_NODE).
The COMPLEXITY field holds the class level (usually 0). */ The COMPLEXITY field holds the class level (usually 0). */
DEFTREECODE (SCOPE_REF, "scope_ref", "r", 2) DEFTREECODE (SCOPE_REF, "scope_ref", 'r', 2)
/* When composing an object with a member, this is the result. /* When composing an object with a member, this is the result.
Operand 0 is the object. Operand 1 is the member (usually Operand 0 is the object. Operand 1 is the member (usually
a dereferenced pointer to member). */ a dereferenced pointer to member). */
DEFTREECODE (MEMBER_REF, "member_ref", "r", 2) DEFTREECODE (MEMBER_REF, "member_ref", 'r', 2)
/* Type conversion operator in C++. TREE_TYPE is type that this /* Type conversion operator in C++. TREE_TYPE is type that this
operator converts to. Operand is expression to be converted. */ operator converts to. Operand is expression to be converted. */
DEFTREECODE (TYPE_EXPR, "type_expr", "e", 1) DEFTREECODE (TYPE_EXPR, "type_expr", 'e', 1)
/* For NEW_EXPR, operand 0 is function which performs initialization, /* For NEW_EXPR, operand 0 is function which performs initialization,
operand 1 is argument list to initialization function, operand 1 is argument list to initialization function,
and operand 2 is the slot which was allocated for this expression. */ and operand 2 is the slot which was allocated for this expression. */
DEFTREECODE (NEW_EXPR, "nw_expr", "e", 3) DEFTREECODE (NEW_EXPR, "nw_expr", 'e', 3)
DEFTREECODE (VEC_NEW_EXPR, "vec_nw_expr", "e", 3) DEFTREECODE (VEC_NEW_EXPR, "vec_nw_expr", 'e', 3)
/* A throw expression. operand 0 is the expression, if there was one, /* A throw expression. operand 0 is the expression, if there was one,
else it is NULL_TREE. */ else it is NULL_TREE. */
DEFTREECODE (THROW_EXPR, "throw_expr", "e", 1) DEFTREECODE (THROW_EXPR, "throw_expr", 'e', 1)
/* Initialization of a vector, used in build_new. Operand 0 is the target /* Initialization of a vector, used in build_new. Operand 0 is the target
of the initialization, operand 1 is the initializer, and operand 2 is of the initialization, operand 1 is the initializer, and operand 2 is
the number of elements. */ the number of elements. */
DEFTREECODE (VEC_INIT_EXPR, "vec_init_expr", "e", 3) DEFTREECODE (VEC_INIT_EXPR, "vec_init_expr", 'e', 3)
/* Template definition. The following fields have the specified uses, /* Template definition. The following fields have the specified uses,
although there are other macros in cp-tree.h that should be used for although there are other macros in cp-tree.h that should be used for
...@@ -80,18 +80,18 @@ DEFTREECODE (VEC_INIT_EXPR, "vec_init_expr", "e", 3) ...@@ -80,18 +80,18 @@ DEFTREECODE (VEC_INIT_EXPR, "vec_init_expr", "e", 3)
DECL_RESULT decl for object to be created DECL_RESULT decl for object to be created
(e.g., FUNCTION_DECL with tmpl parms used) (e.g., FUNCTION_DECL with tmpl parms used)
*/ */
DEFTREECODE (TEMPLATE_DECL, "template_decl", "d", 0) DEFTREECODE (TEMPLATE_DECL, "template_decl", 'd', 0)
/* Index into a template parameter list. This parameter must be a type. /* Index into a template parameter list. This parameter must be a type.
Use TYPE_FIELDS to find parmlist and index. */ Use TYPE_FIELDS to find parmlist and index. */
DEFTREECODE (TEMPLATE_TYPE_PARM, "template_type_parm", "t", 0) DEFTREECODE (TEMPLATE_TYPE_PARM, "template_type_parm", 't', 0)
/* A type designated by 'typename T::t'. */ /* A type designated by 'typename T::t'. */
DEFTREECODE (TYPENAME_TYPE, "typename_type", "t", 0) DEFTREECODE (TYPENAME_TYPE, "typename_type", 't', 0)
/* Index into a template parameter list. This parameter must not be a /* Index into a template parameter list. This parameter must not be a
type. */ type. */
DEFTREECODE (TEMPLATE_CONST_PARM, "template_const_parm", "c", 3) DEFTREECODE (TEMPLATE_CONST_PARM, "template_const_parm", 'c', 3)
/* A thunk is a stub function. /* A thunk is a stub function.
...@@ -101,17 +101,17 @@ DEFTREECODE (TEMPLATE_CONST_PARM, "template_const_parm", "c", 3) ...@@ -101,17 +101,17 @@ DEFTREECODE (TEMPLATE_CONST_PARM, "template_const_parm", "c", 3)
(which is an ADDR_EXPR whose operand is a FUNCTION_DECL). (which is an ADDR_EXPR whose operand is a FUNCTION_DECL).
Other kinds of thunks may be defined later. */ Other kinds of thunks may be defined later. */
DEFTREECODE (THUNK_DECL, "thunk_decl", "d", 0) DEFTREECODE (THUNK_DECL, "thunk_decl", 'd', 0)
/* A namespace declaration. */ /* A namespace declaration. */
DEFTREECODE (NAMESPACE_DECL, "namespace_decl", "d", 0) DEFTREECODE (NAMESPACE_DECL, "namespace_decl", 'd', 0)
/* A using declaration. DECL_INITIAL contains the specified scope. /* A using declaration. DECL_INITIAL contains the specified scope.
This is not an alias, but is later expanded into multiple aliases. */ This is not an alias, but is later expanded into multiple aliases. */
DEFTREECODE (USING_DECL, "using_decl", "d", 0) DEFTREECODE (USING_DECL, "using_decl", 'd', 0)
/* An un-parsed default argument. Looks like an IDENTIFIER_NODE. */ /* An un-parsed default argument. Looks like an IDENTIFIER_NODE. */
DEFTREECODE (DEFAULT_ARG, "default_arg", "c", 2) DEFTREECODE (DEFAULT_ARG, "default_arg", 'c', 2)
/* A template-id, like foo<int>. The first operand is the template. /* A template-id, like foo<int>. The first operand is the template.
The second is the list of explicitly specified arguments. The The second is the list of explicitly specified arguments. The
...@@ -119,51 +119,51 @@ DEFTREECODE (DEFAULT_ARG, "default_arg", "c", 2) ...@@ -119,51 +119,51 @@ DEFTREECODE (DEFAULT_ARG, "default_arg", "c", 2)
overloaded functions and templates if the template-id refers to overloaded functions and templates if the template-id refers to
a global template. If the template-id refers to a member template, a global template. If the template-id refers to a member template,
the template will will be an IDENTIFIER_NODE. */ the template will will be an IDENTIFIER_NODE. */
DEFTREECODE (TEMPLATE_ID_EXPR, "template_id_expr", "e", 2) DEFTREECODE (TEMPLATE_ID_EXPR, "template_id_expr", 'e', 2)
/* A whole bunch of tree codes for the initial, superficial parsing of /* A whole bunch of tree codes for the initial, superficial parsing of
templates. */ templates. */
DEFTREECODE (LOOKUP_EXPR, "lookup_expr", "e", 2) DEFTREECODE (LOOKUP_EXPR, "lookup_expr", 'e', 2)
DEFTREECODE (MODOP_EXPR, "modop_expr", "e", 3) DEFTREECODE (MODOP_EXPR, "modop_expr", 'e', 3)
DEFTREECODE (CAST_EXPR, "cast_expr", "1", 1) DEFTREECODE (CAST_EXPR, "cast_expr", '1', 1)
DEFTREECODE (REINTERPRET_CAST_EXPR, "reinterpret_cast_expr", "1", 1) DEFTREECODE (REINTERPRET_CAST_EXPR, "reinterpret_cast_expr", '1', 1)
DEFTREECODE (CONST_CAST_EXPR, "const_cast_expr", "1", 1) DEFTREECODE (CONST_CAST_EXPR, "const_cast_expr", '1', 1)
DEFTREECODE (STATIC_CAST_EXPR, "static_cast_expr", "1", 1) DEFTREECODE (STATIC_CAST_EXPR, "static_cast_expr", '1', 1)
DEFTREECODE (DYNAMIC_CAST_EXPR, "dynamic_cast_expr", "1", 1) DEFTREECODE (DYNAMIC_CAST_EXPR, "dynamic_cast_expr", '1', 1)
DEFTREECODE (SIZEOF_EXPR, "sizeof_expr", "1", 1) DEFTREECODE (SIZEOF_EXPR, "sizeof_expr", '1', 1)
DEFTREECODE (ARROW_EXPR, "arrow_expr", "e", 1) DEFTREECODE (ARROW_EXPR, "arrow_expr", 'e', 1)
DEFTREECODE (DOTSTAR_EXPR, "dotstar_expr", "e", 2) DEFTREECODE (DOTSTAR_EXPR, "dotstar_expr", 'e', 2)
DEFTREECODE (TYPEID_EXPR, "typeid_expr", "e", 1) DEFTREECODE (TYPEID_EXPR, "typeid_expr", 'e', 1)
DEFTREECODE (EXPR_STMT, "expr_stmt", "e", 1) DEFTREECODE (EXPR_STMT, "expr_stmt", 'e', 1)
DEFTREECODE (COMPOUND_STMT, "compound_stmt", "e", 1) DEFTREECODE (COMPOUND_STMT, "compound_stmt", 'e', 1)
DEFTREECODE (DECL_STMT, "decl_stmt", "e", 3) DEFTREECODE (DECL_STMT, "decl_stmt", 'e', 3)
DEFTREECODE (IF_STMT, "if_stmt", "e", 3) DEFTREECODE (IF_STMT, "if_stmt", 'e', 3)
DEFTREECODE (FOR_STMT, "for_stmt", "e", 4) DEFTREECODE (FOR_STMT, "for_stmt", 'e', 4)
DEFTREECODE (WHILE_STMT, "while_stmt", "e", 2) DEFTREECODE (WHILE_STMT, "while_stmt", 'e', 2)
DEFTREECODE (DO_STMT, "do_stmt", "e", 2) DEFTREECODE (DO_STMT, "do_stmt", 'e', 2)
DEFTREECODE (RETURN_STMT, "return_stmt", "e", 1) DEFTREECODE (RETURN_STMT, "return_stmt", 'e', 1)
DEFTREECODE (BREAK_STMT, "break_stmt", "e", 0) DEFTREECODE (BREAK_STMT, "break_stmt", 'e', 0)
DEFTREECODE (CONTINUE_STMT, "continue_stmt", "e", 0) DEFTREECODE (CONTINUE_STMT, "continue_stmt", 'e', 0)
DEFTREECODE (SWITCH_STMT, "switch_stmt", "e", 2) DEFTREECODE (SWITCH_STMT, "switch_stmt", 'e', 2)
DEFTREECODE (GOTO_STMT, "goto_stmt", "e", 1) DEFTREECODE (GOTO_STMT, "goto_stmt", 'e', 1)
DEFTREECODE (CTOR_INITIALIZER, "ctor_initializer", "e", 2) DEFTREECODE (CTOR_INITIALIZER, "ctor_initializer", 'e', 2)
DEFTREECODE (CASE_LABEL, "case_label", "e", 2) DEFTREECODE (CASE_LABEL, "case_label", 'e', 2)
DEFTREECODE (RETURN_INIT, "return_init", "e", 2) DEFTREECODE (RETURN_INIT, "return_init", 'e', 2)
DEFTREECODE (TRY_BLOCK, "try_stmt", "e", 2) DEFTREECODE (TRY_BLOCK, "try_stmt", 'e', 2)
DEFTREECODE (HANDLER, "catch_stmt", "e", 2) DEFTREECODE (HANDLER, "catch_stmt", 'e', 2)
DEFTREECODE (IDENTITY_CONV, "identity_conv", "e", 1) DEFTREECODE (IDENTITY_CONV, "identity_conv", 'e', 1)
DEFTREECODE (LVALUE_CONV, "lvalue_conv", "e", 1) DEFTREECODE (LVALUE_CONV, "lvalue_conv", 'e', 1)
DEFTREECODE (QUAL_CONV, "qual_conv", "e", 1) DEFTREECODE (QUAL_CONV, "qual_conv", 'e', 1)
DEFTREECODE (STD_CONV, "std_conv", "e", 1) DEFTREECODE (STD_CONV, "std_conv", 'e', 1)
DEFTREECODE (PTR_CONV, "ptr_conv", "e", 1) DEFTREECODE (PTR_CONV, "ptr_conv", 'e', 1)
DEFTREECODE (PMEM_CONV, "pmem_conv", "e", 1) DEFTREECODE (PMEM_CONV, "pmem_conv", 'e', 1)
DEFTREECODE (BASE_CONV, "base_conv", "e", 1) DEFTREECODE (BASE_CONV, "base_conv", 'e', 1)
DEFTREECODE (REF_BIND, "ref_bind", "e", 1) DEFTREECODE (REF_BIND, "ref_bind", 'e', 1)
DEFTREECODE (USER_CONV, "user_conv", "e", 4) DEFTREECODE (USER_CONV, "user_conv", 'e', 4)
DEFTREECODE (AMBIG_CONV, "ambig_conv", "e", 1) DEFTREECODE (AMBIG_CONV, "ambig_conv", 'e', 1)
DEFTREECODE (RVALUE_CONV, "rvalue_conv", "e", 1) DEFTREECODE (RVALUE_CONV, "rvalue_conv", 'e', 1)
DEFTREECODE (TAG_DEFN, "tag_defn", "e", 0) DEFTREECODE (TAG_DEFN, "tag_defn", 'e', 0)
...@@ -361,8 +361,8 @@ my_get_run_time () ...@@ -361,8 +361,8 @@ my_get_run_time ()
#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE, #define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE,
char *cplus_tree_code_type[] = { char cplus_tree_code_type[] = {
"x", 'x',
#include "cp-tree.def" #include "cp-tree.def"
}; };
#undef DEFTREECODE #undef DEFTREECODE
...@@ -461,18 +461,9 @@ init_lex () ...@@ -461,18 +461,9 @@ init_lex ()
init_cplus_expand (); init_cplus_expand ();
tree_code_type bcopy (cplus_tree_code_type,
= (char **) realloc (tree_code_type, tree_code_type + (int) LAST_AND_UNUSED_TREE_CODE,
sizeof (char *) * LAST_CPLUS_TREE_CODE); (int)LAST_CPLUS_TREE_CODE - (int)LAST_AND_UNUSED_TREE_CODE);
tree_code_length
= (int *) realloc (tree_code_length,
sizeof (int) * LAST_CPLUS_TREE_CODE);
tree_code_name
= (char **) realloc (tree_code_name,
sizeof (char *) * LAST_CPLUS_TREE_CODE);
bcopy ((char *)cplus_tree_code_type,
(char *)(tree_code_type + (int) LAST_AND_UNUSED_TREE_CODE),
(LAST_CPLUS_TREE_CODE - (int)LAST_AND_UNUSED_TREE_CODE) * sizeof (char *));
bcopy ((char *)cplus_tree_code_length, bcopy ((char *)cplus_tree_code_length,
(char *)(tree_code_length + (int) LAST_AND_UNUSED_TREE_CODE), (char *)(tree_code_length + (int) LAST_AND_UNUSED_TREE_CODE),
(LAST_CPLUS_TREE_CODE - (int)LAST_AND_UNUSED_TREE_CODE) * sizeof (int)); (LAST_CPLUS_TREE_CODE - (int)LAST_AND_UNUSED_TREE_CODE) * sizeof (int));
......
...@@ -86,8 +86,8 @@ Boston, MA 02111-1307, USA. */ ...@@ -86,8 +86,8 @@ Boston, MA 02111-1307, USA. */
#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE, #define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE,
char *objc_tree_code_type[] = { char objc_tree_code_type[] = {
"x", 'x',
#include "objc-tree.def" #include "objc-tree.def"
}; };
#undef DEFTREECODE #undef DEFTREECODE
...@@ -8022,19 +8022,9 @@ init_objc () ...@@ -8022,19 +8022,9 @@ init_objc ()
gcc_obstack_init (&util_obstack); gcc_obstack_init (&util_obstack);
util_firstobj = (char *) obstack_finish (&util_obstack); util_firstobj = (char *) obstack_finish (&util_obstack);
tree_code_type bcopy (objc_tree_code_type,
= (char **) xrealloc (tree_code_type, tree_code_type + (int) LAST_CODE,
sizeof (char *) * LAST_OBJC_TREE_CODE); (int) LAST_OBJC_TREE_CODE - (int) LAST_CODE);
tree_code_length
= (int *) xrealloc (tree_code_length,
sizeof (int) * LAST_OBJC_TREE_CODE);
tree_code_name
= (char **) xrealloc (tree_code_name,
sizeof (char *) * LAST_OBJC_TREE_CODE);
bcopy ((char *) objc_tree_code_type,
(char *) (tree_code_type + (int) LAST_CODE),
(((int) LAST_OBJC_TREE_CODE - (int) LAST_CODE)
* sizeof (char *)));
bcopy ((char *) objc_tree_code_length, bcopy ((char *) objc_tree_code_length,
(char *) (tree_code_length + (int) LAST_CODE), (char *) (tree_code_length + (int) LAST_CODE),
(((int) LAST_OBJC_TREE_CODE - (int) LAST_CODE) (((int) LAST_OBJC_TREE_CODE - (int) LAST_CODE)
......
...@@ -22,16 +22,16 @@ Boston, MA 02111-1307, USA. */ ...@@ -22,16 +22,16 @@ Boston, MA 02111-1307, USA. */
/* Objective-C types. */ /* Objective-C types. */
DEFTREECODE (CLASS_INTERFACE_TYPE, "class_interface_type", "t", 0) DEFTREECODE (CLASS_INTERFACE_TYPE, "class_interface_type", 't', 0)
DEFTREECODE (CLASS_IMPLEMENTATION_TYPE, "class_implementation_type", "t", 0) DEFTREECODE (CLASS_IMPLEMENTATION_TYPE, "class_implementation_type", 't', 0)
DEFTREECODE (CATEGORY_INTERFACE_TYPE, "category_interface_type", "t", 0) DEFTREECODE (CATEGORY_INTERFACE_TYPE, "category_interface_type", 't', 0)
DEFTREECODE (CATEGORY_IMPLEMENTATION_TYPE,"category_implementation_type","t",0) DEFTREECODE (CATEGORY_IMPLEMENTATION_TYPE,"category_implementation_type",'t',0)
DEFTREECODE (PROTOCOL_INTERFACE_TYPE, "protocol_interface_type", "t", 0) DEFTREECODE (PROTOCOL_INTERFACE_TYPE, "protocol_interface_type", 't', 0)
/* Objective-C decls. */ /* Objective-C decls. */
DEFTREECODE (KEYWORD_DECL, "keyword_decl", "d", 0) DEFTREECODE (KEYWORD_DECL, "keyword_decl", 'd', 0)
DEFTREECODE (INSTANCE_METHOD_DECL, "instance_method_decl", "d", 0) DEFTREECODE (INSTANCE_METHOD_DECL, "instance_method_decl", 'd', 0)
DEFTREECODE (CLASS_METHOD_DECL, "class_method_decl", "d", 0) DEFTREECODE (CLASS_METHOD_DECL, "class_method_decl", 'd', 0)
/* Objective-C constants. */ /* Objective-C constants. */
DEFTREECODE (OBJC_STRING_CST, "objc_string_cst", "c", 3) DEFTREECODE (OBJC_STRING_CST, "objc_string_cst", 'c', 3)
/* Prints out tree in human readable form - GNU C-compiler /* Prints out tree in human readable form - GNU C-compiler
Copyright (C) 1990, 91, 93, 94, 95, 1996 Free Software Foundation, Inc. Copyright (C) 1990, 91, 93, 94, 95, 96, 1997 Free Software Foundation, Inc.
This file is part of GNU CC. This file is part of GNU CC.
...@@ -23,8 +23,6 @@ Boston, MA 02111-1307, USA. */ ...@@ -23,8 +23,6 @@ Boston, MA 02111-1307, USA. */
#include "tree.h" #include "tree.h"
#include <stdio.h> #include <stdio.h>
extern char **tree_code_name;
extern char *mode_name[]; extern char *mode_name[];
void print_node (); void print_node ();
...@@ -541,9 +539,8 @@ print_node (file, prefix, node, indent) ...@@ -541,9 +539,8 @@ print_node (file, prefix, node, indent)
case '2': case '2':
case 'r': case 'r':
case 's': case 's':
switch (TREE_CODE (node)) if (TREE_CODE (node) == BIND_EXPR)
{ {
case BIND_EXPR:
print_node (file, "vars", TREE_OPERAND (node, 0), indent + 4); print_node (file, "vars", TREE_OPERAND (node, 0), indent + 4);
print_node (file, "body", TREE_OPERAND (node, 1), indent + 4); print_node (file, "body", TREE_OPERAND (node, 1), indent + 4);
print_node (file, "block", TREE_OPERAND (node, 2), indent + 4); print_node (file, "block", TREE_OPERAND (node, 2), indent + 4);
...@@ -570,6 +567,8 @@ print_node (file, prefix, node, indent) ...@@ -570,6 +567,8 @@ print_node (file, prefix, node, indent)
break; break;
case RTL_EXPR: case RTL_EXPR:
first_rtl = 0; first_rtl = 0;
default:
break;
} }
for (i = 0; i < len; i++) for (i = 0; i < len; i++)
{ {
...@@ -689,6 +688,10 @@ print_node (file, prefix, node, indent) ...@@ -689,6 +688,10 @@ print_node (file, prefix, node, indent)
case OP_IDENTIFIER: case OP_IDENTIFIER:
print_node (file, "op1", TREE_PURPOSE (node), indent + 4); print_node (file, "op1", TREE_PURPOSE (node), indent + 4);
print_node (file, "op2", TREE_VALUE (node), indent + 4); print_node (file, "op2", TREE_VALUE (node), indent + 4);
break;
default:
break;
} }
break; break;
......
...@@ -189,7 +189,7 @@ struct momentary_level *momentary_stack; ...@@ -189,7 +189,7 @@ struct momentary_level *momentary_stack;
#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE, #define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE,
char *standard_tree_code_type[] = { char tree_code_type[MAX_TREE_CODES] = {
#include "tree.def" #include "tree.def"
}; };
#undef DEFTREECODE #undef DEFTREECODE
...@@ -200,7 +200,7 @@ char *standard_tree_code_type[] = { ...@@ -200,7 +200,7 @@ char *standard_tree_code_type[] = {
#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) LENGTH, #define DEFTREECODE(SYM, NAME, TYPE, LENGTH) LENGTH,
int standard_tree_code_length[] = { int tree_code_length[MAX_TREE_CODES] = {
#include "tree.def" #include "tree.def"
}; };
#undef DEFTREECODE #undef DEFTREECODE
...@@ -209,27 +209,11 @@ int standard_tree_code_length[] = { ...@@ -209,27 +209,11 @@ int standard_tree_code_length[] = {
Used for printing out the tree and error messages. */ Used for printing out the tree and error messages. */
#define DEFTREECODE(SYM, NAME, TYPE, LEN) NAME, #define DEFTREECODE(SYM, NAME, TYPE, LEN) NAME,
char *standard_tree_code_name[] = { char *tree_code_name[MAX_TREE_CODES] = {
#include "tree.def" #include "tree.def"
}; };
#undef DEFTREECODE #undef DEFTREECODE
/* Table indexed by tree code giving a string containing a character
classifying the tree code. Possibilities are
t, d, s, c, r, e, <, 1 and 2. See tree.def for details. */
char **tree_code_type;
/* Table indexed by tree code giving number of expression
operands beyond the fixed part of the node structure.
Not used for types or decls. */
int *tree_code_length;
/* Table indexed by tree code giving name of tree code, as a string. */
char **tree_code_name;
/* Statistics-gathering stuff. */ /* Statistics-gathering stuff. */
typedef enum typedef enum
{ {
...@@ -942,15 +926,7 @@ resume_momentary (yes) ...@@ -942,15 +926,7 @@ resume_momentary (yes)
void void
init_tree_codes () init_tree_codes ()
{ {
tree_code_type = (char **) xmalloc (sizeof (standard_tree_code_type));
tree_code_length = (int *) xmalloc (sizeof (standard_tree_code_length));
tree_code_name = (char **) xmalloc (sizeof (standard_tree_code_name));
bcopy ((char *) standard_tree_code_type, (char *) tree_code_type,
sizeof (standard_tree_code_type));
bcopy ((char *) standard_tree_code_length, (char *) tree_code_length,
sizeof (standard_tree_code_length));
bcopy ((char *) standard_tree_code_name, (char *) tree_code_name,
sizeof (standard_tree_code_name));
} }
/* Return a newly allocated node of code CODE. /* Return a newly allocated node of code CODE.
...@@ -3906,8 +3882,7 @@ simple_cst_equal (t1, t2) ...@@ -3906,8 +3882,7 @@ simple_cst_equal (t1, t2)
handled above. If this is a language-specific tree code, we can't handled above. If this is a language-specific tree code, we can't
trust what might be in the operand, so say we don't know trust what might be in the operand, so say we don't know
the situation. */ the situation. */
if ((int) code1 if ((int) code1 >= (int) LAST_AND_UNUSED_TREE_CODE)
>= sizeof standard_tree_code_type / sizeof standard_tree_code_type[0])
return -1; return -1;
switch (TREE_CODE_CLASS (code1)) switch (TREE_CODE_CLASS (code1))
......
...@@ -47,16 +47,17 @@ enum tree_code { ...@@ -47,16 +47,17 @@ enum tree_code {
constant, `d' for a decl, `t' for a type, `s' for a statement, constant, `d' for a decl, `t' for a type, `s' for a statement,
and `x' for anything else (TREE_LIST, IDENTIFIER, etc). */ and `x' for anything else (TREE_LIST, IDENTIFIER, etc). */
extern char **tree_code_type; #define MAX_TREE_CODES 256
#define TREE_CODE_CLASS(CODE) (*tree_code_type[(int) (CODE)]) extern char tree_code_type[MAX_TREE_CODES];
#define TREE_CODE_CLASS(CODE) tree_code_type[(int) (CODE)]
/* Number of argument-words in each kind of tree-node. */ /* Number of argument-words in each kind of tree-node. */
extern int *tree_code_length; extern int tree_code_length[MAX_TREE_CODES];
/* Names of tree components. */ /* Names of tree components. */
extern char **tree_code_name; extern char *tree_code_name[MAX_TREE_CODES];
/* Codes that identify the various built in functions /* Codes that identify the various built in functions
so that expand_call can identify them quickly. */ so that expand_call can identify them quickly. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment