/* 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 , 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 . The TREE_VALUE of these node is the (case element body); the TREE_PURPOSE contains the . (The TREE_PURPOSE for the optional ELSE (default) branch is NULL_TREE.) Each is also represented as a list with one TREE_LIST node for each (though only length==1 is currently supported). And finally: each is again a list with one TREE_LIST node for each . */ 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. */