OSDN Git Service

contrib:
[pf3gnuchains/gcc-fork.git] / gcc / ch / ch-tree.def
1 /* This file contains the definitions and documentation for the
2    additional tree codes used in the CHILL front end (see tree.def
3    for the standard codes).
4    Copyright (C) 1992, 1993 Free Software Foundation, Inc.
5
6 This file is part of GNU CC.
7
8 GNU CC is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2, or (at your option)
11 any later version.
12
13 GNU CC is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with GNU CC; see the file COPYING.  If not, write to
20 the Free Software Foundation, 59 Temple Place - Suite 330,
21 Boston, MA 02111-1307, USA.  */
22
23
24 /* 
25  * CHILL types.
26  */
27 DEFTREECODE (GRANT_TYPE, "grant_type", 't', 0)
28 DEFTREECODE (SEIZE_TYPE, "seize_type", 't', 0)
29 /* 
30  * CHILL decls.
31  */
32 DEFTREECODE (KEYWORD_DECL, "keyword_decl", 'd', 0)
33 DEFTREECODE (INSTANCE_METHOD_DECL, "instance_method_decl", 'd', 0)
34 DEFTREECODE (CLASS_METHOD_DECL, "class_method_decl", 'd', 0)
35
36 /* A 'SEIZE (OLD->NEW)!POSTFIX' or 'GRANT (OLD->NEW)!POSTFIX' is
37    represented as an ALIAS_DECL where DECL_OLD_PREFIX, DECL_NEW_PREFIX,
38    and DECL_POSTFIX points to OLD, NEW, and POSTFIX, repectively.
39    These are IDENTIFIER_NODEs, or NULL if empty.
40    DECL_NAME is NEW!POSTFIX.  After binding, DECL_ABSTRACT_ORIGIN
41    (if not an error_mark) points to a decl whose DECL_NAME is OLD!POSTFIX.
42    and which this name is linked to.
43    For SEIZE, DECL_SEIZEFILE names the most recent use_seize_file directive.
44    For GRANT, DECL_SEIZEFILE names the seizefile doing the granting. */
45 DEFTREECODE (ALIAS_DECL, "alias_decl", 'd', 0)
46
47 /* A variable, which is BASED on a pointer variable in DECL_ABSTRACT_ORIGIN. */
48 DEFTREECODE (BASED_DECL, "based_decl", 'd', 0)
49
50 /* A pseudo-variable declared by a DO WITH. */
51 DEFTREECODE (WITH_DECL, "with_decl", 'd', 0)
52
53 /*
54  * CHILL exprs.
55  */
56 DEFTREECODE (CONCAT_EXPR, "concat_expr", '2', 2)
57
58 /* A slice (sub-array or sub-string) of operand 0, where
59    operand 1 is the start of the slice, and operand 2 is its length.
60    Currently, only used for bitstring sclices. */
61 DEFTREECODE (SLICE_EXPR, "slice_expr", 'e', 3)
62
63 /* Later, SET_IN_EXPR might be replaced by BIT_FIELD_REF or IN_EXPR. */
64 DEFTREECODE (SET_IN_EXPR, "set_in_expr", '2', 2)
65
66 /* A CASE_EXPR EX implements Chill CASE expression.
67    TREE_OPERAND (EX, 0) is a TREE_LIST representing the <case selector list>,
68    with one node for each expression.  (Only one is supported by the
69    current implementation.)
70    TREE_OPERAND (EX, 1) is also a TREE_LIST, with one node for each
71    <value case alternative>.   The TREE_VALUE of these node is the
72    <sub expression> (case element body); the TREE_PURPOSE contains
73    the <case label specification>.  (The TREE_PURPOSE for the
74    optional ELSE (default) branch is NULL_TREE.)  Each <case label
75    specification> is also represented as a list with one TREE_LIST
76    node for each <case label list> (though only length==1 is currently
77    supported).  And finally: each <case label list> is again a list
78    with one TREE_LIST node for each <case label>. */
79 DEFTREECODE (CASE_EXPR, "case_expr", 'e', 2)
80
81 /* Powerset and static bit array operations.
82    Operands have same mode as result.  */
83 DEFTREECODE (SET_NOT_EXPR,  "set_not_expr",  '1', 1)
84 DEFTREECODE (SET_IOR_EXPR,  "set_ior_expr",  '2', 2)
85 DEFTREECODE (SET_XOR_EXPR,  "set_xor_expr",  '2', 2)
86 DEFTREECODE (SET_AND_EXPR,  "set_and_expr",  '2', 2)
87 DEFTREECODE (SET_DIFF_EXPR, "set_diff_expr", '2', 2)
88 DEFTREECODE (PAREN_EXPR,  "paren_expr",  '1', 1)
89
90 DEFTREECODE (STRING_EQ_EXPR, "string_eq_expr", '2', 2)
91 DEFTREECODE (STRING_LT_EXPR, "string_lt_expr", '2', 2)
92
93 /* Used to represent a string repetition expression, until
94    we have a type for it;  a SET_TYPE replicator needs a
95    TYPE_DOMAIN even if it represents the empty set */
96 DEFTREECODE (REPLICATE_EXPR, "replicate_expr", 'e', 2)
97
98 /* An undefined value.  Used for the Chill operator '*',
99    and sometimes for padding. */
100 DEFTREECODE (UNDEFINED_EXPR, "undefined_expr", 'e', 0)
101
102 /* Used to represent a process instance */
103 DEFTREECODE (INSTANCE_TYPE, "instance_type", 't', 0)
104
105 /* Used to represent a reference to an array of bitfields. Currently restricted
106    to fields which are 1 bit wide.  */
107 DEFTREECODE (PACKED_ARRAY_REF, "packed_array_ref", 'r', 2)
108
109 /* ALSO NOTE:  LANG_TYPE is used for two things during pass 1;
110    such a node is converted to some other type node during satisfy.
111    If CH_NOVELTY_FLAG is set, then this node is a logical copy of
112    its TREE_TYPE, but with a different novelty.
113    If TYPE_READONLY is set, then the node stands for 'READ M'
114    where M is the TREE_TYPE.  */