| /* This file contains the definitions and documentation for the |
| additional tree codes used in the CHILL front end (see tree.def |
| for the standard codes). |
| Copyright (C) 1992, 1993 Free Software Foundation, Inc. |
| |
| 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. */ |
| |
| |
| /* |
| * CHILL types. |
| */ |
| DEFTREECODE (GRANT_TYPE, "grant_type", 't', 0) |
| DEFTREECODE (SEIZE_TYPE, "seize_type", 't', 0) |
| /* |
| * CHILL decls. |
| */ |
| DEFTREECODE (KEYWORD_DECL, "keyword_decl", 'd', 0) |
| DEFTREECODE (INSTANCE_METHOD_DECL, "instance_method_decl", 'd', 0) |
| DEFTREECODE (CLASS_METHOD_DECL, "class_method_decl", 'd', 0) |
| |
| /* A 'SEIZE (OLD->NEW)!POSTFIX' or 'GRANT (OLD->NEW)!POSTFIX' is |
| represented as an ALIAS_DECL where DECL_OLD_PREFIX, DECL_NEW_PREFIX, |
| and DECL_POSTFIX points to OLD, NEW, and POSTFIX, respectively. |
| These are IDENTIFIER_NODEs, or NULL if empty. |
| DECL_NAME is NEW!POSTFIX. After binding, DECL_ABSTRACT_ORIGIN |
| (if not an error_mark) points to a decl whose DECL_NAME is OLD!POSTFIX. |
| and which this name is linked to. |
| For SEIZE, DECL_SEIZEFILE names the most recent use_seize_file directive. |
| For GRANT, DECL_SEIZEFILE names the seizefile doing the granting. */ |
| DEFTREECODE (ALIAS_DECL, "alias_decl", 'd', 0) |
| |
| /* A variable, which is BASED on a pointer variable in DECL_ABSTRACT_ORIGIN. */ |
| DEFTREECODE (BASED_DECL, "based_decl", 'd', 0) |
| |
| /* A pseudo-variable declared by a DO WITH. */ |
| DEFTREECODE (WITH_DECL, "with_decl", 'd', 0) |
| |
| /* |
| * CHILL exprs. |
| */ |
| DEFTREECODE (CONCAT_EXPR, "concat_expr", '2', 2) |
| |
| /* A slice (sub-array or sub-string) of operand 0, where |
| operand 1 is the start of the slice, and operand 2 is its length. |
| Currently, only used for bitstring sclices. */ |
| DEFTREECODE (SLICE_EXPR, "slice_expr", 'e', 3) |
| |
| /* Later, SET_IN_EXPR might be replaced by BIT_FIELD_REF or IN_EXPR. */ |
| DEFTREECODE (SET_IN_EXPR, "set_in_expr", '2', 2) |
| |
| /* A CASE_EXPR EX implements Chill CASE expression. |
| TREE_OPERAND (EX, 0) is a TREE_LIST representing the <case selector list>, |
| with one node for each expression. (Only one is supported by the |
| current implementation.) |
| TREE_OPERAND (EX, 1) is also a TREE_LIST, with one node for each |
| <value case alternative>. The TREE_VALUE of these node is the |
| <sub expression> (case element body); the TREE_PURPOSE contains |
| the <case label specification>. (The TREE_PURPOSE for the |
| optional ELSE (default) branch is NULL_TREE.) Each <case label |
| specification> is also represented as a list with one TREE_LIST |
| node for each <case label list> (though only length==1 is currently |
| supported). And finally: each <case label list> is again a list |
| with one TREE_LIST node for each <case label>. */ |
| DEFTREECODE (CASE_EXPR, "case_expr", 'e', 2) |
| |
| /* Powerset and static bit array operations. |
| Operands have same mode as result. */ |
| DEFTREECODE (SET_NOT_EXPR, "set_not_expr", '1', 1) |
| DEFTREECODE (SET_IOR_EXPR, "set_ior_expr", '2', 2) |
| DEFTREECODE (SET_XOR_EXPR, "set_xor_expr", '2', 2) |
| DEFTREECODE (SET_AND_EXPR, "set_and_expr", '2', 2) |
| DEFTREECODE (SET_DIFF_EXPR, "set_diff_expr", '2', 2) |
| DEFTREECODE (PAREN_EXPR, "paren_expr", '1', 1) |
| |
| DEFTREECODE (STRING_EQ_EXPR, "string_eq_expr", '2', 2) |
| DEFTREECODE (STRING_LT_EXPR, "string_lt_expr", '2', 2) |
| |
| /* Used to represent a string repetition expression, until |
| we have a type for it; a SET_TYPE replicator needs a |
| TYPE_DOMAIN even if it represents the empty set */ |
| DEFTREECODE (REPLICATE_EXPR, "replicate_expr", 'e', 2) |
| |
| /* An undefined value. Used for the Chill operator '*', |
| and sometimes for padding. */ |
| DEFTREECODE (UNDEFINED_EXPR, "undefined_expr", 'e', 0) |
| |
| /* Used to represent a process instance */ |
| DEFTREECODE (INSTANCE_TYPE, "instance_type", 't', 0) |
| |
| /* Used to represent a reference to an array of bitfields. Currently restricted |
| to fields which are 1 bit wide. */ |
| DEFTREECODE (PACKED_ARRAY_REF, "packed_array_ref", 'r', 2) |
| |
| /* ALSO NOTE: LANG_TYPE is used for two things during pass 1; |
| such a node is converted to some other type node during satisfy. |
| If CH_NOVELTY_FLAG is set, then this node is a logical copy of |
| its TREE_TYPE, but with a different novelty. |
| If TYPE_READONLY is set, then the node stands for 'READ M' |
| where M is the TREE_TYPE. */ |