source: trunk/third/gcc/cp/tree.def @ 8834

Revision 8834, 4.9 KB checked in by ghudson, 28 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r8833, which included commits to RCS files with non-trunk default branches.
Line 
1/* This file contains the definitions and documentation for the
2   additional tree codes used in the GNU C++ compiler (see tree.def
3   for the standard codes).
4   Copyright (C) 1987, 1988, 1990, 1993 Free Software Foundation, Inc.
5   Hacked by Michael Tiemann (tiemann@cygnus.com)
6
7This file is part of GNU CC.
8
9GNU CC is free software; you can redistribute it and/or modify
10it under the terms of the GNU General Public License as published by
11the Free Software Foundation; either version 2, or (at your option)
12any later version.
13
14GNU CC is distributed in the hope that it will be useful,
15but WITHOUT ANY WARRANTY; without even the implied warranty of
16MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17GNU General Public License for more details.
18
19You should have received a copy of the GNU General Public License
20along with GNU CC; see the file COPYING.  If not, write to
21the Free Software Foundation, 59 Temple Place - Suite 330,
22Boston, MA 02111-1307, USA.  */
23
24 
25/* Reference to the contents of an offset
26   (a value whose type is an OFFSET_TYPE).
27   Operand 0 is the object within which the offset is taken.
28   Operand 1 is the offset.  The language independent OFFSET_REF
29   just won't work for us.  */
30DEFTREECODE (CP_OFFSET_REF, "cp_offset_ref", "r", 2)
31
32/* For DELETE_EXPR, operand 0 is the store to be destroyed.
33   Operand 1 is the value to pass to the destroying function
34   saying whether the store should be deallocated as well.  */
35DEFTREECODE (DELETE_EXPR, "dl_expr", "e", 2)
36DEFTREECODE (VEC_DELETE_EXPR, "vec_dl_expr", "e", 2)
37
38/* For a UNSAVE_EXPR, operand 0 is the value to unsave.  By unsave, we
39   mean that all _EXPRs such as TARGET_EXPRs, SAVE_EXPRs,
40   WITH_CLEANUP_EXPRs, CALL_EXPRs and RTL_EXPRs, that are protected
41   from being evaluated more than once should be reset so that a new
42   expand_expr call of this expr will cause those to be re-evaluated.
43   This is useful when we want to reuse a tree in different places,
44   but where we must re-expand.  */
45DEFTREECODE (UNSAVE_EXPR, "unsave_expr", "e", 1)
46
47/* Value is reference to particular overloaded class method.
48   Operand 0 is the class name (an IDENTIFIER_NODE);
49   operand 1 is the field (also an IDENTIFIER_NODE).
50   The COMPLEXITY field holds the class level (usually 0).  */
51DEFTREECODE (SCOPE_REF, "scope_ref", "r", 2)
52
53/* When composing an object with a member, this is the result.
54   Operand 0 is the object.  Operand 1 is the member (usually
55   a dereferenced pointer to member).  */
56DEFTREECODE (MEMBER_REF, "member_ref", "r", 2)
57
58/* Type conversion operator in C++.  TREE_TYPE is type that this
59   operator converts to.  Operand is expression to be converted.  */
60DEFTREECODE (TYPE_EXPR, "type_expr", "e", 1)
61
62/* For CPLUS_NEW_EXPR, operand 0 is function which performs initialization,
63   operand 1 is argument list to initialization function,
64   and operand 2 is the slot which was allocated for this expression.  */
65DEFTREECODE (NEW_EXPR, "nw_expr", "e", 3)
66DEFTREECODE (VEC_NEW_EXPR, "vec_nw_expr", "e", 3)
67
68/* A throw expression.  operand 0 is the expression, if there was one,
69   else it is NULL_TREE.  */
70DEFTREECODE (THROW_EXPR, "throw_expr", "e", 1)
71
72/* Template definition.  The following fields have the specified uses,
73   although there are other macros in cp-tree.h that should be used for
74   accessing this data.
75        DECL_ARGUMENTS          template parm vector
76        DECL_TEMPLATE_INFO      template text &c
77        DECL_VINDEX             list of instantiations already produced;
78                                only done for functions so far
79   For class template:
80        DECL_INITIAL            associated templates (methods &c)
81        DECL_RESULT             null
82   For non-class templates:
83        TREE_TYPE               type of object to be constructed
84        DECL_RESULT             decl for object to be created
85                                (e.g., FUNCTION_DECL with tmpl parms used)
86 */
87DEFTREECODE (TEMPLATE_DECL, "template_decl", "d", 0)
88
89/* Index into a template parameter list.  This parameter must be a type.
90   Use TYPE_FIELDS to find parmlist and index.  */
91DEFTREECODE (TEMPLATE_TYPE_PARM, "template_type_parm", "t", 0)
92
93/* Index into a template parameter list.  This parameter must not be a
94   type.  */
95DEFTREECODE (TEMPLATE_CONST_PARM, "template_const_parm", "c", 2)
96
97/* For uninstantiated parameterized types.
98        TYPE_VALUES     tree list:
99                TREE_PURPOSE    template decl
100                TREE_VALUE      parm vector
101                TREE_CHAIN      null
102   Other useful fields to be defined later.  */
103DEFTREECODE (UNINSTANTIATED_P_TYPE, "uninstantiated_p_type", "t", 0)
104
105/* A thunk is a stub function.
106
107   Thunks are used to implement multiple inheritance:
108   At run-time, such a thunk subtracts THUNK_DELTA (an int, not a tree)
109   from the this pointer, and then jumps to DECL_INITIAL
110   (which is an ADDR_EXPR whose operand is a FUNCTION_DECL).
111
112   Other kinds of thunks may be defined later. */
113DEFTREECODE (THUNK_DECL, "thunk_decl", "d", 0)
114
115/* A namespace declaration.  */
116DEFTREECODE (NAMESPACE_DECL, "namespace_decl", "d", 0)
Note: See TracBrowser for help on using the repository browser.