6f48294de2
From-SVN: r24612
115 lines
4.8 KiB
Modula-2
115 lines
4.8 KiB
Modula-2
/* 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, repectively.
|
|
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. */
|