aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/cp-tree.def
blob: 65d20a71e5e26b8003f3a208e62aba34beb77a32 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
/* This file contains the definitions and documentation for the
   additional tree codes used in the GNU C++ compiler (see tree.def
   for the standard codes).
   Copyright (C) 1987, 1988, 1990, 1993 Free Software Foundation, Inc.
   Hacked by Michael Tiemann (tiemann@cygnus.com)

This file is part of GNU CC.

GNU CC 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,
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
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.  */

 
/* Reference to the contents of an offset
   (a value whose type is an OFFSET_TYPE).
   Operand 0 is the object within which the offset is taken.
   Operand 1 is the offset.  The language independent OFFSET_REF
   just won't work for us.  */
DEFTREECODE (OFFSET_REF, "offset_ref", "r", 2)

/* For DELETE_EXPR, operand 0 is the store to be destroyed.
   Operand 1 is the value to pass to the destroying function
   saying whether the store should be deallocated as well.  */
DEFTREECODE (DELETE_EXPR, "dl_expr", "e", 2)
DEFTREECODE (VEC_DELETE_EXPR, "vec_dl_expr", "e", 2)

/* Value is reference to particular overloaded class method.
   Operand 0 is the class name (an IDENTIFIER_NODE);
   operand 1 is the field (also an IDENTIFIER_NODE).
   The COMPLEXITY field holds the class level (usually 0).  */
DEFTREECODE (SCOPE_REF, "scope_ref", "r", 2)

/* When composing an object with a member, this is the result.
   Operand 0 is the object.  Operand 1 is the member (usually
   a dereferenced pointer to member).  */
DEFTREECODE (MEMBER_REF, "member_ref", "r", 2)

/* Type conversion operator in C++.  TREE_TYPE is type that this
   operator converts to.  Operand is expression to be converted.  */
DEFTREECODE (TYPE_EXPR, "type_expr", "e", 1)

/* For NEW_EXPR, operand 0 is function which performs initialization,
   operand 1 is argument list to initialization function,
   and operand 2 is the slot which was allocated for this expression.  */
