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.
6 This file is part of GNU CC.
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
)
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.
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.
*/
27 DEFTREECODE (GRANT_TYPE
, "grant_type", 't', 0)
28 DEFTREECODE (SEIZE_TYPE
, "seize_type", 't', 0)
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)
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)
47 /* A variable
, which is BASED on a pointer variable in DECL_ABSTRACT_ORIGIN.
*/
48 DEFTREECODE (BASED_DECL
, "based_decl", 'd', 0)
50 /* A pseudo
-variable declared by a
DO WITH.
*/
51 DEFTREECODE (WITH_DECL
, "with_decl", 'd', 0)
56 DEFTREECODE (CONCAT_EXPR
, "concat_expr", '2', 2)
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)
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)
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)
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)
90 DEFTREECODE (STRING_EQ_EXPR
, "string_eq_expr", '2', 2)
91 DEFTREECODE (STRING_LT_EXPR
, "string_lt_expr", '2', 2)
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)
98 /* An undefined value. Used for the Chill operator
'*',
99 and sometimes for padding.
*/
100 DEFTREECODE (UNDEFINED_EXPR
, "undefined_expr", 'e', 0)
102 /* Used to represent a process instance
*/
103 DEFTREECODE (INSTANCE_TYPE
, "instance_type", 't', 0)
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)
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.
*/