diff options
author | Mark Mitchell <mark@codesourcery.com> | 2002-04-15 20:19:23 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2002-04-15 20:19:23 +0000 |
commit | 07cdae91c9e7e8cc31ac231105bdd694bd24d3e7 (patch) | |
tree | 86c25b946563991003f1f4c063d07c387679496e /gcc/ch/tree.c | |
parent | 41823c5eb7d4504b6a4a396ca0d64573238fbbcf (diff) | |
download | gcc-07cdae91c9e7e8cc31ac231105bdd694bd24d3e7.zip gcc-07cdae91c9e7e8cc31ac231105bdd694bd24d3e7.tar.gz gcc-07cdae91c9e7e8cc31ac231105bdd694bd24d3e7.tar.bz2 |
MAINTAINERS: Remove chill maintainers.
* MAINTAINERS: Remove chill maintainers.
* Makefile.in (CHILLFLAGS): Remove.
(CHILL_LIB): Remove.
(TARGET_CONFIGDIRS): Remove libchill.
(CHILL_FOR_TARGET): Remove.
(BASE_FLAGS_TO_PASS): Don't pass CHILLFLAGS, CHILL_FOR_TARGET, or
CHILL_LIB.
(CONFIGURE_TARGET_MODULES): Remove configure-target-libchill.
(CHECK_TARGET_MODULES): Likewise.
(INSTALL_TARGET_MODULES): Likewise.
(CLEAN_TARGET_MODULES): Likewise.
(configure-target-libchill): Remove.
(all-target-libchill): Remove.
* configure.in (target_libs): Remove target-libchill.
Do not compute CHILL_FOR_TARGET.
* libchill: Remove directory.
Remove Chill front end.
* gcc.c (default_compilers): Remove Chill entries.
* ch: Remove directory.
* doc/frontends.texi: Remove information about Chill.
* doc/sourcebuild.texi: Likewise.
* doc/standards.texi: Likewise.
* testsuite/lib/chill.exp: Remove.
* g77.texi: Remove Chill reference.
* gcc_release (build_tarfiles): Do not build Chill tarfiles.
(CHILL_DIRS): Remove.
From-SVN: r52327
Diffstat (limited to 'gcc/ch/tree.c')
-rw-r--r-- | gcc/ch/tree.c | 294 |
1 files changed, 0 insertions, 294 deletions
diff --git a/gcc/ch/tree.c b/gcc/ch/tree.c deleted file mode 100644 index e9fa650..0000000 --- a/gcc/ch/tree.c +++ /dev/null @@ -1,294 +0,0 @@ -/* Language-dependent node constructors for parse phase of GNU compiler. - Copyright (C) 1992, 1993, 1994, 1998, 1999, 2000 - 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. */ - -#include "config.h" -#include "system.h" -#include "obstack.h" -#include "tree.h" -#include "ch-tree.h" -#include "toplev.h" - -extern struct obstack permanent_obstack; -/* This is special sentinel used to communicate from build_string_type - to layout_chill_range_type for the index range of a string. */ -tree string_index_type_dummy; - -static tree make_powerset_type PARAMS ((tree)); - -/* Build a chill string type. - For a character string, ELT_TYPE==char_type_node; - for a bit-string, ELT_TYPE==boolean_type_node. */ - -tree -build_string_type (elt_type, length) - tree elt_type; - tree length; -{ - register tree t; - - if (TREE_CODE (elt_type) == ERROR_MARK || TREE_CODE (length) == ERROR_MARK) - return error_mark_node; - - /* Allocate the array after the pointer type, - in case we free it in type_hash_canon. */ - - if (pass > 0 && TREE_CODE (length) == INTEGER_CST - && ! tree_int_cst_equal (length, integer_zero_node) - && compare_int_csts (LT_EXPR, TYPE_MAX_VALUE (chill_unsigned_type_node), - length)) - { - error ("string length > UPPER (UINT)"); - length = integer_one_node; - } - - /* Subtract 1 from length to get max index value. - Note we cannot use size_binop for pass 1 expressions. */ - if (TREE_CODE (length) == INTEGER_CST || pass != 1) - length = size_binop (MINUS_EXPR, length, size_one_node); - else - length = build (MINUS_EXPR, sizetype, length, size_one_node); - - t = make_node (elt_type == boolean_type_node ? SET_TYPE : ARRAY_TYPE); - TREE_TYPE (t) = elt_type; - - MARK_AS_STRING_TYPE (t); - - TYPE_DOMAIN (t) = build_chill_range_type (string_index_type_dummy, - integer_zero_node, length); - if (pass == 1 && TREE_CODE (length) == INTEGER_CST) - TYPE_DOMAIN (t) = layout_chill_range_type (TYPE_DOMAIN (t), 0); - - if (pass != 1 - || (TREE_CODE (length) == INTEGER_CST && TYPE_SIZE (elt_type))) - { - if (TREE_CODE (t) == SET_TYPE) - t = layout_powerset_type (t); - else - t = layout_chill_array_type (t); - } - return t; -} - -static tree -make_powerset_type (domain) - tree domain; -{ - tree t = make_node (SET_TYPE); - - TREE_TYPE (t) = boolean_type_node; - TYPE_DOMAIN (t) = domain; - - return t; -} - -/* Used to layout both bitstring and powerset types. */ - -tree -layout_powerset_type (type) - tree type; -{ - tree domain = TYPE_DOMAIN (type); - - if (! discrete_type_p (domain)) - { - error ("can only build a powerset from a discrete mode"); - return error_mark_node; - } - - if (TREE_CODE (TYPE_MAX_VALUE (domain)) == ERROR_MARK || - TREE_CODE (TYPE_MIN_VALUE (domain)) == ERROR_MARK) - return error_mark_node; - - if (TREE_CODE (TYPE_MAX_VALUE (domain)) != INTEGER_CST - || TREE_CODE (TYPE_MIN_VALUE (domain)) != INTEGER_CST) - { - if (CH_BOOLS_TYPE_P (type)) - error ("non-constant bitstring size invalid"); - else - error ("non-constant powerset size invalid"); - return error_mark_node; - } - - if (TYPE_SIZE (type) == 0) - layout_type (type); - return type; -} - -/* Build a SET_TYPE node whose elements are from the set of values - in TYPE. TYPE must be a discrete mode; we check for that here. */ -tree -build_powerset_type (type) - tree type; -{ - tree t = make_powerset_type (type); - if (pass != 1) - t = layout_powerset_type (t); - return t; -} - -tree -build_bitstring_type (size_in_bits) - tree size_in_bits; -{ - return build_string_type (boolean_type_node, size_in_bits); -} - -/* Return get_identifier (the concatenations of part1, part2, and part3). */ - -tree -get_identifier3 (part1, part2, part3) - const char *part1, *part2, *part3; -{ - char *buf = (char*) - alloca (strlen(part1) + strlen(part2) + strlen(part3) + 1); - sprintf (buf, "%s%s%s", part1, part2, part3); - return get_identifier (buf); -} - -/* Build an ALIAS_DECL for the prefix renamed clause: - (OLD_PREFIX -> NEW_PREFIX) ! POSTFIX. */ - -tree -build_alias_decl (old_prefix, new_prefix, postfix) - tree old_prefix, new_prefix, postfix; -{ - tree decl = make_node (ALIAS_DECL); - - const char *postfix_pointer = IDENTIFIER_POINTER (postfix); - int postfix_length = IDENTIFIER_LENGTH (postfix); - int old_length = old_prefix ? IDENTIFIER_LENGTH(old_prefix) : 0; - int new_length = new_prefix ? IDENTIFIER_LENGTH(new_prefix) : 0; - - char *buf = (char*) alloca (old_length + new_length + postfix_length + 3); - - /* Convert (OP->NP)!P!ALL to (OP!P->NP!P)!ALL */ - if (postfix_length > 1 && postfix_pointer[postfix_length-1] == '*') - { - int chopped_length = postfix_length - 2; /* Without final "!*" */ - if (old_prefix) - sprintf (buf, "%s!%.*s", IDENTIFIER_POINTER (old_prefix), - chopped_length, postfix_pointer); - else - sprintf (buf, "%.*s", chopped_length, postfix_pointer); - old_prefix = get_identifier (buf); - if (new_prefix) - sprintf (buf, "%s!%.*s", IDENTIFIER_POINTER (new_prefix), - chopped_length, postfix_pointer); - else - sprintf (buf, "%.*s", chopped_length, postfix_pointer); - new_prefix = get_identifier (buf); - postfix = ALL_POSTFIX; - } - - DECL_OLD_PREFIX (decl) = old_prefix; - DECL_NEW_PREFIX (decl) = new_prefix; - DECL_POSTFIX (decl) = postfix; - - if (DECL_POSTFIX_ALL (decl)) - DECL_NAME (decl) = NULL_TREE; - else if (new_prefix == NULL_TREE) - DECL_NAME (decl) = postfix; - else - DECL_NAME (decl) = get_identifier3 (IDENTIFIER_POINTER (new_prefix), - "!", IDENTIFIER_POINTER (postfix)); - - return decl; -} - -/* Return the "old name string" of an ALIAS_DECL. */ - -tree -decl_old_name (decl) - tree decl; -{ - - if (DECL_OLD_PREFIX (decl) == NULL_TREE) - return DECL_POSTFIX (decl); - return get_identifier3 (IDENTIFIER_POINTER (DECL_OLD_PREFIX (decl)), - "!", IDENTIFIER_POINTER (DECL_POSTFIX (decl))); -} - -/* See if OLD_NAME (an identifier) matches the OLD_PREFIX!POSTFIX - of ALIAS. If so, return the corresponding NEW_NEW!POSTFIX. */ - -tree -decl_check_rename (alias, old_name) - tree alias, old_name; -{ - const char *old_pointer = IDENTIFIER_POINTER (old_name); - int old_len = IDENTIFIER_LENGTH (old_name); - if (DECL_OLD_PREFIX (alias)) - { - int old_prefix_len = IDENTIFIER_LENGTH (DECL_OLD_PREFIX (alias)); - if (old_prefix_len >= old_len - || old_pointer[old_prefix_len] != '!' - || strncmp (old_pointer, IDENTIFIER_POINTER (DECL_OLD_PREFIX (alias)), old_prefix_len) != 0) - return NULL_TREE; - - /* Skip the old prefix. */ - old_pointer += old_prefix_len + 1; /* Also skip the '!', */ - } - if (DECL_POSTFIX_ALL (alias) - || strcmp (IDENTIFIER_POINTER (DECL_POSTFIX (alias)), old_pointer) == 0) - { - if (DECL_NEW_PREFIX (alias)) - return get_identifier3 (IDENTIFIER_POINTER (DECL_NEW_PREFIX (alias)), - "!", old_pointer); - else if (old_pointer == IDENTIFIER_POINTER (old_name)) - return old_name; - else - return get_identifier (old_pointer); - } - else - return NULL_TREE; -} - -/* 'EXIT foo' is treated like 'GOTO EXIT!foo'. - This function converts LABEL into a labal name for EXIT. */ - -tree -munge_exit_label (label) - tree label; -{ - return get_identifier3 ("EXIT", "!", IDENTIFIER_POINTER (label)); -} - -/* Make SAVE_EXPRs as needed, but don't turn a location into a non-location. */ - -tree -save_if_needed (exp) -tree exp; -{ - return CH_REFERABLE (exp) ? stabilize_reference (exp) : save_expr (exp); -} - -/* Return the number of elements in T, which must be a discrete type. */ -tree -discrete_count (t) - tree t; -{ - tree hi = convert (sizetype, TYPE_MAX_VALUE (t)); - - if (TYPE_MIN_VALUE (t)) - hi = size_binop (MINUS_EXPR, hi, convert (sizetype, TYPE_MIN_VALUE (t))); - - return size_binop (PLUS_EXPR, hi, integer_one_node); -} |