DEFTREECODE (NEW_EXPR, "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,
   else it is NULL_TREE.  */
DEFTREECODE (THROW_EXPR, "throw_expr", "e", 1)

/* 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
   the number of elements.  */
DEFTREECODE (VEC_INIT_EXPR, "vec_init_expr", "e", 3)

/* Template definition.  The following fields have the specified uses,
   although there are other macros in cp-tree.h that should be used for
   accessing this data.
        DECL_ARGUMENTS          template parm vector
        DECL_TEMPLATE_INFO      template text &c
	DECL_VINDEX		list of instantiations already produced;
				only done for functions so far
   For class template:
        DECL_INITIAL            associated templates (methods &c)
        DECL_RESULT             null
   For non-class templates:
	TREE_TYPE		type of object to be constructed
        DECL_RESULT             decl for object to be created
                                (e.g., FUNCTION_DECL with tmpl parms used)
 */
DEFTREECODE (TEMPLATE_DECL, "template_decl", "d", 0)

/* Index into a template parameter list.  This parameter must be a type.
   Use TYPE_FIELDS to find parmlist and index.  */
DEFTREECODE (TEMPLATE_TYPE_PARM, "template_type_parm", "t", 0)

/* A type designated by 'typename T::t'. */
DEFTREECODE (TYPENAME_TYPE, "typename_type", "t", 0)

/* Index into a template parameter list.  This parameter must not be a
   type.  */
DEFTREECODE (TEMPLATE_CONST_PARM, "template_const_parm", "c", 3)

/* A thunk is a stub function.

   Thunks are used to implement multiple inheritance:
   At run-time, such a thunk subtracts THUNK_DELTA (an int, not a tree)
   from the this pointer, and then jumps to DECL_INITIAL
   (which is an ADDR_EXPR whose operand is a FUNCTION_DECL).

   Other kinds of thunks may be defined later. */
DEFTREECODE (THUNK_DECL, "thunk_decl", "d", 0)

/* A namespace declaration.  */
DEFTREECODE (NAMESPACE_DECL, "namespace_decl", "d", 0)

/* A using declaration.  DECL_INITIAL contains the specified scope.  
   This is not an alias, but is later expanded into multiple aliases.  */
DEFTREECODE (USING_DECL, "using_decl", "d", 0)

/* An un-parsed default argument.  Looks like an IDENTIFIER_NODE.  */
DEFTREECODE (DEFAULT_ARG, "default_arg", "c", 2)

/* A template-id, like foo<int>.  The first operand is the template.  
   The second is the list of explicitly specified arguments.  The 
   template will be a FUNCTION_DECL, TEMPLATE_DECL, or a list of
   overloaded functions and templates if the template-id refers to
   a global template.  If the template-id refers to a member template,
   the template will will be an IDENTIFIER_NODE.  */
DEFTREECODE (TEMPLATE_ID_EXPR, "template_id_expr", "e", 2)

/* A whole bunch of tree codes for the initial, superficial parsing of
   templates.  */
DEFTREECODE (LOOKUP_EXPR, "lookup_expr", "e", 2)
DEFTREECODE (MODOP_EXPR, "modop_expr", "e", 3)
DEFTREECODE (CAST_EXPR, "cast_expr", "1", 1)
DEFTREECODE (REINTERPRET_CAST_EXPR, "reinterpret_cast_expr", "1", 1)
DEFTREECODE (CONST_CAST_EXPR, "const_cast_expr", "1", 1)
DEFTREECODE (STATIC_CAST_EXPR, "static_cast_expr", "1", 1)
DEFTREECODE (DYNAMIC_CAST_EXPR, "dynamic_cast_expr", "1", 1)
DEFTREECODE (SIZEOF_EXPR, "sizeof_expr", "1", 1)
DEFTREECODE (ARROW_EXPR, "arrow_expr", "e", 1)
DEFTREECODE (DOTSTAR_EXPR, "dotstar_expr", "e", 2)
DEFTREECODE (TYPEID_EXPR, "typeid_expr", "e", 1)

DEFTREECODE (EXPR_STMT, "expr_stmt", "e", 1)
DEFTREECODE (COMPOUND_STMT, "compound_stmt", "e", 1)
DEFTREECODE (DECL_STMT, "decl_stmt", "e", 3)
DEFTREECODE (IF_STMT, "if_stmt", "e", 3)
DEFTREECODE (FOR_STMT, "for_stmt", "e", 4)
DEFTREECODE (WHILE_STMT, "while_stmt", "e", 2)
DEFTREECODE (DO_STMT, "do_stmt", "e", 2)
DEFTREECODE (RETURN_STMT, "return_stmt", "e", 1)
DEFTREECODE (BREAK_STMT, "break_stmt", "e", 0)
DEFTREECODE (CONTINUE_STMT, "continue_stmt", "e", 0)
DEFTREECODE (SWITCH_STMT, "switch_stmt", "e", 2)
DEFTREECODE (GOTO_STMT, "goto_stmt", "e", 1)

DEFTREECODE (CTOR_INITIALIZER, "ctor_initializer", "e", 2)
DEFTREECODE (CASE_LABEL, "case_label", "e", 2)
DEFTREECODE (RETURN_INIT, "return_init", "e", 2)
DEFTREECODE (TRY_BLOCK, "try_stmt", "e", 2)
DEFTREECODE (HANDLER, "catch_stmt", "e", 2)

DEFTREECODE (IDENTITY_CONV, "identity_conv", "e", 1)
DEFTREECODE (LVALUE_CONV, "lvalue_conv", "e", 1)
DEFTREECODE (QUAL_CONV, "qual_conv", "e", 1)
DEFTREECODE (STD_CONV, "std_conv", "e", 1)
DEFTREECODE (PTR_CONV, "ptr_conv", "e", 1)
DEFTREECODE (PMEM_CONV, "pmem_conv", "e", 1)
DEFTREECODE (BASE_CONV, "base_conv", "e", 1)
DEFTREECODE (REF_BIND, "ref_bind", "e", 1)
DEFTREECODE (USER_CONV, "user_conv", "e", 4)
DEFTREECODE (AMBIG_CONV, "ambig_conv", "e", 1)
DEFTREECODE (RVALUE_CONV, "rvalue_conv", "e", 1)

DEFTREECODE (TAG_DEFN, "tag_defn", "e", 0)