OSDN Git Service

authorbothner <bothner@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 27 Aug 1998 20:51:39 +0000 (20:51 +0000)
committerbothner <bothner@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 27 Aug 1998 20:51:39 +0000 (20:51 +0000)
Migrate from devo/gcc/ch.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22035 138bc75d-0d04-0410-961f-82ee72b054a4

26 files changed:
gcc/ch/ChangeLog [new file with mode: 0644]
gcc/ch/chill.brochure [new file with mode: 0644]
gcc/ch/chill.texi [new file with mode: 0644]
gcc/ch/gperf [new file with mode: 0644]
gcc/ch/hash.h [new file with mode: 0644]
gcc/ch/lang-options.h [new file with mode: 0644]
gcc/ch/lex.h [new file with mode: 0644]
gcc/ch/runtime/cardps.c [new file with mode: 0644]
gcc/ch/runtime/delaycase.c [new file with mode: 0644]
gcc/ch/runtime/eoln.c [new file with mode: 0644]
gcc/ch/runtime/eqstr.c [new file with mode: 0644]
gcc/ch/runtime/existing.c [new file with mode: 0644]
gcc/ch/runtime/format.c [new file with mode: 0644]
gcc/ch/runtime/gettextindex.c [new file with mode: 0644]
gcc/ch/runtime/isassociated.c [new file with mode: 0644]
gcc/ch/runtime/neps.c [new file with mode: 0644]
gcc/ch/runtime/notps.c [new file with mode: 0644]
gcc/ch/runtime/printbuffer.c [new file with mode: 0644]
gcc/ch/runtime/printevent.c [new file with mode: 0644]
gcc/ch/runtime/retmem.c [new file with mode: 0644]
gcc/ch/runtime/rtltypes.h [new file with mode: 0644]
gcc/ch/runtime/rts.c [new file with mode: 0644]
gcc/ch/runtime/terminate.c [new file with mode: 0644]
gcc/ch/runtime/writerecord.c [new file with mode: 0644]
gcc/ch/runtime/xorps.c [new file with mode: 0644]
gcc/ch/xtypeck.c [new file with mode: 0644]

diff --git a/gcc/ch/ChangeLog b/gcc/ch/ChangeLog
new file mode 100644 (file)
index 0000000..9c930f5
--- /dev/null
@@ -0,0 +1,11130 @@
+Mon Jul 27 17:21:01 1998  Dave Brolley  <brolley@cygnus.com>
+
+       * typeck.c (apply_chill_array_layout): Don't set TYPE_SIZE of the
+       element type.
+
+Mon Jul 13 14:20:12 1998  Nick Clifton  <nickc@cygnus.com>
+
+       * lang-options.h: Format changed to match changes in gcc/toplev.c
+       to implement a --help option.
+
+Wed Jul  8 02:58:35 1998  Jeffrey A Law  (law@cygnus.com)
+
+       * lang.c (lang_init_options): New function.
+
+Wed Jun 10 12:08:09 1998  Dave Brolley  <brolley@cygnus.com>
+
+       * lang-options.h: Remove -I.
+       * ch-tree.h (c_decode_option): New argc/argv interface.
+       * decl.c (c_decode_option): New argc/argv interface.
+       * lang.c (lang_decode_option):  New argc/argv interface.
+
+Wed May 27 10:33:41 1998  Dave Brolley  <brolley@cygnus.com>
+
+       * actions.c (chill_handle_multi_case_label): Arguments 1 and 2 to
+       chill_handle_multi_case_label_range were reversed.
+
+       * Make-lang.in (chill): Use the correct gcc in the driver script.
+
+Thu May 21 14:40:44 1998  Dave Brolley  <brolley@cygnus.com>
+
+       * convert.c (digest_array_tuple): Move conversion to
+       chill_convert_for_assignment.
+
+       * actions.c (chill_convert_for_assignment): Allow conversion of array
+       constructor to bitstring constructor for assignment to array of packed bits.
+
+Thu May 14 13:57:51 1998  Dave Brolley  <brolley@cygnus.com>
+
+       * Make-lang.in (chill-runtime): Depend on stmp-headers to build float.h.
+
+Wed May 13 14:07:51 1998  Dave Brolley  <brolley@cygnus.com>
+
+       * typeck.c (build_chill_slice): Adjust slice index to account for the
+       lower bound of the array.
+
+       * actions.c (chill_expand_assignment): Convert function arguments to the
+       correct types.
+       (chill_expand_assignment): Ditto.
+
+Mon May 11 16:20:57 1998  Dave Brolley  <brolley@cygnus.com>
+
+       * typeck.c (build_chill_slice): Propogate the TYPE_PACKED setting
+       of the array_type to the slice_type.
+       (build_chill_slice): Use SLICE_EXPR to represent a slice of an array
+       of bits.
+
+       * loop.c (build_loop_iterator): Disallow location enumeration for
+       bit-packed arrays.
+
+       * convert.c (digest_array_tuple): Allow conversion of an array tuple
+       to a bitstring for assignment to a packed array of bits.
+
+Mon May  4 16:28:58 1998  Dave Brolley  <brolley@cygnus.com>
+
+       * ch-tree.def (PACKED_ARRAY_REF): New tree code.
+       * typeck.c (build_chill_array_ref_1): Build PACKED_ARRAY_REF if array is packed.
+       (chill_location): Handle PACKED_ARRAY_REF.
+       (apply_chill_array_layout): Allow PACK for arrays of single bits.
+       * expr.c (chill_expand_expr): Expand PACKED_ARRAY_REF.
+       (invalid_operand): Check PACKED_ARRAY_REF operands.
+       * actions.c (chill_expand_assignment): Expand PACKED_ARRAY_REF.
+
+Thu Apr 23 15:33:20 1998  Dave Brolley  <brolley@cygnus.com>
+
+       * typeck.c (apply_chill_field_layout): Only integral fields can be packed
+       to the bit level.
+
+Tue Apr 21 14:30:10 1998  Jeffrey A Law  (law@cygnus.com)
+
+       * decl.c (intTI_type_node, unsigned_intTI_type_node): Define.
+       (init_decl_processing): Handle TI types.
+       * typeck.c (intTI_type_node, unsigned_intTI_type_node): Declare.
+       (type_for_size): Handle TI types.
+       (type_for_mode): Handle TI types.
+
+Mon Apr 20 13:12:26 1998  Dave Brolley  <brolley@cygnus.com>
+
+       * typeck.c (layout_chill_struct_type): Don't promote bitfield types to
+       int.
+
+       * actions.c (chill_convert_for_assignment): Check that the rhs is not
+       a type declaration.
+
+Tue Apr 14 13:17:44 1998  Dave Brolley  <brolley@cygnus.com>
+
+       * lex.c (init_parse): Now returns char* containing the filename.
+
+       * typeck.c (get_type_precision): Declare.
+       (apply_chill_field_layout): Use the minimum number of bits necessary to
+       represent discrete types as the natural length of the field.
+
+Thu Apr  9 12:46:55 1998  Dave Brolley  <brolley@cygnus.com>
+
+       * lex.c (finput): Move definition here from toplev.c
+       (init_parse): New function replaces init_lex.
+       (init_parse): Add code to open source file.
+       (finish_parse): New function.
+       (close_input_file): File was being closed more than once.
+
+       * lang.c (finput): Declare.
+       * ch-tree.h (init_lex): Remove.
+       
+
+Wed Apr  8 14:47:33 1998  Dave Brolley  <brolley@cygnus.com>
+
+       * actions.c (compute_else_range): Fix loop index error.
+       (chill_handle_multi_case_label_range): Move error checking to
+       chill_handle_multi_case_label.
+       (chill_handle_multi_case_else_label): Convert ELSE range values to
+       the type of the corrersponding CASE selector.
+
+Wed Apr  8 13:02:50 1998  Jeffrey A Law  (law@cygnus.com)
+
+       * actions.c (sizetype_tab): Do not declare.
+       * lang.c (lang_print_xnode): New function.
+
+Mon Mar 23 14:43:06 1998  Dave Brolley  <brolley@cygnus.com>
+
+       * grant.c (decode_layout): New function.
+       (grant_array_type): Call decode_layout to export layout information to
+       the grant file.
+       (decode_decl): Ditto
+
+Fri Mar 20 16:06:41 1998  Dave Brolley  <brolley@cygnus.com>
+
+       * parse.c (parse_tuple_element): Call had arguments in wrong order.
+
+Thu Mar 19 13:42:33 1998  Dave Brolley  <brolley@cygnus.com>
+
+       * typeck.c (apply_chill_array_layout): Use
+       TYPE_PRECISION (chill_integer_type_node) in stead of BITS_PER_WORD for
+       the word size.
+
+Wed Mar 18 16:25:48 1998  Dave Brolley  <brolley@cygnus.com>
+
+       * typeck.c (apply_chill_field_layout): Only set DECL_BIT_FIELD for discrete
+       fields.
+
+       * parse.c (parse_multi_dimension_case_action): Call emit_line_note at the
+       proper places.
+
+Tue Mar 17 14:16:08 1998  Dave Brolley  <brolley@cygnus.com>
+
+       * parse.c (gen_label_rtx): Declare before use.
+       (emit_jump): Declare before use.
+       (emit_label): Declare before use.
+       (parse_case_label_list): Pass in CASE selector so we can mark it as having
+       an (ELSE) label if necessary.
+       (parse_case_label_specification): Pass in the CASE selector list so that
+       the CASE selectors can be passed to parse_case_label_list.
+       (parse_multi_dimension_case_action): Modify to generate branching code in
+       one pass.
+       (parse_case_expression): Compute (ELSE) range before generating CASE expression.
+       (parse_variant_alternative): Remove error for (ELSE) specified.
+
+       * expr.c (check_case_selector_list): Preserve TREE_PURPOSE of selector list.
+
+       * decl.c (layout_chill_variants): Add code to check compatibility of ranges
+       and discrete mode names.
+
+       * ch-tree.h (ELSE_LABEL_SPECIFIED): New Chill specific flag.
+
+       * actions.h (build_multi_case_selector_expression): Make it extern.
+       (chill_handle_multi_dimension_case_label): Remove.
+       (compute_else_ranges): New function.
+
+       * actions.c (update_else_range_for_int_const): New function.
+       (update_else_range_for_range): New function.
+       (update_else_range_for_range_expr): New function.
+       (update_else_range_for_type): New function.
+       (compute_else_range): New function.
+       (compute_else_ranges): New function.
+       (chill_handle_multi_case_else_label): New function
+       (chill_handle_multi_case_label_range): Don't generate tests for conditions
+       which are always true or false.
+       (chill_handle_multi_case_label): Ditto.
+       (chill_handle_multi_case_label): Implement (ELSE) label support.
+       (chill_handle_multi_case_label): First argument is now the selector tree not
+       its VALUE.
+       (chill_handle_multi_dimension_case_label): Removed.
+       (build_chill_multi_dimension_case_expr): List of CASE alternatives is no longer
+       reversed on entry, so reverse it here.
+
+Tue Mar 10 15:02:26 1998  Dave Brolley  <brolley@cygnus.com>
+
+       * actions.c (chill_handle_multi_case_label_range): Add more error checking.
+       (chill_handle_multi_case_label): Implement (*) for multi dimensional CASE.
+       (chill_handle_multi_case_label): Improve Error handling.
+
+Mon Mar  9 12:39:00 1998  Dave Brolley  <brolley@cygnus.com>
+
+       * actions.c (chill_handle_multi_case_label_range): Added.
+       (chill_handle_multi_case_label): Add support for discrete ranges and
+       discrete modes.
+
+       * typeck.c (apply_chill_array_layout): Added more error checking.
+       (apply_chill_field_layout): Added more error checking.
+
+Wed Mar  4 16:08:26 1998  Dave Brolley  <brolley@cygnus.com>
+
+       * convert.c (convert): Call build_simple_array_type with new argument.
+
+       * ch-tree.h(build_simple_array_type): Add argument for array layout.
+
+       * typeck.c (build_chill_slice): Call build_simple_array_type with new argument.
+       (build_simple_array_type): Attach array layout to TYPE_ATTRIBUTES.
+       (apply_chill_array_layout): New function to implement array layout.
+       (layout_chill_array_type): Call apply_chill_array_layout and reset
+       TYPE_ATTRIBUTES to NULL_TREE.
+       (build_chill_array_type): Extend to handle one array layout per index mode.
+       (smash_dummy_type): Call build_simple_array_type with new argument.
+
+       * satisfy.c (satisfy): Call SATISFY on array layout tree.
+
+Wed Feb 25 14:36:41 1998  Dave Brolley  <brolley@cygnus.com>
+
+       * typeck.c (next_struct_offset): Added.
+       (apply_chill_field_layout): New function to check and apply PACK, NOPACK,
+       or POS layout to a structure field.
+       (layout_chill_struct_type): Add call to apply_chill_field_layout.
+
+       * satisfy.c (satisfy): Call satisfy recursively to handle the expressions
+       in the field layout tree.
+
+       * parse.c (pack_warn_printed): Remove.
+       (nopack_warn_printed): Remove.
+       (step_warn_printed): Remove.
+       (pos_warn_printed): Remove.
+       (parse_opt_layout): Remove warnings about POS, STEP, PACK and NOPACK usage.
+
+       * decl.c (grok_chill_fixedfields): Check for POS specified for a list of
+       field declarations.
+
+Thu Feb 19 17:33:06 1998  Dave Brolley  <brolley@cygnus.com>
+
+       * parse.c (parse_opt_layout): Generate syntax errors in pass 1 only.
+       (parse_opt_mode): Removed incorrect comment about association of array
+       layouts with nested array elements.
+       (parse_opt_mode): Allow for one layout per index mode specified.
+
+Wed Feb 18 23:48:57 1998  Richard Henderson  <rth@cygnus.com>
+
+       * Make-lang.in (cc1chill): Kill lingering bc-opcode.h dependancy. 
+
+Wed Feb 18 17:35:05 1998  Dave Brolley  <brolley@cygnus.com>
+
+       * parse.c (parse_field): Get rid of warning for multiple case selectors.
+
+       * decl.c (layout_chill_variants): Fix loop indexing error.
+       
+Mon Feb 16 15:54:47 1998  Dave Brolley  <brolley@cygnus.com>
+
+       * parse.c (parse_case_expression): Remove code which checked for
+       unimplemented (ELSE) label.
+       (parse_case_expression): Add code to handle multi dimensional case
+       expression.
+
+       * expr.c (check_case_selector_list): Fixed to return a list of the
+       selectors which were checked.
+       (chill_expand_case_expr): Remove "sorry" message for multi dimension
+       case.
+       (chill_expand_case_expr): Reverse order of case alternatives.
+       (chill_expand_case_expr): Add "error" message for multiple case
+       selectors.
+
+       * actions.h (build_chill_multi_dimension_case_expr): Added.
+
+       * actions.c (build_multi_case_selector_expression): Renamed from
+       build_multi_case_expression.
+       (chill_handle_multi_dimension_case_label): Call above function by its
+       new name.
+       (build_chill_case_expr): Don't reverse the list elements here. It may
+       not be necessary.
+       (build_chill_multi_dimension_case_expr): New function implements multi
+       dimensional case expression.
+
+Thu Feb 12 15:44:50 1998  Dave Brolley  <brolley@cygnus.com>
+
+       * parse.c (parse_case_action): Implement multi-dimension CASE action.
+       (parse_multi_dimension_case_action): Added.
+       (parse_single_dimension_case_action): Added based on code moved from
+       parse_case_action.
+
+       * expr.c (check_case_selector_list): Added.
+
+       * ch-tree.h (check_case_selector_list): Added.
+
+       * actions.h (chill_handle_single_dimension_case_label): Added.
+       (chill_handle_multi_dimension_case_label): Added.
+
+       * actions.c (chill_handle_single_dimension_case_label): Added.
+       (chill_handle_multi_case_label): Added.
+       (chill_handle_multi_case_label_list): Added.
+       (build_multi_case_expression): Added.
+       (chill_handle_multi_dimension_case_label): Added
+
+Fri Feb  6 16:43:41 1998  Dave Brolley  <brolley@cygnus.com>
+
+       * actions.c (sizetype_tab): Fix declaration to match gcc changes.
+
+Thu Feb  5 14:03:00 1998  Dave Brolley  <brolley@cygnus.com>
+
+       * decl.c (chill_tree_code_type):  Change this to be an array of char like
+       the tree_code_type in the rest of gcc.
+
+       * ch-tree.def (chill_tree_code_type): See decl.c.
+
+Thu Jan 29 15:34:18 1998  Dave Brolley  <brolley@cygnus.com>
+
+       * tasking.c (error_with_decl): Correct prototype.
+       (build_gen_ptype): Reverse arguments.
+
+       * lang.c (chill_real_input_filename): Add definition.
+       (chill_print_error_function): Correct second argument.
+       (lang_init): Set chill_real_input_filename.
+
+       * expr.c (NULL): Protect definition with #ifndef.
+
+       * decl.c (init_decl_processing): Don't allocate chill_tree_code_...
+       (init_decl_processing): Change last argument to 'sizeof(char)'.
+       
+
+Tue Nov 25 10:44:19 1997  Nick Clifton  <nickc@cygnus.com>
+
+       * Make-lang.in (mostlyclean): Use && to seperate commands, so that 
+       if the directory change fails, the rule will not loop.
+
+Mon Mar  3 12:08:19 1997  Fred Fish  <fnf@cygnus.com>
+
+       * Make-lang.in (CHILL_FLAGS_TO_PASS): Remove extraneous leading
+       spaces and use single tab character on some lines.
+       (cc1chill): Ditto.
+
+Tue Nov 26 05:12:40 1996  Wilfried Moser  <moser@rtl.cygnus.com>
+
+        * tasking.c (build_receive_buffer_case_label): Rework in a manner,
+        that the buffer location gets evaluated only once, in
+        build_receive_buffer_case_end. 
+
+        * typeck.c (build_chill_bin_type): Rework.
+        (layout_chill_range_type): Process BIN mode.
+        (build_chill_array_type): Remove checking of layout. This is done
+        at the parse.
+
+        * parse.c (parse_on_exception_list): Don't allow ON name:.
+        (parse_opt_layout): Parse POS and STEP and return a tree instead
+        of int.
+
+        * lex.c (init_lex), lex.h: Define and initialise RID_BIN.
+
+        * grant.c (print_integer_type): Take care of BIN.
+
+        * expr.c (build_chill_descr): Make descr static if requested
+        location is static.
+        (build_chill_length): Process text mode name and text location as
+        described in Z.200/1992.
+        (build_compare_expr): Don't allow < <= > >= for composite modes.
+
+        * decl.c (grok_chill_fixedfields): Remove checking of
+        layout. This is done at the parser.
+
+        * convert.c (digest_structure_tuple): Take care of wrong (probably
+        array) tuple. Printing error may cause sigsegv.
+
+        * ch-tree.h: Change prototypes of grok_chill_fixedfields and
+        build_chill_array_type (layout is passed now as a tree instead of
+        int).
+
+Fri Nov 15 15:17:44 1996  Per Bothner  <bothner@deneb.cygnus.com>
+
+       * convert.c (display_int_cst):  Check that val is INTEGER_CST.
+       (digest_array_tuple):  Some extra error checks (i.e. that indexes
+       are constant).  If dynamic mode, result is not constant.
+
+Mon Oct 28 12:48:06 1996  Jeffrey A Law  (law@cygnus.com)
+
+        * typeck.c (signed_or_unsigned_type): If the given type already
+        as the correct signedness, then just return it.
+
+        * typeck.c ({un,}signed_type): If can't do anything, call
+        signed_or_unsigned_type.
+
+Fri Sep  6 02:50:08 1996  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * typeck.c (build_chill_cast): In case of rangecheck, take care of 
+       constant expression (when defining a SYN).
+
+Thu Sep  5 04:30:32 1996  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * parse.c (define__PROCNAME__): New function to define a SYNONYM
+       __PROCNAME__ (__procname__) which is a character string containing
+       the name of the current procedure. This is quit the same as 
+       __FUNCTION__ in C.
+       (parse_proc_body): Add call to define__PROCNAME__.
+
+       * typeck.c (chill_equivalent): Take care of NEWMODE'd procedure
+       modes on one side and procedures on the other side..
+
+Wed Jul 24 01:13:51 1996  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * typeck.c: Replace all local variables and arguments named `index'
+       with `idx', `index' gets replaced by `strchr' which makes debugging
+       somehow difficult.
+       (valid_array_index_p): New argument to indicate that we are processing
+       LENGTH (varying string) on the lefthand side of an assignment. The
+       index check is different in this case.
+       (build_chill_cast): In case of expression conversion do an OVERFLOW
+       check with the limits of the target mode.
+
+       * ch-tree.h: New prototype for valid_array_index_p.
+
+       * actions.c (expand_varying_length_assignment): Add new argument to
+       call to valid_array_index_p to indicate we are processing
+       LENGTH on the lefthand side of an assignment.
+
+       * loop.c: Rename loop_stack to loopstack to avoid clashes with
+       global variable ../stmt.c:loop_stack.
+
+Tue Jun 18 23:04:06 1996  Per Bothner  <bothner@deneb.cygnus.com>
+
+       * expr.c (resolve_component_ref):  Set TREE_SIDE_EFFECTS properly.
+
+Mon Jun 10 15:01:51 1996  Per Bothner  <bothner@deneb.cygnus.com>
+
+       * typeck.c (build_chill_reference_type):  Copy novelty for reference.
+       * satisfy.c (satisfy):  If REFERENCE_TYPE, copy novelty.
+
+Thu May 30 04:55:27 1996  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * typeck.c (valid_array_index_p): For varying character strings
+       we must check if the index is less then the actual length instead
+       of less equal.
+
+Wed May 15 06:07:10 1996  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * ch-tree.h: Add prototype for test_range.
+
+       * inout.c (process_io_list): Fix duplicate function call if
+       writetext argument is a function returning a varying string.
+
+Tue May 14 21:08:47 1996  Per Bothner  <bothner@deneb.cygnus.com>
+
+       Re-do string comparisons.  Old way could re-use temporary
+       (SAVE_EXPR created for an argumnet is variable) prematurely.
+       * ch-tree.def (STRING_EQ_EXPR, STRING_LT_EXPR):  New codes.
+       * decl.c (init_decl_processing):  Remove __eqstring, __gestring,
+       __gtstring, __lestring, __ltstring, __nestring declarations.
+       * expr.c (build_char_array_expr):  Rename to build_compare_string_expr.
+       Create STRING_EQ_EXPR, STRING_LT_EXPR nodes, instead of CALL_EXPRs.
+       (chill_expand_expr):    Implement STRING_EQ_EXPR, STRING_LT_EXPR.
+       (build_compare_expr):  Use new build_char_array_expr name.
+
+Mon Apr  8 14:08:30 1996  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       Cleanup of April 5 fix:
+       * actions.c (test_range):  New function.
+       (check_range):  Simplify to use test_range.
+       * convert.c (digest_powerset_tuple):  Move error message from here ...
+       (check_ps_range):  ... to here.  Also, simplify to use test_range.
+
+Fri Apr  5 03:41:05 1996  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * convert.c (check_ps_range): New function to perform range check
+       of powerset tuple elements. This is quite the same as check_range,
+       however, the actions on rangefail are different.
+       (digest_powerset_tuple): Call check_ps_range.
+
+       * loop.c (build_loop_iterator): Chaeck if location enumeration
+       is requested for BOOLS(n) and print an error message.
+
+Wed Mar  6 17:46:48 1996  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * parse.c (parse_primval):  Emit error if !ignore (before: pass==2).
+
+       Implement parameterised array and string modes (using LANG_TYPE).
+       * parse.c (parse_opt_mode):  Handle parameterized arrays and strings.
+       * grant.c (decode_mode):  Support extended use of LANG_TYPE.
+       * satisfy.c (cycle_error_print):  Ignore non-decls in chain.
+       (safe_satisfy_decl):  No error if non-decl (pointer type) in cycle.
+       (satisfy):  Return immediately if laid out non-pointer type.
+       (satisfy case LANG_TYPE):  Handle paramertised mode.
+       (satisfy case POINTER_TYPE/REFERENCE_TYPE):  Push type on chain;
+       return immediately if already in chain.
+       * typeck.c (smash_dummy_type):  Handle parameterized modes and CHAR(N).
+       Change return type (can now return error_mark_node).
+       (build_readonly_type):  Return return value from smash_dummy_type.
+       * ch-tree.h:  Change smash_dummy_type return type.
+
+Tue Mar  5 22:31:20 1996  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * typeck.c (build_chill_slice):  Re-do index_type calculation.
+       * typeck.c (layout_chill_range_type):  Use compare_int_csts rather
+       than tree_int_cst_lt to avoid signed/unsigned problems.
+
+       * typeck.c (copy_novelty):  Use copy_node rather than build_type_node.
+       * typeck.c (smash_dummy_type):  Use copy_novelty for NEWMODE of range.
+
+       * decl.c (init_decl_processing): More portable sizetype initialization.
+
+       * tree.c (build_string_type):  Generalize to also create bitstrings.
+       Return error_mark_node if an argument is an ERROR_MARK.
+       (build_bitstring_type):  Simplify - just call build_string_type.
+
+Tue Mar  5 03:48:32 1996  Wilfried Moser  <moser@blues.cygnus.com>
+
+       * actions.c (warn_unhandled): Add missing assignment.
+
+       * loop.c (build_loop_iterator): In case of IN, check if
+       expression has a mode, otherwise make an error.
+
+Mon Mar  4 23:12:03 1996  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       *  convert.c (digest_powerset_tuple):  Check tuple elements
+       for compatibility;  if compatible, call convert.
+
+Thu Feb 29 23:39:54 1996  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       Simplify NOVELTY representation.
+       * ch-tree.h (CH_NOVELTY):  Re-implement as plain TYPE_CONTEXT.
+       (CH_NOVELTY_FLAG):  Removed.  (Just use CH_NOVELTY.)
+       * decl.c (push_modedef):  Make copy even for SYNMODE.
+       but not for internal typedefs (indicated by make_newmode==-1).
+       * tasking.c:  Call push_modedef with make_newmode==-1.
+       * typeck.c (chill_novelty):  Remove.
+       (smash_dummy_type):  Removed unused event/buffer stuff.  Update.
+       * grant.c (decode_decl), inout.c (build_io_types),
+       expr.c (build_concat_expr), typeck.c (build_chill_slice, copy_novelty),
+       tasking.c (build_instance_type):  Simplify using new CH_NOVELTY.
+
+       Solidify READ mode handling.
+       * decl.c (do_decl, push_syndecl, start_chill_function):
+       Possibly set TREE_READONLY for a VAR_DECL, CONST_DECL, or PARM_DECL.
+       * typeck.c (build_chill_slice):  Set TREE_READONLY appropriately.
+       (build_chill_array_ref_1, build_chill_bitref):  Likewise.
+       (build_chill_cast):  Set TREE_READONLY depending on result type (only).
+       * convert (convert_from_reference, convert):  Likewise.
+       * expr.c (resolve_component_ref):  Set TREE_READONLY appropriately.
+       (build_chill_function_call):  Error if OUT/INOUT arg is TREE_READONLY.
+       * actions.c (chill_expand_assignment):  Also error if TREE_READONLY.
+       Use convert_from_reference.
+       
+Thu Feb 29 11:14:09 1996  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * parse.c (parse_do_action):  DO WITH expressions are evaluated in
+       outer scope.  Also call save_if_needed.
+       * decl.c (shadow_record_fields);  Fix and simplify.
+
+Tue Feb 27 22:19:40 1996  Per Bothner  <bothner@cygnus.com>
+
+       * convert.c (display_int_cst):  Gereralize to wider range of ints.
+
+Thu Feb 22 06:12:59 1996  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * convert.c (digest_array_tuple): Take care of type == error_mark_node.
+
+       * decl.c (do_decl): In case of chill_varying_type_p, check if
+       type of fixed part is error mark and do nothing in this case.
+
+       * lex.c (convert_bitstring): Don't complain when length of
+       bitstring is 0 (BOOLS(0) is a valid mode).
+
+       * tree.c (layout_powerset_type): Add check for TYPE_MAX/MIN_VALUE
+       (domain) is error mark.
+
+       * typeck.c (layout_chill_range_type): If lowvalue or highvalue ==
+       error_mark_node, just return.
+
+Tue Feb 20 00:01:10 1996  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * parse.c (parse_variant_alternative): When checking for ELSE take
+       care of tagless variants.
+
+Mon Feb 19 05:54:45 1996  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * parse.c (parse_case_action): Check if ELSE was specified
+       in a case label list (this is only valid for array tuples).
+       (parse_case_expression): Deto.
+       (parse_variant_alternative): Deto.
+
+Tue Feb 13 17:08:16 1996  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * typeck.c (chill_location):  Cleanup.  Neither SLICE_EXPR nor
+       BIT_FIELD_REF are referable, even if their base strings are.
+
+Fri Feb  9 02:25:33 1996  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * actions.c (chill_expand_result): Do CH_FUNCTION_SETS_RESULT after
+       checking the expression.
+
+       * convert.c (convert): Set TREE_CONSTANT when taking the
+       address of a function.
+
+       * decl.c (start_chill_function): Check if the mode is really
+       a mode to avoid subsequent segfaults.
+
+       * typeck.c (string_assignment_condition): Add checking of
+       bitstring length.
+
+Thu Feb  8 01:37:59 1996  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * actions.c (build_cause_exception): Print warning of unhandled
+       exception only once for each exception.
+
+Mon Feb  5 22:17:13 1996  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * tree.c (discrete_count), ch-tree.h:  New function.
+       * expr.c (build_concate_expr, build_chill_repetition_op,
+       chill_expand_expr):  Use discrete_count;  make sure arguments
+       to size_binop are sizetype.
+       (powersetlen):  Trvialize using discrete_count.
+
+       * inout.c (process_io_list):  Use new assign_temp function.
+       * inout.c (build_enum_tables):  Avoid taking address of array_ref,
+       which sometimes gets optimized to a constant.
+
+       * expr.c (finish_chill_unary_op):  Call convert_to_class on argument.
+       Remove some obsolete TREE_UNSIGNED stuff.
+       * lex.c (convert_integer):  Removed more TREE_UNSIGNED stuff.
+
+Thu Feb  1 15:11:20 1996  Doug Evans  <dje@charmed.cygnus.com>
+
+       * lex.c (check_newline): Return result of HANDLE_PRAGMA.
+
+Wed Jan 31 17:13:25 1996  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * decl.c (char_array_type_node, wchar_array_type_node):  Removed.
+       (init_decl_processing):  Remove array_domain_type;  don't set
+       char_array_type_node or wchar_array_type_node.
+       * decl.c (init_decl_processing):  Use fixup_unsigned_type to
+       simplify code to create boolean_type_node and char_type_node.
+
+Mon Jan 29 14:20:10 1996  Doug Evans  <dje@charmed.cygnus.com>
+
+       * lex.c (check_newline): Pass character after `#pragma' to
+       HANDLE_PRAGMA.  Don't call get_directive_line if at end of line.
+
+Fri Jan 26 05:56:27 1996  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * expr.c (build_chill_function_call): Add check and error for
+       actual argument is a TYPE_DECL.
+
+       * parse.c (parse_set_mode): Print a warning if the set mode contains
+       numbered and unnumbered set elements.
+
+Wed Jan 24 05:10:08 1996  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * Make-lang.in: Change GNUCHILL_VERSION to 1.5.2.
+
+       * decl.c (layout_enum): Add check for negative values if
+       enum is numbered and duplicate values in an enum. 
+
+Mon Jan 15 06:21:52 1996  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * actions.c (chill_expand_assignment): Add check for lefthand side
+       of an assignment is a location.
+
+       * ch-tree.def: Name of SET_IN_EXPR is really "set_in_expr" and
+       not "concat_expr".
+
+       * expr.c (is_really_instance): New function to check if a datum
+       is really an instance. CH_IS_INSTANCE_MODE seems to be to weak
+       for this case.
+       (build_chill_component_ref): call is_really_instance.
+
+Wed Jan 10 13:47:14 1996  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * ch-tree.h (TYPE_ARRAY_MAX_SIZE):  Removed;  now in ../tree.h.
+
+Mon Jan  8 15:29:20 1996  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * expr.c (build_char_array_expr):  Add save_if_needed's if varying.
+       Also, remove unused len0 and len1.
+
+Mon Dec 11 17:36:44 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * inout.c (build_chill_associate, assoc_call, build_chill_readrecord,
+       build_chill_getassociation, build_chill_getusage,
+       build_chill_gettextrecord,  build_chill_gettextaccess:  Simplify
+       - modify TREE_TYPE of CALL_EXPR, instead of building a CONVERT_EXPR.
+
+       * parse.c (parse_action):  Minor simplification.
+
+Thu Dec  7 00:02:47 1995  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * parse.c (parse_action): In case of CALL, do a check if there
+       is really a function call.
+
+Tue Dec  5 05:06:02 1995  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * convert.c (display_int_cst): Fix printing of control sequence.
+
+Thu Nov 30 21:07:57 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * grant.c (decode_constant, decode_constant_selective):  Make work
+       for REAL_IS_NOT_DOUBLE case.
+
+       * decl.c (CHILL_INT_IS_SHORT):  New macro.
+       (init_decl_processing):  Use CHILL_INT_IS_SHORT.
+       Change name of integer_type_node from _cint to long.
+
+Mon Nov 27 17:07:05 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * loop.c (top_loop_end_check):  Check while condition *after*
+       getting next powerset element.
+
+Mon Nov 27 05:29:52 1995  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * parse.c (parse_receive_case_action): Fix typo in error message.
+
+       * convert.c (display_int_cst): Format characters like strings in
+       grant.c(decode_constant).
+
+       * grant.c: Remove the old forbid stuff.
+
+       * lex.c (readstring): Fix reading of '^^'.
+
+       * parse.c (parse_procedure_mode): nreverse param_types.
+
+Thu Nov 23 05:39:57 1995  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * actions.c (chill_expand_assignment): Check for assigning to
+       location with non-value mode.
+
+       * ch-tree.h: New macro CH_TYPE_NONVALUE_P.
+       Add new and change some prototypes.
+
+       * decl.c (init_nonvalue_struct): New function to generate
+       initialisation code for non-value structs.
+       (init_nonvalue_array): New function to generate initialisation
+       code for non-value array's.
+       (do_decl): Call one of the above mentioned functions in case
+       we have a mode with the non-value property.
+       (start_chill_function): Print error message if a non-value mode
+       gets returned without LOC and check for arguments of non-value
+       modes only gets passed by LOC.
+
+       * grant.c (print_proc_tail): Fix for procedure returning LOC.
+
+       * inout.c (build_io_types): Set CH_TYPE__NONVALUE_P on
+       association_type_node.
+       (invalidate_access_recordmode): New function to set the
+       record mode of an ACCESS to error_mark_node in case of
+       record mode has the non-value property.
+       (build_text_mode): Set CH_TYPE_NONNVALUE_P.
+       (build_access_mode, build_chill_gettextaccess): Deto.
+       (check_exprlist): Correct processing of repetition factor.
+
+       * lex.c (readstring): Correct processing of control
+       sequences of the form '^([H | D | O | B]'xx)'.
+
+       * loop.c: Cleanup iterator handling (done by Per).
+       (nonvalue_begin_loop_scope, nonvalue_end_loop_scope): New
+       functions for starting and ending a loop scope in case
+       of initialising an array with non-value property.
+
+       * parse.c (check_end_label): Remove '\n' from error message.
+       (parse_loc_declaration): Print error in case of loc-identity
+       declaration without initialisation or with keyword INIT.
+       (parse_do_action): Clean up iterator handling (done by Per).
+
+       * satisfy.c (safe_satisfy_decl (case TYPE_DECL)): Print an error
+       message in case of TYPE_DECL is a signal and the mode has the
+       non-value property.
+       (satisfy (case ARRAY_TYPE)): Set CH_TYPE_NONVALUE_P of the
+       the array type if the array element mode has the non-value
+       property.
+       (satisfy case RECORD_TYPE)): Set CH_NONVALUE_P on the record
+       type if one of the fields have the non-value property. If the
+       record is a buffer mode and the element mode of the buffer has
+       the non-value-p., invalidate it (see
+       tasking.c (invalidate_buffer_element_mode). Same for access modes.
+
+       * tasking.c (build_signal_descriptor): If the signal type have
+       the non-value property, do nothing.
+       (build_receive_signal_case_label): Don't do an assignment if the
+       signal type have the non-value property.
+       (build_receive_buffer_case_label): Add check for buffer element
+       mode is ERROR_MARK.
+       (expand_send_buffer): Deto.
+       (build_buffer_type): Set CH_TYPE_NONVALUE_P on buffer mode.
+       (invalidate_buffer_element_mode): New function to set type of
+       buffer element mode to error_mark_node.
+       (build_event_type): Set CH_TYPE_NONVALUE_P on event mode.
+
+Wed Nov 15 13:26:20 1995  Jeffrey A Law  (law@cygnus.com)
+
+       * inout.c (intsize_of_charsexpr): Move declaration to top
+       of file to avoid error from solaris2.5 cc.
+
+Thu Nov  9 02:50:40 1995  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * satisfy.c (satisfy): For a RECORD_TYPE, which is an ACCESS or TEXT
+       mode, temporarily reset maximum_field_alignment to 0 before
+       layouting it to be compatible with the runtime library.
+
+       * inout.c (build_chill_gettextaccess): Deto.
+
+Mon Nov  6 04:12:06 1995  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * decl.c (do_decl): If type is READonly, add check if an
+       ASSOCIATION, ACCESS, TEXT, BUFFER, or EVENT will be declared
+       and print an error if this is true. Variables of this modes
+       may not be declared READonly.
+       Add check for mode is one of the above and an init value was
+       given. This is also not allowed.
+       Add initialisation of variables of the above modes during
+       runtime. This influence the mechanism for detecting to
+       build a constructor. 
+       (push_modedef): NEW- or SYNMODES of ASSOCIATION, ACCESS, TEXT,
+       BUFFER, and EVENT mode must not be READonly.
+       (start_chill_function): Arguments of modes ASSOCIATION, ACCESS,
+       TEXT, BUFFER, or EVENT may be passed only by LOC. Add this check.
+       (declare_predefined_file): Move to inout.c.
+       (init_decl_processing): Add definitions for new built-in's.
+       (finish_outer_function): Build a constructor only if
+       build_constructor is set.
+
+       * except.c: On Linux native, setjmp is __setjmp.
+
+       * expr.c (build_chill_component_ref): New function. It gets called
+       from parse.c instead of build_component_ref. Functions checks if the
+       user tries to access a field of an ACCESS, ASSOCIATION, BUFFER,
+       EVENT, INSTANCE, or TEXT mode, which actually is not allowed.
+       (build_chill_floatcall): New function to resolve CHILL's floating
+       point builtin calls (SIN, COS, TAN, etc.).
+       (build_allocate_getstack, build_chill_allocate, build_chill_getstack,
+       build_chill_terminate): New functions to resolve CHILL's ALLOCATE,
+       GETSTACK, and TERMINATE built-in's.
+       (build_generalized_call): Process new built-in's.
+
+       * grant.c (decode_mode): Add processing of ACCESS and TEXT modes.
+       (decode_mode_selective): deto.
+
+       * inout.c: Completely rewritten for implementing Chapter 7 of
+       Z.200 (input and output).
+       
+       * lex.c (yylex): An '_' after a '.' doesn't mean, that we are
+       parsing numbers.
+
+       * lex.h (enum rid): Add RID_ASSOCIATION.
+
+       * parse.c: New flag build_constructor to indicate if a constructor
+       should be generated at the end of compilation or not. See
+       decl.c(do_decl).
+       (parse_begin_end_block): Don't emit a line note.
+       (parse_primval): Call build_chill_component_ref instead of
+       build_component_ref.
+       (parse_opt_mode): Process ACCESS modes, ASSOCIATION modes, TEXT
+       modes, USAGE modes, WHERE modes.
+
+       * satisfy.c (safe_satisfy_decl): Check if a SYN is of mode ASSOCIATION,
+       ACCESS, TEXT, BUFFER, or EVENT and print an error in this case.
+       (satisfy (case RECORD_TYPE)): If exp is TEXT mode, check the text length.
+
+       * typeck.c (extract_constant_from_buffer): Fix thinko in case 
+       of ! BYTES_BIG_ENDIAN.
+       (build_chill_cast): Implement representation conversion between
+       INT's and REAL's.
+       (chill_similar): Add check of ACCESSes.
+       (layout_chill_range_type): Check for real ranges and print
+       sorry message.
+
+       * Make-lang.in: Change compiler version.
+       chill also depends on Makefile.
+
+       * chill.in: Process command line option -Xlinker like -Tdata.
+
+       * ch-tree.h: New macros CH_IS_ASSOCIATION_MODE, CH_IS_ACCESS_MODE,
+       CH_IS_USAGE_MODE, CH_IS_WHERE_MODE, and CH_IS_TEXT_MODE.
+       Add some prototypes.
+       (enum chill_built_in_function): Add BUILT_IN_ARCCOS, BUILT_IN_ARCSIN,
+       BUILT_IN_CH_DELETE, BUILT_IN_LOG, BUILT_IN_SQRT. 
+       Remove BUILT_IN_READLEN, BUILT_IN_ROUND, BUILT_IN_SKIPRECORD.
+
+       * gperf, hash.h: Remove definition of WHERE.
+       
+Thu Oct  5 06:22:19 1995  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * grant.c (decode_constant_selective): Add some newlines
+       to generated SPEC MODULE.
+
+Wed Oct  4 18:16:44 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * decl.c (pop_chill_function_context):  Remove some bogosity.
+
+Wed Oct  4 05:14:00 1995  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * grant.c (print_integer_selective): In case of a RANGE of
+       a SET mode, try to find and grant the parent mode.
+       (grant_seized_identifier): Dont write it out, if the identifier
+       doesn't have a seize file (it may come from a SPEC MODULE
+       defined in the compilation unit).
+
+Fri Sep 22 14:04:40 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * actions.c (check_non_null):  Wrap expr in SAVE_EXPR if needed.
+
+Wed Sep 20 13:51:54 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * expr.c (force_addr_of):  Optimize an INDIRECT_REF using
+       convert_to_pointer rather than convert (which in case of
+       a REFERENCE_TYPE would losingly call convert_from_reference).
+
+Wed Sep 20 04:03:58 1995  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * inout.c (build_chill_writetext): In case of character string:
+       Add processing of a concatenation including varying character
+       strings.
+       (intsize_of_charsexpr, get_max_size): New functions to determine
+       the maximum size of varying character strings.
+
+       * grant.c (decode_constant, decode_constant_selective): Add
+       processing of COMPONENT_REF.
+
+       * satisfy.c (satisfy (case COMPONENT_REF)): Correct handling
+       for SYNONYM's with STRUCT mode.
+
+Mon Sep 18 17:25:11 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * expr.c (force_addr_of):  Optimize of value is INDIRECT_REF.
+       * typeck.c (build_chill_slice):  Call mark_addressable.
+
+Mon Sep 18 14:38:15 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * expr.c (chill_expand_expr):  Make a copy before calling __psslice
+       if the array is neither referable nor BLKmode.
+       (build_set_expr):  Renamed to ...
+       (build_compare_set_expr):  Allow one opperand to be boolean.
+       (build_compare_expr):  Check both operands for SET_EXPR,
+       before checking for discrete types (for -fold-strings).
+
+Fri Sep 15 11:35:43 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * satisfy.c (safe_satisfy_decl):  For a CONST_DECL, set TREE_TYPE
+       to error_mark_node or error.
+
+Fri Sep 15 00:26:02 1995  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * grant.c (decode_constant_selective): Add processing of
+       TREE_OPERAND (val, 0).
+
+Wed Sep 13 14:24:12 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * ch-tree.h (CH_IS_INSTANCE_MODE):  Redefine to use CH_SIMILAR.
+       * convert.c (convert):  Use CH_IS_INSTANCE_MODE.
+       * inout.c (build_chill_writetext):  Likewise.
+       * tasking.c (build_receive_case_start, build_delay_case_start):  Ditto.
+       * parse.c (parse_start_action):  Remove redundant tests.
+       * tasking.c (build_start_process):  Also test that optset is instance.
+       (build_copy_number, build_proc_type, expand_send_signal):  Use
+       CH_IS_INSTANCE_MODE, not CH_COMPATIBLE.
+       * actions.c, convert.c (instance_type_node):  Remove redundant
+       extern declaration.
+       
+Wed Sep 13 14:19:37 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * regression.awk2:  Use \ line-continuation-markers
+       to remove gratuitous gawk dependency.
+
+Mon Sep 11 17:26:53 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * typeck.c (build_chill_modify_expr):  Use force_addr_of.
+       (mark_addressable):  Handle INDIRECT_REF of ADDR_EXPR.
+
+       * typeck.c (check_case_value), ch-tree.h:  Moved to ...
+       * actions.c (check_case_value):  ... here.  Also check for
+       compatibility with selector (which is passed as extra argument).
+       (chill_handle_case_label_range):  Take selector argument,
+       and use it to call check_case_value.
+       (chill_handle_case_label):  Take extra selector argument.
+       * ch-tree.h (chill_handle_case_labe):  Add prototype.
+       * except.c expr.c, parse.c:  Remove chill_handle_case_label prototypes.
+       * actions.c, except.c, expr.c, parse.c: Pass extra selector
+       argument to function calls as needed.
+
+Mon Aug 28 02:47:54 1995  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * grant.c (decode_constant_selective): Fix a bug in writing items
+       to grant file.
+
+Thu Aug 24 04:52:28 1995  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * parse.c (parse_case_expression): Print warning only in
+       pass 1.
+
+       * actions.c (print_missing_cases): Correct printing of
+       character ranges.
+
+Wed Aug 23 15:26:12 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * parse.c (parse_case_label_list):  Take extra parameter to
+       indicate if we're parsing a tuple or a case-label-spec.
+       If former, don't allow '(' EXPR ')' ',' but backup instead.
+       (parse_case_label_specification, parse_tuple_element):
+       Pass appropriate new argument to parse_case_label_list.
+
+Wed Aug 23 06:08:28 1995  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * inout.c (build_chill_readtext): Add processing of BOOL's and
+       CHARS(n).
+
+       * grant.c (decode_constant): Process nonprintable characters
+       in a STRING_CST.
+
+Fri Aug 11 15:26:13 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * except.c (initialize_exceptions):  Name setjmp "setjmp" and not
+       "__builtin_setjmp" (which is not recognized by expand_call).
+
+Wed Aug  9 23:35:36 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * loop.c (end_loop_scope):  Need to call kept_level_p,
+       in argument to poplevel.
+
+Wed Aug  9 05:48:30 1995  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * Make-lang.in (CHILL.install-common): Don't install chill-cross (this
+       file might be empty). Install chill.install instead.
+
+Tue Aug  8 21:46:30 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * loop.c (end_loop_scope):  Do poplevel *after* expand_end_bindings.
+
+Tue Aug  8 00:51:09 1995  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * tasking.c (build_process_header): Also set DECL_ASSEMBLER_NAME
+       of PARAM_DECL, since otherwise dbxout_symbol_name may barf.
+
+       * decl.c (start_chill_function): Likewise ...
+
+Mon Aug  7 18:35:35 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * tasking.c (build_process_wrapper):  Also set DECL_ASSEMBLER_NAME
+       of PARM_DECL, since otherwise dbxout_symbol_name may barf.
+
+Mon Jul 31 14:32:33 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * loop.c:  Re-written implementation of powerset iteration.
+       (declare_temps):  iter_var is now integer index into bitstring,
+       and powerset_temp just uses save_expr (normally needs no temp).
+       (top_loop_end_check):  Pass index to start searching (from iter_var)
+       to library function, instead of dependning on latter to clear old bits.
+       (increment_temps):  UNless DOWN, increment iter_var.
+       * decl.c (init_decl_processing):  Declare new types for
+       __ffsetclrpowerset and __flsetclrpowerset (now misnamed...).
+
+Mon Jul 31 12:47:28 1995  Per Bothner  <bothner@cygnus.com>
+
+       * convert.c (digest_array_tuple):  Set TREE_STATIC if possible.
+
+Fri Jul 28 05:11:56 1995  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * lex.c (readstring): Process integer literals starting with
+       H', D', or B' within a control sequence.
+
+Thu Jul 27 23:08:51 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * parse.c (parse_do_action):  Don't call push_action, but defer
+       push_handler until begin_loop_scope.
+       Call parse_opt_handler here, to move handler scope inside loop block.
+       (parse_action):  After do_action, nothing to do now.
+       * loop.c (begin_loop_scope):  Also call push_handler here.
+       (declare_temps):  Copy derived flag to user_var.
+       (declare_temps):  For POWERSET, always copy to temporary (even if
+       constant), since the runtime clears bits from it.
+
+       * expr.c (build_chill_sizeof):  Use convert_to_class.
+       * satisfy.c (safe_satisfy_decl):  Cleanup handling of CONST_DECL -
+       set proper value of CH_DECL_FLAG on both the decl and its value.
+
+       * convert.c (digest_array_tuple); Slightly better errors.
+       
+Wed Jul 26 22:13:39 1995  Per Bothner  <bothner@cygnus.com>
+
+       * expr.c (expand_packed_set):  Also allocate the CONSTRUCTOR itself.
+       (fold_set_expr):  Simplify accordingly.
+       (build_concat_expr):  Constant fold bitstring CONCAT_EXPRs.
+
+Thu Jul 13 12:21:22 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * typeck.c (build_chill_slice):  Use build1 instead of build.
+       * typeck.c (xtract_constant_from_buffer):  Pass correct precision
+       to lshift_double.
+
+       * typeck.c (expand_constant_to_buffer):  Handle RANGE_EXPR index.
+       * convert.c (digest_array_tuple):  Generate RANGE_EXPR as index
+       for tuples with ranges.
+
+Thu Jun 29 23:41:15 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * typeck.c (build_chill_slice):  Re-implement to use casts
+       instead of build_chill_array_ref_1 (which doesn't always work).
+       * convert.c (convert):  Remove old bugs code.
+
+Tue Jun 27 05:00:04 1995  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * parse.c (parse_if_action): Do PUSH_ACTION before parsing the
+       expression so that a possible handler at the if action will
+       be found.
+       (parse_proc_body): New argument to indicate if the function
+       raises exceptions or not. In case the function will raise
+       exception: start a handler, parse the function and generate
+       code for reraising the exceptions (call chill_reraise_exceptions).
+
+       * except.c (chill_reraise_exceptions): New function to generate
+       code for reraising exceptions are specified at the function 
+       definition.
+       
+       * ch-tree.h: Add prototype for chill_reraise_exceptions.
+
+       * decl.c (build_chill_function_type): When the function (type)
+       raise an exception, generate two new arguments (additional to the
+       formal parameters), the filename and linenumber of the caller.
+       (start_chill_function): likewise...
+
+       * expr.c (build_chill_function_call): If the called function raises
+       exceptions, give current filename and linnumber as aditional
+       arguments.
+
+       * actions.c (build_cause_exception): Handle case when function
+       propagates the exception.
+
+       * grant.c (print_proc_tail, print_proc_tail_selective): If the
+       function(type) raises exceptions, don't process the last to
+       parmeters of the formal argument list, they are compiler
+       generated.
+
+       * typeck.c (chill_similar): In case of FUNCTION_TYPE: check if
+       the exception lists are equal.
+
+Thu Jun 22 19:27:47 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * loop.c (flag_local_loop_counter):  Change default to 1.
+       (end_loop_scope):  Set 'keep' parameter in poplevel call.
+       (declare)_temps):  Don't set IDENTIFIER_LOCAL_VALUE, since that
+       is handled (correctly!) by pushdecl.
+       (begin_loop_scope):  Call pushlevel here,
+       * parse.c (parse_do_action):  Move pushlevel so only called for WITH.
+       * decl.c (struct scope):  Remove n_incomplete field and its uses.
+       (pushdecl):  Re-write to use proclaim_decl.  Remove old C-isms.
+       (init_decl_processing):  Re-name integer_type_node as "_cint" to
+       remove complaint from pushdecl about chill_integer_type_node as "int".
+
+Tue Jun 20 18:15:58 1995  Doug Evans  <dje@canuck.cygnus.com>
+
+       * Make-lang.in (chill-runtime): Restore patch to disable building of
+       runtime libraries for cross compilers.  This patch should remain
+       until a build of a freshly checked out devo "just works".
+
+Mon Jun 19 06:01:42 1995  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * Make-lang.in: Update GNUCHILL_VERSION to 1.4.4.
+
+       * decl.c (init_decl_processing): Remove builtin function
+       __cause_exception. New builtin functions __cause_ex1 and
+       __unhandled_ex.
+
+       * except.c (is_handled): Return 0 when no handler found,
+       1, if the handler is in local scope and 2, if function
+       may propagate the exception.
+
+       * actions.c (build_cause_exception): New argument to
+       indicate if a warning should be printed when
+       causing an unhandled exception. Call is_handled here.
+
+       * ch-tree.h: Change prototype for build_cause_exception.
+       New marco CH_ALREADY_GRANTED. Used in grant.c to determine if an
+       identifier already has been written to grant file.
+
+        * grant.c (write_spec_module): If not GRANT ALL specified,
+        write only this identifiers to grant file which are
+        neccessary to form a prober grant file. This will shorten
+        grant files and speed up compilation.
+        (decode_constant_selective, decode_mode_selective,
+        get_type_selective, decode_decl_selective,
+        grant_array_type_selective, get_tag_value_selective,
+        print_enumeral_selective, print_integer_selective, 
+        print_struct_selective, print_proc_tail_selective,
+        grant_one_decl_selective): New functions.
+
+       * lex.c (yywrap): Remove writing of not yet written USE_SEIZE_FILE
+       directives to grant file.
+
+       * parse.c (parse_on_exception_list): Fis constructing of
+       exceptions list.
+
+Wed Jun 14 15:21:54 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * typeck.c (valid_array_index_p):  Check for syntax error, where
+       index is a mode, rather than a value.
+
+       * expr.c (build_chill_binary_op_1):  Remove unused function.
+
+Sat Jun 10 11:36:52 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * except.c (is_handled):  New function.
+       Various fixes here and there to make it work.
+
+       * parse.c (parse_param_name_list):  Set DECL_ASSEMBLER_NAME.
+       (Otherwise dbxout may crash.)
+
+       * satisfy.c (satisfy case FUNCTION_TYPE):  Check for non-type result.
+       * decl.c (start_chill_function):  If result type was error_mark,
+       kludge type chill_os result_decl to avoid extra errors.
+       * actions.c (chill_expand_result, chill_expand_return):  If type of
+       chill_result_decl is error_mark, do nothing.
+
+       * typeck.c (chill_similar): Fix thinko in recent change.
+
+       * config-lang.in (diff_exclude):  Remove ch/lex.c - now it's a
+       true source file, and is never longer generated with [f]lex.
+
+       * regression.sh:  Pass -s to make clean (to make it silent).
+       Explicitly call gawk, instead of depending of '#!' to work.
+       Add --objdir flags.  Never send mail to bill.
+
+Thu Jun  8 15:08:35 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * typeck.c (chill_similar):  Add extra parameter.  Use to to prevent
+       infinite recursion.
+       (chill_equivalent, chill_l_equivalent):  Also add new parameter.
+       * ch-tree.h (CH_SIMILAR, CH_EQUIVALENT):  Modify to match.
+
+Tue Jun  6 17:14:49 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * loop.c (declare_temps):  If -flocal-loop-counter, make sure to
+       pushdecl the new variable (created with decl_temp1).
+       And fix the type of the local variable for powerset iteration.
+
+Tue Jun  6 15:07:19 1995  Per Bothner  <bothner@cygnus.com>
+
+       * typeck.c (mark_addressable):  Handle ADDR_EXPR inside
+       NOP_EXPR inside INDIRECT_EXPR.  For TRUTH_ANDIF_EXPR,
+       TRUTH_ORIF_EXPR, and COMPOUND_EXPR mark operand 1, not operand 0
+       (which is used for range-checks and suchlike).
+
+Thu Jun  1 02:45:54 1995  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * expr.c (build_set_expr): Do some optimizations for LE_EXPR and
+       GE_EXPR (don't do invert_truthvalue, just switch operands).
+
+Wed May 31 14:00:38 1995  Doug Evans  <dje@canuck.cygnus.com>
+
+       * lang-options.h: New file.
+       * lang-specs.h: New file.
+
+Wed May 24 01:45:18 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * actions.c (assign_stack_temp):  Remove unneeded declaration.
+
+Tue May 23 00:17:38 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * parse.c (parse_on_exception_list):  Return list of exception
+       names in pass 1, not in pass 2.  (Return non-NULL dummy if pass 2.)
+       (parse_on_alternatives):  Call chill_handle_on_labels even if ignoring.
+       (parse_opt_handler):  Likewise for chill_start_default_handler.
+       * except.c (push_handler):  Clear on_alt_list only if pass 1.
+       (chill_handle_on_labels):  Build on_alt_list in pass 1,
+       retrieve it in pass 2.
+
+       Fix so that decl_temp1 does not expand_decl_init, which calls
+       free_temp_slots, which loses in the middle on an expression.
+       * decl.c (finish_decl):  Don't call expand_decl_init.
+       (do-decl):  Do initialization assignment even if stack variable.
+       * parse.c (parse_loc_declaration):  Call free_temp_slots.
+
+       * decl.c (finish_decl), ch-tree.h:  Remove last two always-NULL
+       parameters.  Cleanup never-used code.
+       * decl.c, except.c:  Update calls to finish_decl.
+
+       * decl.c (case_else_node):  Define new variable.
+       (init_decl_processing):  Initialize it.
+       (make_chill_variants): If variant label is case_else_node (i.e. it
+       is (ELSE):), treat that as an ELSE variant.
+       * ch-tree.h (case_else_node):  Declare case_else_node.
+       * parse.c (parse_case_label):  Use case_else_node.
+
+Mon May 22 10:18:11 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * grant.c (print_proc_tail):  Also call print_proc_exceptions.
+       (decode_decl):  Don't explicitly call print_proc_exceptions for
+       FUNCTION_DECL.
+       (Net effect is that now exceptions are printed for FUNCTION_TYPE too.)
+
+       * actions.c (chill_convert_for_assignment):  Use save_if_needed,
+       instead of save_expr, in case value is a reference.
+
+       * typeck.c (build_chill_slice):  Fix old thinko (missing call to
+       build_pointer_type).
+
+       * actions.c (size_int):  Remove unused and conflicting prototype.
+
+Wed May 17 16:23:20 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * actions.c (chill_convert_for_assignment):  Call save_expr if
+       range_checking (twice).
+
+Tue May 16 11:33:41 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * typeck.c (layout_chill_range_type):  Re-organize error checking.
+       Add extra parameter to indicate if non-constant bounds are allowed.
+       If bounds are bad, set them to the min_value of the parent.
+       * ch-tree.h (layout_chill_range_type):  Update declaration.
+       * satisfy.c (satisfy):    Update call of layout_chill_range_type.
+       * typeck.c (build_chill_range_type):  Likewise.
+       * tree.c (build_string_type):  Likewise.
+
+Tue May 16 00:37:51 1995  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * expr.c (build_chill_sizeof): Fix bug in case of SIGNAL.
+
+Mon May 15 12:54:32 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * satisfy.c (satisfy):  Supress error message for REF <error_mark>.
+       * decl.c (push_modedef):  Check for TREE_CODE != ERROR_MARK, instead
+       of against error_mark_node.  (smash_dummy_type can copy error marks.)
+       (finish_decl):  Simplify C-derived check for incomplete type,
+       and suppress if it is an ERROR_MARK.
+       Don't call rest_of_decl_compilation if type is an ERROR_MARK.
+
+Sun May 14 22:52:40 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * convert.c (convert):  Handle array types with different modes.
+
+Thu May 11 15:52:12 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * loop.c (build_loop_iterator):  Handle the case of a non-local
+       loop counter having reference type.
+
+Thu May 11 07:04:29 1995  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * tasking.c (build_copy_number, build_gen_code, build_gen_inst,
+       build_gen_ptype, build_proc_type): Set CH_DERIVED_FLAG on result
+       to avoid erros when assigning to (comparing with) NEWMODEd INT's.
+
+Mon May  8 15:27:16 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * expr.c (build_chill_card):  Do constant folding, if possible.
+       (build_max_min):  Do constant folding for MIN/MAX of powersets.
+
+Mon May  8 06:57:21 1995  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * expr.c (build_chill_sizeof): Add corect processing of a
+       SIGNAL definition without data.
+
+Sat May  6 16:27:10 1995  Doug Evans  <dje@canuck.cygnus.com>
+
+       * Make-lang.in (maintainer-clean): Renamed from realclean.
+
+Tue May  2 06:16:23 1995  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * parse.c (parse_asm_action): Do PUSH_ACTION unconditionally,
+       otherwise "handler stack" will get out of sync.
+
+Mon Apr 24 09:51:07 1995  Per Bothner  <bothner@rtl.cygnus.com>
+
+       Fixes to support module-level non-static temporary variables.
+       * parse.c (parse_loc_declaration):  If all_static_flag and not
+       resursive, tell do_decls to make new decl static.
+       * decl.c (do_decl):  Don't use maybe_static function to force static.
+       (do_decl):  Don't let initialization count as "using" the variable.
+       (maybe_static):  Removed.
+       (finish_decl):  Call expand_decl and expand_decl_init if needed
+       (as it will be for non-static temporaries).
+
+Fri Apr 21 21:02:30 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * convert.c, expr,c typeck.c (expand_decl):  Remove usused declaration.
+
+Fri Apr 21 02:27:12 1995  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * expr.c (build_set_expr): Fix thinko: GE(x,y) is not eqivalent to
+       LT(y,x) its rather equivalent to NOT (LT(x,y)). Same is true for
+       GT(x,y), its not equiv. to LE(y,x), its equiv. to NOT (LE(x,y)).
+
+Thu Apr 20 15:29:05 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * parse.c (yytext, finput):  Remove unused declarations.
+
+       * parse.c (proc_action_level):  New variable.
+       (parse_proc_body):  New function.  Common code from
+       parse_procedure_definition and parse_process_definition moved here.
+       Save, set, and restore proc_action_level from action_nesting_level.
+       (parse_action case RETURN):  Pass proc_action_level to
+       expand_goto_except_cleanup.
+
+Thu Apr 20 06:02:20 1995  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * grant.c (really_grant_this): Add processing of LABEL_DECL's
+       (don't grant them).
+
+Tue Apr 18 18:16:28 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * lex.c ( convert_bitstring):  Use BYTES_BIG_ENDIAN rather
+       than BITS_BIG_ENDIAN to layout bits within bitstring.
+       * typeck.c (expand_constant_to_buffer, extract_constant_from_buffer):
+       Likewise.
+
+Sun Apr 16 19:55:51 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * decl.c (finish_chill_function):  If currently global_function_decl,
+       don't set outer_function to global_function_decl.
+
+Wed Apr 12 22:45:06 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * decl.c (start_chill_function):  Normal functions are nested.
+       (finish_chill_function):  No longer takes a 'nested' parameter.
+       Normal functions are nested.
+       Never call permanent_allocation, since it does little good (all normal
+       functions are nested), and trashes some things we need.
+       (finish_outer_function):  Update call to finish_chill_function.
+       * grant.c (chill_finish_compile):  Likewise.
+       * tasking.c (build_process_wrapper):  Likewise.
+       * parse.c (end_function):  Likewise.
+       * ch-tree.h (finish_chill_function):  Update declaration.
+
+       * parse.c (parse_asm_clobbers):  Re-enable.
+       (expand_asm_operands):  function.
+       (parse_asm_action):  Re-enable.  Don't do anything in pass 1.
+
+       * typeck.c (build_chill_slice):  Do constant folding.
+       Also, work around problem where expand_expr constant folds ARRAY_REF.
+       (sort_constructor):  Remove unused function.
+
+       * expr.c (chill_expand_expr case CONCAT_EXPR):  Make sure we
+       emit_block_move if needed with correct size.
+
+       * inout.c (build_chill_io_list_type):  Simplify.
+
+       * lex.c (check_newline):  Uncomment some dwarf stuff,
+       which needs get_directive_line, which we no longer have.
+
+Wed Apr  5 16:05:15 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * Makefile.in (C_OBJS, xcc1chill):  Removed.  We no longer
+       link cc1chill with ../c-typeck.o ../c-aux-info.o ../c-common.o.
+
+       * expr.c (build_chill_component_ref):  Renamed to build_component_ref.
+       (chill_truthvalue_conversion):  Renamed to truthvalue_conversion.
+       * decl.c, expr.c, inout.c, loop.c, parse.c, tasking.c, timing.c,
+       typeck.c:  Update accordingly.
+       * typeck.c (valid_array_index_p):  We only need to save_expr (index)
+       if we're range-checking.
+       * typeck.c (unsigned_type, signed_type, signed_or_unsigned_type,
+       mark_addressable, initializer_constant_valid_p, check_case_value,
+       type_for_size, type_for_mode):  New functions, copied from
+       ../c-common.c and ../c-typeck.c.
+
+       * lang.c (incomplete_type_error):  New.  (Was in c-common.o.)
+       * decl.c (constant_expression_warning):  New.  (Was in c-common.o.)
+
+       * lang.c (string_index_type_dummy):  Remove definition from here.
+       * tree.c (string_index_type_dummy):  Define here instead.
+       * lang.c (lang_init):  Move init of string_index_type_dummy
+       (which is too late) from here ...
+       * decl.c (init_decl_processing): ... to here.
+
+       * decl.c (signed_boolean_type_node):  New variable.
+       (init_decl_processing):  Initialize it.
+
+       * parse.c:  Comment out ASM action support, for now.
+
+       * loop.c (maybe_skip_loop):  Make return void, not int.
+       Use build_compare_discrete_expr.
+       (increment_temps):  Use chill_expand_assignment.
+
+Thu Mar 30 23:28:28 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * decl.c (do_decl):  If default-initializing variable-length
+       string to "" (or []), make it lifetime_bound.
+
+Thu Mar 30 02:51:59 1995  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * parse.h, hash.h, gperf: New compiler directives
+       EMPTY_ON and EMPTY_OFF.
+
+       * lex.c: New variables empty_checking and runtime_checking_flag.
+       (ch_lex_init): Initialize empty_checking and range_checking 
+       when switching from pass 1 to 2.
+       (read_directive): Add processing of EMPTY_OFF/ON.
+
+       * expr.c (build_chill_indirect_ref): New argument do_empty_check
+       to indicate if null pointer checking should be done or not.
+       It's not always necessary to do a null pointer check.
+
+       * decl.c (lookup_name): Add argument to call to
+       build_chill_indirect_ref.
+       (shadow_record_fields): ...
+       * parse.c (parse_primval): ...
+       * tasking.c (build_process_wrapper): ...
+       (build_receive_buffer_case_label): ...
+
+       * ch-tree.h: Change prototype of build_chill_indirect_ref.
+       Add declaration of runtime_checking_flag and empty_checking.
+
+       * actions.c (check_non_null): Do null pointer checking only 
+       when enabled (empty_checking != 0).
+
+Wed Mar 29 15:18:23 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * actions.c (chill_expand_assignment):  Add 'else' so we don't do
+       regular assignment in addition to spacial assignment (e.g. for slices).
+
+       * ch-tree.h (convert_to_discrete):  Add declaration.
+       * typeck.c (convert_to_discrete):  New function.
+       (valid_array_index_p):  Use convert_to_discrete.  Also simplify.
+       (build_chill_slice):  Say sorry if variable-length bitstring.
+       (build_chill_slice_with_length):  Re-do bounds check.
+       * expr.c (check_case_selector):  Re-write to use convert_to_discrete.
+       (build_chill_num, build_chill_pred_or_succ):  Use convert_to_discrete.
+
+       * decl.c (do_decl):  Don't do redundant chill_convert_for_assignment.
+
+Wed Mar 29 00:00:29 1995  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * expr.c (build_chill_num): need_unsigned have to be set for
+       characyer strings of length 1 too. Happens when compiling
+       with -fold-strings and do NUM(a(i)).
+
+       * parse.c (parse_loc_declaration): Print error message only
+       in pass 1.
+       (parse_mode): Likewise ...
+
+       * tasking.c (build_tasking_message_type): Temporarily reset
+       maximum_field_alignment to get proper aligned temp. variables
+       gets passed to runtime system.
+
+Tue Mar 28 00:08:06 1995  Per Bothner  <bothner@cygnus.com>
+
+       * typeck.c (my_build_array-ref):  Merged into build_chill_array_ref_1.
+       But don't convert index to integer_type_node.  And we don't need to
+       check the we're given an array.
+       * typeck.c (valid_array_index_p):  If flag_old_strings, convert
+       chars(1) to char and bools(1) to bool before index checking.
+
+Sun Mar 26 22:42:39 1995  Per Bothner  <bothner@cygnus.com>
+
+       * ch-tree.h (struct module):  Added next module field.
+       * decl.c (first_mdoule, next_module):  New global variables.
+       (switch_to_pass_2):  Re-initialize next_module.
+       (push_module):  In pass 2, reuse the same module objects from pass 1.
+
+       * decl.c (declare_predefined_file):  Set DECL_IN_SYSTEM_HEADER.
+
+       * typeck.c (valid_array_index_p):  Do range check on original index,
+       before we convert to domain type.
+
+Fri Mar 24 11:43:39 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * parse.c (parse_fixed_field):  New function.
+       (parse_variant_field_list):  New function replaces parse_simple_fields.
+       (parse_variant_alternative, parse_field):  Update to use new functions.
+       (parse_field):  Error message if neither CASE nor NAME.
+
+       * actions.c (check_non_null):  New function - checks for NULL pointers.
+       * ch-tree.h (check_non_null):  New declaration.
+       * tasking.c (expand_send_signal):  Call check_non_null.
+       * expr.c (build_chill_indirect_ref, build_chill_function_call):  Same.
+       * lex.h (enum rid):  Add RID_EMPTY.
+       * lex.c (init_lex):  Initialize ridpointers[RID_EMPTY].
+
+       * lex.c (read_directive):  Remove 2 calls of to_global_binding_level
+
+Wed Mar 22 16:36:46 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * tasking.c (tasking_list):  Change to chain of TREE_VEcs, rather than
+       chain of (nested) TREE_LIST nodes.
+       (TASK_INFO_PDECL, TASK_INFO_ENTRY, TASK_INFO_CODE_DECL,
+       TASK_INFO_STUFF_NUM, TASK_INFO_STUFF_TYPE):  New macros.
+       (tasking_setup, tasking_registry, add_taskstuff_to_list):  Use them.
+
+       * ch-tree.h (C_TYPE_FIELDS_READONLY):  Rename to TYPE_FIELDS_READONLY.
+       (TYPE_READONLY_PROPERTY):  New macro, to match Z.200 concept.
+       * typeck.c (build_chill_modify_expr):  Don't check for read-only-ness,
+       since it is redundant for chill_expand_assignment and breaks
+       reach-bound initialization in do_decl.
+       (my_build_array_ref):  Simplify by using TYPE_READONLY_PROPERTY.
+       (layout_chill_array_type):  Set TYPE_FIELDS_READONLY if appropriate.
+       * actions.c (chill_expand_assignment):  Check TYPE_READONLY_PROPERTY
+       instead of TREE_READONLY of the target's type.
+       * expr.c (build_chill_function_call):  Likewise.
+       * inout.c (build_chill_readtext):  Likewise.
+       * decl.c (do_decl):  Likewise, to check if init is required.
+
+       * typeck.c (build_chill_bitref):  Removed unused RANGE_EXPR hack.
+
+Wed Mar 22 07:52:52 1995  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * tasking.c (build_start_process): Get a unique identifier for
+       the start arguments.
+
+Tue Mar 21 07:36:40 1995  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * expr.c (fold_set_expr): At label build_result: Add setting unused
+       bits to 0. This is the same as the runtime library does.
+
+       * parse.c (expect): Function returns now int, 0, if the expected
+       token was not got, 1 when it was found.
+       (parse_synonym_definition): In case of syntax error (missing =),
+       set expr to NULL_TREE and mode to error_mark to avoid subsequent
+       segfaults.
+
+       * chill.texi: Add chapter about differences to Z.200/1988.
+
+Mon Mar 20 18:01:11 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * lang.c (chill_print_error_function):  New function, to report
+       module name if not inside a function.
+       (lang_init):  Set print_error_function to chill_print_error_function.
+
+       * tasking.c (max_queue_size, buffer_element_mode):  Cleanup
+       to remove unreachable code.
+
+       * grant.c (chill_finish_compile):  Avoid doing a lookup_name
+       to find init function (which got broken by recent nesting re-org).
+
+       * decl.c (poplevel):  Push and pop function context around
+       call to output_inline_function (as done for C and C++).
+
+Thu Mar 16 17:56:07 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * parse.c (parse_pass_1_2):  If unknown top-level token, skip pass 2.
+
+Wed Mar  8 13:54:33 1995  Doug Evans  <dje@canuck.cygnus.com>
+
+       * Make-lang.in (chill-runtime): Temporarily disable building of
+       runtime libraries for cross compilers.
+
+Mon Mar  6 23:36:19 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * parse.c, decl.c:  Remove use of FUNCTION_NEEDS_STATIC_CHAIN.
+
+       * configure:  Merge in tolerance for new flags (e.g. --x-libraries).
+
+Sat Mar  4 15:47:35 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * expr.c (build_chill_arrow_expr):  Error if pass == 1.
+
+Thu Mar  2 19:28:07 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * decl.c (do_decl):  Setting seen_action must be done in pass 1.
+       (save_decl):  Don't set DECL_CONTEXT to global_function_decl.
+       (start_chill_function):  Simplify due to above change.
+
+       * parse.c (parse_case_label):  Hack to distinguish (ELSE) from (*).
+       * grant.c (decode_constant):  Emit ELSE in case label.
+
+       * parse.c (serious_errors):  New global variable.
+       * parse.c (to_global_binding_level):  Set serious_errors.
+       (parse_pass_1_2):  Exit after pass 1 if serious_errors > 0.
+       * lex.c (readstring):  Recover from unterminstaed control sequence.
+
+Tue Feb 28 17:08:08 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       Re-write of module-level actions.  No longer generate a module
+       function for module-level actions.  Instead, put them inside
+       a new global dummy function.  Nest everything logically inside it.
+
+       * lex.h, grant.c (chill_module_name):  Removed declaration.
+       * grant.c (write_spec_module):  Instead use current_module->name.
+       * grant.c (chill_start_module_code, chill_finish_module_code):
+       Removed.
+       * grant.c (chill_finish_compile):  Make rtl for global function.
+
+       * actions,c (push_action):  Don't call chill_start_module_code.
+       * expr.c (build_chill_function_call, build_generalized_call):
+       Likewise.
+       * parse.c (INIT_ACTION):  Likewise.
+
+       * parse.c (seen_action):  New variable.
+       * parse.c (end_function):  Always call pop_chill_function_context.
+       (parse_procedure_definition):  Always call push_chill_function_context.
+       (parse_modulion):  Parse optional handler.
+       (parse_modulion, parse_spec_module):  Do find_granted_decls.
+       (parse_action):  Set seen_action if global and a real action.
+       ([arse_program):  Call start_outer_function and finish_outer_function.
+
+       * ch-tree.h:  Appropriate updates.
+
+       * tasking.c (generate_tasking_code_variable):  Make it lifetime-bound.
+       (build_process_header):  Always push_chill_function_context;
+       we are now always nested.
+       (build_process_wrapper):  Always pop_chill_function_context.
+
+       * tasking.c (build_start_process):  Only expand_start_bindings and
+       expand_end_bindings if pass 2.
+
+       * decl.c (global_function_decl):  New variable.
+       (do_decl):  Implement reach-bound initialization of static variables.
+       (start_chill_function):  Set DECL_CONTEXT to NULL if
+       it would be global_function_decl (so as to not confuse gcc backend).
+       (start_chill_function, finish_chill_function):  If compiling
+       global_function_decl in pass 2 and !seen_action, suppress it.
+       (set_module_name):  New function.
+       (global_bindings_p):  Re-defined to check against global_function_decl.
+       (start_outer_function, finish_outer_function):  New functions.
+
+Tue Feb 28 16:00:03 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * typeck.c (build_chill_modify_expr):  Inline logic from
+       chill_expand_array_assignment,
+       * actions.c (chill_expand_array_assignment):  Removed.
+       (chill_expand_assignment):  Remove call to removed function.
+
+       * lex.c (reinit_parse_for_function):  Removed empty unused function.
+       * decl.c (start_chill_function):  Don't call removed function.
+
+Tue Feb 28 00:29:51 1995  Per Bothner  <bothner@cygnus.com>
+
+       * configure:  Merge in code for calculating host, build, and
+       target and canon_{host,build,target} from ../configure.  
+       Fix calculation of mainsrcdir.  Host canon_* variables
+       to merge in build-make (as in ../configure).
+
+Sun Feb 26 18:59:02 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * typeck.c (expand_constant_to_buffer):  Use new function
+       get_set_constructor_bytes.
+
+Tue Feb 21 01:41:56 1995  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * inout.c (build_chill_writetext): Add processing of
+       conditional expressions in argument list.
+
+       * parse.c (parse_opt_name_string): Print error message only 
+       in pass 1.
+
+       * chill.texi: Add chapter about compiler directives.
+
+Tue Feb 14 16:45:19 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * decl.c (start_chill_function):  Set FUNCTION_NEEDS_STATIC_CHAIN
+       unless nested.
+
+       * decl.c (decl_temp1):  Make lifetime_bound iff static.
+
+Fri Feb  3 04:30:28 1995  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * grant.c (really_grant_this, search_in_list): New static
+       functions to determine if a decl should be written to 
+       grant file.
+       (write_spec_module): Add call to really_grant_this.
+
+Fri Jan 27 00:06:12 1995  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * actions.c (check_expression): Apply Per's patch.
+       (chill_expand_result): New argument to indicate if we come
+       from a RETURN or RESULT action. Change various error messages.
+
+       * ch-tree.h: New macro CH_USE_SEIZEFILE_RESTRICTED.
+       New argument for chill_expand_result.
+
+       * chill.in: In case of -fgrant-only, clear library, libpath and
+       startfile to avoid warnings from gcc.
+
+       * gperf, hash.h: New compiler directive USE_SEIZE_FILE_RESTRICTED.
+
+       * parse.h (enum terminal): Add USE_SEIZE_FILE_RESTRICTED.
+
+       * grant.c (decode_decl): Don't write USE_SEIZE_FILE directive
+       and subsequent SEIZEs to grant file, if the seize file is
+       used restricted.
+
+       * lex.c (read_directive): Process new compiler directive
+       USE_SEIZE_FILE_RESTRICTED.
+       (handle_use_seizefile_directive): Same as above.
+       (yywrap): Don't write USE_SEIZE_FILE directive to grant file
+       if this seize file is used restricted.
+
+       * parse.c (parse_action, case RETURN): Change RETURN expr action
+       to RESULT expr; RETURN. This enables range checking and
+       exception delivery in case of rangefail.
+
+Tue Jan 17 07:38:27 1995  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * decl.c (init_decl_processing): Add definition of
+       library function __inbitstring (see expr.c).
+
+       * expr.c (chill_expand_expr case SET_IN_EXPR): Call function
+       __inpowerset fir POWERSET's and function __inbitstring for
+       BITSTRING's. In case of POWERSET's we must not do a rangecheck,
+       in case of BITSTRING's we have to do one.
+       (build_compare_expr): Fix typo CH_DERIVED_FLAG (tmp); (warning
+       statement with no effect).
+
+Fri Jan 13 13:35:30 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * actions.c (check_expression):  Simplify result.
+
+       * ch-tree.h (SET_CH_NOVELTY_NONNIL):  New macro.
+       * expr.c, timing.c, typeck.c:  Use SET_CH_NOVELTY_NONNIL.
+
+       * typeck.c (valid_array_index_p), ch-tree.h:  Change interface
+       to return modified index expression.  Call error if out-of-range.
+       * actions.c, typeck.c:  Modify
+       for new valid_array_index_p interface.
+
+       * actions.c (build_chill_slice):  Copy novelty of index type.
+
+Fri Jan 13 13:04:41 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * convert.c (digest_array_tuple):  Allow mode name in array
+       tuple label.  Print error message instead of aborting.
+
+       * parse.c (parse_body):  Error message only if pass 1.
+
+       * decl.c (check_identifier), ch-tree.h:  Remove.  Unused.
+
+Wed Jan 11 14:03:47 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * parse.c (parse_modulion):  Undo yesterday's change (to allow
+       an ON-handler to follow) until we re-implement module.  
+
+Tue Jan 10 17:23:55 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * loop.c (declare_temps):  Remove bogus prohibition against
+       iterating over BOOL arrays.
+
+       * parse.c (parse_semi_colon):  Make it a pedwarn (instead of an
+       error) if a semi-colon is missing before an END.
+       (parse_action):  Likewise.
+       * parse.c (parse_modulion):  Allow an ON-handler to follow.
+
+       * parse.c (parse_set_mode):  Use parse_expression to get
+       values for number set elements.
+
+       * expr.c (build_compare_expr):  Make sure result has
+       CH_DERIVED_FLAG set, since it is supposed to be BOOL-derived.
+       (finish_chill_binary_op):  Likewise for IN_EXPR.
+
+Tue Jan 10 04:46:42 1995  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * actions.c (lookup_and_expand_goto, lookup_and_handle_exit): Add
+       checking the argument.
+       (chill_expand_assignment): Take care of a newmoded dst_offset
+       when calling __pscpy and a newmoded from_pos when calling
+       __setpowersetbits.
+
+       * expr.c (chill_expand_expr): When calling __psslice take care
+       of a newmoded min_value.
+
+       * parse.c (parse_name_string): Print error message only in 
+       pass 1.
+
+Tue Jan  3 19:56:36 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * typeck.c (build_chill_array_ref_1):  Use varying_to_slice
+       instead of building a VRAY_ARRAY_REF node.
+       * ch-tree.def (VARY_ARRAY_REF):  Removed.
+       * actions.c (chill_expand_assignment):  Will never call
+       expand_assignment_to_varying_array for a VARY_ARRAY_REF, so don't.
+       (expand_assignment_to_varying_array):  Removed.
+       * convert.c (convert):  Remove unneeded VARY_ARRAY_REF support.
+       * expr.c (chill_expand_expr):  Likewise.
+
+Tue Jan  3 19:50:18 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * parse.c (parse_iteration):  Set step_value to NULL if missing.
+       * loop.c (ITER_TYPE):  Remove DO_RANGE.
+       (build_loop_iterator):  Implement old DO_RANGE in terms of DO_STEP.
+       (begin_loop_scope):  Don't return on error.
+       (build_loop_iterator):   Calculate loop variable type using
+       resulting classes (as in Z200), rather than precision.
+
+       * loop.c (initialzie_iter_var, bottom_loop_end_check):  For DO_STEP,
+       make iter_var one less to avoid overflow.
+       * loop.c (build_loop_iterator):  If !flag_local_loop_counter,
+       declare a new variable if needed, as allowed by Z200 (1984).
+
+       * ch-tree.h (ch_class):  Add typedef.
+
+       * typeck.c (chill_resulting_class):  New function.
+       (chill_root_resulting_class):  Remove.
+       * ch-tree.h (CH_RESULTING_CLASS):  New macro.
+       (CH_ROOT_RESULTING_CLASS):  Re-implement using CH_RESULTING_CLASS.
+
+Tue Jan  3 19:36:27 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * actions.c (build_cause_exception, expand_cause_exception), ch-tree.h:
+       Change interface to take IDENTIFIER tree node, rather char char*.
+       (check_expression): Change (simplify) callers appropriately.
+       * parse.c (parse_action), typeck.c (valid_array_index_p):  Likewise.
+       * lex.h (enum rid):  Add RID_ASSERTFAIL.
+       * lex.c (init_lex):  Enter RID_ASSERTFAIL.
+       * parse.c (parse_action case ASSERT):  Fix thinko TRUTH_ANDIF_EXPR
+       to TRUTH_ORIF_EXPR.  Use RID_ASSERTFAIL.
+
+       * typeck.c (discrete_type_p):  Re-implement using INTEGRAL_TYPE_P.
+
+Tue Jan  3 19:20:35 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       Move checking for modeless tuples in invalid contexts from parser
+       to semantic function check_have_mode (for better error recovery):
+       * expr.c (check_have_mode), ch-tree.h:  New function.
+       * satisfy.c (safe_satisfy_decl):  Use check_have_mode.
+       * expr.c (build_compare_expr, finish_chill_binary_op,
+       finish_chill_unary_op):  Likewise.
+       * parse.c (parse_primval):  Don't complain about mode-less tuple here.
+
+Tue Jan  3 17:36:48 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * expr.c (varying_to_slice):  Support varying arrays whose
+       lower bound is non-zero.
+
+       * parse.c (parse_body):  Allow (with warning) definition to
+       follow action.
+
+       * expr.c (check_case_selector), ch-tree.h:  New function.
+       (chill_expand_case_expr):  Use it.
+       * parse.c (parse_case_action):  Likewise.
+
+Fri Dec 23 00:47:54 1994  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * actions.c (chill_expand_return): Change error message.
+
+       * ch-tree.h: Change prototypes of do_decl and do_decls.
+
+       * convert.c (convert): Add missing initialisation of
+       variable orig_e_constant.
+
+       * decl.c: Change all calls to do_decl.
+       (maybe_static): New function to process the ALL_STATIC_ON/OFF
+       compiler directives.
+       (do_decls): New argument.
+       (do_decl): New argument and process reachbound and lifetime
+       bound initialisation.
+
+       * gperf, hash.h: Add compiler directives ALL_STATIC_ON and
+       ALL_STATIC_OFF.
+
+       * grant.c: Change all calls to do_decl.
+
+       * lex.c (read_directive): Process ALL_STATIC_ON/OFF compiler
+       directive.
+
+       * parse.c (parse_loc_declaration): Pass lifetime_bound flag to
+       do_decls.
+
+       * parse.h (enum terminal): Add ALL_STATIC_ON and ALL_STATIC_OFF.
+
+       * tasking.c: Change all calls to do_decl.
+
+Mon Dec 19 23:13:58 1994  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * parse.c (parse_procedure_definition): Save chill_at_module_level
+       flag, set ot to 0 and restore it at the end of function.
+       A sequence BEGIN x: PROC () RETURN; END x; END; at module level
+       have produced an error.
+
+       * expr.c (build_chill_repetition_op): Fix typo in error message.
+
+Tue Dec 13 12:26:38 1994  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * actions.c (expand_assignment_to_varying_array):  Fix thinko:
+       build_chill_array_ref -> build_chill_array_ref_1.
+
+Sun Dec 11 23:04:27 1994  Per Bothner  <bothner@rtl.cygnus.com>
+
+       * actions.c (chill_expand_assignment):  Simplify the lhs if it is
+       a COMPOUND_EXPR, so we can better handle SLICE_EXPR in lhs.
+
+Thu Dec  8 13:45:38 1994  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * loop.c, ch-tree.h (build_loop_iterator):  Fix to return void.
+       If start_exp is ERROR_MARK, return.
+       * expr.c (build_generalized_call):  More robust on syntax errors.
+
+Tue Dec  6 02:33:23 1994  Wilfried Moser  <moser@rtl.cygnus.com>
+
+       * inout.c (build_chill_readtext): In case of reading a SET mode
+       pass ignore_case flag to runtime library.
+
+Tue Nov 29 14:41:38 1994  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * parse.c (parse_receive_case_action):  Print error only if pass==1.
+       * decl.c (push_scope_decls):  Use error_with_file_and_line
+       to get correct line number of SEIZE.
+
+Mon Nov 28 16:59:18 1994  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * expr.c (resolve_component_ref):  Call fold on result.
+
+       * expr.c (resolve_component_ref):  Use check_expression.
+       * actions.c (chill_convert_for_assignment):  Likewise.
+       * actions.c (cond_exception), ch-tree.h:  Removed.
+       * actions.c (check_expression):  First part of COMPOUND_EXPR
+       should be boolean_type_node;  void_type_node loses in SAVE_EXPRs.
+
+       * actions.c (chill_convert_for_assignment):
+       Check string_assignment_condition for varying strings too.
+
+       * typeck.c (build_chill_cast):  If the types have different sizes,
+       don't allow nondiscrete->discrete conversion, and only allow
+       discrete->nondiscrete if input expression is constant.
+
+       * typeck.c (chill_similar):  Don't use losing array_type_nelts.
+
+       * ch-tree.h (ELSE_VARIANT_NAME):  New.
+       * convert.c, decl.c, grant.c:  Use ELSE_VARIANT_NAME.
+       * decl.c (handle_one_level):  Recurse on ELSE_VARIANT_NAME too.
+
+       Reduce dependencies on ../c-typeck.c:
+       * expr.c:  Fix c_expand_start_case -> expand_start_case.
+       Fix c_expand_expr_stmt -> expand_expr_stmt.
+       (build_chill_indirect_ref):  Call convert instead of build_c_cast.
+       * loop.c (bottom_loop_end_check):  Don't use build_modify_statement.
+       * expr.c, except.c, typeck.c:  Don't call default_conversion.
+       * typeck.c (string_assignment_condition):  Fix build_component_ref ->
+       build_chill_component_ref.
+       * decl.c:  Fix build_indirect_ref -> build_chill_indirect_ref (twice).
+       * decl.c:  Don't set unused constructor_no_implicit (from c-typeck.c).
+       * decl.c:  Don't call declare_function_name.
+
+       * parse.c: Don't always keep a valid token in terminal_buffer[0].
+       The extra look-ahead may have made the parser faster, but caused
+       some problems synchronizing with the lexer.  Specifically:
+       (PEEK_TOKEN):  Now calls an optimized variant of peek_token_(0).
+       (next_token_):  Don't call peek_token_.  Renamed to forward_token_.
+       (NEXT_TOKEN):  Renamed to FORWARD_TOKEN.
+       (parse_program):  Don't call yylex yet.
+
+       * parse.c (parse_action):  Re-do case ASSERT.
+       Fix c_expand_expr_stmt -> expand_expr_stmt.
+
+       * lex.l:  Re-written to not use [f]lex, and renamed to ...
+       * lex.c:  ... new lexer.
+       * Makefile.in, Make-lang.in:  Remove [f]lex crud.
+
+       * lex.h (enum rid), lex.c (init_lex):  Added RID_ELSE.
+
+Tue Nov 22 15:19:03 1994  Wilfried Moser  (moser@rtl.cygnus.com)
+
+       * Make-lang.in: Let chill-runtime depend on $(GCC_PASSES).
+
+Fri Nov 18 14:27:32 1994  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * parse.c (parse_structure_node):  Simpler, and more robust.
+
+Wed Nov 16 14:40:52 1994  Ian Lance Taylor  (ian@cygnus.com)
+
+       * lex.l (convert_bitstring): Check BITS_BIG_ENDIAN at run time,
+       not at compile time.
+       * typeck.c (expand_constant_to_buffer): Likewise.
+       extract_constant_from_buffer): Likewise.
+
+Tue Nov 15 14:41:53 1994  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * convert.c (convert):  Call build_chill_range_type rather than
+       build_index_2_type (which has obstack and canonicalization problems).
+       * expr.c (build_chill_pred_or_succ):  Convert expr to root class
+       before arithmetic.
+       * loop.c (declare_temps):  If location iterated over is not
+       a location, make a temporary variable for it.
+
+Mon Nov 14 16:33:47 1994  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * typeck.c, ch-tree.h (chill_equivalent):  Change to return
+       a tree (a Boolean expression).  Also, add some missing tests.
+       * ch-tree.h (CH_EQUIVALENT):  Modify accordingly.
+
+       * expr.c (chill_expand_expr case CONCAT_EXPR):  When the 2nd operand
+       is an UNDEFINED_EXPR, handle mode-mismatch with whole expr.
+       Also, replace MEM (which is not a mode) by Pmode.
+
+       * ch-tree.h, typeck.c (chill_comptypes):  Removed.
+       * convert.c (convert):  Remove calls to chill_comptypes.
+
+Fri Nov 11 13:06:29 1994  Wilfried Moser  (moser@rtl.cygnus.com)
+
+       * grant.c (write_grant_file): Call pfatal_with_name instead
+       of abort when something goes wrong when opening or writing
+       the grant file.
+       unlink grant file if something goes wrong during writing
+       (i.e. device full).
+
+       * Make-lang.in (CHILL_SRCS): Add timing.c
+
+       * ch-tree.h: Add prototype for chill_tasking_type_node.
+       * lex.l (equal_number): Use chill_tasking_type_node instead of
+       integer_type_node for converting the result.
+       Print error messages in pass 2, in pass 1 no error will be
+       detected.
+       * tasking.c: New variable chill_tasking_type_node for all
+       generated tasking related variables.
+       Use chill_tasking_type_node instead of chill_unsigned_type_node.
+
+       * expr.c (chill_expand_expr): Apply Per's change.
+
+       * expr.c (build_chill_sizeof): In case of error just
+       return error_makr_node.
+       Set CH_DERIVED_FLAG at the result.
+
+       * timing.c (build_after_timeout_start): Clear the the timeout
+       level to know if we are in the action part of AFTER statement
+       or in the TIMEOUT part.
+
+       * typeck.c (build_chill_slice_with_length): Convert the class
+       of the result to class of first value in expression.
+
+       * inout.c (build_chill_writetext, build_chill_readtext): Use stack
+       temporary variables for the iolist so that they can get reused in
+       subsequent calls. Emit code immediately instead of building a 
+       compound expr.
+
+Fri Nov  4 12:00:54 1994  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * expr.c (build_chill_function_call):  Don't set TREE_TYPE
+       of assignment to void_type_node - it confuses save_expr.
+       * decl.c (init_decl_processing):  Removed unused code.
+       * parse.c:  Changes to avoid warnings.
+
+       * grant.c (chill_finish_module_code):  Minor simplification.
+       * lex.l (readstring):  Set *len to 1 on error.
+
+Thu Nov  3 01:05:17 1994  Wilfried Moser  (moser@rtl.cygnus.com)
+
+       * grant.c (decode_decl): Add granting of BASED declarations.
+
+Wed Nov  2 12:14:31 1994  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * expr.c (build_chill_lower_or_upper):  Take more care to
+       ensure result has the right class.
+       (build_chill_pred_or_succ):  Be more careful to get the right
+       resulting class, and check bounds using *root* mode.
+
+       * typeck.c (build_chill_slice_with_range):  Check that array
+       really is an array or string.
+       (build_chill_slice_with_length):  Likewise.
+
+       * typeck.c (extract_constant_from_buffer):  Fix calculation of
+       SET_TYPE size.  (Cannot depend on 1-byte TYPE_PRECISION field.)
+
+Wed Nov  2 05:33:03 1994  Wilfried Moser  (moser@rtl.cygnus.com)
+
+       * Make-lang.in: Change version of compiler.
+
+       * ch-tree.h: Add new prototypes.
+
+       * decl.c (init_decl_processing): Remove timing related 
+       initialisations. Add call to timing_init.
+
+       * parse.c (parse_action): Process AFTER action.
+
+       * tasking.c (build_receive_case_start,
+       build_receive_signal_case_label, build_receive_buffer_case_label,
+       build_delay_case_start, build_delay_action, expand_send_buffer):
+       Add processing of timesupervision.
+       (tasking_init): Change definitions of runtime   functions.
+
+       * timing.c (timing_init): New function for initialisation of
+       timing related stuff.
+       (build_cycle_start, build_cycle_end): Changed due to
+       implementation of timesupervision.
+       (build_after_start, build_after_timeout_start, build_after_end):
+       Implement the AFTER action.
+       (build_timeout_preface, build_timesupervised_call): New functions
+       to handle timesupervision in case of blocking system calls (i.e.
+       SEND buffer action, RECEIVE CASE action etc.).
+       
+Thu Oct 27 12:50:24 1994  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * expr.c (build_chill_repetition_op):  Fix repeating all-zero
+       bitstring with orig_len!=1.  Also, call build_boring_bitstring
+       if original string was all ones, using one range.  Also:
+       Cannot use one-bit TYPE_PRECISION to get bitstring length.
+
+Tue Oct 25 14:11:07 1994  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * convert.c (convert):  When converting BOOL constant to
+       bit-string, bit_one_node and bit_zero_node were switched.
+       * actions.c (chill_expand_assignment):  Use force_addr_of,
+       not build_chill_addr_expr - latter yields bogus error.
+
+Fri Oct 21 14:26:52 1994  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * expr.c (build_chill_indirect_ref):  Check for POINTER_TYPE (only)
+       after converting from REFERENCE_TYPE.
+       * expr.c (build_compare_expr):  Convert to common mode *after*
+       we've checked compatibility.
+
+Fri Oct 21 02:29:15 1994  Wilfried Moser  (moser@rtl.cygnus.com)
+
+       * lex.l (check_newline): Use getc instead of getlc to read
+       the filename in a # line name directive to avoid possibly
+       downcaseing of a filename.
+
+Thu Oct 20 05:37:17 1994  Wilfried Moser  (moser@rtl.cygnus.com)
+
+       * expr.c (build_chill_indirect_ref): Add check for really
+       dereferencing a pointer.
+
+       * convert.c (convert): Take care of TREE_CONSTANT of a
+       SYNONYM having mode ARRAY () VARYING something.
+
+Mon Oct 17 02:30:38 1994  Wilfried Moser  (moser@rtl.cygnus.com)
+
+       * decl.c (init_decl_processing): Set CH_DERIVED_FLAG for 
+       boolean_true_node and boolean_false_node. TRUE and FALSE have
+       the BOOL derived class.
+
+       * expr.c (build_chill_num): Set CH_DERIVED_FLAG at the result
+       of NUM. NUM delivers the INT derived class.
+
+       * grant.c (write_spec_module): Add writing of
+         <> USE_SEIZE_FILE "x.grt" <>
+         SEIZE ALL;
+       to generated grant file.
+
+Thu Oct 13 14:45:12 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * convert.c (convert_from_reference):  Make non-static.
+       * ch-tree.h (convert_from_reference):  Add prototype.
+       * parse.c (parse_name):  If the decl is a REFERENCE_TYPE, just
+       call convert_from_reference - and not a full-scale convert.
+
+       * convert.c (convert):  Only call digest_array_tuple if ARRAY_TYPE.
+       * typeck.c (chill_expand_tuple):  Print error if type is
+       neither array, struct, or powerset.
+
+       * expr.c (chill_expand_expr cases CONCAT_EXPR, SET_*_EXPR,
+       UNDEFINED_EXPR):  Call preserve_temp_slots for temp targets.
+       If target is not MEM, make temp (even if not REG) to simplify
+       - and don't copy original target to temp target first.  (Not needed.)
+
+       * lang.c (maybe_objc_comptypes):  Just return -1.
+
+Wed Oct 12 12:24:20 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * tasking.c (tasking_setup):  Fix breakage from previous check-in.
+
+Tue Oct 11 16:00:37 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * actions.c, convert.c, except.c, expr.c, inout.c, loop.c, tasking.c,
+       timing.c, typeck.c:  Change build1 (ADDR_EXPR, ptr_type_node, XX)
+       to force_addr_of (XX).  Add call to mark_addressable where needed
+       for other calls to build 1 (ADDR_EXPR, TYPE, XX).
+
+Thu Oct  6 06:36:28 1994  Wilfried Moser  (moser@rtl.cygnus.com)
+
+       * inout.c (build_chill_writetext): Remove processing
+       of POWERSET's.
+
+Tue Oct  4 14:08:26 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * convert.c (convert):  If flag_old_strings, support converting
+       CHARS(1) and BOOLS(1) to INT.
+
+Fri Sep 30 01:44:51 1994  Wilfried Moser  (moser@rtl.cygnus.com)
+
+       * inout.c (build_chill_readtext): Add check for item is
+       referable and not READonly. Add processing of BITSTRINGs.
+
+Mon Sep 26 16:19:36 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * expr.c (build_chill_descr):  Add missing call to mark_addressable.
+       * loop.c (toop_loop_end_check):  Replace build1 (ADDR_EXPR ...)
+       with call to force_addr_of (which calls mark_addressable).
+       * expr.c (build_chill_descr, build_chill_inttime):  Likewise.
+       * inout.c (build_chill_writetext):  Likewise.
+
+Mon Sep 26 05:19:21 1994  Wilfried Moser  (moser@rtl.cygnus.com)
+
+       * grant.c (print_struct): Move printing of VARYING from
+       here ...
+       * grant.c (grant_array_type): ... to here.
+
+Mon Sep 26 00:09:08 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-tree.h (force_addr_of):  New prototype.
+       * expr.c (force_addr_of):  Call mark_addressable.  Make non-static.
+       * inout.c (build_chill_writetext):  Use force_addr_of.
+
+Sun Sep 25 23:41:59 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * except.c (push_handler), actions.h:  Removed unused parameter.
+       * actions.c (push_action):  Remove unused paramater.
+       * parse.c, actions.c:  Remove no-longer-used parameter to
+       calls to push_handler and push_action.
+
+       * decl.c (push_extern_process):  Only build types in pass 1.
+       * tasking.c (build_process_header):  Only build types in pass 1.
+       * tasking.c (build_start_process):  Do pushdecl/popdecl etc
+       even after an error (to maintain consistency between passes).
+
+       * convert.c (convert_to_boolean):  Allow any integral input type.
+
+Sat Sep 24 22:47:54 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * typeck.c (extract_constant_from_buffer):  Add (somewhat kludgey)
+       support for UNION_TYPE.  (Patch from Wilfried.)
+       Also, reverse RECORD_TYPE constructor list.
+
+Fri Sep 23 19:06:39 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * expr.c (build_concat_expr):  Fix calculation of result_size.
+
+Wed Sep 21 00:54:21 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       Give up on trying to use the cleanup mechanism in stmt.c to
+       make sure the exception handler get unlinked on goto/exit/return.
+       Instead, do it ourselves.  (Much simpler.)
+       * except.c, ch-tree.h (action_nesting_level):  New global.
+       * ch-tree.h (DECL_ACTION_NESTING_LEVEL):  New macro.
+       * decl.c (define_label):  Set DECL_ACTION_NESTING_LEVEL.
+       * except.c (expand_goto_except_cleanup):  New function.
+       (cleanup_chain):  New variable.
+       (push_handler, pop_handler):  Adjust action_nesting_level.
+       (emit_setup_handler):  Push cleanup.
+       (chill_finish_on):  Pop cleanup.
+       * actions.c (lookup_and_expand_goto, lookup_and_handle_exit):
+       Call expand_goto_except_cleanup.
+       * parse.c (parse_action):  Before RETURN, call
+       expand_goto_except_cleanup.
+
+Mon Sep 19 00:59:54 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * lex.l (equal_number):  Make sure converted synonym
+       is on permanent obstack.
+       * typeck.c (extract_constant_from_buffer):  Fix INTEGER_TYPE
+       loop to traverse in big-endian order.
+
+Sat Sep 17 20:48:37 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * typeck.c (build_chill_cast):  Call mark_addressable.
+       * expr.c (build_chill_function_call):  Call mark_addressable.
+
+Thu Sep 15 23:47:01 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * typeck.c (expand_constant_to_buffer):  Fix an endian-ness
+       problem for INTEGER_CST.
+       (extract_constant_from_buffer):  Likewise.
+
+Thu Sep 15 22:59:04 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * decl.c (pushlevel):  Do different things depending on
+       actual parameter.
+       * decl.c, parse.c, tasking.c:  Change argument to to pushlevel to 1.
+       * actions.c (push_action):  Take new parameter.
+       * except.c (push_handler):  Likewise.
+       * parse.c:  Change calls to push_action and push_handler.
+       * loop.c (begin_loop_scope):  Always call expand_start_bindings.
+       * loop.c (end_loop_scope):  Always call expand_end_bindings.
+       * except.c (emit_setup_handler):  Add a cleanup to
+       unlink from exception stack if we return/exit/goto from here.
+       * loop.c (begin_loop_scope):  Move pushlevel from here ...
+       * parse.c (parse_do_action): ... to here.
+
+       Clean up do-decl interface (for decl_temp1).
+       * parse.c (parse_loc_declaration):  If global_bindings_p (),
+       treat as static.
+       * decl.c (do_decl):  Don't test global_bindings_p ().
+
+       * decl.c (keep_next_level_flag, keep_next_if_subblocks):
+       Not used.  Removed.
+       (struct scope::keep, scope::keep_if_subblocks):  Likewise.
+       (keep_next_level):  Likewise.
+       (kept_level_p, pushlevel, poplevel):  Simplify.
+
+       * decl.c (init_decl_processing):  Don't call init_iterators.
+       * Makefile.in (C_OBJS):  Don't get ../c-iterator.o - not needed.
+
+Thu Sep 15 05:54:11 1994  Wilfried Moser  (moser@rtl.cygnus.com)
+
+       * lex.l (readstring): Add processing of control sequence
+       in character string literals. The granting mechanism writes
+       this to grant files.
+
+Tue Sep 13 06:19:42 1994  Wilfried Moser  (moser@rtl.cygnus.com)
+
+       * expr.c (compare_records): In case of -fpack do always
+       a memcmp instead of comparing each field of the
+       structure. If the structure is a variant structure, 
+       issue a warning.
+
+Mon Sep 12 13:15:09 1994  Per Bothner  (bothner@cygnus.com)
+
+       * grant.c (write_spec_module):  Add cast, to avoid PCC warning.
+       * grant.c (header_template):  Don't use ANSI-specific string
+       literal concatenation.
+
+Fri Sep  9 01:53:30 1994  Wilfried Moser  (moser@rtl.cygnus.com)
+
+       * tasking.c (get_process_wrapper_name): New function.
+       (add_taskstuff_to_list): Add a new argument, which is
+       the entrypoint of a process.
+       (build_process_header): Change PROCESS arguments to be
+       like arguments of a function. There will be a wrapper
+       which is the real entry point for a PROCESS. This wrapper
+       is automatically build after a PROCESS definition and gets
+       as argument a pointer to a structure looking like the 
+       arguments of the PROCESS. This wrapper will call the
+       PROCESS (see build_process_wrapper).
+       (build_process_wrapper): New function (see above).
+       (build_start_process): Change processing of arguments.
+       (tasking_setup): Add processing of a different entry point
+       in case of PROCESSes.
+
+       * parse.c (parse_process_definition): Add call to
+       build_process_wrapper.
+       * parse.c (end_function): Remove the poplevel() call.
+       build_process_header no longer makes the corresponding
+       pushlevel().
+
+       * grant.c (print_proc_tail): Remove special processing
+       of PROCESSes, they look now like normal functions.
+
+       * decl.c (init_decl_processing): Add declaration of memcmp
+       function.
+
+       * ch-tree.h: Add new prototype for build_process_wrapper,
+       change prototypes for add_taskstuff_to_list and
+       build_process_header.
+
+       * grant.c (write_spec_module): Write GNUCHILL and gcc
+       version into grant file.
+
+       * Make-lang.in (CHILL_FLAGS_TO_PASS): Add passing of CC and 
+       GNUCHILL_VERSION to ch/Makefile.
+       * Make-lang.in (CHILL.mostlyclean): Add ch/ch-version.c.
+
+       * Makefile.in (CHILL_OBJS): Add ch-version.o. ch-version.c
+       will get generated every time a new Makefile will get 
+       generated.
+       * Makefile.in (GNUCHILL_VERSION): Remove it, its defined in
+       Make-lang.in.
+
+       * chill.in: In case of -fgrant-only pass "-S -o /dev/null"
+       to the compiler to avoid generation of an object file.
+
+Thu Sep  8 12:07:28 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * convert.c (display_int_cst), ch-tree.h:  New function.
+       * convert.c (digest_array_tuple):  Use digest_int_cst to
+       provide better error messages.  Return error_mark_node on error.
+       * grant.c (decode_const):  Simplify by using digest_int_cst.
+       * grant.c (format_character, find_assoc):  Removed.
+
+       * decl.c (do_decl):  Add missing TREE_CHAIN.
+
+       * decl.c (finish_incomplete_decl):  Removed.
+       (init_decl_processing):  Don't set incomplete_decl_finalize_hook.
+       (finish_decl):  Remove old C-specific code to deduce size of
+       array from initialization.
+       (complete_array_type):  Just make it abort.
+
+       * except.c (finish_handler_array):  Avoid calling C-specific kludge
+       complete_array_type.
+
+       * convert.c (digest_constructor):  Rename, and re-write to:
+       (digest_array_tuple, convert):  No longer use the code in
+       ../c-typeck.c;  use a Chill-only implementation (sigh).
+
+       * typeck.c (chill_expand_tuple):  Remove unneeded call to
+       complete_array_type.
+
+       * expr.c (fold_set_expr), grant.c (decode_constant),
+       typeck.c (expand_constant_to_buffer):  Update name of called
+       function unpack_set_constructor to get_set_constructor_bits.
+       * expr.c (powersetlen ):  Remove redundant call to convert.
+
+       * ch-tree.h (unpack_set_constructor):  Removed obsolete declaration.
+
+       * inout.c (build_chill_writetext):  Handle 64-bit integer literals
+       by trying to convert them to a smaller type.
+
+       * lex.l (convert_number):  Always use long long type (possibly
+       unsigned) to avoid problems with constant folding truncation.
+
+Mon Sep  5 08:08:22 1994  Wilfried Moser  (moser@rtl.cygnus.com)
+
+       * ch-tree.h (enum chill_built_in_function): Add BUILT_IN_QUEUE_LENGTH.
+       Add new prototype (see tasking.c).
+
+       * expr.c (build_generalized_call): Add processing of
+       BUILT_IN_QUEUE_LENGTH.
+
+       * tasking.c (build_queue_length): New function.
+
+       * tasking.c (tasking_init): Add new external function definition.
+
+Thu Sep  1 15:38:00 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * lex.l (default_lex):  New function.  Progress towards
+       getting rid of [f]lex.
+
+       * lex.l (convert_number):  Use mul_double and add_double.
+       Set result type to a reasonable type in which the literal
+       will fit.  Give error message if literal is too big.
+
+       * lex.l (equal_number):  Switch (temporarily) to permanent obstack.
+
+       * typeck.c (build_chill_slice_with_range):  Check for empty
+       slice *after* we have checked for upper/lower limit in range.
+
+       * grant.c (decode_mode):  Remove unused code.  (BOOL and
+       CHAR ranges are represented as INTEGER_TYPEs.)
+
+       * tasking.c (build_process_header):  Add missing call to
+       expand_start_bindings.
+       * parse.c (end_function):  Add missing expand_end_bindings.
+
+Wed Aug 31 17:25:14 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * decl.c (init_decl_processing):  Set set_alignment.
+
+Tue Aug 30 16:40:46 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * actions.c (print_missing_cases, check_missing_cases,
+       BITARRAY_TEST, BITARRAY_SET):  New functions and macros,
+       to check for completeness of case actions and expressions.
+       * decl.c (c_decode_option, init_decl_processing):
+       Don't set warn_switch.
+       * expr.c (chill_expand_case_expr):  Call check_missing_cases
+       instead of check_for_full_enumeration_handling.
+       * parse.c (parse_case_actions):  Call check_missing_cases.
+
+       * expr.c (build_chill_binary_op):  Remove some dead code.
+       * expr.c (chill_truthvalue_conversion):  Call build_chill_binary_op
+       instead of build_binary_op.
+       * ch-tree.h (binary_op_error, build_binary_op):  Unused.  Removed.
+
+       * parse.c (end_function):  Use kept_level_p in parameter to
+       poplevel.  This reverts a June 13 change.
+
+Fri Aug 26 11:50:19 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)
+
+       * configure: Ignore --without, as ../configure does.
+
+Wed Aug 24 01:17:28 1994  Wilfried Moser  (moser@rtl.cygnus.com)
+
+       * lex.l: Change rule for decimal numbers to allow identifiers
+       to start with an underscore (_).
+
+Fri Aug 19 16:38:12 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * tasking.c (build_receive_signal_case_label):  Remove backwards
+       chill_convert_for_assignment (which converted whatever garbage
+       was in the *target* to the type of the signal argument!).
+
+Fri Aug 19 07:10:43 1994  Wilfried Moser  (moser@rtl.cygnus.com)
+
+       * inout.c (build_chill_io_list_type, build_enum_tables),
+       tasking.c (build_tasking_struct): Temporarily reset
+        maximum_field_alignment to 0, so that the compiler-built
+        data structures needed by the RTS can be independent of -fpack.
+
+Thu Aug 18 13:39:51 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * typeck.c (build_init_struct):  Temporarily reset
+       maximum_field_alignment to 0, so that the compiler-built
+       data structures needed by the RTS can be independent of -fpack.
+
+Wed Aug 17 23:48:33 1994  Wilfried Moser  (moser@rtl.cygnus.com)
+
+       * parse.c (parse_primval, expect, parse_on_exception_list):
+       Print error message only in pass 2.
+
+Wed Aug 17 13:47:50 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * decl.c (switch_to_pass_2):  Revert June 13 change,
+        (Don't exit after pass 1 if an error was found.)
+
+       * ch-tree.def (SLICE_EXPR):  New tree-code.
+       * typeck.c (build_chill_slice):  For building a slice of a
+       bit-string, just generate a SLICE_EXPR.
+       * decl.c (init_decl_processing):  Declare __pscpy.
+       * actions.c (chill_expand_assignment):  Handle a SLICE_EXPR
+       on the LHS of assignment, by calling __pscpy.
+       * expr.c (chill_expand_expr):  Handle SLICE_EXPR (as a RHS
+       value) by using __psslice to copy slice to a temp.
+
+Wed Aug 17 05:52:44 1994  Wilfried Moser  (moser@rtl.cygnus.com)
+
+       * Make-lang.in: Change version of GNUCHILL compiler to 1.4.1.
+       * expr.c (build_chill_length): Enable LENGTH built-in to process
+       Buffers and Events too (Z.200/1992).
+       * lex.l (yywrap): Always set yyin to finput and/or grt_in. On
+       a linux system the previous version was not able to run.
+       * tasking.c: Correct processing of infinite buffer- and event-length
+       to avoid RANGEFAIL warning.
+
+Thu Aug 11 11:46:55 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * parse.c (parse_if_expression_body):  Don't call the C-specific
+       build_conditional_expr.  Just do build_nt (COND_EXPR, ...).
+       * convert.c (convert):  Convert a COND_EXPR by converting
+       each branch.
+
+       * convert.c (convert):  Don't call convert before
+       convert_to_reference.  It's apt to do weird and unneedful things.
+       * convert.c (convert):  If the expression is varying, just call
+       varying_to_slice, which simplifies quite a bit.
+
+       * ch-tree.h (varying_to_slice):  Add prototype.
+       * typeck.c (varying_to_slice):  Remove prototype.
+
+       * satisfy.c (satisfy):  Move case PAREN_EXPR from type 'e'
+       to type '1'.
+
+       * except.c (emit_setup_handler):  Temporarily reset the
+       maximum_field_alignment to zero so the compiler's exception
+       data structures can be compatible with the run-time system,
+       even when we're compiling with -fpack.
+
+       * expr.c (compare_records):  Call saved_if_needed on operands.
+
+       * expr.c (build_set_expr case NE_EXPR):  Don't use __nepowerset
+       which has been reimplemented to just call __eqpowerset and
+       invert the result.  Inline this new implementation by
+       handling as EQ_EXPR, and inverting the result.
+       * decl.c (init_decl_processing):  Don't define unused __eqpowerset.
+
+       * typeck.c (valid_array_index_p):  The TRUTH_ANDIF_EXPR has
+       type boolean_type_node, not void_type_node.  (Fixing this
+       avoids a crash in the back-end.)
+
+       * grant.c (decode_constant):  In a CALL_EXPR, if the argument
+       list is not a TREE_LIST (as in string repetiation), don't
+       emit parentheses.
+
+Wed Aug 10 13:13:55 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * decl.c (proclaim_decl):  Use CH_DECL_ENUM to check that a
+       CONST_DECL is from a SET definition.  (This is safer than
+       checking that the type is ENUMERAL_TYPE, because synonym
+       definitions may have a NULL TREE_TYPE.)
+       Also, if we have duplicate enums whose types are identical,
+       this is an error.
+       * decl.c (proclaim_decl, pushdecllist, push_scope_decls):  Add
+       an extra 'quiet' parameter, which is true if we're called from
+       bind_sub_modules.  (In that case an error message about duplicated
+       decls would be repeated later, so suppress it.)
+
+       * parse.c (stmt_count):  Removed, not used.
+       (INIT_ACTION):  Call emit_line_note only if !ignoring.
+       (parse_begin_end_block):  Do INIT_ACTION even if ignoring.
+
+Fri Aug  5 12:39:11 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * parse.c (parse_untyped_expr):  Add missing semi-colon.
+
+Thu Aug  4 17:40:38 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * parse.c (parse_untyped_expr):  Fix various problem for the
+       case that we see a '(':  Add missing 'case' keyword.
+       Only recurse if '(' is followed by 'if', 'case' or '[',
+       and in that case emit a pedwarn (and do a missing NEXT_TOKEN).
+
+       * parse.c (parse_send_action):  Remove extra nreverse.
+
+Thu Jul 28 04:00:11 1994  Wilfried Moser  (moser@rtl.cygnus.com)
+
+       * expr.c (build_allocate_global_memory_call, build_allocate_memory_call): 
+       Add new checks.
+
+Tue Jul 26 22:48:15 1994  Michael Tiemann  (tiemann@blues.cygnus.com)
+
+       * parse.c (parse_untyped_expr): Added missing "case" before LPRN.
+       Added a missing call to `require' as well.
+
+Tue Jul 19 10:30:12 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)
+
+       * lex.l (yywrap): Define as yywrap_chill to avoid conflicts with
+       the extern declaration in the flex skeleton.
+
+Mon Jul 18 23:06:04 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * tasking.c (build_copy_number, build_proc_type, expand_send_signal):
+       Check the type of the instance expr using CH_COMPATIBLE,
+       and not just == instance_type_node.  (This allows
+       the expression to have mode READ INSTANCE).
+       * tasking.c (build_instance_type):  Give instance_type_node
+       a non-null novelty (i.e. different from a struct).
+       * tasking.c (build_receive_case_start, build_delay_case_start):
+       Check that for a location using CH_LOCATION_P.
+
+Mon Jul 18 13:22:23 1994  Jim Wilson  (wilson@sphagnum.cygnus.com)
+
+       * expr.c (finish_chill_unary_op): Use TREE_SET_CODE not TREE_CODE
+       to modify a tree code.
+
+Mon Jul 18 11:24:57 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * convert.c (digest_structure_tuple): Fix thinko in TREE_CODE
+         comparison.
+
+Mon Jul 18 05:40:15 1994  Doug Evans  (dje@canuck.cygnus.com)
+
+       * decl.c (warn_bad_function_cast): Define so cc1chill will link.
+
+Thu Jul 14 18:37:18 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * parse.c (parse_send_action):  Do tree_cons *before* checking
+       for end of loop.
+
+Mon Jul 11 15:33:52 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * convert.c (digest_structure_tuple):  Don't use convert to
+       coerce initial value,  use chill_convert_for_assignment instead.
+       (Thus we also get range_checking.)
+
+       * expr.c (build_chill_card):  Use force_addr_of instead of
+       build_chill_addr_expr.
+
+       * loop.c (build_temporary_variable):  Stylistic tweak.
+       * loop.c (maybe_make_for_temp):  Initialize temp using
+       explicitly, not using assignment.  Avoids a problem if
+       the expression is read-only.
+       * typeck.c (smash_dummy_type):  Always used the saved TYPE_NAME
+       and CH_NOVELTY_FLAG.
+
+Wed Jul  6 20:12:13 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * expr.c, ch-tree.h (finish_chill_unary_op):  New function,
+       based on code ripped out of build_chill_unary_op.
+       (build_chill_unary_op):  Call finish_chill_unary_op unless pass==1.
+       * satisfy.c (satisfy):   Call finish_chill_unary_op when needed. 
+
+Mon Jun 27 11:29:18 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * tree.c (save_if_needed), ch-tree.h:  New function.
+       * typeck.c (build_chill_slice_with_range,
+       build_chill_slice_with_length):  Call save_if_neeed on array arg.
+       * expr.c (varying_to_slice):  Re-write to use save_if_needed.
+
+       * typeck.c (extract_constant_from_buffer):  Handle BOOLEAN_TYPE.
+
+Mon Jun 27 01:11:10 1994  Wilfried Moser  (moser@rtl.cygnus.com)
+
+       * inout.c (build_chill_io_list_type): Change layout of __tmp_WIO_list
+       that it is always the same, regardless if compiled with -fpack
+       or not.
+
+Tue Jun 14 16:44:14 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * lex.l (yywrap):  Kludge to work around mis-synchronization
+       between lexer (which read ahead) and parser:  Don't emit
+       (left-over) uze_seizefile directives at the end of file.
+
+       * typeck.c (build_chill_array_ref):  Allow the derived
+       array indexing syntax for arrays of bit strings.
+       Add a comment explaining why.
+
+       * typeck.c, ch-tree.h (string_assignment_condition):  Change
+       the interface.  Return a boolean expression (which can be
+       used in a conditional at run-time);  never expand anything.
+
+       * actions.c (chill_convert_for_assignment):  Check
+       string_assignment_condition here, rather than in callers.
+       * actions.c (chill_expand_assignment):  Don't need to check
+       string_assignment_condition here.
+       * expr.c (build_chill_function_call):  Likewise.
+       * satisfy.c (safe_satisfy_decl):  Update accordingly.
+       * decl.c (do_decl):  Simplify testing and conversion by
+       deferring everything to chill_convert_for_assignment.
+
+       * parse.c:  Combine the two variables 'ignore_exprs' and
+       'ignore_actions' into one variable called 'ignoring'.
+       * ch-tree.h:  Add 'extern int ignoring'.
+       * actions.c, except.c, parse.c, tasking.c, timing.c, typeck.c:
+       Rename ignore_actions and ignore_exprs to ignoring.
+       Remove unneeded extern declarations.
+       * expr.c (build_chill_indirect_ref, build_chill_component_ref,
+       build_chill_arrow_expr, build_generalized_call, build_delay_action,
+       build_buffer_type, build_event_type):  I changed my mind.  It is
+       cleaner to check for 'ignoring' in the parser, rather than here.
+       * parse.c (parse_action, parse_primval, parse_opt_mode):
+       Therefore we must check for ignoring here.
+       * parse.c (parse_loc_declaration):  Set ignoring in pass 2
+       when parsing the mode.
+       
+       * tasking.c (generate_tasking_code_variable):  Do arithmetic
+       on signal_code etc using unsigned rather than signed shorts.
+
+       * grant.c (static char* current_grant_modename):  Removed.
+       * grant.c (decode_decl case CONST_DECL):  Remove error message.
+
+       * Make-lang.in (CHILL_SRCS):  Add $(srcdir)/ch/parse.c.
+       * Makefile.in:  Fix dependencies for parse.o.
+       Remove some duplicate dependencies for $(TREE_H).
+
+Mon Jun 13 14:25:50 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * typeck.c (build_chill_cast):  Allow a value cast between
+       non-discrete object of the same size, but with a pedwarn.
+       * typeck.c (bit_string_assignment_condition,
+       char_string_assignment_condition):  Merge near-duplicate functions
+       and place the code in string_assignment_condition.
+
+       * decl.c (parm_flag, declare_parm_level, in_param_level_p):
+       Removed.  Not used.
+       * decl.c (start_chill_function, finish_chill_function):  Make
+       parameter level have same nesting level as body, as required by Z200.
+       * decl.c (switch_to_pass_2):  Always exit if an error has been found.
+       * decl.c (pop_module):  Copy DECL_SEIZEFILE to a new ALIAS_DECL
+       generated from GRANT ALL.
+       * decl.c (lookup_name_for_seizing):  Don't seize from
+       the nesting level of builtins (predefined objects).
+       * decl.c (lookup_name_for_seizing):  Make more robust on error.
+
+       * decl.c (start_chill_function):  MAKE DECL_NAME (chill_result_decl)
+       be 'RESULT' (or 'result').  This makes it more accessible from gdb.
+       Also, use do_decl to declare it, so that debugging symbols are
+       generated.  And, re-arrange so that actions that need to
+       be done both passes (such as push_levels) use the same code.
+
+       * parse.c (get_type_of):  If ignore_exprs, don't lookup name.
+       * parse.c (end_function):  Fix poplevel params.
+       * parse.c (expect):  Don't read forwards on an error.
+       * parse.c (parse_field):  Don't define two tag_list locals!
+       * parse.c (parse_pass_1_2):  Better error message.
+
+       * parse.c (parse_mode, parse_opt_mode):  Have parse_mode call
+       parse_opt_mode, rather than vice versa.  If parse_opt_mode
+       returns NULL_EXPR, then parse_mode gives an error.
+       Change parse_opt_mode (and any functions it calls) to only
+       return NULL_TREE if there is no mode (even on ignore_exprs).
+       (parse_set_mode, parse_structure_mode, parse_procedure_mode):
+       Never return NULL_EXPR.
+       * tasking.c (build_buffer_type, build_event_type):  Return
+       void_type_node instead of NULL_EXPR if ignore_exprs is true.
+
+       * parse.c (parse_synonym_definition):  Call parse_untyped_expr
+       only if we have a mode.
+       * parse.c (parse_send_action):  Parse list of untyped_expr's,
+       rather than a list of (typed) expressions.
+       * parse.c (parse_primval):  Emit error if '[' seen without
+       preceding mode name.  (If this is to be allowed, call
+       parse_untyped_expr instead.)
+
+       * parse.c (parse_array_index):  Renamed to ...
+       (parse_index_mode):  ... to match Z200 terminology.
+       Re-write to resolve some of the nastier ambiguities,
+       and allow things like ' CHAR(10) : CHAR(20) '.
+
+       * parse.c (parse_tuple_element):  Change interface to return
+       reversed list, so don't call nreverse.
+       * parse.c (parse_tuple):  No longer nreverse element list here.
+       * parse.c (parse_opt_element_list):  Do nreverse here instead.
+       * parse.c (parse_case_label_list):  Call nreverse at end.
+
+Fri Jun 10 15:36:22 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * typeck.c (chill_similar):  Remove bogus "else".
+
+Wed Jun  8 00:01:40 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-tree.h (TYPE_ARRAY_MAX_SIZE):  New macro (and comment)
+       to make it clearer that we are using TYPE_MAX_VALUE in a special way.
+       * typeck.c (build_chill_slice):  Use TYPE_ARRAY_MAX_SIZE.
+       * expr.c (chill_expand_expr case CONCAT_EXPR):  Likewise.
+       * convert.c (convert):  When converting a fixed string/array
+       to varying, and we need padding, set the TYPE_ARRAY_MAX_SIZE
+       of (the type of) the padding.
+       * convert.c (convert): If the concatenation is non-constant, use
+       the low-level 'build' to set the type of the result (which is usually
+       a fixed-size array) rather than depend on build_chill_binary_op
+       to figure it out (it's unable to simplify the size to a constant).
+
+Mon Jun  6 18:16:57 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * lang.c (lang_decode_option):  Let -fspecial_UC imply
+       -fno-ignore-case without requiring it explicitly.
+       * lang.c (lang_decode_option):  Support (experimentally)
+       the -fpack and -fno-pack flags.
+
+Thu Jun  2 20:49:51 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)
+
+       * configure: Add support for --program-prefix and --program-suffix.
+
+Tue May 31 18:12:00 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * convert.c (digest_constructor):  Check that initial value
+       is compatible with element mode before calling convert.
+       * typeck.c (chill_compatible):  A string mode is not compatible
+       with an untyped constructor.
+       * decl.c (do_decl):  Clean up error messages.  Use error_with_decl.
+
+       * ch-tree.h:  Fix inconsistencies: bool_true_node ->
+       boolean_true_node, and bool_false_node -> boolean_false_node.
+       * typeck.c (valid_array_index_):  Minor simplification.
+
+Tue May 31 04:33:28 1994  Wilfried Moser  (moser@rtl.cygnus.com)
+
+       * inout.c (build_chill_writetext): Add correct processing 
+       of POWERSET RANGE (setmode).
+
+       * lex.l (same_file): Add searching for file(s) in
+       seize_path_list.
+
+Fri May 27 14:22:42 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * Make-lang.c (CHILL.mostlyclean, CHILL.distdir):  Don't list
+       yacc/bison output files, since the grammer is no longer in yacc.
+       * config-lang.in (diff_excludes):  Likewise.
+
+Thu May 26 16:38:13 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * gperf, hash.h, lex.l, parse.h:  Rename PROCESS_TYPE token
+       (in some files spelled PROCESS_TYPE_ to avoid clashes
+       with the PROCESS_TYPE tree_code) to PROCESS_TYPE_TOKEN.
+
+Thu May 26 02:18:28 1994  Wilfried Moser  (moser@rtl.cygnus.com)
+
+       * timing.c (build_cycle_start): Change call to __define_timeout.
+       * decl.c (init_decl_processing): Change definitions of
+       __define_timeout and __wait_timeout.
+
+Wed May 25 11:53:09 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       Replace yacc-based parser with a recursive-decent parser.
+       (This may seem backwards, but Chill [like C++] is not a
+       language that is remotely LALR(1).  Using a R-D parser
+       allows us to use look-ahead and to back-up to resolve the
+       difficult ambiguities.)
+       * parse.y:  Removed.
+       * parse.c, parse.h:  New files, containing new r-d parser.
+       * Makefile.in:  Update accordingly.
+       * actions.c (chill_convert_for_assignment):  Don't return
+       NULL_EXPR if ignore_exprs is true.  It simplifies the parser
+       if we consistently reserve NULL_EXPR for a missing expression.
+       * expr.c (build_chill_function_call):  Likewise.
+
+       * lex.l:  Tweaks for new parser.
+       * lex.l (prepare_paren_colon, paren_paren_colon_level,
+       paren_level):  Ugly hack no longer needed.
+
+       * expr.c (build_chill_function_call):  Cleanup.
+       Call chill_convert_for_assignment to convert IN/INOUT
+       paramaters on both input and output.  For LOC parameters,
+       give error if actual is a non-referable location.
+       * actions.c (convert_for_assignment):  Add new parameter (a
+       "place" string used in error messages).
+       * actions.c (adjust_parm_or_field):  Removed.
+       * actions.c (chill_expand_assignment):  Take just a single LHS,
+       and move support for multiple assignments to ...
+       (expand_assignment_action): ... here.  Some cleaning up.
+       * timing.c (build_cycle_start):  Adjust accordingly.
+       * actions.c (expand_assignment_to_varying_array):  Likewise.
+       * tasking.c (many places): Ditto.
+       * ch-tree.h:  Fix declarations appropriately.
+
+       * parse.c (parse_defining_occurrence_list):  Return a single
+       IDENTIFIER_NODE (instead of a singleton list) in the common
+       case.  Minor complication to save a minor amount of space.
+       * decl.c (do_based_decls):  Move guts of code into ...
+       (do_based_decl):  ... this new function.
+       * decl.c (do_decls):  Handle either IDENTIFIER_NODE or a TREE_LIST.
+       * decl.c (push_syndecl):  Replace by ...
+       (push_syndecl):  ... (which only supports a single name).
+       (push_modedef):  Only handle a single name.
+       * tasking.c (build_process_header, build_signal_struct_type):
+       Adjust accordingly.
+
+       * expr.c (build_generalized_call):  Handle string repetition.
+       * expr.c (build_chill_repetition_op):  Change interface.
+       * grant.c (decode_constant):  Allow parameter list to be
+       a non-TREE_LIST.  (Used for string repetition.)
+
+Wed May 25 11:28:48 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * lex.l (make_identifier):  Replaced by ...
+       (read_identifier, handle_name): ... new functions.
+       * lex.l: Parse an identifiers using read_identifier using
+       read_identifier and handle_name, rather than having [f]lex
+       do it.  (One reason is that lex uses a fixed-size buffer.)
+
+       * lex.l (read_directive, skip_directive):  New functions.
+       Use them to parse compiler-directives, instead of rather
+       ugly and useless use of lexer start conditions.
+
+Tue May 24 22:36:51 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * decl.c (unnamed_module_number):  Renamed to ...
+       (module_number):  .. and make non-static.
+       (push_module):  Always increment module_number.
+       * lex.l (yywrap):  Print warning if no modules seen.
+
+       * decl.c (pop_module):  Don't set DECL_SEIZEFILE of granted
+       decl to current_seizefile_name (which is unreliable).
+       * grant.c (chill_grant):  Set it here instead.
+
+       * expr.c (fold_set_expr):  Use int_size_in_bytes instead of
+       TYPE_PRECISION (which is not defined for a SET_TYPE).   
+
+Fri May 20 15:21:26 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       Cleanup to remove need for variables in common storage.
+       * decl.c:  Remove unused use of current_obstack.
+       * actions.c (maybe_chill_check_decl):  Remove unused function.
+       * actions.h, lang.c:  Remove uses of doing_chill_thang.
+       * ch-tree.h (void_list_node):  Make extern (rather than common).
+       * decl.c (void_list_node):  Add definition.
+
+Thu May 19 06:54:56 1994  Wilfried Moser  (moser@rtl.cygnus.com)
+
+       * configure (build): Build canon_host and canon_target
+       to pass it to all subsequently generated Makefiles (needed
+       for testsuite/execute in case of cross build).
+
+Wed May 18 13:27:12 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * grant.c (decode_mode):  Remove.  It checks the TYPE_NAME of
+       the input type, which loses with the no-longer-new 2-pass
+       implementation, since the input "type" could be an IDENTIFIER_NODE.
+       * grant.c (raw_decode_mode):  Rename to decode_mode.
+
+Tue May 17 13:19:52 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * typeck.c (chill_location):  Neither a STRING_CST nor a
+       CONSTRUCTOR is a location.
+       * typeck.c (chill_root_mode):  Convert a function to a
+       pointer-to-function.
+       * expr.c (build_chill_indirect_ref, build_chill_component_ref,
+       build_chill_arrow_expr):  If ignore_exprs, return operand
+       rather than NULL_EXPR.  This makes it easier for the parser to
+       distinguish missing expressions.
+       * expr.c (build_max_min):  Convert the lower bound of a
+       set to a long before calling run-time routine.
+       * expr.c (build_chill_pred_or_succ):  Use discrete_type_p
+       to check the argument type.
+       * expr.c (build_chill_arrow_expr):  If argument is not a location,
+       do a predwarn if it is a STRING_CST or has function type.
+
+Tue May 17 06:05:13 1994  Wilfried Moser  (moser@rtl.cygnus.com)
+
+       * configure (build): Remove building of canon_host and canon_target.
+       It doesn't work in any case.
+
+Mon May 16 02:10:35 1994  Wilfried Moser  (moser@rtl.cygnus.com)
+
+       * configure (build): Build canon_host and canon_target
+       to pass it to all subsequently generated Makefiles (needed
+       for testsuite/execute in case of cross build).
+       * Make-lang.in (chill-runtime): Change chill to CHILL in the case
+       statement to build chill-runtime automatically.
+
+Mon May  9 15:30:08 1994  Doug Evans  (dje@canuck.cygnus.com)
+
+       * Makefile.in (FLAGS_TO_PASS): Define.
+       (OBJDEPS): Define.
+       (../cc1chill): Depend on $(OBJDEPS) $(C_OBJS).
+       * Make-lang.in (cc1chill): Delete dependency on $(OBJS) $(BC_OBJS).
+       (CHILL.mostlyclean): Use `mostlyclean' as recursive target.
+
+Sun May  8 13:05:00 1994  Per Bothner  (bothner@cygnus.com)
+
+       * Make-lang.in (cc1chill):  Should not depend on libgcc.a.
+
+Thu May  5 18:58:22 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * decl.c (copy_lang_decl):  New (dummy) function.
+
+Mon May  2 14:33:44 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * parse.y (sendaction):   Fix thinko (in sense of condition).
+       * tasking.c (build_receive_case_label):  Another thinko.        
+
+       * parse.y (optsigdest):  Force ignore_exprs to 0 while parsing
+       the (signal-)name.
+
+       * decl.c (build_chill_function_type):  Don't call layout_type
+       (since that may prevent parameter or result types being
+       properly satisfied).
+       * satisfy.c (satisfy):  Layout FUNCTION_TYPEs.
+       * parse.y (procmode):  Call build_chill_pointer_type, rather
+       than build_pointer_type (which incorrectly sets TYPE_SIZE). 
+
+       * parse.y (get_type_of):  Handle TYPE_DECL (again).
+       * parse.y (optresultspec):  Call build_chill_reference_type, rather
+       than build_reference_type (which incorrectly sets TYPE_SIZE).
+       * parse.y (range_or_mode):  Rename to plain range, since it
+       no longer matches modename.
+       * actions.c (chill_handle_case_label_range):  New function, with
+       functionality moved out of chill_handle_case_label.
+       * actions.c (chill_handle_case_label):  Handle here the case that
+       the label_value is a TYPE_DECL (modename).   Also clean up some.
+       * typeck.c (build_chill_slice_with_length):  Convert max_index
+       to the type of min_value.  (Old code broke on varying strings.)
+
+Sun May  1 13:53:36 1994  Doug Evans  (dje@canuck.cygnus.com)
+
+       * Makefile.in (BC_OBJS): Delete all references
+       (OBJS): Cat ../stamp-objlist to get language independent files.
+       (../cc1chill): Delete dependency on $(OBJS).
+       * Make-lang.in (cc1chill): Depend on stamp-objlist.
+
+Sat Apr 30 14:50:15 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * lex.h, lex.c:  Remove lastiddecl.
+       * lex.l (name_type_signal):  Simplify.  We no longer check for
+       TYPENAME or SIGNALNAME (which was unreliable with two passes).
+       Also rename to make_identifier.
+       * parse.y:  Cleaned up grammar to not need SIGNALNAME or TYPENAME.
+       * Makefile.in (stamp-parse);  One conflict fewer!
+       * parse.y (rccase_label_flag):  Moved to tasking.c.
+       * parse.y (rccase_label):  Move most of the logic to
+       build_receive_case_label in tasking.c.
+       * parse.y (sendaction):  Re-write to not depend on SIGNALNAME.
+
+       * parse.y (name):  Do name lookup here (and not in location).
+       * parse.y:  Replace most uses of NAME by higher-level non-terminals:
+       simple_name_string, name_string, defining_occurrence, or name.
+
+       * tasking.c (build_receive_signal_case_label,
+       build_receive_buffer_case_label):  New functions, split out from
+       build_receive_case_label.
+       * tasking.c (build_receive_case_label):  Change parameters
+       and return type.  Moved stuff here (from the parser).
+       * tasking.c (struct rc_state_type):  Removed had_errors.
+       Return error_mark_node instead.
+       * tasking.c (build_rccase_set_error), ch-tree.h:  Removed.
+
+       * expr.c (build_generalized_call):  If func is a signal type,
+       call build_signal_descriptor.
+
+       * parse.y (arrayindex):  Renamed to index_mode, to match Z.200.
+       * parse.y (ioindexmode):  Removed;  use index_mode instead.
+       * expr.c (build_generalized_call):  If args is a RANGE_EXPR,
+       we have either a slice or a range mode, depending on func.
+       * parse.y (index_mode):  If we got an 'expr', only allow a name,
+       or a range mode.
+       * parse.y (call):  A slice with both end points can be a range
+       mode, so defer handling to build_generalized_call (or index_mode).
+
+       * typeck.c (build_chill_slice_with_length):  Fix type-checking.
+       * typeck.c (chill_novelty):  Undo (part of) change of April 28:
+       The novelty of a range mode is the novlety of the parent.
+       * typeck.c (chill_root_mode):  Don't return integer_type_node
+       if argument has non-nil novelty.
+
+       * decl.c (global_bindings_p):  Return -1 as true, for the sake
+       of variable_size (in ../stor-layout.c).
+
+Fri Apr 29 13:42:43 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * parse.y:  Remove TYPENAME and modename.  These are now plain
+       NAMEs.  Modify parsing actions appropriately.
+       * expr.c (build_generalized_call):  Handle the case that
+       TREE_CODE (func) == TYPE_DECL (as in a cast).
+       * lex.l (name_type_signal):  Never return TYPENAME.
+       * parse.y (get_type_of):  If pass 1, just return the argument.
+
+       * decl.c (do_decl):  If an initializer has the wrong type,
+       replace it by NULL_TREE, to avoid subsequent errors.
+
+Thu Apr 28 15:21:56 1994  Wilfried Moser  (moser@rtl.cygnus.com)
+
+       * Makefile.in: Add new file timing.c to rules.
+       * timing.c: New file. Implements the timing actions AT,
+         CYCLE and AFTER.
+       * decl.c (init_decl_processing): Add new builtin function
+         descriptions.
+       * expr.c (build_chill_indirect_ref): Change error message and
+         add check agains an IDENTIFIER_NODE.
+       * gperf, hash.h: Change EVENT_CODE, BUFFER_CODE to IGNORED_DIRECTIVE.
+         They are no longer needed.
+       * grant.c (print_integer_type): Add processing of builtin types
+         DURATION and TIME.
+       * lex.l: Remove processing of directive EVENT_CODE & BUFFER_CODE.
+       * parse.y (timingactions): split up to afteraction, ataction
+         and cycleaction.
+       * parse.y (afteraction): New rule.
+       * parse.y (ataction): New rule and put actions in.
+       * parse.y (cycleaction): New rule and put actions in.
+       * parse.y (sendaction): Add code for SEND buffer.
+       * parse.y (rccase_label): Change error processing.
+       * tasking.c (build_gen_inst): More checks.
+       * tasking.c (build_gen_code): Add checking for argument is a 
+         PROCESS or a SIGNAL.
+       * tasking.c (struct rc_state_type): Add new fields for easier
+         error processing.
+       * tasking.c (build_receive_case_if_generated), ch-tree.h: New function.
+       * tasking.c (build_rccase_set_error), ch-tree.h: New function.
+       * tasking.c (build_receive_case_label): Add processing of BUFFER's.
+       * tasking.c (build_receive_buffer_case_end, build_receive_signal_case_end):
+         New functions to process the end of a RECEIVE CASE action in case
+         of BUFFER's and SIGNAL's.
+       * tasking.c (build_receive_case_end): Do only general processing and
+         call one of the above mentioned functions.
+       * tasking.c (build_delay_case_start, build_delay_case_label,
+         build_delay_case_end): Rewritten due to new implementation of events.
+       * tasking.c (build_delay_action): Rewritten due to new implementation
+         of EVENT's.
+       * tasking.c (expand_send_buffer), ch-tree.h: New function.
+       * timing.c (build_at_action, build_cycle_start, build_cycle_end),
+         ch-tree: New functions.
+
+Thu Apr 28 14:11:29 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * typeck.c (smash_dummy_type):  Handle the special case of a
+       NEWMODE of a range mode, as required by Z200, by creating a
+       new parent mode with the new novelty (and casting the min
+       and max of the range to teh new parent mode).
+       * typeck.c (chill_novelty, chill_root_mode):  Remove special
+       kludges for of NEWMODE ranges.
+       * expr.c (build_chill_lower_or_upper):  New function, combining
+       the "guts" of build_chill_lower and build_chill_upper.
+       * expr.c (build_chill_lower_or_upper):  Simplify;  no longer
+       need to kludge the novelties.
+
+       * typeck.c (valid_array_index_p):  A string index expression
+       need not be Compatible with the index type;  only similar.
+
+       * decl.c (layout_chill_variants):  If error seen, skip stuff
+       (rather than aborting or crashing).
+       * decl (push_modedef):  If newdecl's type is an error mark,
+       continue rather than aborting.
+
+Thu Apr 28 02:07:42 1994  Doug Evans  (dje@cygnus.com)
+
+       * Make-lang.in: Update of directory reorg from fsf.
+       * config-lang.in: Ditto.
+
+Mon Apr 25 13:09:46 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * typeck.c (chill_similar):  Check RECORD_TYPEs properly,
+       * convert.c (convert):  If all else fails, just call convert1.
+       Thus we can now convert RECORD_TYPEs (assuming they are similar).
+
+       * parse.y, lex.l:  Remove BUFFERNAME (use location/expr instead).
+       * parse.y:  Re-do BUFFER handling (similar to previous EVENT change).
+       * grant.c (raw_decode_mode):  Re-do BUFFER mode handling.
+       * ch-tree (lang_type_record):  Removed max_queue_size field.
+       * tasking.c (build_buffer_type):  Re-write.
+       * tasking.c (max_queue_size):  Fix to support buffer modes.
+       * tasking.c (buffer_element_mode), ch-tree.h:  New function.
+       * tasking.c ch-tree.h (expand_send_buffer):  Now has 3 parameters.
+       * parse.y (modename):  No longer match SIGNALNAME.  Instead, add it
+       to name and simple_name_string.  This removes a reduce/reduce conflict.
+       * Makefile.in (stamp-parse):  Expect fewer conlicts.
+
+       * lex.l (yywrap):  Move check for circularly seizeing current
+       grant-file from here ...
+       * lex.l (handle_use_seizefile_directive):  ... to here.
+       This is to avoid calling stat on a not-yet written grantfile,
+       now that we're using same_file (which calls stat).
+       * grant.c (set_use_this_gf):  Removed.
+       * grant.c (set_default_grant_file):  Set grant_file_name here,
+       because we need it earlier (due to above lexer change).
+
+       * typeck.c (layout_chill_struct_type):  Remove useless code to
+       remove zero-width bitfield (which messes up CONST_DECLs).
+
+Sat Apr 23 13:16:39 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * Makefile.in (check): Assure that 'ld' is available before checking.
+
+Thu Apr 21 13:23:54 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * grant.c (print_an_int):  Removed.
+       (raw_decode_mode):  Generalized to use decode_constant
+       instead of print_an_int.
+       (decode_constant):  Print directly, instead of calling print_an_int.
+       * parse.y (event_list):  Fix syntax.
+       * parse.y (optqueuesize):  Default is NULL_TREE, not zero.
+       * tasking.c (check_queue_size):  New function, for error checking.
+       * ch-tree.h:  Add declaration for check_queue_size.
+       * satisfy.c (satisfy case RECORD_TYPE):  Satisfy constant fields
+       (used for queue size of EVENT and BUFFER), and call check_queue_size.
+
+Tue Apr 19 13:42:41 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       Re-implement EVENT modes to support general EVENT objects
+       (and not just EVENT names), according to Z200.  (Not finished!)
+       * tasking.c, ch-tree.h (max_queue_size):  New function.
+       * parse.y (dcalternative, event_list, event_list_head):  New
+       implementation of DELAY CASE, avoiding parsing ambiguities.
+       (call, locdec, delayaction):  Remove old EVENTNAME kludges.
+       * lex.l (name_type_signal):  Remove EVENTNAME recognition.
+       * tasking.c (build_event_type):  Re-written.
+       * typeck.c (chill_similar), decl.c (print_lang_type):
+       Use new max_queue_size function.
+       * typeck.c (layout_chill_struct_size):  Ignore CONST_DECL.
+       * tasking.c (build_delay_action):  Preliminary changes - just to
+       make it compile.  FIXME!
+       * grant.c (raw_decode_mode):  Use new max_queue_size function.
+       Move EVENT support from LANG_TYPE to RECORD_TYPE.
+       * ch-tree.h (process_event_decls):  Removed.
+
+Tue Apr 19 11:44:01 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * regression.sh: Complete previous change - eliminate all
+         references to objdir as a user parameter.
+
+Mon Apr 18 10:17:55 1994  Bill Cox  (bill@cygnus.com)
+
+       * Makefile.in (check): Simplified regression.sh call.
+       * regression.sh: Change command-line parsing.  Default
+         srcdir to the script's path.  Calculate objdir
+         internally - don't pass it in.
+
+Thu Apr 14 13:30:19 1994  Wilfried Moser  (moser@phishhead.cygnus.com)
+
+       * expr.c (build_chill_duration): Add range checking.
+
+       * lex.l (init_lex): Add predefined names DURATION and TIME.
+       * lex.h (enum rid): Add RID_DURATION and RID_TIME.
+       * ch-tree.h: Add prototypes and externals.
+       * decl.c (init_decl_processing): Add builtin function
+       descriptions.
+       * expr.c (build_generalized_call): Add processing of some
+       builtin's.
+       * expr.c (build_chill_abstime): New function to process builtin
+       ABSTIME.
+       * expr.c (build_chill_inttime_type): New function to built type
+       for the INTTIME builtin.
+       * expr.c (build_chill_inttime): New function to process builtin
+       INTTIME. 
+       * expr.c (build_chill_duration): New function to process builtin's
+       MILLISECS, SECS, MINUTES, HOURS and DAYS.
+
+Tue Apr 12 11:55:45 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * lex.l (chill_same_grant_file):  Rename to same_file.  Change to
+       take two files names rather than two DECLs.  Also check that the
+       filesystems (st_dev) are equal.  Finally, make static.
+       * lex.l (handle_use_seizefile_directive):  Check for duplicate
+       USE_SEIZE_FILE directives using same_file.
+       * decl.c (pop_module):  Remove dubious call to chill_same_grant_file.
+
+Sun Apr 10 17:19:56 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * decl.c, ch-tree.h (chill_result_decl):  New variable.  Used to
+       store RESULT value.  (Cannot use DECL_RESULT;  see comment in decl.c.)
+       * actions.c (chill_expand_result, chill_expand_return):
+       Use chill_result_decl appropriately.
+       * ch-tree.h, decl.c, actions.c (saved_result_rtx):  Removed.
+       Subsumed by chill_result_decl.
+
+       * expr.c (chill_expand-expr case CONCAT_EXPR):  Generate temporary
+       using the mode of the result type, and don't assume it is BLKmode.
+
+Fri Apr  8 17:46:13 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * actions.c (chill_expand_assignment):  Check for compatibility
+       _after_ "expanding out" a binary operation.  This fixes
+       the case "STRING //:= CHAR".
+
+       * lex.l (equal_number):  Convert symbol to integer_type_node, to
+       force the value to be INT-derived (and avoid novelty conflicts).
+
+Mon Apr  4 22:06:31 1994  Per Bothner  (bothner@cygnus.com)
+
+       * ch-tree.h (CH_FUNCTION_SETS_RESULT):  New flag.
+       * ch-actions.c (chill_expand_return), ch-tree.h:  Extra
+       parameter, indicates if implicit return at end of function.
+       * ch-parse.y:  Modify accordingly.
+       * ch-actions.c (chill_expand_return):  Various improvements.
+
+       * decl.c, ch-tree.h (result_never_set):  New variable.
+       * actions.c (chill_expand_result, chill_expand_return):  Clear it.
+       * ch-parse.y (end_function):  Warn if no RETURN or RESULT action.
+
+       * decl.c, ch-tree.h (saved_result_rtx):  New variable.
+       * decl.c (start_chill_function):  Use saved_result_rtx as return
+       value if there is a RESULT in a REG that might get clobbered.
+       * actions.c (chill_expand_result):  Save result in saved_result_rtx
+       or assign to DECL_RESULT as appropriate.
+       * decl.c, ch-tree.h (current_function_returns_value,
+        current_function_returns_null, current_extern_inline):
+       Don't use.  Only define first two to allow linking with ch-typeck.c.
+
+       * typeck.c (chill_l_equivalent):  Add forward declaration.
+
+Fri Apr  1 11:02:27 1994  Wilfried Moser  (fs_moser at rcsw47)
+
+       * lex.l (readstring): Handle control sequence in all cases (Z.200
+       5.2.4.4 page 54).
+
+Fri Apr  1 13:11:27 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * configure:  Simplify and fix the logic for looping through
+       sub-directories.
+
+Thu Mar 31 18:59:57 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-tree.h (CH_L_EQUIVALENT):  Moved from typeck.c.
+       * typeck.c (chill_similar):  Add support for checking
+       FUNCTION_TYPEs for similarity.  Also, treat
+       pointer-to-function-type the same as function-type.
+
+Thu Mar 31 11:22:56 1994  Wilfried Moser  (fs_moser at rcsw47)
+
+       * ch-tree.h: Change prototype of function expand_send_signal.
+       * parse.y: Change calls to expand_send_signal.
+       * tasking.c (expand_send_signal): Change handling of optsetto
+       argument. New argument signame to get a possible destination
+       process for the signal.
+
+Wed Mar 30 14:54:48 1994  Wilfried Moser  (fs_moser at rcsw1j)
+
+       * tasking.c (make_process_struct): Change error message in case of
+       a process argument has other attribute then IN or LOC.
+       * tasking.c (build_start_process): Add check that the optset is
+       referable in case it is specified (this makes
+       noncompile/start_.ch working).
+
+Tue Mar 29 13:24:27 1994  Wilfried Moser  (fs_moser at rcsw1h)
+
+       * Makefile.in: Change version string to 1.2.1
+       * ch-tree.h (enum chill_built_in_function): Delete no longer valid
+         entries. 
+       * ch-tree.h: Change prototype for build_chill_readtext.
+       * decl.c (init_decl_processing): Add builtin_function _readstring,
+         _readunixstd and READTEXT.
+       * expr.c (build_generalized_call): Add processing of READTEXT.
+         Delete handling of no longer valid builtin_functions.
+       * gperf: Remove keyword READTEXT.
+       * parse.y: Remove token READTEXT.
+       * inout.c (build_chill_io_list_type): Add building type for
+         READTEXT. 
+       * inout.c (build_chill_readtext): Implement the function
+         (partial).
+       * inout.c (build_chill_writetext): Do some cleanups.
+
+Tue Mar 29 12:30:59 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * typeck.c (build_chill_cast):  Re-arrange, to support casts
+       of const integer to type of different size, if there is
+       an integral type of the desired size:  Go through the
+       const conversion code.
+
+       * actions.c (adjust_parm_or_field):  Move support for LOC to ...
+       * expr.c (build_chill_function_call): ... here.
+       Fix a number of bugs in OUT/INOUT handling.
+
+       * ch-tree.h, actions.c (adjust_parm_or_field), grant.c (print_struct),
+       parse.y (location), typeck.c (chill_comptypes):  Remove unused
+       support for ENCAPSULATED_ARRAY_P.
+       * typeck.c (build_chill_array_parm_type), ch-tree.h:  Remove; unused.
+
+       * ch-tree.h, decl.c (shadow_record_fields), decl.c
+       (shadow_record_fields), expr.c (chill_expand_case_expr,
+       build_chill_function_call), grant.c (chill_finish_compile),
+       typeck.c (build_empty_string, build_init_struct):  Rename magic 
+       identifiers of the form "<...>" to "__..." for better portability.
+
+       * actions.c (adjust_parm_or_field):  Remove extraneous
+       call to build_chill_repetition_op.
+       * expr.c (build_chill_function_call):  Some simplifictions
+       (since neither valtail nor typetail can be NULL).
+       Clean up error message for OUT//INOUT not location to use only 1 line.
+       Add error message for OUT/INOUT if type is READonly.
+       * typeck.c (build_chill_modify_expr):  Simplify.
+
+Sun Mar 27 19:30:25 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * Makefile.in: Clean up generally.  Assure that
+         runtime is built before running regressions.
+         Build correct parameters to regression.sh.
+         Remove a lot of 'clean' cruft.
+       * Make-lang.in, config-lang.in: New files for
+         subdirectory architecture.
+
+Sat Mar 26 10:39:12 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * Makefile.in (check): Build correct parameters for regression.sh.
+
+Fri Mar 25 10:13:06 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * configure: Also mark regression.awk3 as executable.
+       * regression.sh: Add comments about command-line options.
+         Calculate srcdir correctly, defaulting to the script's path.
+         Add OPT flag to pass to the Makefiles, to specify the
+         compiler's optimization level, and -O  and -O2 options.
+         Delete GLOBAL flag and tests.  Use a different make.log
+         file for optimized and unoptimized test results.  Add the
+         compiler's host and target triples to the report header.
+
+Wed Mar 23 21:41:26 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * expr.c (build_chill_function_call): Handle INOUT and OUT
+         parameters better (for the rangefail test, at least).
+
+Wed Mar 23 14:13:45 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * regression.sh (srcdir, objdir):  Fixed hard-wired paths.
+       (grep args):  Changed [XYZ-] to [-XYZ] for SCO.
+
+Wed Mar 23 13:34:18 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * expr.c (build_generalized_call): Revert previous change.
+         To do this correctly, we need a new parsing mechanism, and
+         C++ initializer technology.
+
+Wed Mar 23 09:34:50 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * expr.c (build_generalized_call): Be sure we're inside the
+         module-level function before calling build_gen_inst, for
+         example.
+
+Wed Mar 23 09:34:50 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * regression.sh (dodirectory): Count the gcov and abort tests
+         among the .dat files.
+
+Tue Mar 22 15:39:38 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * satisfy.c (safe_satisfy_decl):  When checking that a SYN
+       value fits in a specified discrete type, don't convert first,
+       and use compare_int_csts instead of tree_int_cst_lt.
+
+Tue Mar 22 15:25:38 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * configure: Generate better .gdbinit files.
+
+Tue Mar 22 11:59:38 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * actions.c (check_range):  Don't emit dynamic checks
+       if not current_function_decl.
+
+       * parse.y (arrayindex):  Allow expr (error is emitted
+       at semantic level if not the NAME of a type).
+       * typeck.c (build_chill_cast):  Re-enable some casts.
+       * satisfy.c (safe_satisfy_decl):  Remove redundant CONST check.
+
+Tue Mar 22 11:46:28 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * configure: Access the utils directory correctly.
+       * expr.c (build_compare_expr): Reenable compatibility test.
+
+Tue Mar 22 11:24:45 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * typeck.c (valid_array_index_p):  Call
+       build_compare_discrete_expr instead of build_compare_expr.
+       * typeck.c (build_chill_cast):  Improve logic.
+       * satisfy.c (safe_satisfy_decl):  Simplify test.
+
+Tue Mar 22 10:17:58 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * actions.c (chill_expand_assignment): Correct detection of
+         string assignment case.
+       * expr.c (chill_expand_expr): Now that we're using build_chill_function_call,
+         the actual parameters need to be converted to the unsigned long
+         type explicitly.  Do that.    
+       * satisfy.c (safe_satisfy_decl): Correct range-checking code.
+
+Mon Mar 21 16:25:07 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * Makefile.in: Correct prediction of grammar conflicts.
+       * actions.c(check_range): Fix reference to NULL_TREE pointer.
+         And allow compile-time errors even if range_checking is off.
+       * parse.y: Clean up some comments.
+       * satisfy.c (safe_satisfy_decl): Add range-check for a SYN's value.
+
+Mon Mar 21 13:29:23 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * typeck.c (layout_chill_range_type):  Instead of tree_int_cst_lt
+       use compare_int_csts (which is more robust when signedness differs).
+       Also, convert the bounds *after* doing range checking.
+
+       * ch-tree.def (SET_IN_EXPR):  New.
+       * expr.c (chill_expand_expr):  Code to expand SET_IN_EXPR,
+       moved from expand_expr in ../expr.c.  Also add some extra
+       conversions (because we're now using build_chill_function-call).
+       * actions.c, decl.c, expr.c, grant.c, parse.y, typeck.c: 
+       Use SET_IN_EXPR in place of IN_EXPR.
+
+       * expr.c (build_compare_discrete_expr), ch-tree.h:  New function,
+       with code moved from build_compare_expr.
+       * expr.c (build_compare_expr):  Re-enable compatibility test.
+
+Mon Mar 21 11:02:33 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * Makefile.in: Rewrite byacc related rules.
+       * actions.c (chill_convert_for_assignment): Use the
+         referenced type only for generating range checks.
+       * configure: Add 'utils' directory to SUBDIRS variable.
+
+Sun Mar 20 21:49:59 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * actions.c (check_range): Call build_compare_expr rather than
+         build_binary_op.
+         (adjust_parm_or_field): Call convert_for_assignment rathern than
+         convert, to get the range-checking.
+       * expr.c (build_chill_pred_or_succ): Fix up rangefail code.
+         Generate a compile-time message if possible.
+         (build_compare_expr): Comment out compatibility test - should
+         not be needed in here.  Fix a couple of typos.  Add some types
+         to some build calls.
+
+Sun Mar 20 11:48:10 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * decl.c (init_decl_processing):  Clean up parameter type
+       list for __setbitpowerset,
+
+       * typeck.c (chill_compatible_classes):  Allow the M-reference
+       to be compatible with the N-value class, with suitable M and N.
+       * typeck.c (build_chill_slice):  Don't smash a void TREE_TYPE.
+       (We don't need to, and it causes confusion.)
+
+       * expr.c (build_compare_expr):  Fix thinko.  Add save_exprs.
+
+       * expr.c (build_compare_expr):   Fix a transcription bug
+       (for converting NULL INSTANCEs).  Also #include convert.h.
+
+       * expr.c (compare_int_csts):  New.  Compare INTEGER_CSTs.
+       Works even if their types have different TREE_UNSIGNED.
+       * expr.c (finish_chill_binary_op):  Moved code dealing with
+       the comparison operators from here ...
+       * expr.c (build_compare_expr):  ... to new function here.
+       Also, for discrete types, tries to Do The Right Thing, even for
+       differing values of TYPE_PRECISION and TREE_UNSIGNED.
+       the code from lay
+       * ch-tree.h:  Declare new functions.
+       * typeck.c (valid_array_index_p):  Various cleanups,
+       including using new build_parse_expr.
+       * parse.y:  Use new build_compare_expr.
+
+       * inout.c (build_chill_writetext):  Handle REFERENCE_TYPE args.
+
+Sun Mar 20 08:54:27 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * actions.c (expand_assignment_to_varying_array): 
+         Call build_chill_array_ref to get index checking.
+          (chill_convert_for_assignment): Delete unused errstr
+          variable.
+         (chill_expand_assignment): Call build_chill_array_ref
+         to get runtime index checking.
+         (expand_varying_length_assignment): Use new interface
+          to varying_array_index_p.
+       * ch-tree.h (varying_array_index_p): New proto.
+       * convert.c (convert): Call build_chill_array_ref
+         to get runtime index checking.
+       * expr.c (build_chill_pred_or_succ): Fix cond tree
+         to have consistent operand types.
+       * typeck.c (valid_array_index_p): Change interface to pass
+         validity conditions back on caller's TREE_LIST.  We
+         cannot link the conditions to anything which a
+         layout_type routine will expand, since that will occur
+          before the exception handler is set up.
+         Change calls to valid_array_index_p also.
+
+Fri Mar 18 14:40:50 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * actions.c, except.c, loop.c, tasking.c:  Call
+       build_chill_function_call instead of the C-specific
+       build_function_call.
+       * except.c (initialize_exceptions):  Fix parmtype of __builtin_setjmp.
+       * loop.c (top_loop_end_check):  Coerce library function arg.
+       * convert.c, expr.c:  Re-write to avoid calls to C-specific
+       function build_unary_op (e.g. by calling build1 directly).
+
+       * typeck.c (chill_equivalent):  Change to force failure
+       for non-matching integral types (even if not ranges).
+
+       * typeck.c, ch-tree.h (build_chill_slice):  Make non-static.
+       * expr.c (varying_to_slice):  Call build_chill_slice (and not
+       build_chill_slice_with_length, which does bunches of range
+       checking and does not allow the length to be zero).
+       * convert.c (convert):  Fix off-by-one error.
+       * actions.c (chill_expand_array_assignment):  Minor cleaning up.
+
+Fri Mar 18 00:12:48 1994  Per Bothner  (bothner@deneb.cygnus.com)
+
+       * decl.c (init_decl_processing):  __lepowerset and __ltpowerset
+       take *two* pointer parameters, not one.
+       * satisfy.c (satisfy):  Only call the appropriate layout routine
+       if TYPE_SIZE is 0 (i.e. type hasn't already been laid out).
+       * typeck.c (build_chill_slice_with_length):  Fix Bill's previous fix.
+
+Thu Mar 17 17:29:43 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * expr.c (build_chill_function_call): Give function call the correct
+          type tree.
+       * typeck.c (build_chill_slice_with_length): Restore dynamic range
+         checking, so it doesn't obscure the CONSTANTness of the length.
+
+Wed Mar 16 17:23:31 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * typeck.c (build_chill_slice), expr.c (chill_expand_expr
+       [case CONCAT_EXPR]):  Remove kludge setting slice size upper bound
+       in TYPE_LANG_SPECIFIC, and restore kludge setting it in MAX_VALUE.
+       * typeck.c (build_chill_slice):  Use TYPE_MAX_VALUE of
+       array_type if needed for size upper bound of slice_type.
+       * expr.c (build_concat_expr):  Improve calculation of size upper bound.
+
+       * typeck.c (valid_array_index_p):  Check compatibility using
+       correct types.
+       * typeck.c (build_chill_slice_with_length);  For now revert
+       calling valid_array_index_p on length.  (It makes it harder 
+       to realize when the slice is constant length.)
+       * expr.c (build_chill_indirect_expr):  Minor tweak.  (This
+       seems to work around a weird C compiler bug. ??)
+
+       * expr.c (build_chill_function_call):  Cleanup so it doesn't
+       call build_function_call (in c-typeck.c).
+       * typeck.c, expr.c:  Use build_chill_function_call instead of
+       build_function_call (in c-typeck.c).
+
+       * parse.y (discrete_mode):  Move some of the rules from
+       non_array_mode into new non-terminal.
+       (arrayindex):  Use discrete_mode (with NAME and TYPENAME) to
+       avoid some misparses.
+       * ch-tree.h (SLICE_PTR, SLICE_LENGTH):  Removed;  unused.
+       * convert.c (digest_structure_tuple):  Add missing parameter.
+       * decl.c (comptypes):  Remove unused prototype.
+       * decl.c (build_chill_function_type):  Handle NULL return_type
+       correctly (convert to void_type_node).
+       * decl.c (init_decl_processing):  layout boolean_type_node *after*
+       we've set it's TYPE_MIN_VALUE and TYPE_MAX_VALUE.
+
+Wed Mar 16 16:08:22 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-tree.h: Add prototype.
+       * convert.c (convert): Correct calculation of padding length.
+       * decl.c (grok_chill_fixedfields): Move ignore_exprs test to
+         parse.y where it belongs.  This permits the removal of a kludge
+         in make_process_struct.
+       * lex.l, parse.y: Call to_global_level for several errors.  Add
+         code to output error in only one pass.
+       * tasking.c (make_process_struct): Delete kludge inserted on
+         March 8.
+         (build_receive_case_end): Add Wilfried's check for errors.
+
+Tue Mar 15 08:42:12 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * actions.c: Fix comment.
+         (build_rts_call): Ifdef it out - never used.
+         (expand_varying_length_assignment): call valid_array_index_p.
+          rather than validate_varying_array_ref.
+       * ch-tree.h: Fix prototype for valid_array_index_p.
+       * expr.c (chill_expand_expr): Call build_chill_array_ref to get
+         index validation.
+          (build_hill_lower, build_chill_upper): Return value now inherits
+         the novelty of the input parameter.
+         (varying_to_slice): Use CH_NOVELTY macro rather than calling
+         chill_novelty directly.
+       * grant.c (newstring): Make len unsigned and cast xmalloc parameter
+         to unsigned.
+         (print_integer_type): Pass string value as APPEND's second parameter.
+         (decode_decl): Pass a boolean expression as print_proc_tail's
+         first parameter.
+         (chill_finish_module_code): Make xmalloc's parameter unsigned.
+       * lex.l: Pass sizes to xmalloc as unsigned ints.  Pass second
+         parameter to in_word_set as unsigned.
+       * loop.c (build_loop_start): Check top_loop_end_check return value.
+       * parse.y: Add casts to int for third do_decls parameter, fifth
+         build_loop_iterator parameter, etc.
+       * tasking.c (build_receive_case_end): Chack cond_stack before popping.
+       * typeck.c (validate_varying_array_ref, chill_max_vary_array_index,
+          valid_array_index): Delete them.  They're now unused.
+         (valid_array_index_p): Add function, call it everywhere that an
+         array index is checked.
+         (build_chill_slice): Restore old functionality where varying_to_slice
+         is called to handle slices of varying arrays, rather than handling
+         handling them here.
+         (build_chill_slice_with_range, build_chill_slice_with_length):
+         Check range limits for TREE_CONST before calling tree_int_cst_lt.
+         Delete now-obsolete checks of constant indices.
+
+Mon Mar 14 17:26:51 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * parse.y (modeless_expr):  New rule to allow ([...]) and (if...)
+       to count as untyped_exprs.  (This is not really permitted by the
+       Blue Book, but has been requested by customers.)
+
+Thu Mar 10 10:11:02 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * chill.texi: Document new command-line options.
+       * expr.c (build_chill_num): Set unsigned parameter for
+         type_for_size call correctly (unsigned for enums).
+       * lang.c (lang_decode_option): Add command-line options to
+         enable/disable runtime range-checking.
+       * lex.l: Eat more whitespace.
+
+Thu Mar 10 09:41:37 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * Makefile.in: Have rules to make parse.h, y.tab.c and other
+         derived files.  This allows the gcc/configure list of CHILL
+         files machinery to work.
+       * ch-tree.h (permanent_allocation): Add a parameter flag.
+       * decl.c (finish_chill_function, finish_decl): Provide the 
+         new permanent_allocation flag.
+         (poplevel): Return early, avoid a seg fault.
+       * lex.l (NORMAL): Replace this whole state with the predefined 
+         INITIAL state.  Force compilation state to global level after
+         compiler directive error - prevents endless loop on error.
+         (handle_use_seizefile_directive): Rewrite for readability.
+         (chill_same_grant_file): Reindent.
+         Generally handle whitespace differently.
+       * regression.prpt: Print ten PR numbers per line.  The report's
+         getting too long.
+
+Wed Mar  9 09:58:51 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * decl.c (do_decl): Suppress the string-assignment-condition
+         error - it was too often seen.
+       * expr.c (expand_chill_expr): In CONCAT_EXPR, when argument has a
+         runtime-changing length (as in a slice), get the parent array's
+         allocation size from its type tree.
+       * typeck.c (build_chill_slice): Support VARYING arrays.  Pass
+         parent array's static allocation size along in the slice type.
+
+Wed Mar  9 08:54:24 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * lex.l (name_type_signal): Avoid dereferencing a NULL TRE_TYPE.
+
+Tue Mar  8 11:51:10 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * expr.c (build_chill_sizeof): Fix typo in error msg, add
+         some whitespace.
+       * lex.l (name_type_signal): Add debug output.
+       * parse.y (call):  Allow EVENTNAME and BUFFERNAME parameters
+         to a call, so that SIZE () works on them.
+       * tasking.c (make_process_struct): Force ignore_exprs non-zero
+         when processing a SEIZEd PROCESS declaration.  This prevents
+         grox-fixed_fields from returning a NULL, and indirectly protects
+         the chill_integer_type_node tree from corruption.
+
+Mon Mar  7 19:14:05 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * Makefile.in: Use the 'all' target to build the runtime 
+         library and chillrt0.o.
+       * README: Explain rules for files in this directory.
+       * addtest, addtest.man, build-release, 
+         chill.regress.cron: Move to utils subdirectory.
+        * expr.c (build_chill_function_call): Mark the INOUT
+         temporary so it doesn't get optimized into a
+         register.  Fixes the execute/inout.ch bug.
+       * typeck.c (layout_chill_range_type): Restrict it
+         from complaining about an empty string type's
+         bounds (0:-1).
+
+Mon Mar  7 09:06:39 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * Makefile.in (compiler): Restore this target.
+         (OBJS, BC_OBJS): Delete unused variables.
+         Add $(FLAGS_TO_PASS) to sub-make invocations.
+       * ch_decomment.l, ch_makedepend, chill.patches, printf.c,
+         tcov.awk, tcov.el, tcov.sh: Move to utils subdirectory.
+
+Sat Mar  5 18:37:50 1994  Jim Wilson  (wilson@sphagnum.cygnus.com)
+
+       * except.c (finish_handler_array): When computing address of
+       the array ex_decl, don't call build_array_ref.
+
+Sat Mar  5 17:43:36 1994  Jim Wilson  (wilson@sphagnum.cygnus.com)
+
+       * loop.c (declare_temps): Force powerset temp to memory.
+
+Fri Mar  4 11:20:44 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * typeck.c (layout_chill_range_type): Convert highval and
+         lowval to a common type before range-checking them.
+
+Fri Mar  4 11:20:44 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-tree.h: Add loop-related prototypes.
+       * decl.c, grant.c: Fix -Wall violations.
+       * parse.y: Fix format of %type directives.
+
+Fri Mar  4 10:04:18 1994  Wilfried Moser  (fs_moser at rcsw1h)
+
+       * Makefile.in: Update version number.
+       * expr.c: Fix a comment.
+       * inout.c (build_chill_writetext): Add handling of a REAL.
+       * lex.l (INITIAL): Remove all code to discard 'header lines'.
+         no longer needed.
+       * parse.y (optheader): Remove - it's obsolete, as is the
+         HEADEREL token definition.
+
+Fri Mar  4 09:41:18 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * addtest: Fix suffix removal when suffix is .c186.
+       * regression.sh: Allow for underscores on PR filenames.
+       * typeck.c: Check in the rewrite mentioned earlier.
+
+Thu Mar  3 09:42:10 1994  Wilfried Moser  (fs_moser at rcsw1h)
+
+       * tasking.c (build_process_header): Build a debug structure
+         for easier access to PROCESS parameters.
+
+Thu Mar  3 09:42:10 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * typeck.c (*string_assignment_condition): Complete rewrite
+         of a verbose first draft.
+
+Wed Mar  2 16:49:05 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * actions.c (adjust_return_value): Simplify.
+         Delete references to CH_RETURNS_LOC, extra parameters to
+          push_extern_function and start_chill_functions.
+         (convert_for_assignment): Check whether to generate runtime
+         range-checking code.  Handle reference_type in convert call.
+         (chill_expand_assignment): Produce an INDIRECT_REF for a
+         reference_type on the LHS.  Delete conversions subsumed by
+         convert_for_assignment.
+       * ch-tree.h: Delete parameters from prototypes.
+       * decl.c (print_lang_decl): Print out signal flag.
+         (push_extern_function, start_chill_function): Delete
+         extra parameters, references to CH_RETURNS_LOC.
+       * grant.c (chill_finish_compile): Delete extra parameter.
+       * parse.y: Delete references to CH_RETURNS_LOC, extra parameters to
+          push_extern_function and start_chill_functions.
+       * regression.sh (checkprms): Skip PRMS discrepancies if we
+         can't access PRMS for some reason.
+       * satisfy.c: Correct indentation.
+       * tasking.c (build_process_header): Delete extra parameters
+         passed to push_extern_function and start_chill_functions.
+
+Wed Mar  2 10:33:50 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * addtest: Require a fill filename.  Be more careful about
+         adding the same test twice.
+       * expr.c: Add FIXME to comment.
+       * regression.sh: Add configure script call.
+
+Tue Mar  1 16:24:20 1994  Wilfried Moser  (fs_moser at rcsw1h)
+
+       * Makefile.in: Change version of chill to 1.1.2
+       * inout.c: Add processing of SET and POWERSET types to WRITETEXT.
+
+Tue Mar  1 07:34:56 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+        RETURN of LOC value is only half-baked.  Stay tuned...
+       * actions.c (adjust_parm_or_field): Add to comment.
+          (adjust_return_value): New function for issuing errors about
+         RETURN and RESULT expressions.  Also converts them.
+         (chill_expand_result, chill_expand_return): Call new
+         adjust_return_value function.
+       * ch-tree.h (CH_RETURNS_LOC): Add new flag for function types.
+          New parameter for push_extern_function and start_chill_function.
+       * decl.c (push_extern_function, start_chill_function): New parameter
+         to say whether return value is a LOC.
+       * expr.c (build_chill_indirect_ref): Further qualify the issuing
+         of the error message.
+       * grant.c (raw_decode_mode): Move test for instance mode under 
+         STRUCT handling.
+         (start_chill_module_code, chill_finish_compile): Add new
+         parameter to start_chill_function calls.
+       * parse.y (get_type_of): Do lookup_name more often.
+         (quasi_pdef, procedure, procmode, optresultspec): Set 
+         CH_RETURNS_LOC flag.
+         (optresultattr): Code keywords as a bitmask.
+       * tasking.c (build_process_header): Add new parameter to
+         start_chill_function call.
+
+Sat Feb 26 12:49:05 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * Makefile.in: Replace undefined $(RM) with rm -f.
+       * configure: Make sure scripts are executable.
+       * regression.sh: Make variables to invoke make 
+         and awk.  Don't process a directory if it 
+         doesn't exist.
+
+Fri Feb 25 14:48:48 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * Makefile.in (check): Force the building of ../gcov and
+         ../xgcc before testing.  Move the printf dependency here
+         since we don't need it until we're testing.
+       * addtest: Strip suffix from each input filename.
+       * decl.c (do_decl): Correct error checking.  Call
+         string_assignment_condition for some of it.
+       * tasking.c (build_gen_inst): Add ability to pass an integer
+         for either the process ID or the copy number.  If a number
+         is passed, range-check it against the CHILL unsigned type
+         limits.
+         (build_buffer_descriptor): Add draft code to check the buffer
+         name for correctness.
+
+Wed Feb 23 15:07:12 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       New cleaner solution to the following problem:
+       Chill allows an action to be followed by an ON-handler.
+       But we don't know if an action has a handler until we've parsed
+       its end, yet we want to generate extra code to set up an
+       exception handling contour only if needed.  The old solution
+       would generate code for the action into an rtl sequence, and then
+       splice in the exception-setup code if we later found we needed it.
+       This has a few problems (for example it confuses the management
+       of stack temporaries), and is ugly.  Now that the compiler is 2-pass
+       we have a cleaner solution:  In pass 1, we remember which actions
+       were followed by ON-handlers.  In pass 2, we use this information
+       to generate appropriate code before an action.
+       * except.c (push_handler, pop_handler):  In pass 1, set up data
+       structures (global_handler_list) to remember if an action has an
+       ON-handler.  In  pass 2, digest this information, and setup
+       handler if needed.
+       * except.c, actions.h (pop_handler):  Take an extra int arg.
+       * except.c (emit_setup_handler):  New function, with code (moved
+       from chill_start_on) to emit code before an action that has a handler.
+       * except.c (except_init_pass_2):  New function.
+       * parse.y (pass1_2):  Call except_init_pass_2 before pass 2.
+       * parse.y (POP_UNUSED_ON_CONTEXT):  Don't call pop_sequence.
+       * parse.y:  Invoke POP_UNUSED_ON_CONTEXT and POP_USED_ON_CONTEXT
+       in pass 1 as well as pass 2.
+       * parse.y (BEGIN ... END):  Re-arrange logic to avoid block_stack
+       (local to ../stmt.c) getting out of sync.
+       * actions.c (push_action):  Don't need to emit a NOP,
+       now that we're no longer moving sequences around.
+       * actions.c (push_action):  Call push_handler even in pass one.
+
+Wed Feb 23 11:06:14 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * decl.c (do_decl): Check for possible overflow in initializing
+         a declared variable.
+       * expr.c (build-chill_indirect_ref): Add error message for
+         a syntax error that C programmers converting to CHILL are
+         quite likely to make.
+       * satisfy.c (safe_satisfy_decl): Keep yesterday's change from
+         seg-faulting.
+
+Tue Feb 22 17:54:43 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * Makefile.in: Use $(CC) rather than FLAGS_TO_PASS, which isn't
+         defined.  Build chill script differently, and build an install script.
+         Add an action to run the regression test.
+       * actions.c (chill_expand_assignment): Change
+         string_assignment_condition call.
+       * ch-tree.h: Add prototype.
+       * expr.c (build_chill_function_call): Change
+         string_assignment_condition call.
+       * satisfy.c (safe_satisfy_decl): Add check that string INIT value
+         will fit in the declared mode.
+       * typeck.c (string_assignment_condition): Add flag to disable
+         runtime code generation.  Add code to generate runtime test.
+
+Mon Feb 21 14:04:20 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * Makefile.in (check): Add target to trigger a regression test.
+
+Mon Feb 21 13:54:20 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * decl.c (do _based_decls): Add error check for
+         decls BASED on a PROC or PROCESS name.
+
+Mon Feb 21 13:24:02 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * grant.c (chill_finish_compile): Bypass handling
+         module-level code if an earlier error has made
+         is useless.
+       * tasking.c (build_start_process): Generate error, 
+         return if process name unknown.
+
+Mon Feb 21 14:29:41 1994  Wilfried Moser  (fs_moser at rcsw47)
+
+       * expr.c (build_generalized_call): Use 
+         build_arrow_expr semantics for ADDR () builtin.
+
+Mon Feb 21 12:49:14 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * tasking.c (build_gen_inst): Output correct
+         constructor for GEN_INST.
+
+Mon Feb 21 08:14:59 1994  Wilfried Moser  (fs_moser at rcsw47)
+
+       * lex.l (yywrap): Fix punctuation error.
+
+Sun Feb 20 19:58:14 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * regression.sh: Fix cvs update-related commands.
+         Have cron job always perform the update, so it's
+         always reporting on the current state of the 
+         sources.
+       * typeck.c (string_assignment_condition): Allow a 
+         mis-match if the LHS is varying.
+
+Fri Feb 18 18:10:04 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * actions.c (expand_chill_assignment): Add call to test the
+         string assignment condition.
+       * expr.c (build_chill_function_call):  Add call to test the
+         string assignment condition.
+       * regression.awk2: Report WITHDRAWN PRs as well.
+       * regression.sh: Delete extra commentary about FEEDBACK PRs.
+       * typeck.c (string_assignment_condition): Add function to
+         perform the check.
+
+Fri Feb 18 16:30:40 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * regression.awk1, regression.awk3: Recognize 'withdrawn' PRs
+         and exclude them from the regression test report.  Mark them
+         in the list of PRs as 'W' status.
+
+Thu Feb 17 09:13:42 1994  Wilfried Moser  (fs_moser at rcsw47)
+
+       * Makefile.in: Define a version number.  Build chill script
+         differently.  Makefile depends upon ../configure, not configure.
+       * chill.in: Define some new flags.
+
+Wed Feb 16 19:44:33 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * grant.c (decode_constant): Restore a 'return result' statement
+         that seems to have gotten lost.
+
+Wed Feb 16 12:37:44 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-tree.h (various STRING-type macros):  Use new TYPE_STRING_FLAG.
+
+       * typeck.c (make_chill_array_type):  Remove unused args.
+       Simplify to build only one-dimensionsal arrays, so change
+       index list to single index.  Call layout_chill_array_type
+       if pass!=1.  And rename to:  build_simple_array_type.
+       * typeck.c (layout_chill_array_type):  Only recurse
+       if TREE_TYPE has not been laid out.
+       * typeck.c (build_chill_array_type):  Update accordingly.
+       * typeck.c (build_chill_slice):  Replace calls to build_array_type
+       (which does hash-canonicalization, which breaks if we later set
+       the TYPE_STRING_FLAG) by calls to build_simple_array_type.
+       * convert.c (convert):  The same.
+
+       * grant.c (decode_constant):  Clean up.  Remove remnants of switch
+       on TREE_TYPE of the value, and fold those cases into first switch.
+
+Wed Feb 16 09:12:21 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * Makefile.in: Add printf as a dependency of ../cc1chill.
+       * regression.sh: Make srcdir and objdir really work.
+
+Wed Feb 16 09:12:21 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * expr.c (build_char_array_expr): Fix spelling
+         error in error msg.
+       * tree.c (build_string_type): Make check for overlarge
+         string more robust.
+
+Wed Feb 16 02:37:43 1994  Mike Stump  (mrs@cygnus.com)
+
+       * grant.c (decode_constant): Remove useless tests
+       for STRING_TYPE (which isn't used by anyone, including CHILL).
+
+Tue Feb 15 15:35:07 1994  Bill Cox  (bill@cygnus.com)
+
+       * build-release:  Add refinements to checkout commands.
+       * decl.c (init_decl_processing): Move initialization of
+         chill_unsigned_type_node before 1st call to build_string_type.
+       * tree.c (build_string_type): Add compile-time test of string
+         allocated length.
+       * typeck.c (layout_chill_range_type): Add compile-time range limit
+         checking.
+
+Tue Feb 15 08:55:37 1994  Bill Cox  (bill@cygnus.com)
+
+       * Makefile.in:  Add stamp-chill-objs as a dependency of ../cc1chill.
+       * regression.sh: Rename test directory names.
+
+Mon Feb 14 09:24:16 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * Makefile.in: Change interface with parent directory's
+         Makefile, decoupling the lists of each others' files.
+
+Mon Feb 14 09:24:16 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * lex.l: Delete obsolete comment.
+       * tasking.c (expand_send_signal): Add a type to the OPTSENDTO
+         instance constructor.
+
+Mon Feb 14 04:04:16 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * lex.l (maybe_number): Add octal to numbers
+         handled by Feb 1 change.
+
+Sat Feb 12 16:24:22 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * actions.c, convert.c, decl.c, expr.c, lex.l,
+         tasking.c, typeck.c: gcc -Wall cleanups.
+        * ch-tree.h: Change loop-related prototypes.
+       * loop.c, parse.y: Rewrite to set up correct loop scope.
+          Fix error path where loop variable not declared.
+
+Fri Feb 11 11:12:29 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * Makefile.in: Add rule to build printf.  Make it a dependency
+         of ../cc1chill.
+       * printf.c: New tool for regression testing script.
+       * regression.sh: Look for print in ${objdir}.
+
+Thu Feb 24 17:31:12 1994  Wilfried Moser  (fs_moser at rcsw1j)
+
+       * tasking.c (build_gen_inst): Allow integer expression as argument
+         1 to this function. This was a change request to get rid of
+         unsupported value conversion from INSTANCE to ARRAY (0:1) UINT
+         or STRUCT (t UINT, c UINT).
+
+Thu Feb 10 09:49:31 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * regression.awk3: Recognize upper-case PRMS state names.
+
+Wed Feb  9 15:26:19 1994  Bill Cox  (bill@cygnus.com)
+
+       * parse.y (dowithaction): Allow EXIT from DO WITH.
+
+Tue Feb  8 13:13:54 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * configure: Change to require grant.c for evidence that we've
+         found the source directory.
+       * decl.c (init_decl_processing): delete unused builtin_slice
+         function declaration.
+       * expr.c (chill_expand_expr): Calculate powerset's length
+         correctly, calling powersetlen to do it.
+       * regression.sh: Replace BASE references with objdir references.
+       * typeck.c (build_chill_slice): Build the compound expression
+         in the right order.
+
+Mon Feb  7 15:56:07 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * expr.c (build_chill_lower, build_chill_upper): Handle
+         LOC parameter types.
+       * regression.sh: Correct path to executable sub-shell-scripts.
+
+Mon Feb  7 11:33:47 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * regression.sh: Pervasive changes to allow for separate
+         source and object directories.
+
+Wed Feb  2 17:5620 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * decl.c (find_implied_typed): Delete obsolete reference to
+         PROCESS_TYPE.
+       * ch-tree.def (PROCESS_DECL, PROCESS_TYPE): Delete - they're
+         obsolete.
+
+Wed Feb  2 13:37:56 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * Makefile.in: Delete bogus runtime/Makefile lines.
+       * configure: Build testsuite directory.
+
+Wed Feb  2 13:37:56 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * configure: Correct srcdir for chill.examples directory.
+
+Wed Feb  2 11:24:57 1994  Wilfried Moser  (fs_moser at rcsw47)
+
+       * ch-parse.y (rule call): Add
+             BUFFERNAME LPRN untyped_expr RPRN
+         to enable generating a descriptor same as for SIGNALS.
+       * ch-tasking.c (generate_tasking_code variable,
+         decl_tasking_code_variable): Implement overflow check of
+         taskingcode in case a tasking code is specified with the
+         compiler directives SIGNAL_CODE, BUFFER_CODE, EVENT_CODE or
+         PROCESS_TYPE.
+
+Wed Feb  2 09:31:37 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+        * configure: Add ${srcdir} to Makefile.in's path.
+       * loop.c: Delete unused whitespace.
+
+Tue Feb  1 17:09:41 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * expr.c (string_char_rep): Process STRING_CST correctly.
+
+Tue Feb  1 15:29:28 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * expr.c (build_boring_bitstring):  New function.
+       * expr.c (build_chill_repetition_op):  Fix a number of bugs in
+       implementation of bitstring repetition.
+       Also, implement repetition of Booleans.
+
+Tue Feb  1 15:28:21 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * configure: Delete code to check for gas or ld.  Add code to
+         store a config.status file in each configured subdirectory.
+       * expr.c (): Spell concatbitstring as concatps, which is the
+         runtime routine name.
+       * regression.sh: Force use of GNU make.
+
+Tue Feb  1 15:22:12 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * tasking.c: Mark compiler-generated temps to prevent
+         GRANTing them.
+
+Tue Feb  1 17:38:51 1994  Wilfried Moser  (fs_moser at rcsw1j)
+
+       * lex.l (equal_number): Improve check for number after = in a
+         compiler directive.
+       * tasking.c (build_tasking_struct): Make field TaskValue
+         pointer to chill_unsigned_type_node.
+       * tasking.c (generate_tasking_code_variable): Declare tasking
+         code variable as chill_unsigned_type_node.
+       * tasking.c (decl_tasking_code_variable): Declare tasking
+         code variable as chill_unsigned_type_node.
+
+Mon Jan 31 14:01:58 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * addtest (update_Makefile): No longer build actions - they're
+         now in pattern rules.
+       * ch_makedepend: Do the grep first, to avoid processing non
+         USE_SEIZE_FILE lines.
+       * configure: Pervasive rewrite to support configuring regression
+         test directories.
+
+Mon Jan 31 04:35:53 1994  Michael Tiemann  (tiemann@blues.cygnus.com)
+
+       * typeck.c (build_chill_slice): Compute EXTENT correctly.
+
+Sun Jan 30 14:33:12 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * tasking.c (build_gen_inst): Return a typed tuple with
+         INSTANCE type.
+
+Sun Jan 30 12:01:07 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * actions.c (chill_expand_assignment): Recognize LENGTH builtin
+         in the left hand side, pass it to
+         expand_varying_length_assignment.
+         (expand_varying_length_assignment): Clean up bitrot.
+       * convert.c (convert): Revert most recent change.
+       * loop.c (maybe_skip_loop): New function, split out of
+         begin_chill_loop.  Add conditional to skip processing an empty 
+         VARYING array.
+       * parse.y (assignaction): Delete code to recognize LENGTH
+         on left-hand-side.
+       * typeck.c (validate_varying_array_ref): Correct misleading comment.
+
+Sat Jan 29 10:54:06 1994  Michael Tiemann  (tiemann@blues.cygnus.com)
+
+       * typeck.c (build_chill_slice): Pass a valid identifier to
+       `get_unique_identifier'.
+
+       * convert.c (convert): Rename LENGTH variable to MAXIDX, and
+       use correct value for VAR_LENGTH when initializing a varying array.
+
+       * decl.c (do_decl): Set DECL_COMMON.
+
+       * actions.c (check_range): Temporarily inhibit warnings so the
+       compiler doesn't warn the user about useless range checks that it
+       might create.  It's far easier for the compiler to figure out that
+       a range check need not be done than it is for us to try to figure
+       it out for ourselves.
+
+       * expr.c (build_concat_expr): Generalize to handle bitstrings.
+       (scalar_to_string): New function.
+       (chill_expand_expr): Handle SET_TYPEs in CONCAT_EXPR by using new
+       library call (__concatbitstring).
+
+Sat Jan 29 08:43:54 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch_makedepend: Fix the 'sed' command so that seize file
+         name can be delimited by double quotes as well as apostrophes.
+
+Thu Jan 27 17:26:19 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * typeck.c (my_build_array_ref):  Do constant folding.
+
+Thu Jan 27 16:24:24 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * actions.c, actions.h, ch-tree.h, chill.texi, convert.c,
+         decl.c, except.c, expr.c, grant.c, inout.c, lang.c,
+         lex.h, lex.l, loop.c, parse.y, tasking.c, tasking.h,
+         tree.c, typeck.c: New 'Copyright' line for 1994.
+
+Thu Jan 27 14:12:07 1994  Mike Stump  (mrs@cygnus.com)
+
+       * configure: Don't configure this directory with this configure,
+       just subdirectories and cleanup.
+       * Makefile.in (Makefile): Run config.status in parent directory,
+       if we need rebuilding.
+
+Thu Jan 27 10:37:33 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * decl.c (bind_sub_modules): Need a parameter on the recursive call.
+         Thanks, Zoo!  
+
+Thu Jan 27 10:37:33 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * expr.c (build_concat_expr): Fix SunOS portability problem.
+
+Wed Jan 26 14:57:39 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * convert.c (digest_powerset_tuple):  New function, used to set
+       TREE_CONSTANT and TREE_STATIC properly.
+       (digest_structure_tuple, convert (NULL to instance, non-varying
+       to varying)):  Set TREE_CONSTANT and TREE_STATIC when appropriate.
+       * expr.c (varying_to_slice):  Preserve novelty of slice type.
+       * expr.c (build_concat_expr):  Make sure class of result is
+       correct (including correct novelty).
+       * satisfy.c (safe_satisfy_decl):  If value of CONST_DECL is
+       not TREE_CONSTANT, emit an error.
+       * typeck.c (build_chill_slice):  Preserve novelty of result.
+       * typeck.c (build_chill_slice):  Simplify for varying argument
+       (by using varying_to_slice).
+       * typeck.c (expand_constant_to_buffer, extract_constant_from_buffer):
+       New functions.
+       * typeck.c (build_chill_cast): Use above new functions to convert
+       constant expressions.
+       * typeck.c (copy_novelty), ch-tree.h:  New function.
+       * chill.texi:  Update for new constant conversion semantics.
+
+Tue Jan 25 14:00:02 1994  Wilfried Moser  (fs_moser at rcsw1j)
+
+       * ch-decl.c (init_decl_processing): Add new builtin function
+         DESCR. Add call to build_chill_descr_type.
+       * ch-expr.c: Add function build_chill_descr_type, which actually
+         build the type the DESCR builtin returns.
+         Add function build_chill_descr, which process the DESCR builtin.
+       * ch-expr.c (build_chill_length): Add code to enable
+         LENGTH (bitstring). 
+       * ch-expr.ch (build_generalized_call): Add processing of DESCR
+         builtin.
+       * ch-grant.c: Add code to avoid producing of unnecessary grant
+         files.
+       * ch-tree.h: Add enum for builtin function DESCR. Add prototype
+         for build_chill_descr.
+       * ch-inout.c (build_chill_io_list_type): Change generation of the
+         type passed to runtime library according to the new definition.
+       * ch-inout.c (build_chill_writetext): Change processing of format
+         string that a character constant is allowed as format string if
+         compiler gets called with -fold-strings option.
+       * ch-inout.c (build_chill_writetext): Change processing of
+         integers in case NEWMODE x = INT.
+       * ch-inout.c (build_chill_writetext): Remove processing of ranges.
+       * ch-inout.c (build_chill_writetext): Add processing of
+         bitstrings.
+
+Tue Jan 25 09:07:10 1994  Mike Stump  (mrs@cygnus.com)
+
+       * Makefile.in (all, OBSTACK): Build interesting things be default,
+       and make sure we include OBSTACK.
+
+Sun Jan 23 12:35:38 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * grant.c (decode_constant):  Handle RANGE_EXPR.
+       Simplify handling of CONSTRUCTOR.
+
+       * typeck.c (build_chill_slice):  Use build_chill_array_ref_1,
+       not build_chill_array_ref.
+
+Sat Jan 22 16:23:30 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * parse.y:  Generate a RANGE_EXPR (instead of a confusing
+       TREE_LIST) to indicate a range in case and tuple lables.
+       * actions.c (chill_handle_case_label), convert.c (digest_constructor):
+       Update accordingly to handle these RANGE_EXPRs.
+       * satisfy.c (satisfy):  Don't call finish_chill_binary_op
+       for a RANGE_EXPR.
+
+Fri Jan 21 15:39:36 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * expr.c (force_addr_of):  New function, to encapsulate passing
+       by reference a powerset or string  to a library function.
+       * expr.c (build_min_max, build_set_expr):  Use force_addr_of.
+       * expr.c (chill_expand_expr case CONCAT_EXPR):  Fix passing of
+       rtl modes.  (Old code fails on 64-bit Alpha.)
+       * expr.c (build_chill_function_call):  Remove bogues check for
+       READonly variable passed as parameter.
+       * expr.c (build_set_expr):  Merge common code.
+       * parse.y (string repetition):  Fix logic for 2-pass scheme.
+       * expr.c (finish_chill_binary_op), grant.c (decode_constant),
+       satisfy.c (satisfy):  Handle REPLICATE_EXPR.
+       * chill.texi:  Fix typo.
+
+Mon Jan 17 13:55:48 1994  Jim Wilson  (wilson@sphagnum.cygnus.com)
+
+       * Makefile.in (INCLUDE): Add -I$(srcdir)/ch so that toplevel
+       tree.c can find ch-tree.h.
+
+Sat Jan 15 15:34:11 1994  Mike Stump  (mrs@rtl.cygnus.com)
+
+       * configure: Fix problem so that building in a separate directory
+       works.
+
+Sat Jan 15 09:51:02 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * Makefile.in: Recurse down into runtime to
+         create its Makefile, and to clean up.
+       * configure: Recurse into runtime to make its Makefile.
+
+Sat Jan 15 09:15:22 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+ << This set of CHILL frontend sources is now the
+    maintainable and master set. Accept no substitutes! >>
+       * Makefile.in, configure: Completely rewritten
+         to be invoked by gcc/Makefile.in and 
+         gcc/configure.
+       * addtest (update_ChangeLog): Fix insertion
+         of the '*'.
+       * regression.sh: Add global option to suppress results of
+         proprietary tests.
+       * cpy.sh: Add necessary edits to files as they
+         are copied down.
+       * actions.c, ch-tree.def, ch-tree.h, convert.c,
+          decl.c, except.c, expr.c, grant.c, inout.c,
+         lang.c, lex.h, lex.l, loop.c, parse.y,
+         satisfy.c, tasking.c, typeck.c: Latest
+         versions from the repository. 
+
+Fri Jan 14 12:28:39 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * addtest: Fix insertion of line into ChangeLog.
+       * configure: Add a script.
+       * Makefile.in: Hack from ../Makefile.in
+       * actions.c, convert.c, decl.c, expr.c, grant.c, inout.c,
+       * lex.l, loop.c, parse.y, satisfy.c, typeck.c: Latest sources.
+
+Mon Jan 10 11:38:07 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * build-release: Rewrite for easier tailoring.
+
+Wed Jan  5 08:38:21 1994  Bill Cox  (bill@cygnus.com)
+
+       * actions.c, convert.c, decl.c, except.c, expr.c,
+         inout.c, loop.c, parse.y, satisfy.c, typeck.c:
+         Current versions from devo/gcc.
+
+Wed Dec 29 14:07:10 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * addtest: Don't add comment headers to source or .dat files
+         if they're already present.
+
+Wed Dec 29 13:15:11 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * mktg_leads: New file.
+       * regression.sh, regression.awk2: Updated status report scripts.
+       * addtest: New script to add a test to a directory.
+       * ch_makedepend: Add full path to ch_decomment.
+       * actions.c, convert.c, decl.c, expr.c, grant.c, inout.c,
+         lex.l, loop.c, parse.y, satisfy.c, tasking.c, typeck.c:
+         Updated copies of actual sources.
+       * chill.brochure, chill.texi: Update with current status.
+       * cpy.sh: Script for updating copies of sources.
+       * chill.patches: New script for creating a patch release.
+         Pretty rough.
+
+Wed Dec  8 09:35:54 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * build-release: Delete lots of unused regression-testing cruft.
+       * chill.brochure: Initial draft of marketing brochure.
+       * chill.patches: Preliminary script for building patch sets
+         for CHILL.
+       * tcov.awk, tcov.el, tcov.sh: New files. Script, tools for
+         building a tcov report on the CHILL compiler.
+
+Sun Nov 21 08:34:33 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+        * Makefile.in: Adjust gperf rule for names in this directory.
+       * ch_decomment.l: New file.  Ignores CHILL comments.
+         Executable is used bu ch_makedepend.
+       * ch_makedepend: New script.  Makes CHILL dependencies for
+         Makefiles.
+       * gperf, hash.h: New files about lexer tokens.
+       * regression.sh: Delete notes justifying non-summing
+         report rows.
+       * regression.awk2: Report PRMS status when there are
+         missing test results.
+       * regression.awk3: Add #! line, so this can be used separately.
+       * Other files: latest versions copied from devo/gcc.
+
+Sat Oct 30 15:02:24 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * chill.texi:  Add new node about conversions. 
+
+Fri Oct 29 14:17:31 1993  Bill Cox  (bill@cygnus.com)
+
+       * chill.regress.cron: Change path to executable, enable PR report.
+       * regression.awk2: Add terminating periods to messages.
+       * regression.sh: Change path to testsuites.  Add disclaimer at end
+         of report.  Print explicit lists of resolved/unresolved PRs.
+
+Thu Oct 28 09:22:20 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * regression.sh: More PR-related status is printed.
+
+Thu Oct 21 19:24:02 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * regression.sh: Simplify the paths, make the source
+         and test files accessed separately from the executables.
+
+Wed Oct 20 16:35:30 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * regression.sh: Finally fix the file-delete problem.
+         Thanks, Jeffrey!
+       * build-release: Make more verbose, fix comment.
+
+Mon Oct 18 00:21:24 1993  Bill Cox  (bill@cygnus.com)
+
+       * regression.sh: Build linker if -U option.  Put stderr
+         into make.log files, too.  Also report on Z.200 examples.
+       * regression.awk3: New script to help build release note.
+
+Fri Oct 15 16:33:54 1993  Bill Cox  (bill@cygnus.com)
+
+       * regression.sh, regression.prpt: Output PR status only
+         conditionally.  Add command-line flag for CVS updates.
+
+Thu Oct 14 07:53:59 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * regression.sh: Count PRs accurately.
+       * Makefile.in: New file.
+
+Sat Oct  9 19:46:58 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * regression.awk?: Add program fragments for
+         report of PRMS/test exceptions.
+       * regression.sh: Add options and PRMS reports.
+
+Fri Oct  8 06:44:41 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+    Create chill frontend directory, populate it.
+    Later, the chill-specific frontend files will be moved here.
+
+       * chill: Moved here from gcc directory.
+       * chill.regress.cron: Add crontab file for regression tests.
+       * regression.sh: Add regression test control script.
+
+#
+# What follows is a copy of the former devo/gcc/ChangeLog.Chill file,
+#
+Sat Jan 15 14:54:07 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-*.*: All of these files are now moved to the ch subdirectory.
+       Further update changes should be recorded in the ch/ChangeLog file.
+
+Fri Jan 14 21:09:44 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * c-typeck.c, ch-actions.c, ch-convert.c, ch-decl.c, ch-except.c,
+       ch-satisfy.c, ch-typeck.c:  Undo all of initializer-related changes
+       that Tiemann did earlier this month.
+       * c-typeck.c (really_start_incremental_init):  Save
+       constructor_elements and (old value of) constructor_stack
+       on constructor_stack, to allow for nested initializers.
+       * ch-convert.c (digest_constructor):  If we need a varying
+       array, and have a constructor (for the array elements),
+       make sure to use convert so that the constructor gets
+       wrapped in an implicit record constructor.
+       * ch-decl.c (do_decl):  If there is no initializer for a
+       varying array (or bitstring), create default constructor.
+
+       * ch-expr.c (build_chill_lower):  Fix thinko for ARRAY_TYPE.
+       * ch-satisfy.c (safe_satisfy_decl):  Make sure that we make
+       original decl to check if we need to make an rtl.
+
+       * ch-typeck.c (build_chill_array_ref_1), ch-tree.h:  New function
+       which does the actual work for build_chill_array_ref (which
+       now just loops over an argument list).
+       * ch-actions.c, ch-expr.c, ch-inout.c:  Use build_chill_array_ref_1
+       instead of build_chill_array_ref where appropriate.
+       * ch-actions.c, ch-expr.c, ch-typeck.c:  Make operand 1 of a
+       VARY_ARRAY_REF is a single index, not an index list.
+
+       * ch-grant.c (__init_list):  Renamed to _ch_init_list, to
+       avoid a conflict on the Alpha.
+
+Wed Jan 12 10:19:35 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-lex.l (WS): Add BS, VT and CR to definition of 
+         whitespace.
+         (convert_number): Allow for uppercase hex digits.
+
+Tue Jan 11 19:43:55 1994  Bill Cox  (bill@cygnus.com)
+
+       * ch-actions.c (lookup_and_handle_exit): Correct
+         conditional so error messages are output.
+       * ch-expr.c (build_chill_addr_expr): Add error message.
+       * ch-grant.c (chill_finish_module_code): Avoid abort by
+         giving the init_list constructor a type.
+         (chill_finish_compile): Delete unused code.
+       * ch-lex.l: Make most build_init_2 calls from the
+         permanent obstack, so that enumeration values endure.
+       * ch-loop.c (build_chill_iterator): Add several error
+         messages.
+
+Tue Jan 11 12:31:55 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-expr.c, ch-typeck.c:  Rewrite some instances of
+       'struct ch_class class = chill_expr_class (expr);' to
+       'struct ch_class class; class = chill_expr_class (expr);'
+       to work around a bug in /usr/ucb/cc on SunOS4.
+
+Mon Jan 10 18:29:36 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (chill_convert_for_assignment): Avoid seg fault.
+       * ch-expr.c (expand_packed_set): Add new parameter to pass
+         set's minimum ordinal value.  Fix loop invariant problem.
+         (fold_set_expr): Change to add new parameter to 
+         expand_packed_set call.
+       * ch-grant.c: Move extern declaration to ch-tree.h.
+       * ch-lex.l (convert_bitstring): Also output the bitstring
+         if yydebug is set.
+       * ch-tree.h: Add prototype.
+
+Mon Jan 10 11:29:41 1994  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-inout.c: Fix comment.
+       * ch-tree.h: Add prototype.
+
+Sun Jan  9 18:22:22 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-tree.h (chill_expr_class):  New prototype.
+       * ch-expr.c (build_chill_pred_or_succ, build_chill_unary_op):
+       Convert result to correct class.
+       * ch-expr.c (build_chill_repetition_op):  Preserve CH_DERIVED_FLAG.
+       Also, fix some bugs for bitstrings (with ranges).
+
+       (Patches from Tiemann.)
+       * ch-convert.c (convert1):  New function to force TREE_TYPE.
+       (convert):  Use convert1 where appropriate.
+       * ch-typeck.c:  Formatting change.
+       * ch-parse.y (build_chill_constructor):  Fix thinko.
+
+       * ch-expr.c (varying_to_slice):  If array is not referable,
+       call save_expr on it, rather than stabilize_reference.
+       * ch-satisfy.c (safe_satify_decl, for CONST_DECL):
+       Don't force value to value class if mode is not explicitly
+       specified.  Also, make sure convert etc is only done once.
+
+Sat Jan  8 16:37:10 1994  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-decl.c (build_chill_function_type):  Don't call
+       build_function_type, because it does hash canonicalization,
+       which once in a while looses badly.
+       * tree.c (build_function_type):  Remove no-longer-needed test
+       for doing_chill_thang.
+
+       * ch-tree.h (CH_DERIVED_FLAG):  New flag.
+       * ch-tree.h (enum ch_expr_class):  Renamed to ch_class_kind.
+       (struct ch_class):  New type, used to represent a Chill
+       'class' as a first-class value.
+       (CH_ROOT_RESULTING_MODE):  Replaced by CH_ROOT_RESULTING_CLASS.
+       * ch-typeck.c (chill_expr_class):  Change interface to return
+       a struct ch_class.
+       (chill_compatible, chill_compatible_classes):  Update accordingly.
+       (chill_root_resulting_mode):  Replace by ....
+       (chill_root_resulting_class):  ... new function.
+       * ch-convert.c (convert_to_class):  New function.
+       * ch-decl.c (layout_enum):  Mark enum values with CH_DERIVED_FLAG.
+       * ch-lex.l (string_or_int):  Rename to string_or_char.
+       * ch-lex.l (build_chill_string, string_or_char, convert_bitstring,
+       convert_float, convert_number):  Set CH_DERIVED_FLAG for literals.
+       * ch-expr.c (finish_chill_binary_op):  Use convert_to_class.
+       * ch-satisfy.c (safe_satisfy_decl):  For CONST_DECL, make sure
+       DECL_INITIAL gets set to result of convert.
+       Also, clear CH_DERIVED_FLAG for SYN value.
+       * expr.c (store_constructor):  If a [power]set is exactly one
+       word long, use single-word move.
+
+Sat Jan  8 08:38:29 1994  Michael Tiemann  (tiemann@blues.cygnus.com)
+
+       * c-typeck.c (chill_initializer_constant_valid_p): Fix typo.
+
+Wed Jan  5 05:18:46 1994  Michael Tiemann  (tiemann@blues.cygnus.com)
+
+       * ch-typeck.c (build_chill_slice_with_length): Test that ARRAY is of
+       ARRAY_TYPE before assuming so.  Also, subtract 1 from LENGTH in
+       computation of SLICE_END.
+
+       * ch-typeck.c (chill_location): Treat CONSTRUCTORs like STRING_CSTs.
+
+       * ch-expr.c (build_chill_indirect_ref): Handle MODE == NULL_TREE.
+
+       * ch-expr.c (fold_set_expr): Handle OP1 == NULL_TREE (which happens
+       for unary set operations).
+
+       * ch-expr.c (build_chill_array_expr): Take new argument FORCE.  All
+       callers changed.  All callers changed.
+
+       * ch-convert.c (digest_structure_tuple): Handle SELECTED_VARIANT
+       being NULL_TREE until we've started walking the list of values via
+       the loop over VARIANTs.
+
+       * ch-parse.y (build_chill_constructor): If we see an IDENTIFIER_NODE,
+       treat it as an enum value (and hence constant).  Also, only set
+       TREE_STATIC if the constructor is indeed constant.
+       * c-typeck.c (chill_initializer_constant_valid_p): If we see a
+       VAR_DECL, test the TREE_CONSTANT field of the DECL_INITIAL, don't
+       recurse on the DECL_INITIAL.
+
+Wed Jan  5 01:24:50 1994  Bill Cox  (bill@cygnus.com)
+
+       * Makefile.in: Add CHILL to LANGUAGES variable.
+       * ch-actions.c (check_range): Call build_binary_op instead of
+         fold, build to get the common types chosen.
+         (cond_range_exception, cond_overflow_exception,
+          cond_type_range_exception): Delete, obsolete.
+         (chill_convert_for_assignment): Enable this, get particular
+         about when to generate rangecheck code.
+       * ch-expr.c (build_chill_function_call): Sketch in where to
+         perform chill_convert_for_assignment on actual parameters.
+         (build_chill_addr_expr): Correct compiler warning.
+       * ch-loop.c (build_chill_iterator): Add runtime check for
+         negative loop step expression.
+       * ch-tree.h: Add prototype.
+       * ch-typeck.c (chill_max_vary_array_ref): Correct misunderstanding.
+         A varying array's length field counts the NUMBER of active array
+         array entries, not the byte-length of them.
+
+Tue Jan  4 17:57:39 1994  Michael Tiemann  (tiemann@blues.cygnus.com)
+
+       * ch-decl.c (do_decl): Call `suspend_momenary' if the
+       converted constructor must live on the permanent_obstack.
+       * ch-convert.c (convert): When building a new SET_TYPE
+       constructor, re-set the TREE_CONSTANT and TREE_STATIC bits.
+       * c-typeck.c (chill_initializer_constant_valid_p): Handle VAR_DECLs.
+
+       * ch-typeck.c (chill_location): CONSTRUCTORS that are static
+       are locations.
+       * ch-satisfy.c (safe_satisfy_decl): Convert DECL_INITIAL of CONST_DECL
+       on permanent_obstack if necessary.
+
+       * ch-convert.c (digest_structure_tuple): When building a new SET_TYPE
+       constructor, re-set the TREE_CONSTANT and TREE_STATIC bits.
+
+       * ch-decl.c (do_decl): Fix handling of REFERENCE_TYPEs which
+       the patch below helped to mess up.
+
+       * ch-expr.c (build_chill_arrow_expr): Call `mark_addressable'.
+       (build_chill_addr_expr): Take new argument ERRORMSG.
+       All callers changed.  Also, call `build_chill_addr_expr' where
+       we used to call `build1 (ADDR_EXPR, ptr_type_node, ...)' since
+       that now calls `mark_addressable' automagically.
+
+       * ch-decl.c (do_decl): Keep OPT_INIT in DECL_INITIAL if possible.
+       This is needed because variables may appear in initialization
+       statements, and their DECL_INITIALs are their values at
+       initialization time.
+       * ch-convert.c (digest_structure_tuple,digest_constructor): Changed
+       to handle VAR_DECLs as initializers.
+
+       * ch-convert.c (digest_structure_tuple): Copy elements of INITS so
+       they aren't destroyed for later use.
+
+Tue Jan  4 15:25:30 1994  Bill Cox  (bill@cygnus.com)
+
+       * ch-expr.c (chill_expand_expr): Correct check-range lo_limit
+         parameter for varying_array_ref calculations.
+         (build_chill_indirect_ref): Prevent seg fault due to syntax error.
+       * ch-typeck.c (build_chill_slice_with_range): Correct issuance
+         of bogus error in votrics.
+         (build_chill_slice_with_length): Change for debug tracability.
+
+Tue Jan  4 02:43:37 1994  Michael Tiemann  (tiemann@blues.cygnus.com)
+
+       * ch-convert.c (digest_structure_tuple): Fix phasing problem in
+       handling variant record initializers.
+       (various places): Change `pop_init_level' calls to match
+       `push_init_level' wrt implicit variable.
+
+       * ch-typeck.c (build_chill_slice): Convert the dynamic max index to
+       `integer_type_node' before using it in comparisons.  FIXME: should
+       this be done in `chill_max_vary_array_index' by default?
+
+Tue Jan  4 00:24:14 1994  Bill Cox  (bill@cygnus.com)
+
+       * ch-actions.c: Fix comments.
+       * ch-parse.y: Define caseaction_flag.
+         (caseaction): Create new caseaction_flag node at the start, 
+         then free it at the end.  Check it before the ELSE code.
+         (expanded_case_label): Check the flag here.  If set in either
+         place, generate a jump to the end of the case.
+       * ch-typeck.c (build_chill_slice_with_length,
+         build_chill_slice_with_range): Add lots of compile-time
+         parameter range checking.
+
+Mon Jan  3 21:49:04 1994  Michael Tiemann  (tiemann@blues.cygnus.com)
+
+       * ch-convert.c (digest_structure_tuple): Call `push_init_level' with
+       implicit==0 everywhere, not 1.
+       (digest_constructor): Ditto.
+
+       * ch-actions.c (check_range): Permit limits to be NULL_TREE.
+       Also, hack out some dead code.
+       * ch-typeck.c (build_chill_slice): Check varying and non-varying
+       slice constructs for range failures.
+       (build_chill_slice_with_range): Reindented, but not changed.
+
+       * ch-typeck.c (chill_max_vary_array_index): New function.
+       * ch-expr.c (chill_expand_expr): Call it.
+
+       * ch-decl.c (var_data_id, var_length_id): New variables.
+       (init_decl_processing): Initialize them.  All calls to
+       get_identifier (VAR_LENGTH or VAR_DATA) are now replaced
+       by references to these variables.  This simplifies the code
+       w/o obscuring anything.
+
+Mon Jan  3 21:24:44 1994  Bill Cox  (bill@cygnus.com)
+
+       * c-typeck.c: Fix comment.
+       * ch-actions.c (chill_expand_assignment): Error assigning to 
+         READONLY location.  (PR_3903)  Pass filename, linenumber 
+         to setbitpowerset runtime routine.    
+       * ch-decl.c (init_decl_processing): Add filename, linenumber
+         parameters to setbitpowerset prototype.
+       * ch-expr.c (build_chill_function_call): Error when passing a
+         READonly location as a LOC or INOUT parameter.
+       * ch-parse.y (mode): Correct code marking type as readonly.
+
+Mon Jan  3 19:03:55 1994  Michael Tiemann  (tiemann@blues.cygnus.com)
+
+       * ch-actions.c (chill_expand_assignment): Disable code that defeats
+       building varying array references.
+       * ch-expr.c (chill_expand_expr): Add rangecheck code to
+       VARY_ARRAY_REF case.
+       * ch-typeck.c (build_chill_array_ref): Don't call an `expand_'
+       function (in this case, `validate_varying_array_ref') when we're
+       doing a `build_' operation.
+
+       * ch-typeck.c (validate_varying_array_ref): Simplify interface
+       since INDEX parameter can never meaningfully be an INDEXLIST.
+       * ch-actions.c (expand_varying_length_assignment): Caller changed.
+       
+Mon Jan  3 07:29:45 1994  Michael Tiemann  (tiemann@blues.cygnus.com)
+
+       * ch-typeck.c (build_chill_cast): Set TREE_CONSTANT on NOP_EXPRs.
+       * ch-convert.c (digest_structure_tuple): Switch to permanent_obstack
+       if we need to build a CONSTRUCTOR for a SET_TYPE initializer.
+       (digest_structure_tuple): If TREE_VALUE (VALUE) == NULL_TREE, don't
+       call CH_COMPATIBLE or try to convert it to TREE_TYPE (FIELD).  This
+       can happen when constructors are output incrementally.
+       * c-typeck.c (initializer_constant_valid_p): Handle SET_TYPEs.
+       * varasm.c (output_constant): Handle NOP_EXPRs in SET_TYPE
+       CONSTRUCTORS.
+
+Sun Jan  2 08:17:09 1994  Michael Tiemann  (tiemann@blues.cygnus.com)
+
+       * ch-convert (digest_structure_tuple): Handle SET_TYPEs.  Also, call
+       `convert' so we can handle INSTANCE types (and other anomolies)
+       correctly.
+
+       * ch-convert.c (digest_structure_tuple): Fixed variant
+       structure initialization.  Also fixed a typo (TYPE_NAME
+       was being used on a FIELD_DECL instead of DECL_NAME).
+       * c-typeck.c (initializer_constant_valid_p): Pass missing
+       ENDTYPE argument on recursive call.
+       (set_init_field): New function, needed by ch-convert.c change above.
+
+       * ch-decl.c (layout_chill_variants): Added a FIXME next to an
+       almost certain typo.
+
+       * ch-expr.c (build_chill_arrow_expr): Call `build1' and set
+       TREE_CONSTANT for static references.
+       * ch-except.c (chill_start_on): Change calls to
+       `build_unary_op' (which is C-specific) to `build_chill_arrow_expr'
+       which has CHILL semantics.
+       * ch-convert.c (convert): Ditto (albeit in some disabled code).
+
+Sat Jan  1 21:26:43 1994  Michael Tiemann  (tiemann@blues.cygnus.com)
+
+       * ch-satisfy.c (safe_satisfy_decl): Reorder conditional test of
+       TREE_CODE of DECL in case it's altered by actions in the switch.
+
+       * ch-satisfy.c (satisfy): Undo abort added earlier on 1 Jan.  CVS log
+       mentions where to find code that triggers this case.
+
+       * ch-actions.c (adjust_parm_or_field): Handle CONSTRUCTORS here as
+       well.
+
+       * ch-convert.c (digest_structure_tuple): Push to permanent_obstack if
+       we're dealing with a CONSTRUCTOR that is TREE_PERMANENT.
+       (digest_constructor): Ditto.
+
+Sat Jan  1 10:29:19 1994  Michael Tiemann  (tiemann@blues.cygnus.com)
+
+       * ch-parse.y (handleraction,resultaction,assignaction,call): Modified
+       so that CONSTRUCTORS are properly handled before being used.
+
+       * ch-convert.c (chill_start_init): New function.  All callers to
+       `start_init' changed to call this function instead.
+       (digest_struct_tuple): Defend against initialization machinery
+       mucking with CONSTRUCTOR_ELTS of CONSTRUCTORs by grokking both
+       IDENTIFIER_NODEs and FIELD_DECLs in the TREE_PURPOSE slots.  This is
+       needed because CONSTRUCTORS stored in DECL_INITIALs of CONST_DECLs
+       can be refered to throughout the compilation unit.  Also remove an
+       extraneous call to `process_init_element' erroneously added to the
+       variant record sub-loop.
+       (digest_constructor): Propagate TREE_CONSTANT and TREE_STATIC to
+       CONSTRUCTORS of SET_TYPE.
+       * ch-parse.y (build_chill_constructor): Refix typo.  Also set
+       TREE_STATIC if at top level.
+
+       * ch-expr.c (build_chill_arrow_ref): Fix yet another case of
+       TREE_CONSTANT not being set by calling `build1' when `build_unary_op'
+       should have been called.
+
+       * ch-convert.c (digest_struct_tuple): Restore code which tracks 
+       field initializations so that the compiler can deduce what variant
+       initializations to assume.
+
+       * ch-satisfy (safe_satisfy_decl): Turn on initialization machinery
+       when we push into a scope that has a DECL with a CONSTRUCTOR as its
+       DECL_INIT.
+
+       * ch-parse.y (build_chill_constructor): Change the name of the
+       parameter to something more meaningful.  Fix typo.  Also, handle case
+       where element is an untyped CONSTRUCTOR.
+
+       * ch-except.c (finish_handler_array): Set TREE_CONSTANT on
+       constant ADDR_EXPRs.
+       (chill_start_on): Call `build_unary_op' to set TREE_CONSTANT
+       on JBUF_REF (instead of calling `build1' which does not).
+
+       * ch-convert.c (convert): Test LENGTH instead of NEEDED_PADDING.
+
+       * ch-typeck.c (chill_expand_tuple): Deleted.
+       * ch-parse.y (primval rule): Don't call `chill_expand_tuple';
+       instead, use initialization machinery for CONSTRUCTORS that
+       come through here.
+       * ch-except.c (finish_handler_array): Ditto for CONSTRUCTORS
+       that are created here.
+       * ch-satisfy (satisfy): Abort in case we would have called
+       chill_expand_tuple.  FIXME: some other code is needed here,
+       but I don't know what yet.
+
+       * ch-parse.y (build_chill_constructor): New function to
+       propagate TREE_CONSTANT bits to CONSTRUCTORS.
+       (untyped_expr rule): Use it.
+       (primval rule): Use it.
+
+       * ch-decl.c (do_decl): Call `finish_init'.
+       * ch-convert.c (convert): If we spontaneously create a CONSTRUCTOR in
+       this function, make sure the initialization machinery is set up.
+
+       * ch-convert.c (digest_structure_tuple, digest_constructor): Add
+       missing prototypes.
+
+Fri Dec 31 11:31:01 1993  Michael Tiemann  (tiemann@blues.cygnus.com)
+
+       * ch-grant.c (chill_finish_module_code): Mark ADDR_EXPR built by hand
+       as being TREE_CONSTANT.  Otherwise it gets bounded by the initializer
+       code.
+
+       * ch-decl.c (do_decl): Change in CONSTRUCTOR handling due to...
+       * ch-convert.c (digest_structure_tuple,digest_constructor): Mostly
+       rewritten to work with GCC's initialization code.  The basic change
+       was to keep the initializers in sync with the initialization
+       machinery that `process_init_element' imposes.  Both of these
+       functions now return `void'.
+       * ch-convert.c (convert): Changed calls to `digest_...' functions.
+
+       FIXME: the code handling UNION_TYPE (and variant records) has not
+       been tested yet.
+
+Fri Dec 31 15:32:56 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-lex.l (convert_number): Output the converted number if 
+         yydebug is enabled.
+       * ch-parse.y (signaldef): Set ignore_exprs correctly for a 
+         SIGNAL declaration.
+
+Fri Dec 31 13:17:48 1993  Bill Cox  (bill@cygnus.com)
+
+       * ch-parse.y: Cleanup handling of RETURN actions, to distinguish
+         a RETURN without a value (which cannot have an exception
+         handler) from a RETURN with a value (which can).  Eliminate
+         some shift/reduce and reduce/reduce conflicts.
+
+Thu Dec 30 17:42:32 1993  Michael Tiemann  (tiemann@blues.cygnus.com)
+
+       * ch-inout.c (build_chill_writetext): Deal with 2 cases where
+       types returned from `type_for_size' are not expected.  FIXME.
+       * ch-decl.c (init_decl_processing): Mark `char_type_node' unsigned.
+       This is required when range checking is enabled.
+
+Thu Dec 30 14:28:25 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       DELAY CASE works now.
+       * ch-decl.c (init_decl_processing): Move rest of tasking-related
+         initialization into tasking_init().
+       * ch-parse.y (delaycaseaction): Pervasive additions/corrections.
+         (optsetprio): New non-terminal.
+       * ch-tasking.c (get_task_name): Delete, obsolete.
+         (build_instance_type): build pointer to instance type also.
+         (build_receive_case_start): Cleanup per -Wall messages.
+         (build_receive_case_label): Move between start and end functions.
+         (build_delay_case_start): Pass SET name and priority also.
+         Generally update to correct functioning.
+          (build_delay_case_label): Move between start and end fucntions, 
+         correct its functioning.
+         (build_delay_case_end): Correct the code.
+          (tasking_init): Lots of tasking-related code moved here from
+         init_decl_processing.
+       * ch-tree.h: Update, add prototypes.
+
+Wed Dec 29 10:13:10 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-expr.c (build_chill_indirect_ref): Revert change which
+         failed full regression testing.
+       * ch-lex.l (name_type_signal): Add debug output.
+       * ch-parse.y (structured_variable): Add a debug variable.
+
+Wed Dec 29 02:05:51 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-decl.c (get_next_decl): Revert change which failed full
+         regression testing.
+
+Tue Dec 28 18:20:14 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       DELAY actions work now.
+       * ch-decl.c: Correct spelling in comments.
+         (get_next_decl): NULL out the decl's TREE_CHAIN before returning
+         it, to prevent accidental access to the remembered_decls.
+         (init_decl_processing): Add wait_event to runtime functions.
+       * ch-expr.c (build_chill_indirect_ref): Prevent a syntax error from
+         becoming a seg fault.
+       * ch-grant.c: Correct a comment.
+       * ch-loop.c: Delete/correct comments.
+       * ch-parse.y (delaycaseaction): Add push/poplevel calls.  Turn 'sorry'
+         into rough draft of actual code.
+         (delayaction): Don't make a new scope here, use get_unique_identifier
+         instead.
+         (locdec): process event decls here, too.
+         (mode): Add code to forbid READonly EVENT and BUFFER decls.  Delete
+         code which required EVENTs and BUFFERs to be declared at global scope.
+         (simple_name_string): Add an EVENTNAME.
+       * ch-satisfy.c (safe_satisfy_decl): Prevent a syntax error from
+         becoming a seg fault.
+       * ch-tasking.c (tasking_setup): Add the event queue's max. length
+         as the 'entry_point' parameter in the list.
+         (build_receive_case_start, build_receive_case_label): Defer
+         calling runtime routine until we know whether we have a signal
+         or a buffer to wait for.
+         (build_delay_case_start, build_delay_case_end, 
+          build_delay_case_label, build_delay_action,
+          process_event_decls): Added functions.
+       * ch-typeck.c (chill_similar): Allow all integers of differing
+         precisions to be similar.
+
+Thu Dec 23 18:00:40 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * gcc.c (CHILL SPECS): Delete references to -M -MM -MD -MMD
+         options.  Delete C-specific defines.  Disable piping from
+         pre-processor to cc1chill (even if -pipe is specified), since cc1chill
+         rewinds its input for its second pass.  Piping still works
+         from cc1chill to as.
+
+Thu Dec 23 12:31:55 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-tasking.c (decl_tasking_code_variable): Assure that the
+         tasking_code variable is allocated on the permanent obstack.
+         (tasking_setup): Lots of changes - handle EVENT/BUFFER max.
+         queue length (passed as the entry_point parameter).
+         Other changes to variable names to increase 'self-documentation'
+         the only kind GNU CHILL will get, for a while..
+
+Wed Dec 22 10:46:31 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-decl.c (do_seize): Delete - it's unused.  Fix comments.
+       * ch-loop.c (build_chill_iterator): Convert BY expression
+         so loop involving a SET works.  Additional errors generated
+         for numbered SET expression as start or end expression.
+       * ch-tree.h: Prototypes for future DELAY functions.
+       * ch-typeck.c: Standard indentation.
+
+Tue Dec 21 15:30:57 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-actions.c (build_cause_exception):  New function.
+       (expand_cause_exception):  Re-write to use build_cause_exception.
+       (check_expression, check_range):  New functions.
+       (chill_convert_for_assignment):  New function.
+       * ch-expr.c (build_chill_pred_or_succ):  New function.
+       (build_chill_succ, build_chill_pred):  Removed.
+       (build_generalized_call):  Use build_chill_pred_or_succ.
+       * ch-lex.h, ch-lex.l (init_lex):  Add RID_OVERFLOW and RID_RANGEFAIL.
+       * ch-lex.l (init_lex):  Use new macro to make more terse.
+       * ch-typeck.c (chill_equivalent):  New function.
+       Also check that ranges have the same bounds.
+       * ch-typeck.c (my_build_array_ref):  Add optional range-checking.
+       * ch-typeck.c (chill_location):  Handle COMPOUND_EXPR properly.
+       Return 2 if also a referable.
+       * ch-typeck.c (chill_referable):  Re-define to use chill_location.
+       * ch-tree.h (CH_EQUIVALENT):  Re-defined to use chill_equivalent.
+
+       * dbxout.c (dbxout_type):  Output the type attribute "@S;" to
+       distinguish a string from a char array, and to distinguish a
+       bitstring from regulat (power)set.  (Needed for Chill.)
+       * dbxout.c (dbxout_type):  Only check for baseclasses in
+       type.binfo is a vector.  (It is used in Chill for tagged unions.)
+
+Fri Dec 17 09:56:07 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c, ch-convert.c, ch-decl.c, ch-expr.c,
+         ch-grant.c, ch-inout.c, ch-loop.c, ch-parse.y,
+         ch-satisfy.c, ch-tasking.c, ch-tree.h, ch-typeck.c:
+         Fix -Wall problems.
+       * ch-actions.c (chill_expand_assignment): Error if assigning
+         a value to a BUFFER or EVENT variable.
+       * ch-expr.c (invalid_left_operand): Delete, unused.
+       * ch-grant.c (tasking_setup): Call build_enum_tables.
+       * ch-inout.c (get_final_type_and_range, build_enum_tables,):
+         New functions.
+         (build_chill_writetext): Lots of changes to support other
+         basic CHILL data types.
+       * ch-loop.c (build_chill_iterator): Lots of new code to check
+         the expressions in a STEP loop.
+       * ch-tasking.c (rc_state): Add fields to flag SIGNAL and BUFFER
+         names in receivecasealternative.  Generate error messages
+         if they're mixed in the same receive case.
+         (process_buffer_decl): Renamed from build_buffer_decl.
+       * ch-tree.h: Fix prototypes.
+       * ch-typeck.c (smash_dummy_type): Handle all four kinds of LANG_TYPE
+         correctly.  Thanks Per!
+
+Wed Dec 15 15:05:56 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-decl.c (push_scope_decls):  Re-arrange some more, so
+       that normal SEIZES (without ALL) are handled before SEIZE ALL.
+
+Wed Dec 15 13:01:22 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-loop.c (declare_temps): Calculate end-of-array pointer
+         using correct type (NOT chill_integer_type).
+         (begin_chill_loop): Build loop-bypass expression in the
+         type of the start expression, not in the unsigned type.
+
+Tue Dec 14 15:41:32 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-decl.c (push_scope_decls):  Re-arrange so that normal
+       (non-seize) declarations are proclaim_decl'd *before* we
+       handle the ALIAS_DECLs for seizes.  The advantage is
+       that we can now test for (an approximation) to the
+       'seizeable' concept, thus avoiding duplicate definitions
+       when a module has both GRANTs and SEIZE ALL.
+
+       * ch-expr.c (build_chill_arrow_expr): No longer re-write
+       addr-of-conversion to pointer-conversion-of-addr.
+       * ch-expr.c (build_chill_addr_expr): Re-write to just use
+       build_chill_arrow_expr.
+
+Mon Dec 13 16:44:43 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-expr.c (build_chill_addr_expr, build_chill_addr_expr):  Don't re-write 
+
+       * ch-tree.h (chill_root_resulting_mode):  Fix typo (missing '_').
+
+       * ch-expr.c (finish_chill_binary_op):  Use CH_ROOT_RESULTING_MODE
+       macro (which works on expressions), rather than CH_RESULTING_MODE
+       (which works on modes, and isn't quite correct).
+       * ch-tree.h (CH_IS_BOUND_REFERENCE_MODE):  New macro.
+       * ch-typeck.c (chill_read_compatible, chill_compatible):
+       Use the new macro, which handles NEWMODEs of PTR correctly.
+       * ch-typeck.c (chill_similar):  Return 1 rather than 0 for
+       dynamic-length array (and string) types (e.g. slices).
+       * ch-typeck.c (chill_root_mode):  If the mode has a Novelty,
+       just return it as is.  (This is still not 100% correct for
+       NEWMODE of RANGEs, but is close enough.)
+
+Mon Dec 13 16:27:06 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-parse.y (locdec): Avoid passing IDENTIFIER_NODEs to
+         build_buffer_decl, which then seg faults.
+       * ch-tasking.c (build_buffer_descriptor): Move declaration
+         of bufdecl closer to its use.
+
+Mon Dec 13 14:57:55 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (chill_expand_result): Use expand_expr_stmt
+         to avoid C-specific conversions.
+       * ch-lex.l (name_type_signal): Rewrite to support BUFFERs and EVENTs.
+       * ch-parse.y (sendaction): Delete unused statement, use the 'name'
+         variable.
+       * ch-tasking.c: Use expand_expr_stmt to avoid C-specific
+         conversions.
+          (build_buffer_decl): Save the tasking_code_variable's decl
+         in the buffer decl tree.
+         (build_buffer_descriptor): Real, working version.
+
+Mon Dec 13 03:13:36 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-decl.c (print_lang_identifier): Delete code
+         to print buffer size - it's no longer kept here.
+       * ch-parse.y (expand_send_buffer): Renamed from
+         build_send_buffer.
+         (locdec): Enable building of a buffer decl.
+         (optresultspec, optresultattr): Add optional
+         result attributes such as LOC.  Semantics
+          not enabled yet.
+       * ch-tasking.c (expand_send_buffer): Renamed.
+       * ch-tree.h (build_send_buffer): Renamed.
+       * ch-typeck.c (chill_expr_class): Do more complete,
+         job of classifying expressions.  Thanks, Per.
+
+Mon Dec 13 00:59:30 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-typeck.c (chill_expr_class):  Return CH_DERIVED_CLASS
+       for bitstring constants.
+       * ch-typeck.c (chill_novelty):  The novelty of an (unnamed)
+       range mode is that of its parent mode; the novelty of READ M
+       is that of M.
+
+Sat Dec 11 15:14:41 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-expr.c (varying_to_slice):  Call stabilize_reference
+       rather than save_expr.
+       * ch-typeck.c (build_chill_slice):  Don't emit warning
+       if array is a SAVE_EXPR (it is effectively referable).
+       * ch-typeck.c (chill_root_resulting_mode):  Handle
+       correctly the case that one operand is DERIVED and one is VALUE.
+
+Fri Dec 10 10:00:42 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-grant.c (decode_decl): Restore code mistakenly deleted.
+         Move instance-handling code to raw_decode_mode.
+       * ch-parse.y (formpar): Allow READ modifier in SPEC MODULE.
+          Add rough draft of DELAY statement handling.
+       * ch-tasking.c (build_event_type): New function.
+       * ch-tree.h (build_event_type): Add prototype.
+       * ch-typeck.c (smash_dummy_type): Add buffer & event handling.
+
+Wed Dec  8 18:02:26 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       Parse and grant BUFFER modes.
+       * ch-grant.c (raw_decode_mode): Format BUFFER, EVENT modes.
+         Moved from decode_decl.
+       * ch-parse.y: Fix several sorry() messages.
+       * ch-tasking.c (build_buffer_type): Use a LANG_TYPE to pass the
+         info.
+
+Wed Dec  8 12:59:54 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-actions.c (chill_expand_assignment):  In a multiple
+       assignment, check that all the targets are equivalent.
+
+       * ch-typeck.c (chill_l_equivalent, CH_L_EQUIVALENT):  New function
+       and macro to (partially) implement the relation l-equivalent.
+       * ch-typeck.c (chill_read_compatible):  Implement at least
+       initial check of read-only-ness.
+       * ch-typeck.c (build_readonly_type):  Fix thinkos.
+
+Wed Dec  8 09:11:46 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-decl.c (pop_module): Only warn about duplicate grant
+         statements if they inhabit different files, by examining
+         inode numbers.  Only report compatibility problems in pass 1.
+       * ch-lex.l (chill_same_grant_file): New function to support the
+         above test.
+
+Tue Dec  7 17:10:36 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-decl.c (start_chill_function):  Handle attributes in pass 1,
+       rather than in pass 2.  (It seems to make more sense that way.)
+       * ch-parse.y (procedureattr):  Build attribute list if pass != 2.
+
+       * ch-parse.y (mode):  Don't call build_readonly_type in pass 2.
+
+Mon Dec  6 14:35:31 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       This implements NOVELTY and READONLY checking.
+       * ch-tree.def:  Added comment about use of LANG_TYPE.
+       * ch-typeck.c (build_readonly_type, smash_dummy_type):  New functions.
+       * ch-tree.h: New prototypes.
+       * ch-decl.c (push_modedef):  If newmode, lazily "copy" the given mode
+       immediately (even if it's just a type name), using a LANG_TYPE.
+       * ch-parse.y (mode):  Call build_readonly_type to handle READ.
+       * ch-decl.c (find_implied_types), ch-grant.c (raw_decode_mode),
+       ch-satisfy.c (satisfy):  Handle a LANG_TYPE.
+       * ch-decl.c:  Remove chill_modes_equiv and other unused junk.
+       * ch-satisfy.c (safe_satisfy_decl/CONST_DECL):  Better
+       mode compatibility checking for SYN declarations.
+
+       * ch-typeck.c (chill_similar):  Be more general when checking set
+       modes for similarity - specifically support calling chill_similar
+       BEFORE the modes have been satisfied (needed by proclaim_decl).
+       * ch-decl.c (proclaim_decl):  Allow duplicate definitions
+       of set elements of similar set modes.
+
+       * ch-parse.y (caseaction):  Call language-independent
+       expand_start_case rather than c_expand_start_case (which
+       doesn't allow chars or booleans).
+
+Sat Dec  4 22:16:19 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (cond_range_exception, 
+         cond_type_range_exception): Check command-line flag before
+         generating code.  Fix comments.
+       * ch-expr.c (build_chill_num): Add generation of OVERFLOW
+         code, commented out.
+       * ch-loop.c (build_chill_iterator): Comment out
+         exception code generation.
+       * ch-parse.y: Delete quasi_signal flag, use 
+         current_module->is_spec_module instead.
+       * ch-tasking.c (build_buffer_decl, build_buffer_descriptor):
+         Delete quasi_decl flag.  Look at current_module
+         instead.
+       * ch-tree.h: Take quasi_decl flag out of buffer
+         related prototypes.
+       * ch-typeck.c (valid_array_index, chill_similar):
+         Comment out runtime range checking for now.
+       * expr.c (store_constructor): Fix word-size set problem.
+       * varasm.c (emit_set_data): Fix word-size set problem.
+
+Wed Dec  1 19:08:12 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c: Delete unused prototype for build_compound_expr.
+       * ch-loop.c (begin_chill_loop): Convert operands of the conditional
+         expression to lp->iter_type before expanding it.  Prevents an abort
+         deep in expand_expr and friends.
+
+Wed Dec  1 17:00:44 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (chill_expand_assignment): Comment out strange
+         test and its error message.
+       * ch-loop.c (begin_chill_loop): Correct call to generate conditional
+         jump around the loop.
+       * ch-typeck.c (build_chill_slice): Call correct temporary generator.
+
+Wed Dec  1 14:19:51 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (cond_exception): Clarify that it generates
+         an exception if the given expression is TRUE.  Make it so, Number One.
+       * ch-decl.c (DOLLARS_IN_IDENTIFIERS): Disable these.
+         (print_lang_type): Print max queue size.
+         Add casts to DECL_TASKING_CODE_DECL references.  Fixes a
+         portability problem.
+         (init_decl_processing): Add filename and linenumber arameters
+         to tasking and memory-allocate runtime prototypes.
+       * ch-expr.c (finish_chill_binary_op): Check for division
+         by a constant zero.  Replace build_temporary_variable
+         calls with decl_temp1 calls, to decouple from ch-loop.c.
+         (build_chill_succ, build_chill_pred): Sketch code to generate
+         exceptions.  Add error check for numbered set.
+         (build_generalized-call): Correct call for return_memory.
+         Standardize whitespace before left parens.
+       * ch-grant.c: Use new macro for checking for BUFFER mode.
+       * ch-lex.l (name_type_signal): Add attempts to recognize BUFFER
+         and EVENT names.
+       * ch-loop.c (build_temporary_variable): Make static, unavailable
+         to outsiders.
+         (declare_temps): Make user's variable for him/her, in the
+         true Z.200 case, where it hasn't previously been declared.
+         (begin_chill_loop): simplify control flow a bit.
+       * ch-parse.y (quasi_locdec): Set/reset quasi_flag.
+         (rccase_label): Delete bogus error checks.  Rough draft of
+         BUFFER-related code.
+         (assertaction): Remove logical negation - it's now in cond_exception.
+         (locdec): Sketch of buffer-related code.
+         (non_array_mode): Add EVENT and BUFFER modes here.  Add setting of
+         set-numbered flag for pred and succ functions.
+         (optqueuesize): Default to integer_zero_node.
+         (simple_name_string): Add BUFFERNAME.
+       * ch-tasking.c: Add casts to DECL_TASKING_CODE_DECL references.
+         (build_chill_start_process, expand_send_signal,
+          build_receive_case_start, build_send_buffer): Add filename, linenumber parameters
+         to tasking-related runtime calls.  Sketches of BUFFER mode
+         processing.
+       * ch-tree.h: Remove left-hand-side cast in DECL_TASKING_CODE_DECL
+         macro, for portability to non-gcc compilers.  Add prototypes
+         for buffer-related functions.
+       * ch-typeck.c: Replace build_temporary_variable calls with
+         decl_temp1 calls, to decouple from ch-loop.c.
+         (chill_similar): Add tests for BUFFER and EVENT modes.
+
+Wed Dec  1 14:05:26 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-actions.c (malloc prototype):  Remove; can cause conflicts.
+
+Wed Dec  1 09:49:58 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-grant.c (raw_decode_mode): Process a REFERENCE_TYPE.
+
+Tue Nov 30 14:05:23 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-decl.c (init_decl_processing): Add filename, line number
+         parameters to tasking-related runtime routines.
+       * ch-grant.c (decode_decl): Check for BUFFER mode differently.
+       * ch-parse.y (BUFFER_CODE, EVENT_CODE): Move token to 
+         lex-only list.
+         (quasi_locdec): Set/reset quasi_decl flag.
+       * ch-tasking.c (build_start_process, expand_send_signal,
+         build_receive_case_start, build_send_buffer): Add filename. linenumber to
+         (build_buffer_decl, build_buffer-type): New rough-draft functions.
+         generated runtime routine call.
+       * ch-tree.h (CH_IS_BUFFER_MODE, CH_IS_EVENT_MODE): New macros
+         to mark a synchronization mode.  Update the prototypes.
+       * ch-typeck.c (chill_similar): Check EVENT or BUFFER modes for
+         similarity.
+
+Tue Nov 30 09:51:47 1993  Doug Evans  (dje@canuck.cygnus.com)
+
+       * cccp.c (main): Add missing chill sanitization.
+
+Sun Nov 28 15:50:10 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-loop.c (initialize_iter_var): Build count expression
+         more robustly.
+         (bottom_loop_end_check): Call emit_line_note.
+         (end_chill_loop): Delete emit_line_note call.
+       * ch-parse.y (doaction): Move DO keyword
+         after end_chill_loop call.
+
+Wed Nov 24 08:49:07 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * c-typeck.c (c_expand_start_case): Back out previous
+         change.
+
+Tue Nov 23 12:33:50 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * c-typeck.c (c_expand_start_case): Allow any CHILL discrete
+         type as a CASE label.
+
+Tue Nov 23 11:37:42 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-decl.c (grok_chill_variantdefs):  Use NULL as the name
+       of variant fields (not __CASE or anything based on it).
+       * ch-decl.c (handle_one_parent), ch-expr.c (compare_records):
+       Don't check for field name __CASE.
+
+Tue Nov 23 09:37:54 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-decl.c (grok_chill_variantdefs): Use a unique dummy
+         name for the FIELD_DECL.
+       * ch-parse.y (optstartset): More error tests.
+       * ch-tasking.c (make_process_struct): Only report error in pass 1.
+         (build_start_process): Remove bogus restriction, allowing
+         an INSTANCE expression as the optset parameter.
+
+Mon Nov 22 17:56:34 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-tree.h (expand_function_end):  Now is takes parameters, not 2.
+       * ch-decl.c (finish_chill_function):  Add 3rd parameter to
+       call of expand_function_end.
+
+       * ch-expr.c (chill_expand_expr):  For set and strings ops,
+       if target is in a register, use a stack temporary (since we must
+       take its address).  (Similar to Oct 29 change for store_constructor.)
+       * ch-expr.c (resolve_component_ref):  Fix variant field lookups.
+
+Mon Nov 22 14:23:13 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-expr.c (chill_expand_expr): Assure that emit_library_call
+         parameter 1 and its mode are always in sync.
+         (build_chill_pred, build_chill_succ): Allow pred/succ of a
+         pointer.
+       * ch-loop.c (chill_unsigned_type): New function, used instead of
+         unsigned-type, since it understands the chill_integer_type.
+         (decl_iteration_var): Delete, use build_temporary_variable
+         instead.
+         (declare_temps): Use lp->iter_type for the temp evaluations.
+         (initialize_iter_var): More careful calculation, to handle
+         MININT to MAXINT loops w/o overflow/underflow.
+         (begin_chill_loop): Use the original start/end expressions
+         for the loop bypass test.
+
+Mon Nov 22 14:02:06 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-typeck.c (build_chill_slice):  If the argument is
+       is constant, use a read-only static variant, as the
+       existing algorithm assumes addressability.
+       * ch-typeck.c (chill_compatible):  De-reference reference types.
+       * ch-typeck.c (layout_chill_range_type):  Set TREE_UNSIGNED.
+
+Sat Nov 20 20:17:15 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-decl.c (init_decl_processing): Add filename
+         and linenumber to allocate, free memory calls.
+       * ch-expr.c (build_allocate_memory_call,
+         (build_allocate_global_memory_call): Add 
+         filename, linenumber to call.
+       * ch-loop.c: Complete rewrite for maintainability.
+
+Sat Nov 20 17:30:05 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-except.c:  Make it so that (by default at least) the
+       code to push/pop the __exceptionStack is done using library
+       functions __ch_link_handler and __ch_unlink_handler.  This
+       provides better flexibility (for e.g. multi-threading).
+
+       * ch-decl.c (layout_chill_variants):  Allow (useless) selectors
+       even for tag-less variants.
+
+Fri Nov 19 14:32:20 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-decl.c (init_decl_processing): Add memmove builtin
+         function definition.
+       * ch-actions.c (chill_expand_array_assignment): Use memmove
+         call to copy an array or slice across the assignment.
+
+Wed Nov 17 18:23:15 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-satisfy.c (satisfy):  If a CONTRUCTOR already has a
+       TREE_TYPE, temporarily clear it before calling chill_expand_tuple,
+       to force expansion (processing of the elements).
+       * ch-grant.c (decode_constant):  If a tuple (CONTRUCTOR) has
+       a mode, write it out.
+       * ch-decl.c (init_decl_processing): Add some missing inits.
+
+Wed Nov 17 17:13:20 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-loop.c: Fix unterminated strings in design comments.
+         Add enumeration to the iterator structure for type of loop.
+         unused for now.
+
+Wed Nov 17 16:40:05 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-decl.c (init_decl_processing): Add long parameters to lots
+         of powerset runtime routines.
+       * ch-expr.c (chill_expand_expr): Change parameters to powerset
+         runtimes so bitlengths are long unsigned ints.
+       * ch-inout.c (build_chill_writetext): Add filename and linenumber       
+         as runtime parameters, for better error messages.
+       * ch-loop.c: general pre-rewrite cleanup.
+       * expr.c (store_constructor): Rewrite set interface to
+         setpowersetbits for long bitnumbers, rather than shorts.
+
+Tue Nov 16 13:41:12 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-expr.c (build_chill_function_call): Stop generating empty
+         copyback statements, which lead to a seg fault.
+
+Tue Nov 16 12:20:17 1993  Per Bothner  (bothner@cygnus.com)
+
+       * ch-satisfy.c (satisfy):  If satisfying a type whose
+       TYPE_MAIN_VARIANT is not itself, also satisfy the TYPE_MAIN_VARIANT.
+       * ch-actions.c (build_exception_variant):  Remove some crud.
+       * ch-actions.c (build_exception_variant), ch-tree.h, ch-decl.c:
+       Remove unused first argument.
+       * ch-decl.c (start_chill_function):  Call build_exception_variant
+       in pass 1, not in pass 2.
+
+Tue Nov 16 11:10:03 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-decl.c (shadow_record_fields): Call new function
+         build_chill_arrow_expr, which returns a ptr-to-a-type.
+       * ch-expr.c (build_chill_arrow_expr): New function, works like
+         build_chill_addr_expr used to do, returning a typed ptr.
+         (build_chill_addr_expr): Now returns unbound ref - analogous
+         to C 'void *'.
+       * ch-parse.y (PREDEF_MODEDECL): Delete unused token.
+         (operand6): Call build_chill_arrow_expr.  Reindent a bit.
+       * ch-tree.h (build_chill_arrow_expr): New prototype.
+
+Mon Nov 15 16:38:28 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * stor-layout.c (layout_type): If a SET_TYPE needs more than
+       INT_TYPE_SIZE bits, use BLKmode (and never DImode).
+
+       * ch-decl.c (start_chill_function):  Set DECL_CONTEXT of params.
+
+Mon Nov 15 14:49:17 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-decl.c (init_decl_processing): Move tasking stuff (__whoami
+         build_function_call, etc.) to tasking_init.
+       * ch-gperf, ch-hash.h: Add ASM keyword.
+       * ch-parse.y: Add ASM statement rules.
+         (format_str, text_arg): Delete last rules for WRITETEXT, READTEXT.
+       * ch-tasking.c: Move tasking stuff here.
+
+Sun Nov 14 15:50:34 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-parse.y (mode2):  Split into array_mode and non_array_mode
+       to resolve layout ambiguity.
+       * ch-parse.y (checked_name):  Remove.  Use name_string instead.
+       * ch-parse.y (variantdef):  Don't crash if no tag fields.
+       * ch-typeck.c (build_chill_array_type):  If varying_p,
+       actually do build_varying_struct here (rather than in ch-parse.y).
+
+Fri Nov 12 15:37:45 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-satisfy.c (safe_satisfy_decl): Don't mangle function-local
+       static names.  (Let make_decl_rtl generate a unique name.)
+
+Sun Nov 14 13:15:26 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-expr.c (build_chill_lower, cuild_chill_upper):
+         Rewrite for modes, values, etc.
+       * ch-inout.c (build_chill_writetext): Add ability
+         to write out characters.
+       * ch-satisfy.c (safe_satisfy_decl): Don't mangle function-local
+         static names.  (Let make_decl_rtl generate a unique name.)
+       * varasm.c (unpack_set_constructor): Subtract
+         lower domain value from a bit's index value,
+         to match the runtime and allow powersets
+         with negative lower bounds.
+
+Fri Nov 12 14:00:48 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-inout.c (build_chill_writetext): Save reserved words in
+         uppercase if -fspecial_UC was specified.
+
+Fri Nov 12 13:27:12 1993  Per Bothner  (bothner@rtl.cygnus.com)
+
+       * ch-expr.c (chill_expand_expr, build_concat_expr): Simplify
+       string concatenation by treating varying strings as slices.
+        (varying_to_slice): New function.
+       * ch-typeck.c (build_chill_slice): Changed to support the above.
+
+Fri Nov 12 12:07:28 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-convert.c (convert): Fall through & convert a VARY_ARRAY_REF.
+       * ch-expr.c (build_generalized_call): Start module before a
+         writetext action, so its variables are inside the module-level
+         function.
+       * ch-loop.c (init_loop_counter): Correct for_u_bound computation
+         for enumeration loop on a varying array.
+
+Thu Nov 11 07:49:53 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * cccp.c (main): Disable trigraphs for CHILL.
+       * ch-decl.c (grok_chill_fixedfields): Add special_UC
+         to conditional to determine case of reserved words.
+         Make PACK/UNPACK warning more specific.
+       * ch-expr.c (build_generalized_call): Enable recognition
+         of WRITETEXT call here.
+       * ch-gperf, ch-hash.h: Remove WRITETEXT as a reserved
+         word.  It's only predefined.
+       * ch-inout.c: Add special_UC to conditionals
+         to determine case of reserved words.
+         (build_chill_writetext): Change for call from 
+         build_generalized_call.  Add code to format
+         integers.
+       * ch-lang.c (lang_decode_option): Add special_UC and
+         special_LC flags and logic to interlock with
+         ignore_case flag.
+       * ch-lex.l: Add special_UC to conditionals
+         to determine case of reserved words.
+       * ch-parse.y: Delete WRITETEXT as reserved word.
+       * ch-tasking.c: Add special_UC to conditionals
+         to determine case of reserved words.
+         (build_instance_type): Make components of INSTANCE
+         unsigned 16-bit integers.
+       * ch-tree.h (build_chill_writetext): Fix prototype.
+       * ch-typeck.c (build_chill_array_type): Make PACK
+         /UNPACK warning more specific.
+       * toplev.c (lang_options): Add -fspecial_LC
+         and -fspecial_UC flags.
+
+Wed Nov 10 02:29:53 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * Makefile.in: Move ch-hash.h from ch-lex.o
+         rule to ch-lex.c rule, so flex is rerun.
+       * ch-actions.c (chill_expand_assignment): Error if
+         user tries to assign to a LHS function.
+       * ch-decl.c (grok_chill_fixedfields): Use of PACK
+         /UNPACK is only a warning.
+         (init_decl_processing): Add ADDR as a builtin function.
+       * ch-expr.c (build_generalized_call): Add ADDR
+         as a builtin function.
+         (build_chill_addr_expr): Sanity check parameters.
+       * ch-gperf: Remove ADDR as a reserved word,
+         make ASM into one.
+       * ch-hash.h: gperf'd version of the above.
+       * ch-inout.c (chill_stdio_p): Recognize upper/lower
+         case file names.
+       * ch-lex.l: Make ignore-case work.  Downcase
+         token before checking for reserved words.
+       * ch-parse.y: Delete ADDR as a reserved word.
+         (mode2, optlayout): Allow PACK/UNPACK specifier.
+         (call): Use build_generalized_call for 
+                 primval LPRN modename RPRN.
+         (primval): Delete ADDR reference.  It's now only
+         predefined, not reserved.
+       * ch-tree.h: Add BUILT_IN_ADDR as a predefined.
+       * ch-typeck.c (build_chill_array_type): Just
+         a warning for PACK/UNPACK usage.
+       * toplev.c: Add -fignore-case and -fno-ignore-case.
+
+Tue Nov  9 15:07:02 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c: Reindent for readability.
+       * ch-convert.c (convert): Turn a NULL keyword into [0, 0] for
+         a conversion to INSTANCE.
+       * ch-decl.c: Change special_UC to ignore_case everywhere.
+         (init_decl_processing): Add builtin_function calls for lots of
+         predefined functions.
+       * ch-expr.c: Change builtin function handlers back to accepting
+         args, not a treelist.  
+          (route_to_predefined_function): Delete it and its call.
+         (build_generalized_call): Add lots of builtin functions.
+       * ch-gperf (backwards, duration, inttime, null): Delete them.
+       * ch-hash.h: New version.
+       * ch-inout.c: Change special_UC to ignore_case everywhere.
+       * ch-lang.c: Delete special_UC flag.
+       * ch-lex.l: Change special_UC to ignore_case everywhere.
+       * ch-loop.c (high_domain_value, low_domain_value): Change
+         interfaces to build_chill_upper and built_chill_lower.
+       * ch-parse.y: Delete lots of stuff which should only be predefined.
+       * ch-tasking.c: Change special_UC to ignore_case everywhere.
+         Change builtin function handlers back to accepting args,
+          not a treelist.  
+       * ch-tree.h: Add lots of builtin functions to the enumerator.
+
+Mon Nov  8 18:08:27 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-tasking.c (tasking_init): Disable last-minute change for now.
+
+Mon Nov  8 17:30:22 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * Makefile.in: New commands to build ch-hash.h.  Add ch-lex.h to
+         dependencies where it's used.
+       * ch-decl.c (init_decl_processing): Build predefined constants
+         for TRUE, FALSE and NULL.  Add declaration for abs builtin
+         function.
+         (lookup_name): Check for a CONST_DECL, don't ask about DECL_NESTING
+         stuff for builtin constant like TRUE.
+       * ch-expr.c (route_to_predefined_function): Add a bunch of 
+         predefined functions to the list.
+       * ch-gperf: Define the list of reserved words, minus the predefined
+         words, using the special_UC flag.  Remove NULL, TRUE, FALSE -
+         these are only predefined, not reserved.
+       * ch-hash.h: Check this into repository, even though it's derived
+         from ch-gperf, for those users who don't have gperf.
+       * ch-inout.c (build_chill_io_list_type): Use the special_UC flag
+         to refer to the IO types. Standardize the indentation.
+       * ch-lex.h: Add enumerators for TRUE, FALSE, NULL.
+       * ch-lex.l: Total rewrite of reserved-word recognition, using
+         the ch-hash.h lookup routines.
+       * ch-parse.y: Delete a bunch of unused rules for predefined 
+         procedures and their parameters.
+       * ch-tasking.c (tasking_init): Build predefined functions
+          for COPY_NUMBER, GEN_CODE, GEN_INST, and GEN_PTYPE.  Not
+         complete yet.  Change interface to builtin handlers to accept
+         just an expression list.
+
+Wed Nov  3 18:07:08 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * Makefile.in: Debug, activate rule to make CHILL hash table.
+       * ch-actions.c: Compress parameter type lists per standard.
+       * ch-decl.c: Correct spelling in comment, compress parameter lists.
+         (init_decl_processing): Check special_UC flag to build builtin
+         function declarations.
+       * ch-expr.c (route_to_predefined_function): Check for upper OR
+         lowercase function names.
+       * ch-gperf: Update the list of keywords.
+       * ch-inout.c (build_chill_io_list): Check for special_UC flag
+         to build I/O list type.  Compress parameter lists.
+         (chill_stdio_p): Check for special_UC flag in recognizing
+         file streams.
+       * ch-lang.c (lang_decode_option): Add command-line options
+         for upper-case keywords and user labels.
+       * ch-lex.l (init_lex): Initialize ridpointers to uppercase
+         if special_UC flag is set.
+         (downcase, getlc, check_newline): Don't do this if ignore_case
+          flag is set.
+       * ch-parse.y (variantdef, case_expr): Report 'sorry' for use of
+         multiple selector expressions.
+
+Sat Oct 30 01:06:19 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-expr.c (compare_record, finish_chill_binary_op): Compare
+       STRUCTs (and INSTANCEs) for equality.
+       * ch-expr.c (invalid_operand):  New functions, combines most of
+       the functionality of invalid_left_operand and invalid_right_operand.
+       * ch-convert.c (digest_constructor):  Set TREE_CONSTANT if it is.
+
+Sat Oct 30 11:12:47 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * Makefile.in (chill): Add back in the commands to build chill
+         (the script) from chill.in.
+
+Fri Oct 29 16:25:38 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * expr.c (store_constructor):  If SET_TYPE target is in a register,
+       use a stack temporary (since we must take its address).
+
+       * ch-expr.c (build_allocate_global_memory_call,
+       build_allocate_memory_call):  Cast argument pointer to PTR,
+       if needed (using location cast).  Also, some other cleanups.
+       * ch-parse.y (bracketed_action):  Re-arrange things so that
+       a handler following BEGIN END comes before the final poplevel.
+       * ch-typeck.c (build_chill_cast): Just return if already correct type.
+
+       Re-do DO WITH so that build_component_ref for is done lazily
+       (at each reference) instead of eagerly (at the beginning
+       of DO WITH).  This is needed for tagged variants,
+       * ch-tree.def (WITH_DECL):  New declaration tree code.
+       * ch-decl.c (lookup_name):  Recognize WITH_DECLs.
+       * ch-decl.c (handle_one_level):  Variant parts are currently
+       indicacted with '__CASE'.  Recognize that.
+       Generate a WITH_DECL (instead of ALIAS_DECL) for each field name.
+
+Thu Oct 28 22:17:41 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-expr.c (build_chill_length), ch-typeck.c (build_chill_cast):
+       Remove some old crud.
+       * ch-typeck.c (build_chill_cast):  Another attempt at a
+       compromise between robustness and generality for casts.
+       Location conversions are now less likely to confuse things.
+       * ch-parse.y (optactions):  Allow further optactions following
+       an initial semicolon.
+       * ch-parse.y:  Add error messages on EVENT and BUFFER.
+
+       * ch-decl.c, ch-expr.c, ch-parse.y, ch-typeck.c:
+       Undo some of the Oct 27 changes.
+
+       Convert (some) builtin functions previously using reserved
+       names to be just predefined.
+       * tree.h (enum builtin_in_function):  Added END_BUILTINS at end.
+       * ch-decl.c:  Add predefines for allocate_memory,
+       allocate_global_memory, return_memory, writetext.
+       * ch-expr.c (check_arglist_length):  New function.
+       * ch-expr.c (build_generalized_call):  If "function" is
+       a builtin, build the appropriate tree.
+       * ch-parse.y, ch-lex.l:  No longer recognize many pre-defined
+       functions at the lexer/parser level.
+       * ch-tree.h (enum chill_built_in_function):  New type.
+
+Thu Oct 28 16:43:36 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-expr.c (allocate_memory, allocate_global_memory):
+         Check for invalid parameters, issue errors.
+       * expr.c (store_constructor): Calculate bitlength, startrtx
+         and endrtx of powerset correctly.  Define targetx, use it
+          and XEXP correctly.
+
+Wed Oct 27 08:25:56 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-expr.c (build_max_min): Error for passing empty tuple
+         as the argument.
+
+Wed Oct 27 08:25:56 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-decl.c (init_decl_processing): Make allocate
+         builtins have a pointer-to-pointer-to-void
+         first parameter, rather than a reference parameter.
+       * ch-expr.c (build_allocate_memory_call,
+         build_allocate_global_memory_call): Do automatic
+         ADDR () on the first parameter, for backward
+         compatibility.
+       * ch-grant.c (grant_one_decl): Don't grant if
+         DECL_SOURCE_LINE is zero.
+         (start_chill_module_code): Set DECL_SOURCE_LINE
+         to zero so that module-level function isn't granted.
+       * ch-parse.y (handleraction): Add return_memory action.
+       * ch-typeck.c (chill_similar): Allow a void_type
+         to be similar to anything.  This makes allocate_memory
+         and return_memory pointer parameters slide through.
+
+Tue Oct 26 00:12:19 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-typeck.c (build_chill_array_ref):  Check for and complain
+       if there are more index expressions than the array rank.
+
+       * ch-actions.c (chill_expand_assignment):  Emit appropriate
+       error message if RHS of multiple assignment is tuple/case/if.
+       * ch-tree.def (CONCAT_EXPR):  Change TREE_CODE_CLASS from
+       'e' to the more specific '2'.  (Fixes a satisfy bug.)
+
+Thu Oct 21 17:25:33 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-parse.y: Revert experimental error-generating change
+         that was checked in by mistake.
+
+Thu Oct 21 12:15:30 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-satisfy.c (safe_satisfy_decl): Satisfy the hidden tasking
+         code variables associated with a process or signal.
+         (Apparently I forgot to actually check these in last time.)
+       * ch-tasking.c: Replace last calls to get_tasking_code with
+         working references to DECL_TASKING_CODE_DECL.
+
+Thu Oct 21 10:27:42 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-satisfy.c (safe_satisfy_decl): Satisfy the hidden tasking
+         code variables associated with a process or signal.
+       * ch-tasking.c (build_gen_inst, build_gen_ptype): Use the decl's
+         tasking_code_decl pointer, rather than trying to look it up
+         in the hash table or linked scope list.
+
+Wed Oct 20 09:52:44 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (lookup_and_handle_exit): Only output error message
+         in pass 1.
+       * ch-convert.c (convert): Correct conversion of VARYING array to/
+         from non-VARYING one.
+       * ch-decl.c (print_lang_decl): Add debug output for DECL_TASKING_CODE_DECL
+         field in the node.
+         (decl_tasking_code_var): Delete it.  Its calls are replaced woth
+         generate_tasking_code_variable calls, plus a little glue.
+         (push_extern_process): generate tasking_code_variable as local
+         static variable, point the process' function_decl at it for later 
+         reference by build_start_process.
+         (print_mode): Use CHILL upper-case convention to print modes.
+       * ch-lex.l: Must initialize tasking-related trees to NULL at start
+         of each pass, or we lose the fact that the user did or did not
+         specify a value for each of them.
+       * ch-parse.y (check_end_label, action, exceptlist): Only output
+         error message in pass 1.
+          (sendaction): Add comments.
+         (sigdef): Comment out special handling for external signals.
+         Chain tasking_variable_decl onto signal structure decl, for
+         easier non-symbol-table access later.
+       * ch-tasking.c (generate_tasking_code_variable): Do work in both
+         passes, using do_decl so we can pass the pass 2 value of the
+         process_type or signal_code to it.  Only update the process_type
+         if the incoming pointer isn't null and pass == 2.  Use a new
+         parameter to know whether to include an init expression.
+         (build_process_header): Attach tasking-code_variable to process
+         function_decl for easy access later, not through the hash table.
+         (build_start_process): Get tasking_code_variable out of the process'
+         function decl.
+         (build_signal_struct_type): Return the type decl, to be accessed by ...
+         (build_signal_descriptor): .. this function.
+         (build_receive_case_label): Get data buffer pointer not from hash 
+         table, but from Tiemann's current rc_state structure instead.
+       * ch-tree.h: Change prototype, fix comment, add DECL_TASKING_CODE_DECL
+         macro for tasking_code_variable storage.
+
+Tue Oct 19 17:39:40 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-lex.l (equal_number):  If the "number" is a CONST_DECL,
+       return its DECL_INITIAL.
+       * ch-satisfy.c (safe_satisfy_decl):  Change logic for rtl
+       generation for decls to not use DECL_ASSEMBLER_NAME.
+       * ch-decl.c:  Set DECL_ASSEMBLER_NAME to DECL_NAME.
+       This matches C, and allows dbxout to emit proper user-level names.
+       (It would be cleaner to fix dbxout to use DECL_NAME ...)
+       * ch-decl.c (outer_decls):  New global list of the decls granted
+       into the outer scope.
+       (pop_module):  Change code that grants into outer scope accordingly.
+       (lookup_name_for_seizing):  Similarly update.
+       (push_scope_decls):  Handle SEIZE ALL from the global scope
+       by searching outer_decls.
+       * ch-grant.c (grant_array_type):  Fix thinko.
+       * ch-inout.c (build_chill_writetext):  Remove excessive TREE_TYPE.
+
+Mon Oct 18 15:57:00 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * varasm.c (output_constructor):  Add support for non-zero
+       lower array bound.
+       * c-typeck.c (output_init_element):  Revert recent changes.
+       * varasm.c (emit_set_data):  Fix emitting set constant data.
+       * ch-lex.l (yywrap):  Reset line number to 0, not 1.
+       It sets incremented to 1 by check_newline.
+       * ch-tree.h:  Restore old version.
+       * ch-expr.c (finish_chill_binary_op):  Convert TRUNC_DIV_EXPR
+       to RDIV_EXPR if an operand is floating.  (This functionality
+       got dropped when hacking finish_chill_binary_op).
+
+       * ch-actions.c (build_chill_case_expr):  Set type to NULL_TREE.
+       not error_mark_node.
+       * ch-actions.c (chill_expand_assignment):  Allow such borderline
+       constructs as:  LHS OR:= [X].
+       * ch-convert.c (convert):  Hande CASE_EXPR (and COND_EXPR)
+       with unknown (NULL_EXPR) type, not just CONSTRUCTORS.
+       * ch-decl.c (do_decl):  Remove CONSTRUCTOR kludge.
+       * ch-typeck.c (chill_compatible):  Allow expr to have NULL mode
+       if it's a CASE_EXPR or COND_EXPR (and not just CONSTRUCTOR).
+
+Mon Oct 18 13:20:53 1993  Ken Raeburn  (raeburn@rover.cygnus.com)
+
+       * c-typeck.c (output_init_element): Limit previous changes to
+       ARRAY_TYPE and SET_TYPE initializers.
+
+Sun Oct 17 23:15:00 1993  Bill Cox  (bill@cygnus.com)
+
+       * c-typeck.c (output_init_element): Handle NULL domain case.
+       * ch-decl.c (do_decl): Revert bogus initializer type change.
+       * ch-grant.c (chill_finish_module_code): Put module's decl onto
+         the module_init_list, for chill_finish_compile's possible use.
+         (chill_finish_compile): Rename variables for clarity, add 
+         commented-out code as example for assignment of module address to its
+         init_list entry.
+
+Sun Oct 17 15:16:54 1993  Bill Cox  (bill@cygnus.com)
+
+       * ch-convert.c: Move semicolon to separate line - easier to see.
+       * ch-decl.c (do_decl): Handle untyped_expr initializers by
+         simply using the variable's declared type - no compatibility
+         check can be made if the expression has no type.
+       * ch-expr.c (expand_packed_set): Fix endless loop - increment
+         the loop variable.
+         (fold_set_expr): Fix two other endless loops by passing
+         correct parameters to unpack_set_constructor.
+       * varasm.c: Standardize 'for' loop.
+
+Sun Oct 17 12:16:21 1993  Bill Cox  (bill@cygnus.com)
+
+       * c-typeck.c (output_init_element): Handle initializer for
+         array with non-zero lower index bound.
+
+Sat Oct 16 16:48:48 1993  Per Bothner  (bothner@cygnus.com)
+
+       * ch-expr.c (finish_chill_binary_op):  Use TREE_SET_CODE
+       to change TREE_CODE.
+
+Sat Oct 16 08:07:17 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-expr.c (finish_chill_binary_op): Disable
+         rough-draft code, not intended for release.
+
+Fri Oct 15 21:44:11 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)
+
+       * expr.c (store_constructor): use PROTO for pack_set_constructor
+
+Fri Oct 15 10:30:09 1993  Bill Cox  (bill@cygnus.com)
+
+       * ch-expr.c (finish_chill_binary_op): Activate some 
+         type-setup code.
+       * expr.c (store_constructor): Subtract arrays minimum element.
+         Makes orientexpress work.
+
+Fri Oct 15 09:26:24 1993  Bill Cox  (bill@cygnus.com)
+
+       * ch-convert.c, ch-expr.c: Add externs so it'll compile.
+       * ch-tree.def: Add BASED_DECL definition.
+
+Thu Oct 14 13:20:02 1993  Bill Cox  (bill@cygnus.com)
+
+       * ch-actions.c (build_chill_cause_exception): Pass the 
+         *address* of the filename string to the runtime routine,
+         rather than passing the string by value.
+
+Thu Oct 14 13:08:07 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * expr.c (store_constructor):  Use a (usually) more efficient
+       algorithm for setting SET types.
+
+Thu Oct 14 13:08:07 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       Changes to better support 1984 version of Chill, which doesn't
+       really distinguish BOOL and BITS(1) or CHAR and CHARS(1).
+       * ch-lang.c, toplev.c, ch-tree.h (flag_old_strings):  New flag.
+       * ch-typeck.c (chill_similar):  Support flag_old_strings.
+       * ch-convert.c (convert_to_boolean):  Generalize code to
+       convert singleton bitstring to Boolean.
+       * ch-convert.c (convert):  Use string_one_type_node.
+       * ch-convert.c (convert):  Add code to convert Boolean to BOOLS(1).
+       * ch-convert.c (convert):  In code that converts fixed string to
+       varying use new 'e' variable, rather than original 'expr' variable.
+       Allows cascaded conversions:  CHAR -> CHARS(1) -> varying CHARS.
+       * ch-decl.c (string_type_node, const_string_type_node,
+       int_array_type_node), ch-tree.h:  Removed.
+       * ch-decl.c (string_one_type_node, bitstring_one_type_node,
+       bit_zero_node, bit_one_node), ch-tree.h:  New globals tree nodes.
+       * ch-decl.c (init_decl_precessing):  Remove some junk.
+       * ch-expr.c (build_generalized_call):  If flag_old_strings,
+       treat string index as string slice.  Also, better error checking.
+
+       Added support for (some kinds of) BASED declarations.
+       * ch-tree.def (BASED_DECL):  New tree code.
+       * ch-decl.c (lookup_name):  Implement BASED_DECL using
+       build_chill_indirect_ref.
+       * ch-decl.c (do_based_decls):  Make a BASED_DECL.
+       * ch-parse.y:  Call do_based_decls for DCL ... BASED(...).
+       * ch-satisfy.c (safe_satisfy_decl):  Handle BASED_DECL.
+
+       Improve handling of set binary operations.
+       * ch-expr.c (expand_packed_set):  New function.
+       (fold_set_expr):  Re-write.  Simpler, more general algorithm.
+       (build_set_expr):  Only used for comparsions now.
+       (finish_chill_binary_op):  Handle set ops better (more directly).
+       (fold_set_and, fold_set_diff, fold_set_eq, fold_set_or,
+       fold_set_ne, fold_set_xor):  Removed.  No longer needed.
+
+       * ch-decl.c:  Remove calls to allocate_lang_decl.
+       * ch-tree.c (build_string_type):  If const length, layout immediately.
+
+Mon Oct 11 17:23:02 1993  Bill Cox  (bill@cygnus.com)
+
+       * ch-decl.c (init_decl_processing): Define __whoami and
+         __wait_buffer functions.
+       * ch-lex.l (ch_lex_init): Reset tasking numbers to zero.
+       * ch-parse.y (sigdef): Add new add_taskstuff_to_list 
+         parameter.
+       * ch-tasking.c (get_tasking_code): Search tasking_list for
+         tasking code name match.  Can't use lookup_name.
+         (get_task_name): New function.
+         (generate_tasking_code_variable): Return if pass 1.
+         Always update *tasking_code_ptr.
+         (build_process_header): Add new add_taskstuff_to_list
+         parameter.
+         (tasking_setup): New code to unpack the tasking
+         list entries no built by ..
+         (add_taskstuff_to_list): Accept new parameter,
+         add it to the list.
+       * ch-tree.h (add_taskstuff_to_list): Add new 
+         parameter.
+
+Mon Oct 11 14:54:50 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * Makefile.in (cc1chill):  Also link in $(BC_OBJS).
+
+Mon Oct 11 06:28:39 1993  Doug Evans  (dje@canuck.cygnus.com)
+
+       * ch-decl.c (flag_allow_single_precision): New global,
+       from ss-931002 merge.
+
+Sun Oct 10 09:11:52 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * Makefile.in: Remove references to chill.in and
+         ch-hash.h.  Remove bogus cc1chil : chill
+         dependency.
+
+Fri Oct  8 16:00:04 1993  Bill Cox  (bill@cygnus.com)
+
+       * ch-actions.c (adjust_parm_or_field): Add parameter to 
+         decl_temp1 call.
+       *ch-decl.c (decl_tasking_code_var): Replace do_decl call with
+         decl_temp1 call.
+         (decl_temp1): Add parameter to signal 'make this external'.
+         (shadow_record_fields): Add parameter to decl_temp1 call.
+       * ch-expr.c (chill_expand_case_expr): Add parameter
+         to decl_temp1 call.
+       * ch-grant.c (chill_finish_compile): Add code to spoof 
+         get_file_function_name,  so we don't get __tmp_s1_code,
+         for example, as the module-level code's name.
+       * ch-loop.c (build_temporary_variable, begin_for_range,
+          init_loop_counter): Add parameter to decl_temp1 call.
+       * ch-parse.y (quasi_signaldef): Clear quasi_signal flag here,
+         for easier maintenance.
+          (sendaction): Rewrite to receive SIGNALNAME token correctly
+         from ch-lex.l (name_type_signal).
+         (signaldef): Don't clear quasi_signal here.
+       * ch-tasking.c (generate_tasking_code_variable): Tell decl_temp1
+         to make the variable public (visible to linker).
+         (build_start_process): Add parameter to decl_temp1 call.
+         (tasking_setup): Comment out band-aid hack which calls
+         generate_tasking_code_variable.  Shouldn't be necessary.
+         Use null_pointer_node rather than integer_zero_node in 
+         entry_point.  More rewrites.
+         (build_signal_descriptor): Name the non-signal in the error msg.
+         Rewrite the building of the signal envelope - avoid seg fault.
+         Add parameter to decl_temp1 call.
+         (expand_send_signal, build_receive_case_start,
+         build_receive_case_end, build_buffer_descriptor): Add parameter
+         to decl_temp1 call.
+       * ch-tree.h: Add parameter to decl_temp1 proto.
+       * chill: Add new CHILL frontend directory
+
+Tue Oct  5 13:51:27 1993  Bill Cox  (bill@cygnus.com)
+
+       * ch-grant.c: Standardize indentation.
+       * ch-parse.y (end_function): Unconditionally poplevel for processes.
+       * ch-tasking.c (build_process_header): Unconditionally pushlevel.
+          (generate_tasking_code_variable): Stop using pass number to
+         force a one-time action.
+       * ch-tree.h (build_chill_slice): Delete proto since function went static.
+
+Mon Oct  4 13:52:36 1993  Bill Cox  (bill@cygnus.com)
+
+       * ch-decl.c (decl_tasking_code_var): Use do_decl, since we're
+         called here in both passes.  Set DECL_ASSEMBLER_NAME.
+         (lookup_name_for_seizing): Move NULL test forward to prevent
+         seg fault.
+       * ch-expr.c (finish_chill_binary_op): Mode access to TREE_CODE
+         to prevent a seg fault in telebras/dynsto.ch.  Make indentation
+         changes.
+       * ch-tasking.c (build_signal_struct): Rename to build_signal_struct_type.
+         (build_send_signal): Rename to expand_send_signal.
+         (generate_tasking_code_variable): Return the var's decl.
+         (build_signal_struct_type): Move generate_tasking_code_variable
+         and add_taskstuff_to_list calls to ..
+        * ch-parse.y (sigdef): .. here.  And make indentation changes.
+       * ch-tree.h: Rename functions, add return values.
+
+Mon Oct  4 15:43:56 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-convert.c (digest_constructor):  Convert element to element_type.
+       * ch-parse.y (end_function):  Use DECL_ARGUMENTS to check
+       for parameterless process.
+
+Fri Oct  1 13:57:30 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-typeck.c (chill_location):  New function.
+       Based on lvalue_p, but also handle Chill-specific VARY_ARRAY_REF.
+       * ch-typeck.c, ch-tree.h (CH_LOCATION_P), ch-convert.c:  Use
+       chill_location instead of lvalue_p.
+
+
+Fri Oct  1 11:28:42 1993  Bill Cox  (bill@cygnus.com)
+
+       * ch-convert.c (convert): Back out Michael's changes, unintentionally
+         checked in.
+       * ch-lex.l (handle_use_seizefile_directive): No longer downcase
+         seize file names.
+       * ch-parse.y (sendaction): Fix a couple of seg faults.  Comment out
+         SEND BUFFER processing for now.
+       * ch-tree.h: Fix comment.
+
+Thu Sep 30 17:00:42 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-tree.h (CH_CHARS_ONE_P, CH_BOOLS_ONE_P):  New macros,
+       for recognizing singleton strings.
+       * ch-tree.h (MARK_AS_STRING_TYPE):  New macro.
+       * ch-tree.c (build_string_type, build_bitstring_type),
+       ch-convert.c (convert):  Use it.
+       * ch-typeck.c (build_chill_slice):  Take length rather than upper
+       bound.  This makes it easier to recognize that A(X UP LENGTH)
+       really has fixed length.  Also, if the argument is string,
+       mark the slice as a string too.  Also, handle varying strings.
+
+       * ch-typeck.c (conflate_singleton_strings):  New global.
+       * ch-typeck.c (chill_similar):  If conflate_singleton_strings is
+       set (as it currently is), allow CHARS(1)/BOOLS(1) to be similar
+       to CHAR/BOOL, as required by the 1984 version of Z.200.
+       * ch-convert.c (convert_to_char):  Convert CHARS(1) to CHAR.
+       * ch-convert.c ( build_array_type_for_scalar):  If input is string,
+       so is output.
+       * ch-convert (maybe_turn_scalar_into_arra), ch-tree.h:  Removed.
+       * ch-convert.c (convert):  Convert CHAR to CHARS(1).
+
+       This fixes 'X // := Y' and is also a general simplification.
+       * ch-actions.c (chill_expand_assignment):  Convert 'LHS OP := RHS'
+       to 'LHS := LHS OP RHS' (using stabilize_reference on LHS).
+       Also, call save_expr on RHS if a multiple assignment.
+       * ch-parse.y (assignaction):  Therefore, no longer need to call
+       stabilize_reference on RHS.
+       * ch-typeck.c (build_chill_modify_expr), ch-tree.h:  Remove
+       modifycode parameter.  Make it the caller's responsibility to
+       handle <assigning operator>.
+       * ch-actions.c, ch-decl.c, ch-except.c, ch-expr.c, ch-grant.c,
+       ch-loop.c: Fix calls to build_chill_modify_expr accordingly.
+
+Wed Sep 29 18:02:55 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-lang.c (string_index_type_dummy), ch-tree.h:  New variable.
+       * ch-decl.c (integer_minus_one_node), ch-tree.h:  New variable.
+
+       * ch-parse.y (arrayindex: modename):  Remove useless code.
+       * ch-satisfy.c (satisfy):  Don't gag on string_index_type_dummy,
+       * ch-tree.c (build_string_type):  Pass string_index_type_dummy as
+       the parent type of the index range.
+       * ch-typeck.c (layout_chill_range_type):  Recognize and handle
+       string_index_type_dummy - specifically allow an empty range.
+
+Wed Sep 29 13:36:23 1993 1993  Bill Cox  (bill@cygnus.com)
+
+       * ch-convert.c (convert_to_reference): Check for loc-identity
+         mismatches correctly (and remove one of those chill_compatible
+         calls).
+       * ch-decl.c (decl_tasking_code_var): New function, called from
+         push_extern_process and push_extern_signal.
+       * ch-parse.y (end_function): Delete parameter.  Check current_function_decl
+         whether it's actually a process, and whether it has parameters.
+         Make Michael's change simplifying the pass 2 test, preventing a seg
+         fault.
+         (procedure, process): Change calls to end_function, remove
+         code saving value from build_process_header.  Delete redundant chill_
+         phrases from some function calls.  
+       * ch-tasking.c: Remove some redundant _chill phrases from function
+         names.
+       * ch-tree.h: Remove some redundant _chill phrases from function
+         names.  Add the CH_VARYING_ARRAY_TYPE macro, call it from
+         all relevant places.
+       * ch-typeck.c: Use the new macro.  Cast TREE_CODEs to chill_tree_code.
+
+Wed Sep 29 13:07:43 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-convert.c (convert_to_reference):  Remove redundancies.
+       * ch-convert.c (convert):  Handle convert_to_reference
+       with a recursive convert call.
+       * ch-decl.c (do_decl): Add missing compatibility-checking
+       of initializer (don't depend on convert).
+
+Tue Sep 28 00:02:25 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-tree.h (CH_LOCATION_P):  New macro.
+       * ch-typeck.c (layout_chill_range_type):  Fix call to
+       type_for_size, when figuring out a defaulted parent type.
+       * ch-expr.c (build_chill_lower, build_chill_sizeof):  Check
+       for TREE_CODE_CLASS != 't' rather than == 'd'.
+       * ch-expr.c (build_chill_function_call):  Use CH_LOCATION_P
+       to check for location, rather than TYPE_CODE_CLASS == 'd'.
+
+       * ch-tree.c (build_string_type):  Make 2-pass safe.  Also,
+       change parameter to be length, not index type.
+       * ch-parse.y (mode2), ch-expr.c (build_concat_expr), ch-lex.l
+       (build_chill_string): Modify callers of build_string_type accordingly.
+       * ch-lex.l (check_newline):  Don't look for # directive inside a
+       C-style comment.
+       * ch-grant.c (grant_array_type):  Make more robust for char-
+       and bit-strings (allow non-constant sizes).  Change parameters
+       and return types.  (raw_decode_mode):  Use grant_array_type
+       for bitstrings.  (otherwise):  Fix grant_array_type callers.
+
+Mon Sep 27 16:57:57 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       Remove changes of Sep 15.
+       * ch-tree.h (CH_SINGLETON_DOMAIN): Removed.
+       * ch-typeck.c (chill_similar):  Don't allow a singleton
+       powerset to be similar to its domain.
+       * ch-convert.c (convert_to_boolean):  Don't convert a singleton
+       SET_TYPE constructor to a Boolean.
+
+       * ch-actions.c (chill_expand_assignment):  Handle IN_EXPR on
+       LHS of assignment, which is what we're current (temporarily?) using.
+
+Mon Sep 27 06:01:57 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c, ch-convert.c, ch-decl.c, ch-expr.c,
+         ch-grant.c, ch-inout.c, ch-parse.y, ch-satisfy.c,
+         ch-tasking.c, ch-tree.c, ch-tree.h, ch-typeck.c:
+         -Wall cleanup.  Add prototypes where missing.
+         Delete unused variables.  Cast uses of tree_codes
+         to chill_tree_code, which they are.
+
+Sun Sep 26 13:09:57 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-decl.c (do_decl): Save initializer in pass zero
+         case also.
+       * ch-lex.l: Fix comments, indentation.
+       * ch-parse.y: Standardize error messages to use
+         uppercase for CHILL keywords rather than quoting them.
+         Suggestion from docs department.
+       * ch-tasking.c: Pervasive changes to get processes to
+         compile and START.
+       * ch-tree.h: Delete prototypes for functions whic
+         I made static inside ch-tasking.c.
+
+Sun Sep 26 02:40:02 1993  Michael Tiemann  (tiemann@blues.cygnus.com)
+
+       * ch-lex.l (yywrap): Call `check_newline' in case the file
+       started with a line directive.
+
+Sat Sep 25 13:54:41 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-decl.c:  Expand pre-amble comment.
+       * ch-decl.c (struct scope, push_module):  Use new field
+       tail_chain_module to build child-module list in order.
+       (Just to make compiler debugging a little less confusing.)
+
+       * ch-decl.c (struct scope):  New field weak_decls.
+       * ch-decl.c (find_implied_types):  New interface.  Now pre-pend
+       new enum types to a given input list.  This makes it easier to
+       avoid duplicates, which should at least be more efficient.
+       Also, handle FUNCTION_DECL.
+       * ch-decl.c (bind_saved_names):  Removed.  Distribute its
+       functionality over new functions (push_scope_decls, pop_scope_decls,
+       build_implied_names, bind_sub_modules).  The goal (which seems to
+       have been more-or-less attained) was to fix weak name handling.
+       * ch-decl.c (poplevel):  Use new function pop_scope_decls.
+
+       * ch-tasking.c (build_signal_struct, build_tasking_message_type):
+       Use build_decl directly, rather than grok_chill_fixedfields
+       (which depends on ignore_exprs and has more overhead).
+       * ch-tasking.c (build_signal_struct):  Construct the type
+       only in pass 1.
+       * ch-typeck.c (build_chill_slice):  Use my_build_array_ref rather
+       than build_array_ref (which does C-specific "optimizations").
+       (Hence move my_build_array_ref up earlier in the file.)
+
+Sat Sep 25 03:47:28 1993  Michael Tiemann  (tiemann@blues.cygnus.com)
+
+       * ch-tasking.c: Declare static variable `void_ftype_void'.
+       (chill_tasking_init): Initialize `void_ftype_void' here.
+       (build_tasking_struct): Use, don't declare `void_ftype_void'.
+       (generate_tasking_code_variable): Call `do_decl', not
+       `decl_temp1' to declare TASKING_CODE_NAME.
+       (tasking_setup): Drop into 1-pass mode so that all
+       tasking-related declarations are installed in the global
+       scope.  Use correct CHILL types for initializers (since
+       ptr_type_node doesn't have the right meaning for CHILL).
+       Also, call `do_decl' instead of `decl_temp1' for
+       `init_struct'.
+       (add_taskstuff_to_list): Set TASKING_LIST in pass 1 to keep
+       `chill_finish_compile' in sync between passes.
+
+       * ch-decl.c (do_decl): Set DECL_ASSEMBLER_NAME for
+       declarations on pass zero.  Keep obstacks in sync, and always
+       call `finish_decl' for pass zero declarations.
+       (push_chill_extern_function): Keep obstacks in sync, and always
+       call `finish_decl' for pass zero declarations.
+       (build_enumerator): Ditto.
+       (grok_chill_variantdefs): Change PASS test to exclude only
+       pass one.
+       (finish_struct): Ditto.
+       * ch-expr.c (build_chill_component_ref): Ditto.
+       (build_chill_binary_op): Ditto.
+       * ch-tree.c (build_powerset_type): Ditto.
+       (build_bitstring_type): Ditto.
+       * ch-typeck.c (build_chill_range_type): Ditto.
+       (build_chill_struct_type): Ditto.
+
+       * ch-decl.c (build_chill_exception_decl): Clarify reasons for
+       extra pushing and popping of obstacks.
+
+       * ch-inout.c (build_chill_io_list_type): Call `satisfy_decl'
+       on IO_DESCRIPTOR.  This causes IO_DESCRIPTOR to be laid out.
+
+       * ch-grant.c (chill_finish_compile): Clear out both
+       MODULE_INIT_LIST and TASKING_LIST if either contains stuff
+       from pass one.
+
+       * ch-parse.y (rccase_label): Add NAME rules so that pass one
+       works w/o knowing we're parsing a signal.  Simplify SIGNALNAME
+       rules since we only get SIGNALNAME tokens in pass two.
+       (sendaction): Ditto.
+       * ch-lex.l (name_type_signal): Enable returning SIGNALNAME and
+       BUFFERNAME on pass two.  The grammar now handles this.
+       * ch-decl.c (lookup_remembered_decl): Deleted.
+
+Fri Sep 24 15:27:13 1993  Bill Cox  (bill@cygnus.com)
+
+       * ch-decl.c (lookup_remembered_names): Removed.  It was being
+         misused in ch-lex.l.
+       * ch-lex.l (name_type_signal): Revert last change.  Basically,
+         we cannot use the C typedef/variable name trick in CHILL, due
+         due to the language's 2-pass nature.
+       * ch-parse.y (arrayindex): Rewrite for correctness, and to avoid
+         a seg fault.
+       * ch-tree.h (lookup_remembered_name): Comment out the prototype. 
+
+Fri Sep 24 11:01:31 1993  Michael Tiemann  (tiemann@blues.cygnus.com)
+
+       * ch-decl.c (do_decl, push_chill_extern_function): Change pass
+         checks so the pass == 0 case is handled for built-in types.
+         (push_modedef): Add check for error_mark_node.
+         (lookup_remembered_decl): New function.
+         (pushlevel, poplevel) Change pass checks.
+         (pushdecl): Check type as well for NULL.
+         (build_enumerator): Handle pass == 0 case.
+       * ch-lex.l: Use lookup_remembered_decl to get lastiddecl
+         during pass 1.
+       * ch-parse.y: Set pass to zero to indicate initial decl processing.
+         Replace NAME references with SIGNALNAME references.
+         (startaction): Only check copy number if not ignoring actions.
+         Always call build_chill_start_process.
+         (optstartset): Don't lookup the instance name.
+       * ch-tasking.c (generate_tasking_code_variable): Replace
+         do_decl call with decl_temp1 call.
+         (build_chill_start_action): Check for ignore_actions here.
+         (build_tasking_message_type): Layout the type.
+         (rc_state_type): New structure to keep nested receive-case
+         info in.
+          (build_chill_receive_case_start, build_chill_receive_case_end):
+         Use the new struct.
+         
+
+Fri Sep 24 04:19:15 1993  Michael Tiemann  (tiemann@blues.cygnus.com)
+
+       * ch-tasking.c (build_chill_receive_case_start): `namedecl'
+       should be a _DECL, not an IDENTIFIER_NODE.
+
+Thu Sep 23 18:18:24 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-decl.c (find_implied_types):  Handle VAR_DECLs.
+
+       * ch-decl.c (print_lang_identifier):  Print IDENTIFIER_OUTER_VALUE.
+       * ch-actions.c (chill_expand_result):  Allow value-less RETURN.
+       * ch-expr.c (resolve_component_ref):  Recognize error_mark.
+
+       * ch-convert.c (digest_constructor):  Handle a nested powerset tuple.
+       * ch-satisfy.c (satisfy):  Use return value of layout_chill_range_type.
+       * ch-typeck.c (chill_similar):  Repeatedly get parent modes
+       of ranges, not just once.
+       * ch-typeck.c (chill_root_resulting_mode), ch-tree.h:  New function.
+       * ch-typeck.c (layout_chill_rang_type):  Re-do type-checking
+       to follow Blue Book better (check for Compatibility).
+
+       * ch-tree.h (CH_ROOT_RESULTING_MODE):  New macro.
+       * ch-lex.l (use_seizefile_name, current_seizefile_name), ch-tree.h:
+       New variables.  The latter replaces in_seizefile.
+
+       Changes to store in the new DECL_SEIZEFILE field each seize
+       ALIAS_DECL the name in the most recent use_seize_file directive.
+       (This requires that use_seize_file directives written to the
+       grant file be written before the SEIZEs that need it.)
+       Allow clashing declarations granted into the global scope
+       (produce a warning), but remember the seizefile case from
+       (using the DECL_SEIZEFILE field of the grant ALIAS_DECL).
+       The a SEIZE will select the granted decl that matches its
+       DECL_SEIZEFILE (in other words:  grants from the most recent
+       use_seize_file will be preferred).
+       * ch-tree.h (DECL_SEIZEFILE), ch-tree.def:  New macro.
+       * ch-tree.h (global_value, IDENTIFIER_GLOBAL_VALUE):  Renamed
+       to outer_value, IDENTIFIER_OUTER_VALUE.
+       Changes to cause the use_seize_file directives to be written
+       out in order as they're seen in source.
+       * ch-lex.l (files_to_seize, next_file_to_seize, last_file_to_seize):
+       Changed to have type TREE_LIST of pointer to IDENTIFIER_NODE.
+       * ch-lex.l (handle_use_seizefile_directive):  Modify appropriately.
+       Don't call grant_use_seizefile.
+       * ch-lex.l (mark_use_seizefile_written):  New function.
+       * ch-grant.c (decode_decl):  Write out use_seize_file directive,
+       if needed, before writing a seize declarations.
+       * ch-decl.c (pop_module):  Handle decls granted into the global
+       module specially, setting IDENTIFIER_OUTER_VALUE.
+       * ch-decl.c (lookup_name_for_seizing):  Check IDENTIFIER_OUTER_VALUE.
+
+Thu Sep 23 19:05:37 1993  Bill Cox  (bill@cygnus.com)
+
+       * ch-decl.c (push_chill_extern_process): Delete unused variables,
+         declare the process' tasking_code variable as external.
+       * ch-parse.y (process): Force ignore_exprs to FALSE while parsing
+         the process header.
+       * ch-tasking.c (sigdef): Move resetting of quasi_signal from here
+         to (signaldef).
+       * ch-tree.h: Add prototype.
+       * expr.c (store_constructor): Emergency first-aid.  Rewrite later.
+
+Thu Sep 23 12:57:53 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-expr.c (build_chill_function_call):  Move possible call to
+       chill_start_module_code until we know we're not calling a builtin.
+       * ch-decl.c (save_expr_under_name):  Use pushdecllist,
+       not proclaim_decl (which provide for popping the decl).
+       * ch-parse.y (optname):  Also allow TYPENAME.
+
+Thu Sep 23 09:18:35 1993  Bill Cox  (bill@cygnus.com)
+
+       * ch-decl.c (print_lang_decl): Make weak name output more standard.
+         (print_lang_identifier): Make signal-data flag output more standard.
+          (push_chill_extern_process): Pass correct arg tree to
+         push_chill_extern_function.
+         (push_syn_decls, fixup_unknown_type, chill_modes_equiv): 
+         Standardize function header layouts (Makes the tcov script 
+         work better).
+       * ch-except.c (chill_finish_on): Standardize function header.
+       * ch-expr.c (fold_set_or): Standardize function header.
+       * ch-grant.c (print_proc_tail, print_proc_exceptions): Standardize
+         function headers.
+         (decode_constant): Make sure that alpha operators are surrounded
+         with whitespace.
+       * ch-parse.y: Spell Z.200 correctly in comments.
+
+Wed Sep 22 10:42:31 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-expr.c (build_chill_addr_expr), ch-tree.h:  New function.
+       * ch-parse.y, ch-decl.c (shadow_record_fields):  Use it.
+       * ch-lex.l (handle_use_seizefile_directive):  Don't emit
+       use_seize_file directive if in_seizefile.
+
+       * ch-convert.c (digest_structure_tuple):  Fix code that checks
+       for excess init values.
+       * ch-decl.c (layout_chill_variants):  Move increment of nlabels
+       inside the proper loop.
+       * ch-grant.c (print_struct):  Add missing loop for tag_list.
+       (print_struct):  Look for variant fields by checking for a
+       UNION_TYPE, not a NULL name, since we must use a dummy name.
+       * ch-parse.y (structured_variable):  Various fixing.
+       * ch-decl.c (shadow_record_fields):  Rename arg decl -> struct_val.
+
+       * ch-satisfy.c (safe_satisfy_decl):  Disable copying of modes
+       for NEWMODE (and hence novelty checking), until we figure out
+       a better way.
+
+       * ch-except.c (finish_handler_array):  Use null_pointer_node,
+       not integer_zero_node (which fails to type-check).
+
+       * c-typeck.c (get_constructor_element_type):  New function.
+       * ch-tree.h (CH_NOVELTY_FLAG):  Now also used in TYPE_DECLs.
+       (CH_NOVELTY):  Redefined to call new function chill_novelty.
+       (CH_CLASS_IS_XXX, TYPE_NEWMODE, CH_CLASS_MODE):  Removed.
+       * ch-typeck.c (classify_chill_expr renamed to chill_expr_class):
+       Take extra output parameter (for M, as in M-value class).
+       * ch-typeck.c (chill_novelty):  New function.  (Also de-references.) 
+
+       * ch-expr.c (resolve_component_ref, build_chill_component_ref):
+       New functions.  Handle 2-pass and variant records.
+       * ch-parse.y (primval DOT name): Use instead of build_component_ref.
+       * ch-satisfy.c (satisfy, case COMPONENT_REF):
+       New case, call resolve_component_ref.
+
+       * ch-expr.c (build_generalized_call):  Extract single arg from
+       arg list before calling build_chill_cast.
+
+       * ch-parse.y (defining_occurrence_list):  New non-terminal.
+       Use it to replace locnamelist, synnames, and modenames.
+       * ch-parse.y:  Re-write parsing of variant records.
+
+       * ch-decl.c (grok_chill_variantdefs):  Now return a FIELD_DECL
+       rather than just its type.
+       * ch-inout.c (build_chill_io_list_type), ch-parse.y:
+       Change callers appropriately.
+
+       * ch-tree.h (TYPE_TAG_VALUES):  Add an extra level of TREE_LIST,
+       to support multiple tag fields.
+       * ch-grant.c  (print_struct), ch-decl.c (layout_chill_variants):
+       Support multiple tag fields.
+
+       * ch-convert.c (remove_tree_element, digest_structure_tuple):
+       New functions, to digest structure tuples, without calling the
+       code in c-typeck.c.  Handles variant tuples and tags (partially).
+       * ch-convert.c (digest_constructor, convert):  Call
+       digest_structure_tuple when appropriate.
+       * ch-convert.c (digest_constructor): Re-arrange a bit.
+
+       * ch-decl.c (push_modedef):  Defer copying of tree until ...
+       * ch-satisfy (safe_satisfy_decl): ... here.
+
+       * ch-decl.c (getdecls):  Add kludge to help dbxout_init.
+
+Tue Sep 21 14:19:11 1993  Bill Cox  (bill@cygnus.com)
+
+       Partial tasking update - not done yet.
+       * ch-actions.c: Comments, indentation.
+       * ch-decl.c (push_chill_extern_process): No longer need to
+         reformat the arg list for make_process_struct.
+         (pop_module): Don't seg fault on null DECL_NAME.
+         (handle_one_level): Error, not warning if tree not recognized.
+         (shadow_record_fields): Rename formal param for readability.
+       * ch-grant.c (decode_decl): Write proper header for a process.
+       * ch-parse.y (quasi_pdef): process now uses processparlist,
+         which doesn't change with the passes.
+          (quasi_locdec): Call build_chill_reference_type to defer
+         doing the type's layout.
+         (processpar): Use paramnamelist, but reformat it into a
+         list of identifiers in pass 2, so a processpar is the same
+         structure in both passes.
+          (locdec): Call build_chill_reference_type to defer doing the
+          type's layout.
+       * ch-tasking.c (generate_tasking_code_variable): Call do_decl to
+         build the decl.  Only update the variable's tree in pass 2.
+          (make_process_struct): Call build_chill_reference_type to defer
+         doing the type's layout.
+          (build_process_header): New code to call make_process_struct.
+         New pass-2 code to make a PARM_DECL for start_chill_function.
+          Pass a void_type_node, not a NULL_TREE for an empty list.
+         Get input for shadow_record_fields from current_function_decl.
+         (build_buffer_decl): Call do_decl not decl_temp1.
+       * ch-typeck.c: Reindent to standards.
+       * gcc.c (SPECS): Add recognition for the '.chi' CHILL suffix.
+
+Mon Sep 20 12:00:24 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-typeck.c (classify_chill_expr):  An expression with a
+       REFERENCE_TYPE still has VALUE class, even if an ADDR_EXPR.
+       * ch-actions.c (adjust_parm_or_field):, ch-tree.h:  Change last
+       parameter, so we can reliably recognize LOC parameters.
+       * ch-tasking.c, ch-expr.c:  Change callers appropriately.
+
+Sun Sep 19 22:26:25 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-tree.h (CH_READ_COMPATIBLE, CH_REFERABLE):  New macros.
+       * ch-typeck.c (chill_referable, chill_read_compatible):  New functions.
+       * ch-typeck.c (chill_compatible):  Allow un-resolved CONSTRUCTOR
+       (with NULL TREE_TYPE), when reasonable.  (Simplifies callers.)
+       Also, handle case of expr being of reference class.
+       * ch-actions.c (adjust_parm_or_field):  Major re-arrange
+       to handle conversions and LOC args better.
+       * ch-actions.c (chill_expand_assignment):  Simplify conversions.
+       * ch-expr.c (build_chill_function_call):  If needed, call
+       chill_start_module_code.
+       * ch-decl.c (declare_predefined_file):  New function, used
+       to pre-define stdin, stdout, and stderr.
+       * ch-inout.c (chill_stdio_p):  Change names of predefined
+       files from chill-stdin etc to plain stdin (and change their types).
+       * ch-lex.l:  Remove some obsolete stuff.
+       * ch-convert.c (convert):  Move conversion from reference to
+       to beginning of convert() so other conversion can work better.
+       Also, remove bogus direct setting of TREE_TYPE.
+
+Fri Sep 10 12:23:41 1993  Wilfried Moser  (fs_moser@cygnus.com)
+
+       * Makefile.in: Change installation of the chill script. gcc will
+         be called always with the full path. That made problems when
+         somebody was using chill but didn't have the installation
+         directory in PATH.
+       * ch-parse.y: Change parsing of WRITETEXT action.
+       * ch-tree.h: Add some new prototypes according to the
+         (partial) implementation of WRITETEXT.
+       * ch-typeck.c: Add new function chill_varying_string_type_p. This
+         functions checks a type for being CHAR(n) VARYING.
+       * ch-decl.c (init_decl_processing): Add new built-in functions
+         _writestring and _writeunixstd.
+         Add call to  build_chill_io_list_type in ch-inout.c.
+       * ch-inout.c (build_chill_writetext): Add some code there.
+         Add new function build_chill_io_list_type.
+         Add new static function chill_stdio_p. This function checks
+         the text argument for being chill_stdin, chill_stdout or
+         chill_stderr.
+
+Fri Sep 17 22:02:04 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-decl.c (push_modedef):  Fix TYPE_MAIN_VARIANT thinko.
+
+Thu Sep 16 18:38:53 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-decl.c (allocate_lang_decl):  Do nothing.
+       * ch-tree.h (struct lang_decl, DECL_GRANT_FILE, DECL_SEIZE_FILE):
+       No longer used;  remove.
+
+       * ch-tree.h (TYPE_TAG_FIELD renamed to TYPE_TAGFIELDS), ch-grant.c
+       (print_struct), ch-parse.y (opttagfield -> opttagfields), ch-decl.c
+       (make_chill_variants, layout_chill_variants):  Add (initial) part
+       of support for multiple tags.
+       * ch-decl.c (lookup_tag_fields):  New function.
+       * ch-parse.y (stmt_count):  Not used; removed.
+       * ch-parse.y (mode2):  Clear current_fieldlist before
+       parsing STRUCT fields;  restore afterwards.
+
+       * ch-parse.y (push_action):  Moved to ch-actions.c.
+
+Wed Sep 15 18:19:37 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-convert.c (convert_to_boolean): Convert a SET_TYPE
+         constructor to a boolean.
+
+Wed Sep 15 17:52:10 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-decl.c (push_modedef): Enable novelty-setting code.
+       * ch-tree.h (CH_SINGLETON_DOMAIN): New macro.
+       * ch-typeck.c (chill_similar): Add checking of singleton
+         powerset against its base type.
+
+Tue Sep 14 17:11:52 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (adjust_parm_or_field): Create a
+         temporary for an non-referencable actual parameter
+         passed to a LOC formal parameter.
+         (chill_expand_assignment): Correct compatibility checking.
+
+       * ch-decl.c (push_modedef): Set up a type's NOVELTY value.
+       * ch-parse.y (opsigdest): Only check for process name
+         in pass 2, when we know.
+       * ch-tree.h (CH_NOVELTY_FLAG, CH_NOVELTY): Define.
+       * ch-typeck.c: Fix comment.
+
+Mon Sep 13 17:33:11 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-grant.c (lookup_decl_in_process, register_decl_as_output,
+       decl_seen_p, processed_decls, allocated, nr_decls):  Removed
+       no-longer-useful functions and variables that used to guard
+       against writing a decl multiple times.  Since we now just
+       go through the decl list linearly, that is no longer an issue.
+       * ch-satisfy.c (safe_satisfy_decl):  Handle missing current_module.
+
+       * ch-decl.c (start_chill_function):  Clear DECL_ASSEMBLER_NAME.
+       Don't make TREE_PUBLIC.  Don't generate rtl yet.
+       * ch-decl.c (pop_module):  If a decl is granted, set TREE_PUBLIC,
+       and its DECL_ASSEMBLER_NAME.
+       * ch-decl.c (fix_identifier):  New function.
+       * ch-grant.c (grant_one_decl):  Don't set TREE_PUBLIC.
+       * ch-tree.h (struct module):  New field prefix_name.
+       * ch-satisfy.c (safe_satisfy_decl):  If assembler_name isn't
+       set, prefix it by the module name(s).
+       * ch-satisfy.c (safe_satisfy_decl, case FUNCTION_DECL):
+       Call make_function_rtl if needed and !LOOKUP_ONLY.
+       * ch-typeck.c (chill_similar):  Flesh out substantially.
+       * ch-typeck.c (chill_compatible):  Re-structure.
+
+       * ch-actions.c (adjust_parm_or_field):  Use CH_COMPATIBLE
+       instead of chill_comptypes to compare actual and formal.
+
+Sun Sep 12 21:10:10 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-parse.y (labellist):  Don't do anything if ignore_exprs.
+
+        * c-typeck.c (output_pending_init_elements): Handle
+        !constructor_incremental case of filling in empty positions.
+       (Patch by Jim Wilson.  CYGNUS LOCAL until we have approval.)
+       * ch-decl.c (pop_module):  Don't grant a seized name.
+       * ch-grant.c (decode_constant):  Support CALL_EXPR.
+       * ch-tree.c (build_bitstring_type):  Don't try to fold non-constant
+       size if pass==1 (since it may be an unsatisfied name).
+
+
+Sun Sep 12 18:06:23 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       2-pass fixes for processes.  Partially done.
+       * ch-actions.c (chill_expand_assignment): Add real
+         novelty-checking sketch, $ifdef'd out for now.
+       * ch-decl.c: Generally fix indentation.  Move tasking
+         init code from init_decl_processing to ch-tasking.c.
+         Delete ObjC-related cruft.  More accurate parameter name
+         for shadow_record_fields.  Move debug_scope before
+         its first call.
+       * ch-expr.c (build_chill_function_call): Return if not
+         pass 2.
+       * ch-grant.c (print_proc_tail): Avoid trying to format
+         a VOID return type, or using a NULL pointer.
+         (decode_decl): Minor changes for PROCESS arg access.
+       * ch-lang.c (lang_decode_option): Use -itu flag to
+         enable 'pedantic' mode.
+       * ch-lex.l (init_lex): Initialize compiler-directive
+         variable trees.
+         (name_type-signal): Disable the returning of SIGNAL and BUFFER
+         name tokens.
+       * ch-parse.y (rccase_label_flag): Renamed from rccase_ifs.
+         All uses renamed also.
+         (end_function): Always poplevel, not just in pass 2.
+         (quasi_pdef): Check for end-label matching.
+         (quasi_formparlist): Write more clearly.
+         (rcaltlist, optelsercvcase, optstartset): Add ignore_actions
+         guards.
+         (rccase_label, sendaction): Use NAME, not SIGNALNAME 
+         or BUFFERNAME.
+         (process): Handle like procedure.
+         (mode): Add SIGNAL as a generic signal parameter.  This
+         is a client-specific extension, so pedantic is checked.
+       * ch-tasking.c: Pervasive rewrites for 2-pass. Still not done.
+       * ch-tree.h (CH_NOVELTY): Make it an lvalue.
+       * ch-typeck.c: Fix comment.
+
+Sun Sep 12 15:03:21 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * c-typeck.c (digest_init):  Compare types using comptypes
+       instead of comparing pointers.  (Helps Chill front end.)
+       * ch-expr.c (finish_chill_binary_op): 
+       * ch-typeck.c (build_chill_array_ref, build_chill_bitref),
+       ch-expr.c (finish_chill_binary_op):  For now, prefer IN_EXPR
+       over BIT_FIELD_REF because of various problems with BIT_FIELD_REF
+       (incomplete support for variable fields, and possible bug in
+       optimize_bit_field_compare).
+       * ch-expr.c (finish_chill_binary_op):  Fix type-checking
+       and appropriately coerce operands for IN_EXPR and comparsions.
+       * expr.c (expand_expr, case ARRAY_REF):  Coerce lower bound (if
+       non-zero) to sizetype before subtraction.
+       * expr.c (expand_expr):  Remove Chills-specific calls to
+       __inpowerset from case BIT_FIELD_REF to case IN_EXPR.
+
+Fri Sep 10 15:47:52 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-tree.def (UNDEFINED_EXPR):  New kind of expression.
+       * ch-grant.c (decode_constant), ch-expr.c (chill_expand_expr),
+       ch-convert.c (convert):  Handle UNDEFINED_EXPR.
+
+       * ch-expr.c (build_char_array_expr):  Move CONCAT_EXPR support to ...
+       * ch-expr.c (build_concat_expr):  ... here.
+       Now also folds concatenation of STRING_CST and UNDEFINED_EXPR.
+       Also, make result varying only if one of the operands are.
+
+       * ch-expr.c (build_chill_binary_op):  Move stuff from here to ...
+       * ch-expr.c (finish_chill_binary_op):  ... here, as needed for
+       proper 2-pass split.  Also, clean up and simplify heavily.
+
+       * ch-tree.h (enum ch_expr_class):  The 5 kinds of expression classes.
+       * ch-typeck.c (classify_chill_expr):  New function:  Determine
+       class of expression.
+       * ch-typeck.c (chill_compatible_classes):  Re-structure; fix
+       asymmetry bugs.
+       * ch-tree.h (CH_CLASS_IS_XXX):  Re-define to use classify_chill_expr.
+
+       * ch-convert.c (maybe_turn_scalar_into_array):  Complain
+       unless scalar is a char constant (and we want a string).
+       * ch-convert.c (convert):  New code for converting to variable
+       string/array.  Avoid type errors by padding (with an UNDFIEND_EXPR).
+       * ch-typeck.c (chill_expand_tuple):  Don't do conversion to
+       varying type here;  that is handled by convert now.
+       * ch-decl.c (digest_constructor):  Moved to ...
+       * ch-convert.c (digest_constructor):  ... here.
+       * ch-decl.c (do_decl):  Simplify; just use convert for initializer.
+       * ch-decl.c (chill_digest_init):  Merged into convert, and removed.
+       * ch-decl.c (init_decl_processing):  Set constructor_no_implicit flag.
+       * ch-except.c (finish_handler-array), ch-decl.c (finish_decl):
+       Replace chill_digest_init by convert.
+       * ch-actions.c (chill_expand_array_assignment):  Simplify; use convert.
+       * ch-lex.l (build_chill_string):  Make string type be derived
+       from integer, not sizetype, because upper bound can be -1.
+
+Thu Sep  9 18:21:46 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-typeck.c (my_build_array_ref): Delete pedantic
+          C-specific error message.
+
+Thu Sep  9 17:44:20 1993  Jeffrey Wheat  (cassidy@eclipse.cygnus.com)
+
+       * gcc.c: pass {I*} spec to cc1chill. Fixes -Ifoo not working problem.
+
+Thu Sep  9 12:22:22 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-typeck.c (build_chill_array_ref):  Remove redundant and
+       broken call to my_build_array_ref.
+
+Wed Sep  8 13:03:49 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-except.c (finish_handler_array), ch-decl.c (finish_decl): 
+       Don't use store_init_value, since it calls digest_init instead
+       of chill_digest_init.
+       * ch-except.c (finish_handler_array):  Use build1 (ADDR_EXPR, ...)
+       instead build_unary_op to avoid C-specific optimizations.
+       * ch-typeck.c (my_build_array_ref):  Don't use default_conversion
+       to convert array to pointer.
+       * c-typeck.c (process_init_default):  New function, to support
+       default values for array tuples in Chill.
+       * c-typeck.c (default_conversion):  Don't convert array to pointer
+       if compiling Chill.
+       * ch-decl.c (digest_constructor):  New function;  used to be guts
+       of chill_digest_init.  Now recursive, to handle nested tuples.
+
+       * ch-decl.c (chill_digest_init):  Handle struct labels.
+       * ch-grant.c (get_tag_value):  Use decode_constant in general case.
+       * ch-grant.c (decode_constant):  Add support for lots of missing
+       binary and unary operators.
+
+Wed Sep  8 10:11:04 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-lang.c: Look for '-I' option for seize file path.
+       * ch-lex.l: Fix comment about above option.
+
+Wed Sep  8 00:37:32 1993  Per Bothner  (bothner@rtl.cygnus.com)
+
+       * ch-satisfy.c:  Move code to set (and restore) file-and-line
+       from satisfy_decl to safe_satisfy_decl, for the sake of satisfying
+       alias decls that refer to real decls with errors.
+       * ch-actions.c (lang_init):  Move to ch-lang.c.
+       * ch-decl.c (init_decl_processing):  Move code to initialize
+       file-and-line from here ...
+       * ch-lang.c (lang_init): ... to here, to avoid clobbering.
+
+       * ch-decl.c (chill_digest_init):  Add support for SET_TYPE,
+       and index values.
+       * ch-typeck.c (chill_expand_typle):  Just call chill_digest_init.
+       * c-typeck.c:  Fix various things that got broken
+       in the latest merge.
+
+Tue Sep  7 15:45:58 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-decl.c (build_enumerator):  Handle a "unnamed set element"
+       (obsolete feature) by generating a dummy name.
+       * ch-decl.c (finish_decl):  Call rest_of_decl_compilation with
+       "correct" value of top-level (to get better debugging output).
+       * ch-decl.c (bind_saved_names):  Allow a null DECL_NAME.
+
+Tue Sep  7 15:48:35 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (chill_expand_return): Correct breakage
+         due to recent fsf merge.
+
+Tue Sep  7 11:16:10 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * .cvsignore: Add multilib.h.
+       * ch-decl.c (chill_digest_init): New function.  Calls were
+         changed, since it has fewer parameters than old digest_init.
+       * ch-parse.y (untyped_expr, primval, tupleelement): Calls to
+          new init stuff.
+         (elementlist): Delete unused code.
+       * ch-satisfy.c (safe_satisfy_decl): Just return if decl == NULL.
+       * ch-tasking.c (build_tasking_enum): Attempt to adapt to 2-pass.
+       * ch-tree.h: Delete digest_init prototype.
+       * ch-typeck.c (digest_init): Much new code.
+
+Tue Sep  7 12:06:28 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-decl.c, ch-parse.y, ch-tree.h, ch-typeck.c: Revert
+          files to their pre-init-change state.
+
+Mon Sep  6 15:28:27 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       Preliminary adaptation to rms' new initializer code.
+       * ch-decl.c (do_decl): Call chill_digest_init, not
+         digest_init, which rms made static.
+       * ch-expr.c (chill_truthvalue_conversion): Delete C-
+         specific code.
+       * ch-loop.c (init_loop_counter): Indent for readability.
+       * ch-parse.y (untyped_expr, primval, tupleelement): Call new init code.
+       * ch-tree.h: Prototype changes for new init code.
+       * ch-typeck.c (chill_expand_tuple): Call new init code.
+       * chill.texi: Add necessary '-f' prefix on options.
+
+Wed Sep  1 13:21:53 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-convert.c (build_array_type_for_scalar),
+       ch-tasking.c (build_chill_receive_case_end):  Index type
+       specification is now chain of types (not chain of TREE_LIST).
+       * ch-satisfy.c (satisfy):  Don't try to satisfy the
+       abstract_origin of an ALIAS_DECL if DECL_POSTFIX_ALL.
+       * ch-expr.c (build_chill_binary_op):  If pass 1, do NOT
+       call finish_chill_binary_op.
+       * ch-parse.y (arrayindex):  Simplify.
+
+Tue Aug 31 14:57:35 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-decl.c (print_lang_decl): Print weak-name status.
+          (print_lang_identifier): Print signal_data as T or F.
+       * ch-lex.l (convert_bitstring, convert_charliteral,
+          convert_float, convert_number): Pass string directly to convert
+         as a parameter.  Return token code consistently, return 0
+         for error.
+          (equal_number): Parse differently, allowing hex, binary
+         and octal constants.
+       * ch-parse.y (dowithaction, structured_variable): Only
+          push/pop scopes once per DO WITH.
+          (structured_variable_list): Check ignore_actions flag here.
+       * gcc.c: Delete 'traditional' from string, add 'itu'
+         as the standard flag's name.
+
+Mon Aug 30 15:12:26 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-typeck.c, ch-tree.h (build_chill_range_type):  Take 3
+       parameters instead of 2 (explicit low and high bounds).
+       * ch-parse.y (arrayindex):  Build range type from low:high.
+       (rangesize, optrangesize):  Removed.
+       (where appropriate):  Use new build_chill_range_type interface.
+       * ch-grant.c:  Clean up writing of range and array types.
+       * ch-satisfy.c (satisfy):  Don't ignore the return value of
+       layout_chill_array_type. (It may be an error mark.)
+       * ch-typeck.c (build_chill_array_type):  Simplify.
+       * ch-typeck.c (layout_chill_array_type):  Clean up checks.
+
+Fri Aug 27 12:55:59 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-decl.c (decl_temp1):  Set DECL_ASSEMBLER_NAME.
+       (push_chill_extern_function)  Don't set current_function_decl.
+       * ch-parse.y (tupleelement):  Don't wrap index is a TREE_LIST
+       (i.e. a range), don't wrap a PAREN_EXPR around it.
+       * ch-grant.c (decode_constant):  For tuple CONSTRUCTORs,
+       add support for ranges in purpose.
+
+Wed Aug 25 16:58:13 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * .cvsignore: Add g++.sum
+       * ch-actions.c (chill_expand_result): Stop building a temp.
+         Assign the expression directly into function's DECL_RESULT.
+       * ch-decl.c: Add formfeeds.  
+         (start_chill_function): Don't need to zero DECL_RESULT's pointer any more.
+         (push_chill_function_context): Delete C pedwarn message.
+       * ch-expr.c: Move builtin functions together.
+       * ch-parse.y (end_function): Delete unused code.
+         Reformat %union for readability.  Delete _MAX and _MIN
+         tokens.
+
+Wed Aug 25 13:24:06 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (get_result_tmp_name): Delete unused function.
+         (chill_expand_result, chill_expand_return): Rewrite for
+         2-pass.
+       * ch-decl.c (start_chill_function): NULL out the RESULT_DECL's
+         chain field, so we can make a temp, evaluate a RESULT action's
+         expression into it, and hang it on here.
+       * ch-parse.y (end_function): Look for RESULT temps to emit.
+         (assertaction): Indentation.
+
+Wed Aug 25 08:34:36 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-lex.l, ch-parse.y: Delete CONTINUE_EVENT token.
+          It wasn't used anyway.
+
+Tue Aug 24 17:51:18 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (chill_expand_result, chill_expand_return):
+         No need to make a temp for the value, just use DECL_RESULT.
+
+Tue Aug 24 16:38:24 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-tree.c (layout_powerset_type):  Remove redundant code.
+       Generalize (in error message) to also handle bitstrings.
+       * ch-tree.c (build_bitstring_type):  Remove all layout-like
+       stuff, and defer that to layout_powerset_type.
+       * ch-expr.c (chill_expand_expr):  For various SET_xxx_EXPRs,
+       allocate stack temp for target using correct mode. 
+
+Tue Aug 24 10:27:19 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c, ch-decl.c, ch-except.c,
+         ch-grant.c, ch-lang.c, ch-loop.c, ch-tree.h,
+         ch-typeck.c: Change build_modify_expr calls to
+         build_CHILL_modify_expr calls.
+       * ch-expr.c (build_chill_modify_expr): Adapted from
+         build_modify_expr in c-typeck.c.
+
+Mon Aug 23 16:48:39 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c, ch-convert.c, ch-decl.c, ch-expr.c,
+         ch-grant.c, ch-lang.c, ch-lex.l, ch-loop.c,
+         ch-satisfy.c, ch-tasking.c, ch-tree.c, ch-typeck.c:
+         Major re-allocation of functions to files.
+
+Mon Aug 23 12:15:11 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       Thanks for the tip, Jim.
+       * Makefile.in: Add dependency lines for ch-except.o and
+         ch-satisfy.o.  Correct dependency lines for ch-convert.o,
+         ch-expr.o, ch-inout.o, and ch-loop.o.
+          (chill, install-common): Add clean-up commands.
+
+Sat Aug 21 17:11:26 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-decl.c (get_type_precision): New function.
+         (layout_enum): Call it.
+       * ch-tree.c (layout_powerset_type, build_bitstring_type):
+         Call it.
+
+Sat Aug 21 13:59:40 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-decl.c (init_decl_processing): Define setbitpowerset       
+         runtime function.
+       * ch-expr.c (chill_expand_assignment): Call setbitpowerset
+         to set a bit.
+       * ch-parse.y: Indentation.
+
+Fri Aug 20 17:29:56 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-parse.y: Delete unused %type declaration.
+       * ch-tasking.c (build_signal_struct): Delete return, since
+         function returns void.
+       * ch-typeck.c: Indent to standard.
+       * stor-layout.c: Fix comment.
+       * toplev.c: Change -L option ti -I.
+       * varasm.c (emit_set_data): Align set constant to word 
+         boundary.
+
+Fri Aug 20 08:20:07 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c: Fix indentation, comments.
+       * ch-decl.c (push_chill_extern_signal): Use same interface
+         as build_signal_struct.
+       * ch-parse.y (quasi_signaldef): Move build_signal_decl
+         here to sigdef.  Add quasi_signal to distinguish contexts
+         where sigdef gets used.
+       * ch-tasking.c: Replace make_signal_struct and build_signal_decl
+         with build_signal_decl, which doesn't loop through a
+         TREE_LIST.
+       * ch-tree.h: Fix protos.
+
+Wed Aug 18 17:36:53 1993  Bill Cox  (bill@cygnus.com)
+
+       * ch-actions.c: Fix comments.
+       * ch-decl.c (push_modedefs): Return the new decl.
+         (shadow_record_fields): Move pushlevel (0) calls into
+         the grammar, so they'll get done in both passes.
+       * ch-parse.y (dowithaction): Always compute & save # of
+         'with' variables seen (both passes), and always pop that
+         number of levels.
+          (structured_variable_list): Always chain variables into a list.
+         (structured_variable): Put pushlevel here (from shadow_record_fields).
+       * ch-tasking.c: Indentation fixes.
+       * ch-tree.h: Change proto.
+       * chill.texi: Add Blue Book section numbers to unimplemented
+         features list.
+
+Wed Aug 18 15:48:43 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-actions.c (build_generalized_call):  New function.
+       Classifies semantically (if pass 2) this that look like calls.
+       * ch-parse.y (call):  Invoke build_generalized_call.
+       * ch-parse.y (sigdef):  Use defining_occurrence instead of NAME.
+       * ch-parse.y (opt_untyped_exprlist):  New non-terminal.
+       * ch-satisfy.c (satisfy):  Handle CALL_EXPR.
+
+Tue Aug 17 16:36:15 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-decl.c (find_implied_types): Handle INTEGER_TYPEs (ranges).
+
+Mon Aug 16 18:07:36 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-tree.h (TUPLE_NAMED_FIELD):  New macro.
+       * ch-parse.y (labelled structure tupleelement):
+       Set TUPLE_NAMED_FIELD flag.
+       * ch-grant.c (decode_constant):  Check for TUPLE_NAMED_FLAG.
+       * ch-satisfy.c (satisfy):  Check for TUPLE_NAMED_FLAG.
+       Do satisfy the elements of a CONSTRUCTOR even if call
+       chill_expand_tuple isn't correct.
+       * ch-satisfy.c (satisfy):  Satisfy TYPE_TAG_VALUES of a RECORD_TYPE.
+       * ch-parse.y (label_spec):  Defer any semantic checking until ...
+       * ch-decl.c (layout_chill_variants):  ... here.
+       Also make sure to call layout_type on the union type.
+       * ch-decl.c (bind_saved_names):  For weak names, allocate an
+       ALIAS_DECL, rather than a CONST_DECL.
+
+       Add support for implied (weakly visible) names.
+       * ch-tree.h (DECL_WEAK_NAME):  New macro.
+       * ch-satisfy.c (satisfy of IDENTIFIER_NODE):  Don't complain
+       if lookup_name fails if LOOKUP_ONLY - name might be weakly visible.
+       * ch-decl.c (proclaim_name):  Handle DECL_WEAK_NAME appropriately.
+       * ch-decl.c (concat_lists, find_implied_types):  New functions.
+       * ch-decl.c (bind_saved_names):  Search for implied names.
+       * ch-tree.h (C_DECL_VARIABLE_SIZE): Removed.
+       * ch-lang.c (layout_chill_struct_type):  Don't use
+       C_DECL_VARIABLE_SIZE.
+
+Mon Aug 16 16:10:43 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c: Delete extra space in error message.
+       * ch-parse.y: Fix comment.
+       * expr.c (store_constructor): Avoid passing NULL to convert,
+         and getting back an error_mark_node and trying to process
+         *that* node.
+
+Mon Aug 16 14:41:29 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-decl.c:  Add more overview comments.
+       * ch-decl.c (proclaim_decl):  New function.
+       * ch-decl.c (temp_pushdecl, struct shadowing):  Removed.
+       * ch-decl.c (bind_saved_names):  Remove blevel parameter;
+       use current_scope global instead.  Do some other cleanups.
+       * ch-decl.c (save_expr_under_name):  Create an ALIAS_DECL.
+       * ch-decl.c (pushdecllist, save_expr_under_name):  Use proclaim_decl.
+       * ch-satisfy.c (satisfy, safe_satisfy_decl):  Be more careful
+       to not do inappropriate things (e.g. type layout) if LOOKUP_ONLY.
+
+       * chill.texi:  Start collecting Chill documentation here.
+       * ch-parse.y (mode):  Ignore READ specifier, for now.
+
+Mon Aug 16 11:13:07 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (chill_comptypes): Correct handling reference        
+         of type 1.
+          (build_chill_length, build_chill_num,
+          build_chill_sizeof): Convert result to CHILL integer.
+          (build_chill_function_call): Clean up INOUT and OUT
+         parameter handling.
+       * ch-decl.c (build_chill_function_type): Handle INOUT and
+         OUT parameters.
+       * ch-loop.c: Fix up comments.
+       * ch-parse.y: Fix up comments.
+
+Sun Aug 15 15:06:01 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (build_chill_lower, build_chill_upper):
+         Re-write, mostly to delete bogus ENUMERAL_TYPE handling.
+       * ch-decl.c (save_expr_under_name): New function to save
+         addressing expressions for DO WITH and DO FOR handling.
+         (handle_one_level): Call new function.
+       * ch-loop.c (init_loop_counter): Call it here, too.
+         Check lp->user_var before passing it to lookup_name.
+         (high_domain_value, low_domain_value): Correct call
+         to build_chill_upper and build_chill_lower.
+         (begin_chill_loop, end_chill_loop): Move pushlevel,
+         poplevel up into the grammar, so they're done in both
+         passes.
+       * ch-parse.y (doaction): Unconditionally make a scope
+         for a loop, pop it later.
+         (controlpart, iteration): Save return from
+          build_chill_iterator.
+       * expr.c: Readability changes.
+
+Sat Aug 14 19:42:32 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-expr.c (chill_expand_case_expr): Complete rewrite
+         for 2-pass.  About 1/2 the size, too.
+       * ch-parse.y (actionlabel): Unconditionally do INIT_ACTION.
+         This assures that a label preceding a module's first action
+         is enclosed in the module-level function that's generated.
+
+Sat Aug 14 14:56:07 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       Re-implement how EXIT is done.
+       'LABEL: BEGIN ... EXIT LABEL; ... END' is converted to
+       'LABEL: BEGIN ... GOTO EXIT!LABEL; ... EXIT!LABEL: ; END'.
+       Hence we no longer need any support for EXIT in stmt.c.
+       * stmt.c (stamp_nesting_label, expand_exit_labelled):  Removed.
+       * ch-actions.c (lookup_and_handle_exit): Handle like 'GOTO EXIT!name'.
+       * ch-tree.c, ch-tree.h (munge_exit_label): New function.
+       * ch-parse.y:  Re-write bracked actions to support EXIT new way.
+       * ch-decl.c, ch-loop.c:  Remove calls to stamp_nesting_level.
+       * ch-parse.y:  Replace SC by new token semi_colon, which
+       resets the 'label' global.  Also make sure that label gets
+       reset whenever we might start a new action statement.
+       * ch-parse.y (possibly_define_exit_label):  New function.
+
+       * ch-except.c (chill_start_on):  Wrap an ADDR_EXPR round the jmpbuf.
+       * ch-grant.c (chill_finish_compile):  Make sure
+       get_file_function_name is only called once.
+       * ch-expr.c (chill_expand_array_assignment):  Use store_expr,
+       instead of incorrectly calling emit_block_move.
+
+       * ch-parse.y (procedure):  Call push_chill_function_context
+       in *both* passes (if nested).
+       * ch-parse.y (primval):  Call get_type_of before chill_expand_type.
+       * ch-parse.y (tupleelement):  Only build PAREN_EXPR during pass 1.
+
+Fri Aug 13 16:36:36 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       Re-implement GRANT and SEIZE, to support prefixes and prefix
+       rename.  All of the Blue Book semantics for these should
+       now work (except FORBID).
+       * ch-tree.def, ch-tree.h (DECL_OLD_PREFIX, DECL_NEW_PREFIX,
+       DECL_POSTFIX, DECL_POSTFIX_ALL):  New ALIAS_DECL layout and macros.
+       * ch-tree.c (get_identifier3, build_alias_decl, decl_old_name,
+       decl_check_rename):  New functions.
+       * ch-lex.h, ch-lex.l, ch-grant, ... (grant_all_seen): Removed.
+       * ch-satisfy.c (satisfy_decl):  Handle SYN initialized with tuple.
+       * ch-satisfy.c (satisfy_decl): Set DECL_ASSEMBLER_NAME here ...
+       * ch-decl.c (pushdecllist): ... instead of here, which is too late.
+       * ch-grant.c (decode_prefix_rename):  New function.
+       Use to print out GRANT and SEIZE statements.
+       * ch-decl.c (ALL_POSTFIX):  New global variable.
+       * ch-decl.c (bind_saved_names, pop_module):  Change to use new
+       ALIAS_DECL layout, and support general prefix rename and ALL.
+       * ch-decl.c (various places):  Don't barf if DECL_ANME is NULL.
+       * ch-parse.y (build_prefix_clause):  New function (handle PREFIXED).
+       * ch-parse.y (optprogendname, optname):  Rename to opt_end_label.
+       * ch-parse.y:  Add support for compound name strings, but defer
+       using all over teh place, due to parser ambiguities.
+       Howver, do use defining_occurrence where appropriate.
+       * ch-parse.y:  Re-write syntax and semantics of GRANT and SEIZE
+       statements to support Blue Book functionality.  Neato!
+
+Fri Aug 13 17:10:52 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c: Redo decl_temp1 calls to save resulting decl.
+       * ch-decl.c (decl_temp1): Rewrite to return generated decl.
+         (decl_temp): Deleted.
+       * ch-loop.c: Redo decl_temp1 calls to save resulting decl.
+       * ch-satisfy.c (safe_satisfy_decl): Reorder switch for
+         readability, add comment.
+       * ch-tasking.c: Redo decl_temp1 calls to save resulting decl.
+       * ch-tree.h: Delete decl_temp proto, change decl_temp1.
+
+Fri Aug 13 13:39:59 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-decl.c (decl_temp): Break the chain of decls.  This
+         prevents an infinite loop.
+       * ch-lang.c (make_chill_pointer_type): Fix compiler warning.
+       * ch-lex.l (equal_number): Check passes in looking up a 
+         symbolic value.
+       * ch-parse.y: Fix comments.
+       * ch-tasking.c (tasking_setup): Only act in pass 2.
+          (make_signal_struct, build_signal_decl,
+          build_chill_receive_case_label): Don't go indirect
+          thru NULL decl pointer.
+
+Thu Aug 12 11:02:34 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (route_to_predefined_function): New function called
+          from build_chill_function_call, to call the proper predefined routine.
+          (build_chill_card, build_chill_length, build_chill_lower,
+          build_chill_max, build_chill_min, build_chill_num, 
+          build_chill_pred, build_chill_sizeof, build_chill_succ,
+          build_chill_upper): Rewritten to run only in pass 2.
+       * ch-decl.c (init_decl_processing): Build predefined functions for card,
+          length, lower, max, min, num, pred, sizeof, succ and upper.  Delete
+          unused builtin_function calls.
+       * ch-grant.c (chill_finish_module_code): Save current_function_decl
+         before calling finish_chill_function, and use that to build the
+          initializer structure.
+       * ch-lex.l: Remove following tokens, since they're now just predefined,
+          not reserved: card, length, lower, max, min, num, pred, sizeof, succ
+          and upper.
+       * ch-loop.c: Readability, indentation changes.
+       * ch-parse.y: Delete tokens for card, length, lower, max, min, num, pred,
+          sizeof, succ and upper.  Delete special rules for calls to these.
+          Delete mode_location and upper_lower_arg non-terminals.
+         (pmodearg): Eliminate convolutions.
+          (call): Add rule for typename parameter.
+       * ch-tasking.c: Readability changes.
+       * ch-tree.h: Add prototypes.
+
+Thu Aug 12 00:38:17 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-decl.c (save_decl):  Set DECL_CONTEXT (decl).
+       * ch-grant.c (chill_finish_module_code):  Call
+       finish_chill_function with nested==0.
+       * ch-tree.h, ch-decl.c, ch-tasking, ch-parse.y:  Rename
+       {push,pop}_c_function_context to {push,pop}_chill_function_context.
+       * ch-parse.y (end_function): If nested, call
+       pop_chill_function_context regardless of which pass we're in.
+
+Wed Aug 11 02:34:02 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-actions.c (finish_chill_binary_op):  Handle error marks.
+       * ch-decl.c (do_decl):  Laying out decl and generating rtl
+       is too late to do here (if there are forward references), so ...
+       * ch-satisfy.c (satify_decl):  ... do it here instead.
+       * ch-decl.c (finish_enum):  Fixup types of enum decls now.
+       * ch-satisfy.c (safe_satisfy_decl):  New routine.  Supports
+       checking illegal cyclic definitions.
+       All *satisfy* routines now take a 'chain' parameter (instead
+       of 'lookup_only') used for checking cycles.
+       * ch-satisfy.c (satisfy_decl):  Return DECL_INITIAL if appropriate.
+       * ch-satisfy.c (satisfy):  Lots of little fixes.
+
+       * ch-lex.l (init_lex):  Make all the standard ridpointers be
+       lowercase, so that lookup_name on lower-cased user input
+       will find the standard types.
+       * ch-lex.l:  Remove all the standard types, in effect
+       converting them from reservered anmes to predefined names.
+       * ch-lex.l, ch-parse.y:  Remove PREDEF_MODEDECL - no longer used.
+       * ch-grant.c (gfile):  Rename to grant_file_name.
+       * ch-lex.l (yywrap):  Don't try to seize current grant_file_name.
+
+       * initname.c:  Removed. get_file_function_name is now in tree.c
+       * Makefile.in (CHILL_OBJS): Remove initname.o
+
+       * ch-decl.c (do_decl):  New function, based on loop body of do_decls,
+       * ch-decl.c (do_decls):  Just call do_decl.
+       * ch-grant.c (chill_finish_module_code):  Minor cleasnups.
+       Use new do_decl routine.  Clear init_entry_decl's source line.
+       * ch-grant.c (print_proc_tail):  Fix for new param list structure.
+       * ch-parse.y (whatpdef):  Removed.  Cleaned up procedure
+       and process, allowing proper end-label-checking.
+       * ch-typeck.c (build_chill_cast):  Remove decl->type conversion.
+
+Wed Aug 11 00:33:44 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-decl.c (layout_enum):  Don't call rest_of_type_compilation.
+
+       * ch-lex.l (RETURN_PREDEF):  Don't call lookup_name.
+       * ch-expr.c (build_chill_indirect_ref):  Call get_type_of.
+       * ch-parse.y (call):  Call get_type_of before build_chill_cast.
+
+Tue Aug 10 21:33:10 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       *  ch-actions.c (build_char_array_expr):  If a concat operand is
+       a constant char, convert it to a STRING_CST.
+       * ch-decl.c (finish_decl):  Call rest_of_decl_compilation
+       with toplev=0.
+       * ch-typeck.c (build_chill_cast):  Allow type to be TYPE_DECL.
+
+       * ch-parse.y (actionlabel):  Call define_label in both passes.
+       * ch-actions.c (lookup_and_expand_goto, lookup_and_handle_exit):
+       New functions, using lookup_name to find LABEL_DECLs.
+       * ch-parse.y (GOTO, EXIT):  Use above new functions.
+       * ch-tasking.c (struct rc_state_type *current_rc_state):
+       Use to store state for the current receive case statement.
+       (build_chill_receive_case_start, build_chill_receive_case_end):
+       Don't generate temporary LABEL_DECL; just use gen_label_rtx.
+       * ch-decl.c:  Remove all stuff dealing with specific label scopes,
+       including functions push_label_level, pop_label_level.
+       * ch-decl.c (define_label):  Re-write for 2-pass.
+       * ch_tree.h (lang_identifier):  Removed label_value.
+       * ch-tree.h (IDENTIFIER_LABEL_VALUE):  Removed.
+
+       * ch-parse.y (modename):  Changed to yield identifier, not type.
+       This allows following changes, which work better for 2-pass:
+       (location):  primval ARROW optmodename -> primval ARROW optname.
+       (primval):  Tuple can now be prefixed by unsatisfied name.      
+
+       * ch-actions.c (chill_grant_only):  Renamed to grant_only_flag.
+       * ch-lex.l (yywrap):  Don't read seizefiles if grant_only_flag.
+       * ch-decl.c (switch_to_pass_2):  Exit if grant_only_flag,
+
+       * ch-satisfy.c (satisfy):  Support CONSTRUCTOR, REFERENCE_TYPE.
+       * ch-satisfy.c (satisfy_decl, satisfy):  Kludge around
+       to a TYPE_DECL can be simplified to its type.
+       * ch-expr.c (build_chill_indirect_ref):  New function.
+       * ch-lex.l (prepare_paren_colon):  Make kludge even uglier,
+       since the left paran might already have been seen.
+       * ch-lang.c (make_chill_pointer_type):  Allow parameter
+       to select pointer or reference type.
+       (build_chill_reference_type):  New function.
+       Either function:  Be more careful (in case arg is identifier).
+       * ch-except.c (initialize_exceptions):  Make
+       exception_stack_decl be public.
+       * ch-actions.c (build_char_array_expr):   Can only
+       constant fold if operands are STRING_CST.
+       * ch-grant.c (raw_decode_mode):  Allow TYPE_DECL.
+       (chill_finish_compile:  Set TREE_PUBLIC of init function to 1.
+
+Tue Aug 10 17:55:12 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (build_char_array_expr): Set array sizes correctly.
+       * ch-decl.c: Fix comment.
+       * ch-parse.y (pmodearg): Build tree_list in all cases.
+       * varasm.c (assemble_tasssking_entry): Delete unused code.
+
+Tue Aug 10 13:58:21 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (build_char_array_expr): save/restore
+         a tree's constant status.
+         (build_chill_binary_op): Don't convert an expression
+         if the type we're converting to is NULL.
+       * ch-convert.c (maybe_turn_scalar_into_array): New functions.
+         Call it from convert, and from ..
+       * ch-expr.c (chill_expand_assignment): call new function.
+         Move convert code earlier, too.
+       * ch-decl.c (lookup_name): Delete bogus error message.
+       * ch-tree.h (CH_NOVELTY, SCALAR_P): Handle NULL_TREE.
+         Add protos.
+       * ch-typeck.c (valid_array_index): Comment out some strange code
+         which now seg faults.
+         (chill_expand_tuple): Re-enable prepending of VARYING
+         length to a tuple.
+         (chill_similar): Return FALSE if either mode is NULL_TREE.
+
+Tue Aug 10 07:29:31 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-decl.c: Delete proto for unused function shadow_tag_warned.
+         Add commented-out calls to pushtag, in case we decide later
+         to fill in TYPE_STUB_DECL for dbxout.
+       * ch-lang.c (build_chill_struct_type): Add commented-out
+         calls to pushtag, in case we decide later to fill in
+         TYPE_STUB_DECL for dbxout.
+
+Mon Aug  9 23:09:08 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-decl.c (chill_seize):  Don't get_next_next in pass 2.
+       * ch-decl.c (get_next_decl):  Skip ALIAS_DECLs.
+       * ch-decl.c (bind_saved_names):  Handle SEIZE ALL.
+       * ch-lang.c (layout_chill_struct_type):  Don't call
+       rest_of_type_compilation - it crashes without a TYPE_STUB_DECL.
+       * initname.c (get_file_function_name):  Get new file and
+       function for language-independent constructor name generation.
+       * ch-grant.c (get_init_function_id):  Removed.
+       * ch-grant.c (chill_finish_compile):  Call get_file_function_name
+       instead of get_init_function_id.
+
+Mon Aug  9 18:33:36 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-decl.c: Formfeeds and comments.
+       * ch-parse.y (quasi_formpar): Treat just like real formpar.
+         Eliminate restriction on single name.
+         (pmodearg, pmodearglist): Remove ignore_exprs stuff.
+
+Mon Aug  9 17:21:14 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-lex.h (enum rid), ch-lex.l (init_lex):  Added RID_ALL.
+       * ch-lang.c (build_chill_pointer_type):  Layout the pointer type,
+       if the pointee is laid out, even if pass==1.
+       * ch-parse.y:  Set ignore_exprs=(pass=2) for entire spec module.
+
+Mon Aug  9 15:44:01 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       This version compiles the 5-line program.  Thanks, Per!
+       * ch-decl.c (print_lang_decl, print_lang_identifier):
+         Add appropriate calls to indent_to().  Rename reverse_scopes
+         to switch_to_pass_2, and wait to set pass = 2 until
+         here.
+       * ch-grant.c (chill_finish_module_code): Set module_init_list
+         non-NULL in pass 1;  in pass2, chain on the module_init
+         structure's decl.
+         (chill_finish_compile): Clear module_init_list to NULL.
+       * ch-parse.y (quasi_formparlist): Rewrite to avoid seg fault.
+         Rename reverse_scopes to switch_to_pass_2, delete setting 
+         of pass = 2.
+       * ch-tree.h: Rename reverse_scopes proto.
+
+Mon Aug  9 13:21:34 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-decl.c (build_enumerator):  If name is NULL,
+       don't call save_decl or get_next_decl.
+       * ch-decl.c (layout_enum):  Fix calculation of next value.
+       * ch-grant.c (print_enumeral):  Re-do for new 2-pass scheme.
+       * ch-grant.c (decode_constant):  Better CONSTRUCTOR support.
+
+Mon Aug  9 11:59:12 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c, ch-convert.c, ch-decl.c, ch-grant.c,
+         ch-lang.c, ch-parse.y, ch-tree.h: gcc -Wall cleanup.
+         Lots of new prototypes.
+
+Mon Aug  9 01:00:33 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-lex.h:  Remove unused RID_'s.  Make sure RID_MAX is last.
+       * ch-decl.c (init_decl_processing):  Moved ridpointers
+       initialization to init_lex().  Use them consistently.
+       * ch-lex.l (RETURN_PREDEF):  New macro.  Uses ridpointers
+       for all preferedined types.
+       * ch-lex.l (init_lex):  Upper case all RIDs, so grantfiles
+       (and error messages?) will use uppercase.
+       * ch-decl.c (build_chill_enumerator):  Merged into build_enumerator.
+       * ch-lang.c (finish_chill_enum):  Merged into ...
+       * ch-decl.c (finish_enum): .... this function.
+       * ch-decl.c (layout_enum):  New function.  Does all the pass-2
+       stuff for enumerations.
+       * ch-decl.c (finish_enum, start_enum):  Only trivial pass-1 stuff.
+       * ch-satisfy.c (satisfy):  Support ENUMERAL_TYPE.  Improve ranges.
+       * ch-parse.y:  Check ignore_exprs instead of ignore_decls when
+       parsing and building types.
+
+Sun Aug  8 16:26:40 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-lex.h:  Add some missing RID_'s.
+       * ch-decl.c (init_decl_processing): 
+
+Sun Aug  8 15:32:54 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-grant.c (module_has_actions): Delete this and all
+         references.  It was a botch.
+          (chill_finish_module_code): Move finish_chill_function_call inside
+         the test whether actions were found at module level.
+         Use current_function_name in the initializer build,
+         and init_entry_id in the module_list setup.
+         (chill_finish_compile): Call lookup_name to get the
+         decl from a module_init_list entry.
+       * ch-parse.y: Revert module_has_actions additions.
+       * ch-satisfy.c (satisfy): After satisfying the type  referenced
+         by a pointer_type, call layout type for the pointer.
+       * ch-tasking.c (tasking_registry): Only active in pass 2.
+       * ch-typeck.c: Call build_chill_pointer_type everywhere.
+
+Sun Aug  8 13:13:29 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-tree.def (PAREN_EXPR):  New unary op:  '(' EXPR ')'.
+       * ch-parse.y (primval):  If pass 1, generate PAREN_EXRR.
+       * ch-satisfy.c (satisfy):  Reduce PAREN_EXPR to its operand.
+       * ch-grant.c (decode_const):  Handle PAREN_EXPR.
+       * ch-decl.c (pop_module):  Fix think.  Inprove error message.
+
+Sun Aug  8 10:31:04 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       Generally, replace 'function' with 'procedure' 
+       and 'type' with 'mode' in error/warning messages.
+       * ch-actions.c: See Generally. Fix up 'too many' and 'too few' error msgs.
+       * ch-decl.c: See Generally.
+         (init_decl_processing): Call build_tasking_enum from here.
+         Now, it doesn't need a flag to do its work only once.
+         Also, build the TaskingStruct decl here.
+       * ch-grant.c: Remove references to `current_grant_file';
+         there's now only one.  See Generally.  Do gcc -Wall cleanup.
+       * ch-lex.l: Remove references to `current_grant_file'
+         and delete USE_GRANT_FILE token.
+       * ch-parse.y: Remove call to build_tasking_enum, and its extern.
+       * ch-tasking.c (tasking_setup): Move TaskingStruct build
+         to init_decl_procesing.  Delete build_tasking_enum calls.
+       * ch-tree.c: See Generally.
+       * ch-tree.h: Add proto for build_tasking_struct.
+
+Sun Aug  8 08:59:23 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-decl.c: Make unnamed_module_number static, reset it to zero
+         before pass 2, so same module names get generated in both passes.
+         (push_module): Return user name or generated name.
+         (init_decl_processing): Build __tmp_initializer_type.
+         Code moved from chill_finish_module_code.
+       * ch-grant.c: New flag module_has_actions.  Set TRUE by push_actions,
+         used, reset by chill_finish_module_code.    Replaces test of 
+          module_function_name.  Shuffled finish-up code to end of module.
+          (chill_finish_module_code): Use global_bindings_p to determine
+         'nested' parameter for finish_chill_function.  Use new
+          module_has_actions flag to trigger generation of module_init list
+         entry.  We now can handle not only multiple modules per file,
+         but modules nested inside functions (I think).
+       * ch-lang.c (build_chill_pointer_type): Restore missing assignment.
+       * ch-parse.y (push_actions): Set module_has_actions flag.
+         (modulion, spec_module): Save possibly-generated module name
+         returned by push_module.
+       * ch-satisfy.c (satisfy): Put switch cases into alpha order, add
+          case for POINTER_TYPE.
+       * ch-tasking.c: Replace build_pointer_type calls with
+         build_chill_pointer_type calls.
+       * ch-tree.h: Fix, add prototypes.
+
+Sat Aug  7 17:32:22 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-parse.y:  Remove many useless tests for ignore_decls.
+       * ch-parse.y:  Remove obsolete support for _EXTERN and _INIT.
+       * ch-parse.y:  Reset ignore_exprs while parsing declarations,
+       but handle initializers appropriately.
+       * ch-grant.c (decode_constant):  Update (for 2-pass) support
+       for CONSTRUCTOR and SET_TYPE.
+       * ch-grant.c (chill_initializer_name):  Renamed to
+       module_function_name.
+       * ch-grant.c (function_generated):  Removed;
+       use module_function_name != NULL instead.
+       * ch-tree.h, ch-parse.y:  Removed unused current_locnamelist.
+       * ch-decl.c (push_modedef):  Simplify to take just one mode.
+       * ch-tasking.c (make_process_struct, make_signal_struct):
+       Change calls to push_modedef correspondingly.
+       * ch-tree.c (build_powerset_type):  Move the stuff that's
+       suitable for pass 1 into new function make_powerset_type,
+       and that for pass 2 into new function layout_powerset_type.
+       * ch-lang.c:  Move pass-1 stuff from build_chill_pointer_type
+       into new function make_chill_pointer_type, and split
+       build_chill_struct_type into make_chill_struct_type
+       and layout_chill_struct_type.
+       * ch-decl.c (grok_chill_variantdefs):  Similarly split up
+       into make_chill_variants and layout_chill_variants.
+       * ch-satisfy.c (satisfy):  Add support for SET_TYPE, and UNION_TYPE.
+       Call layout_chill_struct_type for RECORD_TYPE.
+
+Sat Aug  7 09:59:55 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       Fixup previous check-in.
+       * ch-decl.c: Restore unnamed_module_number, which *was*
+         used after all.
+       * ch-grant.c (get_init_function_id): Return type s.b. tree.
+
+Sat Aug  7 09:28:17 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-decl.c (print_lang_decl, print_lang_type): Add
+         correct parameter list.  Add print statements for
+         nesting_level, signal_dest, buffer_size, and the
+         signal_data flag.
+         (decl_temp, decl_temp1): Delete unused code.
+         (init_decl_processing): Call build_instance_type and
+         build_tasking_type in both passes.
+         Generally change current_scope comparisons against 
+         global_scope to global_biidings_p calls.
+       * ch-except.c (push_handler): Add space before parameter paren.
+       * ch-grant.c (chill_start_module, chill_finish_module,
+         chill_finish_compile): Complete re-write for 2-pass and
+         multiple modules per source file.
+       * ch-parse.y (pass1_2): Call chill_finish_compile once each pass.
+       * ch-tasking.c: Diffused small adaptations to 2-pass.
+       * ch-tree.h (print_lang_decl, print_lang_type): Correct
+         the prototypes.
+         (chill_finish_module_code): Add module name parameter.
+       * ch-typeck.c: Fix comments, add whitespace.
+
+Fri Aug  6 12:17:07 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-decl.c (temp_pushdecl, bind_saved_names): The simple-minded
+       way I allocated the shadow_list on an obstack was too fragile,
+       so just use xmalloc/free instead.
+
+Fri Aug  6 08:31:49 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-satisfy.c (satisfy): Satisfy TYPE_MIN_VALUE and
+         TYPE_MAX_VALUE for vanilla integer type.  Only need
+         to satisfy TREE_TYPE for integer range type.
+
+Fri Aug  6 00:53:11 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-lang.c (build_chill_range_type):  Split up into two new
+       functions (make_chill_range_type, layout_chill_range_type);
+       only former part is done in pass 1.
+       * ch-lang.c (build_chill_array_type):  Split up in the same
+       way (yielding make_chill_array_type, layout_chill_array_type).
+       * ch-satisfy.c (satisfy):  Handle array and range types.
+       * ch-tree.h (TYPE_RANGE_PARENT):  Removed.  Not used.
+       * ch-parse.y (mode2):  Handle optional rangesize.
+
+Thu Aug  5 15:13:42 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-grant.c (print_an_int):  Re-enable (but don't search for SYN).
+       * ch-grant.c (raw_decode_mode):  Support printing
+       of an IDENTIFIER_NODE (unresolved type name).
+       * ch-grant.c (decode_constant):  Support printing of an unresolved
+       IDENTIFIER_NODE, as well as some kinds of binary operations.
+       * ch-grant.c (grant_one_decl):  Don't call globalize_decl.
+
+       * ch-grant.c (decode_decl):  Add support for ALIAS_DECLs
+       (from SEIZEs and GRANTs).
+       * ch-grant.c:  Remove support for multiple grantfiles.
+       * ch-grant.c, ch-parse.y:  Removed grant_count, for now at least.
+       * ch-lex.h (in_seizefile):  Moved to ch-tree.h.
+       * ch-tree.h (CH_DECL_SEIZED), ch-tasking.c, ch-decl.c:  Removed.
+       * ch-tree.h (CH_DECL_GRANTED): Added.
+       * ch-actions.c (build_chill_exception_decl):  Use
+       IDENTIFIER_LOCAL_VALUE, not obsolete IDENTIFIER_GLOBAL_VALUE.
+       * ch-grant.c (write_grant_file -> write_spec_module): Rename.
+       Change to accept list of remember_decls and granted_decls.
+
+Thu Aug  5 11:58:21 1993  Stan Shebs  (shebs@rtl.cygnus.com)
+
+       * expr.c: Remove no-longer-used PROCESS_DECL tree type.
+
+Thu Aug  5 10:03:27 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-decl.c (init_decl_processing): Only build types
+         in pass 2, since dbxout machinery is only ready for
+         output then.
+       * ch-grant.c (chill_finish_module_code): Do most of the
+         work in pass 2.
+
+Thu Aug  5 06:54:10 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-parse.y (receivecaseaction): Pass label-group
+         numbers around.
+       * ch-tasking.c (build_chill_receive_case_start):
+         Generate unique labels for each case, pass back
+         the label-group's number.
+         (build_chill_receive_case_end): Accept label-group
+         number from parser, use it to build labels
+       * ch-tree.h: Change prototypes.
+
+Wed Aug  4 13:21:13 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-decl.c (decl_temp1):  Call finish_decl().
+
+       * ch-grant.c (chill_start_module_code):  Don't call
+       push_c_function_context - not needed since we're not nested.
+       * ch-grant.c (chill_finish_module_code): Call finish_chill_function
+       with nested=0, not 1 (twice).
+       * ch-grant.c (chill_finish_module_code): Clear function_generated.
+
+Tue Aug  3 20:06:22 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-decl.c (push_chill_extern_function):  Set TREE_PUBLIC.
+
+Tue Aug  3 19:08:51 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (build_chill_function_call): Handle parameter
+         attributes better - LOC still not handled.
+       * ch-tree.def: Amplify comment.
+
+Tue Aug  3 18:07:36 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-lex.l (handle_use_seizefile_directive):  Update
+       next_file_to_seize correctly.
+       * ch-actions.c (build_chill_abs):  Create an ABS_EXPR, not an rts_call.
+
+Tue Aug  3 14:03:50 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       First Aid, not real long-term fixes...
+       * ch-decl.c (pop_module, lookup_name_for_seizing): Check
+         current_module pointer for NULL before using it.
+         (init_decl_processing): Set up wchar_type_node before using it.
+       * ch-grant.c (chill_finish_module_code): Don't build
+         initializer_type or initializer_decl until pass 2.
+       * ch-lex.l: Readability - single statement per line.
+       * ch-tasking.c (make_process_struct): Hide get_parm_info
+         call inside #ifdef for now.
+
+Tue Aug  3 09:59:23 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-decl.c (pushdecllist): Add forward decl.
+       * ch-parse.y (handler): Add rules which allo
+         empty onalternativelist.
+       * ch-tasking.c (get_tasking_code_name): Add
+         cast of alloca() result.
+
+Tue Aug  3 00:11:40 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-lex.l (handle_use_seizefile_directive):  Make files_to_seize
+       a queue.  Check for duplicate use_seizefile-s immediately.
+       * ch-lex.l (yywrap):  Use this more portable mechanism,
+       rather than the flex-specific <<EOF>>.  Also, clear saw_eof.
+       * ch-lex.l:  Don't call push_module/pop_module automatically.
+       * ch-decl.c (push_chill_extern_function:  Modify for 2-pass.
+
+Mon Aug  2 14:24:59 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-parse.y:  Rename actionstatement -> nonempty_actionstatement.
+       New actionstatement is now nonempty_actionstatement | SC.  Use
+       where appropriate.  This is closer to Blue Book terminology.
+
+       * ch-tree.def (ALIAS_DECL):  New tree type.
+       * ch-decl.c:  Merged all the code we need (I hope) from c-decl.c,
+       which is no longer used for cc1chill.
+       * c-decl.c:  Remove all Chill-related code.
+       * Makefile.in (CHILL_OBJS):  Don't use c-decl.o.
+       * ch-decl.c:  No longer use IDENTIFIER_GLOBAL_VALUE anywhere.
+       Introduce a 'nesting_level' level concept instead.
+       * ch-decl.c:  Merged push_scope into pushlevel; pop_scope into
+       poplevel;  struct scope and struct binding_level.
+       * ch-decl.c:  Other major name lookup algorithm changes.
+       * ch-tree.h (struct lang_identifier): Remove granted_value field.
+       * ch-tree.h (IDENTIFIER_GRANTED_VALUE macro):  Removed.
+       * ch-tree.h (DECL_NESTING_LEVEL):  New macro.
+       * ch-satisfy.c (satisfy, satisfy_decl):  New 'lookup_only' arg.
+       * ch-tree.h (struct module):  New fields nesting_level, granted_decls.
+       * ch-grant.c (seize_implied_names, do_seize, chill_seize):  Move ...
+       * ch-decl.c: ... here.
+       * ch-grant.c (start_chill_function2):  Remove.
+       * ch-grant.c (chill_start_module_code):  Now called in both passes.
+       * ch-actions.c (lang_init):  Code moved to ...
+       * ch-decl.c (init_decl_processing): ... here.
+       * ch-actions.c (chill_expand_result, chill_expand_return):
+       Handle being called during pass 1.
+       * ch-lex.l (name_type_signal):  Don't try lookup_name during pass 1.
+       * ch-parse.y (PUSH_ACTION, push_action):  Is now invoked during
+       both passes, for the sake of chill_start_module_code.  Change all
+       actions rules to invoke PUSH_ACTION unconconditionally.
+       * ch-parse.y, ch-decl.c (push_module):  Module label is now optional.
+
+Mon Aug  2 15:02:32 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * expr.c (store_constructor): Convert library function
+         parameters to proper integer precision before calling
+         emit_library_call.
+
+Mon Aug  2 08:46:06 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-grant.c (seize_implied_names): Check POWERSET's
+         base type for names to seize.
+
+Fri Jul 30 19:59:30 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-tree.h: Delete unused definition of JOINER
+         macro.  Expand comment about INSTANCE_TYPE.
+
+Thu Jul 29 14:57:11 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-convert.c (unreferenced_type_of): New function.
+         (convert): Call new function.
+
+Thu Jul 29 07:34:57 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-lex.l: Allow C-style comments before the module
+         header.  Use #undef to assure that strchr isn't a
+         macro (portability), and remove the extra paren-
+         theses in its extern name.
+         (check_newline): Call getlc less often, so that user
+         labels aren't lowercased before their time. Add BEGIN
+         INITIAL before starting pass 2, so the header is
+         correctly ignored.
+
+Wed Jul 28 14:23:24 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-grant.c (chill_start_module_code): Cast alloca()
+         return value.
+
+Wed Jul 28 12:39:51 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)
+
+       * ch-grant.c: remove extra parens around extern function
+       declarations (they confuse the DECstation compiler)
+
+Wed Jul 28 12:28:56 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * Makefile.in: Stop deleting flex's #line lines.
+
+Wed Jul 28 07:05:25 1993  Bill Cox  (bill@cygnus.com)
+
+       Adjust after FSF merge:
+       * calls.c (expand_call): Add comment.
+       * ch-expr.c: Add newline.
+       * expmed.c (store_split_bit_field): Add comment.
+
+Tue Jul 27 17:32:13 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (build_chill_binary_op): Set code0 and
+         code1 only in pass 2.
+         (get_result_tmp_name): Cast alloca return for portability.
+       * ch-decl.c (pop_module): Test current_module ptr before
+         using it.
+       * ch-lex.l: Set lineno and input_filename for pass 2
+         error messages.
+
+Tue Jul 27 15:14:06 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-lex.l: Fix the syntax error at line 329.  Will I
+         *ever* quit fixing these in the ch-lex.c file?  Stay tuned..
+
+Tue Jul 27 15:01:25 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-lex.l: Pervasive rewrite for queueing seize files,
+         then parsing them at the end of pass 1.  Still some
+         problems.
+
+Tue Jul 27 07:40:39 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * chill.in: Check for .i suffices only, and use -xchill
+         to bracket the argument.
+
+Thu Jul 22 19:17:23 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * c-decl.c (print_lang_identifier): Oops.  Syntax error.
+
+Thu Jul 22 18:56:16 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * c-decl.c (pushdecllist): Standardize loop for readability.
+       * ch-decl.c (decl_temp): Call pushdecllist to store decl
+          into hash table, move after current_scope declaration.
+         (decl_temp1): Move also.
+       * ch-lex.l (getlc): New function.  Force char to lower case.
+         (check_newline): Call it, so comparisons work on uppercase
+          keywords.
+
+Wed Jul 21 22:17:22 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-decl.c (do_decls): Add saving of decl tree
+         address into ID node in pass 2,  reindent.
+       * ch-grant.c (start_chill_function2): New function.
+         (chill_start_module_code,  chill_finish_module_code): Call it.
+       * ch-loop.c (build_temporary_variable, begin_for_range):
+         Replace start_decl, finish_decl pairs with decl_temp1 calls.
+       * ch-parse.y (parnamelist): Eliminate warning by eliminating
+          the %type for now.
+       * ch-actions.c, ch-tasking.c: Replace do_decls calls with
+         decl_temp1 calls.
+       * ch-tree.h: New prototypes.
+       * stmt.c (stamp_nesting_label): Check parameters for NULL.
+       * toplev.c (lang_options): Add '-L' option.
+
+Wed Jul 21 21:06:18 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       Portability fixes.
+       * ch-decl.c (save_decl): Make definition match forward declaration.
+       * ch-lex.l (RETURN_TOKEN): Don't use the 'do { .. return } while 0'
+         in the macro - Sun's compiler throws warnings.  Thanks, Brendan.
+       * ch-satisfy.c (satisfy): Add forward declaration.
+          (SATISFY): Add outer parens for greater safety.
+
+Wed Jul 21 12:59:20 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * c-decl.c (pushdecllist): New function.  Add a list of decls
+       to the current scope, checking for duplicates.
+       * c-decl.c (start_function):  Remove some Chill junk.
+       (This function should no longer be used for Chill.)
+       * ch-lex.l (ch_lex_init):  New function, to re-init for 2nd pass.
+       * ch-lex.l (<<EOF>>):  Cleanup, and re-start for 2nd pass.
+       * ch-tree.h (UNSATISFIED, UNSATISFIED_FLAG):  New flags.
+       * ch-tree.h (CH_CLASS_IS_VALUE, CH_CLASS_IS_REFERENCE):
+       Implement.  Add comments.
+       * ch-tree.h (CH_COMPATIBLE_CLASSES, CH_ROOT_MODE, CH_RESULTING_MODE):
+       Better Blue Book type checking.
+       * ch-actions.c (finish_chill_binary_op): Handle folding
+       and other stuff that couldn't be done in pass 1.
+       * ch-actions.c (build_chill_binary_op):  Bail out early if pass 1.
+       Use new CH_ROOT_MODE macro to handle integer promotions etc.
+       * ch-except.c (push_handler):  Bail out if pass 1.
+       * ch-tasking.c (make_process_struct):  Defer making this work.
+       * ch-parse.y (assignaction):  Simplify, and move some code ...
+       * ch-expr.c (chill_expand_assignment): ... here.
+       * ch-typeck.c (chill_root_mode, chill_resulting_mode,
+       chill_compatible_classes):  New functions, implementing the
+       correspondingly named Blue Book concepts.
+       * ch-parse.y generally:  Lots of little tweaks to support
+       2-pass compilation.
+       * ch-parse.y (push_module, pop_module):  Moved to ...
+       * ch-decl.c (push_module, pop_module):  ... here.
+       * ch-parse.y (push_action):  New function.
+       * ch-parse.y (pdef):  Move complicated action to ...
+       * ch-parse.y (end_function):  ... new function here.
+       * ch-parse.y (procedure):  Major re-write.
+       * ch-parse.y (paramname, paramnamelist):  New, to avoid conflict (?).
+       * ch-decl.c (do_decls, push_syndecls, push_modedef,
+       start_chill_function, finish_chill_function):  Do different things
+       on each pass.  Hence, can use code in c-decl.c to lesser extent.
+       * ch-decl.c (build_chill_function_type):  First arg is now
+       just the return type, rather than a singleton list.
+       * ch-decl.c (massage_param_node):  Remove not needed (we
+       now encode parameter attributes directly in the TREE_PURPOSE).
+       * ch-decl.c (chill_munge_params):  New function, called by parser.
+       * ch-decl.c (push_parms):  Removed function.
+       * ch-decl.c (push_cope, pop_scope, save_decl, get_next_decls):
+       New functions, to coordinate decls between passes.
+
+Wed Jul 21 14:23:25 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (lang_decode_option): Add option -Lpath
+         to specify seize file path.
+          (ch_singleton_set): Readability formatting.
+         Add comment, move functions to easier found places.
+       * ch-lex.l (setup_seizefile_read): Check for *no* slashes.
+          (register_seize_path): Use memcpy so pathlen has an effect.
+       * gcc.c (default_compilers): Add -L option to chill
+         compiler SPECs.
+
+Wed Jul 21 12:59:20 1993  Per Bothner  (bothner@kalessin.cygnus.com)
+
+       * ch-satisfy:  New file.  Used for name lookup.
+       * Makefile.in (CHILL_OBJS): Add ch-satisfy.o.
+
+Wed Jul 21 12:16:51 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * toplev.c (main): Delete -L option handling - breaks
+         non-chill compilers.
+
+Wed Jul 21 09:29:24 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-grant.c: #undef strchr and strrchr names in extern
+          declarations, to prevent RS6000 compiler from reporting
+          their misuse as macros.
+       * ch-lex.l (setup_seizefile_read): Refer to list of  paths
+         for seizefiles specified by -L options on command line.
+          (register_seize_path): Add a new path to the seize file list.
+       * toplev.c (strip_off_ending): Recognize chill suffix.
+          (main): Recognize -L option, specifying a seize file path.
+
+Tue Jul 20 12:41:52 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-lex.l (convert_float): Make it really portable,
+         using the appropriate macros.
+
+Tue Jul 20 11:26:02 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-lex.l (convert_float): More casts for vxworks
+         portability.
+
+Tue Jul 20 11:01:30 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-lex.l (convert_float): Give variable `d' correct
+         type so build_real call is correct.  Should remove
+         vxworks portability problem.
+          (convert_float): Re-indent to standards.
+
+Mon Jul 19 17:32:10 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (build_char_array_expr): Add field decls to
+         constructor.  Now, it generates the library call.
+       * ch-expr.c (chill_expand_array_assignment): Make sure that all
+          error messages say 'mode' not 'type'.
+
+Mon Jul 19 14:44:46 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c, ch-convert.c, ch-decl.c, ch-grant.c, ch-lang.c,
+         ch-loop.c, ch-parse.y, ch-tasking.c, ch-tree.c, ch-typeck.c:
+         Make sure that all error messages say 'mode' not 'type'.
+       * ch-decl.c (push_modedef): Add novelty computation,
+         storage in each newmode.
+       * ch-parse.y: Delete novelty counter - moved to ch-decl.c.
+         Reformat slightly for readability.  Fix comments.
+       * ch-tree.h: Delete print_lang_type prototype.
+
+Mon Jul 19 06:43:51 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (chill_expand_return): Disable
+         error message which requires 2-pass analysis, for
+         now.
+       * ch-convert.c (convert): Build length-only constructor
+         for empty string (PR 2930).
+
+Fri Jul 16 16:08:33 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-expr.c (chill_expand_array_assignment): Check
+         non-varying string assignments for conformance to
+         the "string assignment condition" (PR 2920).
+
+Thu Jul 15 13:25:33 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (build_chill_array_expr): Check parameters.
+         Call convert to build unitary array from scalar if
+         needed.  Rewrite CONCAT_EXPR handling.
+       * ch-convert.c (build_array_type_for_scalar): New functions.
+         (convert): Call new function, to convert scalar to unitary
+         array.  Only call chill_expand_tuple if expression hass
+         NULL_TREE type.
+       * ch-expr.c (chill_expand_expr): Allow a larger static
+         varying array to be assigned to a smaller, with a runtime
+         test (to be provided).
+       * ch-parse.y (locdec): Comment out bogus error msg.
+          (elementlist): Replace several lines with chainon call.
+       * ch-tree.h (SCALAR_P): New macro.  New prototype for
+         build_array_type_for_scalar.
+       * ch-typeck.c (build_chill_cast): Re-indent.
+          (chill_expand_tuple): Comment out strange addition of 
+         varying string's length to front of constructor list.
+
+Thu Jul 15 05:58:46 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-except.c (start_handler_array): Use unique identifier for
+         exception array, so we can have > 1 array per reach
+         (PR 2931).  The change was originally entered June 23, and
+         subsequently lost.
+
+Mon Jul 12 16:07:53 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       Get executable test cases running again...
+       * c-typeck.c (build_function_call): Bypass default
+         parameter promotions, format param syntax check for
+         CHILL; they've already been converted in
+          build_chill_function_call.
+       * ch-actions.c (chill_expand-return): Correct tests
+         for function which returns no value.
+       * ch-convert.c (base_type_size_in_bytes): Check for
+         NULL type parameter, just return.
+          (convert): Allow conversion of CHAR to varying array
+         of CHAR.
+         Change error msg to "conversion" from "assignment".
+         Remove default from case, which short-circuited before
+         REFERENCE_TYPEs got converted.  Deleted second copy
+         of REFERENCE_TYPE code.
+       * ch-lang.c (build_chill_range_type): Simply exit if
+         NULL input parameter.
+       * ch-loop.c: Fix comment.
+
+Sun Jul 11 11:27:08 1993  Bill Cox  (bill@cygnus.com)
+
+       * ch-actions.c (chill_expand_result, chill_expand_return):
+         Move here from ch-typeck.c.  Add a temporary to remember the
+         result value in.  Change return handler to fetch that 
+         temporary value, if there is one.
+       * ch-parse.y (pdef): Call chill_expand_return to fetch
+         the temp's value.
+       * ch-tree.h, ch-typeck.c: Move return, result functions to
+          ch-actions.c.  And their prototypes.
+
+Fri Jul  9 15:47:51 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c, ch-convert.c, ch-decl.c, ch-except.c,
+         ch-expr.c, ch-grant.c, ch-inout.c, ch-lang.c,
+         ch-lex.l, ch-loop.c, ch-parse.y, ch-tasking.c,
+         ch-tree.c, ch-tree.h, ch-typeck.c: gcc -Wall cleanup.
+
+Fri Jul  9 09:41:05 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-grant.c (decode_decl): Grant BUFFER, INSTANCE variables.
+          (print_integer): Delete old non-working INSTANCE code.
+       * ch-lex.l (name_type_signal): Recognize BUFFER name, too.
+       * ch-parse.y (rccase_label): Move all actions inside if.
+          Use BUFFERNAME to recognize receice case buffer clause,
+         eliminate one shift-reduce conflict.
+       * ch-tasking.c (build_buffer_descriptor): Check for
+         CH_DECL_BUFFER flag, remove unused code.
+
+Thu Jul  8 11:17:32 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       Declaring and sending buffers..  first draft
+       * ch-actions.c (lang_init): Define the send_buffer runtime
+         function.
+       * ch-decl.c (do_decls): Standardize loop, so stepping
+         isn't hidden.
+       * ch-lex.l: Clean up prototypes for readability.
+       * ch-parse.y (sendaction): Add send buffer action.
+          (locdec): Add rule for buffer declaration.
+       * ch-tasking.c (generate_tasking_code): standardize indentation.
+          (make_signal_struct): Readability changes.
+          (build_chill_send_buffer, build_buffer_decl, 
+           build_buffer_descriptor): New functions.
+       * ch-tree.h (IDENTIFIER_BUFFER_SIZE): Add place to save
+         buffer's maximum queue length in buffer decl.
+          (CH_DECL_BUFFER): Add flag in decl.  Clean up for
+         readability.  Add prototypes.
+       * ch-typeck.c (build_chill_cast): Call convert rather
+         than storing directly into TREE_TYPE field.
+
+Tue Jul  6 12:34:32 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (lang_init): Set warn_switch so case labels
+         get checked.  Move build_chill_case_expr to ch-expr.c.
+       * ch-expr.c (chill_expand_case_expr): Enable checking
+         of expression case labels.
+       * ch-grant.c: Move a comment.
+
+Mon Jul  5 10:02:27 1993  Wilfried Moser  (fs_moser at rcsw1j)
+
+       * ch-lex.l: Add compiler directive SUPPORT_CAUSING_ADDRESS.
+       * ch-except.c (initialize_exceptions): Change the layout of the
+         structure __ch_handler. The entry __jbuf is moved to the end 
+         of the structure and its size was changed to _JBLEN+10.
+       * ch-decl.c (push_chill_extern_process): Add processing of
+         processes with no arguments.
+       * ch-grant.c (decode_decl, do_seize): Add processing of
+         processes with no arguments.
+       * ch-tasking.c (build_process_header, build_chill_start_process):
+         Add processing of processes with no arguments.
+         (make_process_struct): Add processing of IN attribute for
+          process arguments.
+         (tasking_setup): Add NUL-character to name of a tasking
+          element. The name must be NUL terminated.
+         (build_chill_send_signal): Default SEND_SIGNAL_PRIORITY
+          to 0 with a warning if -Wall specified on command-line.
+       
+Fri Jul  2 16:01:57 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-parse.y: Change 'empty' comments to new non-terminal
+         so that exyacc doesn't discard them.
+       * ch-lang.c (build_chill_range_type): New error messages.
+
+Fri Jul  2 12:43:25 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-parse.y (action): Catch and report actions which 
+          shouldn't have exception clauses, but do.  Unfortunately,
+         catching more than one of these per compilation will 
+          have to await the general addition of syntax error
+          recovery to the parser.
+
+Fri Jul  2 10:45:35 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-parse.y (locdec): Issue error for initialization 
+         of bitstring with tuple, not for powerset init with
+         tuple.
+
+Thu Jul  1 15:29:26 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-lang.c (build_chill_array_type): Check for indices
+         that didn't fold into constants, issue error (PR 2924b).
+       * ch-parse.y: Add novelty counter, alphabeticalize.
+       * ch-tree.h: Define CH_NOVELTY for novelty checks later.
+
+Thu Jul  1 14:03:04 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       For Wilfried Moser.
+       * chill.in: Add -ansi switch at compiler call to avoid
+         translation of i.e. sun to 1 by cpp.
+
+Wed Jun 30 22:21:33 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-grant.c (raw_decode_mode): Add code for
+         integer and enumeral ranges.  Standardize indentation.
+
+Wed Jun 30 14:02:23 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-grant.c (print_an_int): New function to print a
+         decimal integer string or the CONST_DECL (SYN) which
+         best matches it.
+          (print_integer): Call the above function.  Replace
+         calls to SAME_TYPE macro with TYPE_MAIN_VARIANT
+         comparisons, as suggested by Jim Wilson.
+          (decode_decl): Set current_grant_modename sooner,
+         be sure to clear it when done.
+
+Wed Jun 30 10:10:57 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (build_max_min): Change interface to accept
+         just a max/min flag.  Get min/max values from an
+         enumeral constructor.
+          (build_chill_max, build_chill_min): Change calls to
+         build_max_min.
+       * ch-lang.c (deep_const_expr): Check for NULL_TREE
+         arguments, don't seg fault.
+
+Wed Jun 30 09:20:09 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * config/sparc/sparc.c (sparc_type_code): Add SET_TYPE
+         to switch cases, preventing abort.
+
+Tue Jun 29 19:04:37 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-expr.c: Update comment.
+       * ch-parse.y (range_or_mode): New non-terminal used in
+         lexpr to implement mode as case label.
+
+Tue Jun 29 13:13:46 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (build_chill_case_expr): Pass in the
+         optional ELSE clause, error for multiple case-selector
+         expressions, error for missing ELSE clause.
+       * ch-expr.c (chill_expand_assignment): Error if multiple
+         location assignment and locations not novelty 
+         equivalent.
+       * ch-parse.y (caseaction): Add range_list_clause non-
+          terminal, sorry message for it.
+          (assignaction): error if operator used on multiple
+         assignment.
+         (case_expr): Pass optional ELSE tree to 
+         build_chill_case_expr for checking.
+       * ch-tree.h (build_chill_case_expr): Change proto.
+
+Fri Jun 25 17:22:41 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (chill_comptypes, build_chill_binary_op):
+          Allow PROC mode variables.
+       * ch-convert.c (convert): Turn a NULL literal into a zero
+         valued pointer-to-function, given such a type.  Also
+         build the ADDR_EXPR of a function variable.
+       * ch-grant.c: Pervasive -Wall -pedantic cleanup.
+          (print_enumeral, print_integer, print_struct) Moved these
+         large functions out of the switch in raw_decode_mode for
+         readability, and to encourage future code-sharing.
+          (print_proc_tail, print_proc_exceptions): Moved these out
+         of decode_decl, to share them.  They're used also to
+         output PROC modes.
+       * ch-parse.y (mode2): Enable PROC modes.
+         (procmode): Represent PROC mode as a ptr-to-function type.
+          (call): Recognize ptr-to-function as indirect call.
+          Cleanup 'primval LPRN untyped_exprlist RPRN' action code.
+
+Thu Jun 24 15:59:20 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-grant.c: (raw_decode_mode): Add support for unnamed
+         and user-numbered enumeration members.
+
+Thu Jun 24 13:52:10 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (build_chill_array_expr, build_chill_length):
+         Explicitly convert a varying array's length field to an
+         integer_type_node, now that it's only a chill_integer_
+         type_node.
+       * ch-expr.c (chill_expand_expr, 
+                     expand_assignment_to_varying_array, 
+                     chill_expand_array_assignment,
+                     expand_varying_length_assignment): Explicitly 
+          convert a varying array's length field to an integer_type_node,
+         now that it's only a chill_integer_type_node.
+       * ch-loop.c (init_loop_counter, top_of_loop_test): Change
+         to handle varying array location iterations.
+       * ch-parse.y (mode2): Count number of named SET members,
+         as opposed to '*' members.  Issue error if there were none.
+         (setelement): Count named set members.  Generate a unique
+         identifier for the '*' element.
+       * ch-typeck.c (validate_varying_array_ref):  Explicitly 
+          convert a varying array's length field to an integer_type_node,
+         now that it's only a chill_integer_type_node.
+
+Wed Jun 23 19:18:28 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-lang.c (finish_chill_enum): Change test for too-
+          large enumerations.
+       * ch-parse.y (setelement, optsetvalue): Allow numbered,
+          unnamed set elements.
+
+Wed Jun 23 16:25:06 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * c-typeck.c (process_init_constructor): Suppress
+         errors about un-initialized array elements if the
+         array is VARYING, as signaled by C_TYPE_VARIABLE_SIZE.
+       * ch-actions.c (lang_init): Set flag_short_enums, so that CHILL
+         enumerations *can* be only a byte in size.
+          (adjust_parm_or_field): Convert untyped parameter before
+         looking at its type to process it.
+       * ch-convert.c (convert): Generate [ -1, -1 ] value for
+         an INSTANCE type.
+       * ch-decl.c (do_decls): Assure that a CONSTRUCTOR has a
+         type, so that output_constant doesn't seg fault.
+       * ch-except.c (start_handler_array): Use unique identifier for
+         exception array, so we can have > 1 array per reach.
+       * ch-lang.c (finish_chill_enum): Error if number of
+         enumeration values exceeds 256.
+       * ch-parse.y (check_end_label): Error, not warning if start
+         and end labels don't match.
+          (assignaction): Convert RHS.  Allows untyped tuples to be
+         passed to stabilize_reference.
+          (exceptlist, onexceptprefix): Error if non-unique exception
+         name is coded.
+       * ch-tree.c: Added form feeds, comment reformatted.
+       * ch-typeck.c (chill_expand_tuple): Compare tree value to
+         NULL_TREE, not zero.  Add a constructor element for a
+         VARYING array's length to the constructor list.
+          (build_varying_struct): Mark the type as VARYING for
+         process_init_constructor.
+       * toplev.c (lang_options): Add '-lang-chill' and
+          '-fchill-grant-only' options to table.
+
+Tue Jun 22 13:13:41 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (build_chill_function_call): Add check
+         to prevent calling a PROCESS like a PROCEDURE.
+       * ch-parse.y (rcalternative): Add check for an 
+         receive case alternative after a RECEIVE CASE
+         statement.
+       * ch-tree.h: Fix macro ENCAPSULATED_ARRAY_P.
+       * ch-lang.c (lang_finish): Remove resetting errorcount
+         and sorrycount for granting.
+
+Mon Jun 21 17:56:48 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       Receiving signals works.
+       * ch-actions.c (lang_init): Add else_clause flag to
+         __wait_signal parameter list.
+       * ch-lex.l: Add SIGNALNAME token, return when appropriate.
+       * ch-parse.y (SIGNALNAME): New token.  Delete 
+         empty_untyped_exprlist token, no longer used.  Add 
+         name_or_signal non-terminal.  Standardize a few NULL
+         tests.  Add real RECEIVE CASE semantics.  Add checks that
+         SIGNALS, BUFFERs are only declared at global scope.
+         (call): Add signal declarations with/without data fields.
+       * ch-tasking.c (get_tasking_code_name, get_tasking_code,
+          build_chill_receive_case_start, build_chill_receive_case_end,
+          build_chill_receive_case_label): New functions.
+         Replace build (CONSTRUCTOR, ... calls with build_nt 
+          (CONSTRUCTOR, calls.
+       * ch-tree.h: New prototypes.
+
+Thu Jun 17 18:36:38 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       SIGNAL declaration compilation, seizing & granting,
+          SENDing also.
+       * ch-actions.c (lang_init): Move instance_type_node 
+         build to ch-tasking.c.  Call build_tasking_message_type.
+         Build a type for send_signal.  Put builtin_function
+         calls into alpha order.
+         (adjust_proc_param): Rename to adjust_parm_or_field,
+         add is_signal flag, so signal fields can use it.  Rename
+         calls to it, add flag to calls.
+       * ch-decl.c (push_chill_extern_signal): Add function.
+       * ch-grant.c (decode_decl): Correct signal decl output.
+         (do_seize): Correct check for process seizure.  Add
+         code for seized signal decl.
+       * ch-lex.l (yylex): Treat POS, ROW, STEP as reserved.
+       * ch-loop.c (get_unique_identifier): Standardize loop
+         temporary's name to assure that it's not granted.
+       * ch-parse.y (SIG_NAME): Delete unused token.
+          (spec_declist): Delete silly printf.
+         (quasi_signaldef): Add non-terminal.
+         (sendaction, optsendwith, optsendto, optpriority):
+          Implement actual working semantics.
+          (call, empty_untyped_exprlist): Allow empty signal 
+          fields between parens.
+       * ch-tasking.c: Rename adjust_proc_param calls, add
+         is_signal flag to calls.  Make instance_type_node a
+          type, not a TYPE_DECL, change references.  Fix all
+         CONSTRUCTOR builds.  Add make_signal_struct function.
+          Move build_instance_type here from lang_init.
+          (build_tasking_message-type, build_signal_descriptor,
+         build_chill_send_signal): New functions.
+       * ch-tree.h: Add, update protos.
+       * ch-typeck.c (build_chill_cast): Check for NULL expression
+         type as well as error_mark.
+
+Thu Jun 17 12:28:03 1993  Jim Wilson  (wilson@sphagnum.cygnus.com)
+
+       * Makefile.in (STAGESTUFF): Add chill to list.
+
+Wed Jun 16 07:12:53 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * Makefile.in: Complete the renaming of ch-process.c
+         to ch-tasking.c.
+       * ch-decl.c (push_chill_extern_function): Drop is_process
+         parameter, and marking process decl trees.
+          (push_chill_extern_process): New function for
+         SEIZEd processes.  Lotsa form feeds added for print
+         readability.
+       * ch-grant.c (decode_decl): Handle GRANTing of SIGNAls.
+         (do_seize): New parameter seize_all.  Handle sseizing
+         processes.
+         (chill_seize): Pass seize_all parameter.
+         (chill_grant): Check for __tmp_ prefix, to disable
+         *either* seizing or granting.
+       * ch-parse.y (quasi_pdef): Delete is_process parameter for
+         push_chill_extern_functon, call push_chill_extern_process
+         for processes.
+         (specialinit): Comment these rules as needed only until
+         2-pass compiler is operational.
+         (extprocedure): Delete is_process parameter.
+         (simpledec): Delete `sorry' about SIGNAL decls.
+         (optsigdest): Correct check for process name.
+       * ch-tasking.c (build_signal_decl): Finish coding.
+       * ch-tree.h: Add macro to save a SIGNAL's destination
+         process name in an id node.  Add/change prototype.
+
+Mon Jun 14 18:17:13 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (lang_init): Build instance_type_node.
+         Change `this' to a runtime function call.
+       * ch-grant.c (do_seize): Generate tasking-code
+         variable for seized process.
+       * ch-lex.l (equal_number): Also accept synonym
+         name for numeric value.
+       * ch-parse.y (primval): Add process-related
+         function calls.  
+          (signaldef, etc.): Rough draft of SIGNAL definition
+          processing. 
+          (stopaction): Call runtime function.
+          (pdef): Pop symbol level if ending a process
+          and there were parameters.
+          (primval): Call `whoami' runtime function for THIS.
+       * ch-tasking.c (build_process_header): Be sure
+          to define the tasking enum, if it hasn't already
+         been done.  Only call shadow_record_fields if there
+         are parameters.  
+          (build_tasking_enum): Only call start_enum *after*
+          checking the already_built flag.
+          (build_copy_number, get_tasking_code,
+         build_gen_code, build_gen_inst, build_get_ptype,
+         build_proc_type): New functions for process-related
+         builtins.
+          (build_signal_decl): New function for SIGNAL
+          declaration - rough draft.
+       * ch-tree.def (INSTANCE_TYPE): new tree code.
+       * ch-tree.h: New prototypes.  Defines for instance
+         type field access.
+
+Sat Jun 12 21:15:02 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       Get start-process action working:
+       * ch-actions.c (adjust_proc_param): new function,
+         extracted from build_chill_function_call and called
+         from there.
+       * ch-tree.h, ch-grant.c (do_seize): Add process_type 
+         parameter to add_taskstuff_to_list call, prototype.
+       * ch-parse.y (start_parlist): New non-terminal for
+         START action.
+          (startaction): Reference start_parlist, check for
+         integer-valued process copy-number.
+          (optstartset): Check instance parameter - must be
+         an INSTANCE_TYPE location.
+       * ch-tasking.c (generate_tasking_code_variable): New
+         function, extracted from tasking_setup and called 
+          from there.  Also called from build_process_header.
+         (build_process_header): Add process_type parameter
+         to add_taskstuff_to_list call.  Remove incrementing
+         of process_type (moved into generate_tasking_code
+         _variable).
+          (build_chill_start_process): Complete rewrite.
+         (add_tasking_stuff_to_list): Add stuffnumber parameter
+         putit on the list.          
+
+Sat Jun 12 06:08:09 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       Getting processes compiled, initialized and granted:
+       * .cvsignore: Add chill file.
+       * c-decl.c (shadow_record_fields): Allow PARM_DECL
+          as well as VAR_DECL.
+       * ch-actions.c (lang_init): Move build of
+         initializer_type into ch-tasking.c.  Change
+         definition of THIS to function call.
+       * ch-decl.c (massage_param_node): Add comments.
+         (start_chill_function): Set nested flag in
+          start_function call based upon current_function_decl,
+         not as constant zero.
+       * ch-grant.c (decode_decl): lotsa code by Wilfried to
+         GRANT process decls.  
+          (finish_chill_module): Completely rewrote interface
+          to runtime.
+       * ch-lex.l (THIS): Just return the token code.
+       * ch-parse: Add THIS token.
+         (processpar, processparlist): New rules, to collect
+          process parameters. 
+          (pdef): Add code to pop the process' WITH scope.
+          (procedure): Set process WITH scope flag to zero.
+          (process): Move most code into build_process_header.
+          (primval): Output function call for THIS.
+       * ch-tasking.c (add_taskstuff_to_list, build_tasking_enum,
+          make_process_struct, build_process_header): New code 
+          to handle process translation and interface to runtime.
+       * ch-tree.h: New prototypes.
+
+Thu Jun 10 13:32:51 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * Makefile.in: Change ch-process.c to ch-tasking.c.
+         A delayed part of the last change..
+
+Thu Jun 10 11:14:59 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * .cvsignore: Add 'chill' file.
+       * ch-actions.c (lang_init): Add new runtime function
+         __register_process.
+       * ch-decl.c (push_chill_extern_function): Add is_process
+         input flag, use it.
+       * ch-grant.c (decode_decl): Recognize a process for
+         granting.
+         (do_seize): Put seized processes onto the tasking_list.
+         (chill_finish_module_code): Declare init_list entry,
+         link it onto the init_list.  Call tasking_setup and
+         tasking_registry.
+       * ch-lex.l: Make tasking-related variables global,
+         delete their initialized flags.
+       * ch-parse.y: Add is_process flag to push_chill_extern_function
+         calls.  Put processes onto the tasking_list.
+       * ch-process.c: Renamed to ch-tasking.c.
+       * ch-tasking.h: New file.
+       * ch-tree.h: New, adjusted prototypes.
+
+Wed Jun  9 10:59:27 1993  Wilfried Moser  (moser@deneb.cygnus.com)
+
+       * chill: This file is replaced by chill.in and will be
+         generated during 'make' and 'make install'. This script
+         now finds the correct chillrt0.o and libchill.a during
+         linking.
+       * chill.in: New file that replaced chill.
+       * Makefile.in: Add rules to make chill out of chill.in.
+
+Wed Jun  9 09:03:55 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * .cvsignore: Add gfloat.h and xlimits.h.
+       * ch-actions.c (lang_init): Create new type for module-
+         level initializer list entry.
+       * ch-grant.c (chill_start_module_code): Rename actual
+         module-level code to just the modulename, which is
+         *not* public.
+          (chill_finish_module_code): Allocate space for initializer
+         list entry, build real initializer function, which puts
+         the list entry on the runtime list.  Name the init function
+         as the module's constructor function.
+       * ch-tree.h (build_init_struct): Add prototype.
+       * ch-typeck.c (build_init_struct): Add function, called
+         from lang_init.
+       Note: these changes require a new devo/chillrt/chillrt0.c.
+
+Thu Jun  3 17:04:01 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * c-decl.c: Fix comment.
+       * ch-actions.c, ch-grant.c: Standardize front end:
+          #define first, etc.  Add comments.
+         (lang_init): Delete unused flag, code for inapplicable
+          gen-decls option.  (lang_decode_option): Delete
+          gen-decls option, add grant-only option, flag.
+       * ch-convert.c, ch-decl.c, ch-except.c, ch-tree.c,
+         ch-typeck.c: Add form feed after front end.
+       * ch-expr.c: Standardize testing for error_mark node.
+       * ch-lang.c: Remove unused deep_fold function.
+
+Fri May 21 11:04:22 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * c-typeck.c (build_binary_op, build_unary_op):
+         Recognize BOOLEAN_TYPE.
+       * ch-actions.c (build_chill_unary_op): Remove
+         some crufty work-arounds.
+
+Thu May 20 19:03:48 1993  Per Bothner  (bothner@deneb.cygnus.com)
+
+       * ch-grant.c (decode_constant):  If the granted value is a
+       cast, make sure to emit an appropriate expression conversion.
+
+Thu May 20 16:35:35 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-lang.c (build_chill_range_type): Initialize the
+         precision variable.  Double-negative ranges work now.
+
+Thu May 20 11:24:42 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (build_unary_op): Compound a wretched
+         hack which hides a BOOLEAN_TYPE from the underlying
+         C code.
+
+Wed May 19 16:45:54 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c: (CH_SINGLETON_SET): Add function, call it
+         from chill_comptypes. (build_chill_unary_op): Give
+         better name to unsigned flag.
+       * ch-expr.c (chill_expand_assignment): Correct calling
+         sequence for setpowersetbits runtime routine.
+       * ch-grant.c (raw_decode_mode): Give better name to 
+          unsigned flag.  (decode_constant): Check for null
+          'val' ptr, avoid seg fault.
+       * ch-lex.l (convert_number):  Give better name to 
+          unsigned flag. (convert_bitstring): Move increment
+         of bl counter to emphasize that it increments once
+         per loop.
+       * ch-tree.h: (NO_SOURCE_UNARY_MINUS): Define new flag.
+       * ch-typeck.c (chill_expand_tuple): Build BOOLEAN
+         constructor if given a singleton set constructor.
+
+Thu May 13 17:03:04 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * c-decl.c (pushdecl): Complete May 9 change.
+       * ch-actions.c (build_chill_unary_op): Set the
+         TREE_UNSIGNED flag FALSE for raw_decode_mode.
+       * ch-grant.c (grant_array_type): Correct the May 12
+         check for circularity.
+          (raw_decode_mode): Use TREE_UNSIGNED flag to
+          control range's printing.
+         (chill_grant): Remove useless, bogus code.
+       * ch-lex.l (convert_number): Set the TREE_UNSIGNED
+         flag TRUE for raw_decode_mode.
+
+Wed May 12 18:04:01 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-decl.c (push_syndecls, push_modedef): Comment
+         reminders to check for circular definitions.  Later!
+       * ch-grant.c (grant_array_type, decode_decl): Prevent
+         circular definitions in the use of the array's 
+         type name.
+
+Wed May 12 16:06:13 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-grant.c (grant_array_type): If array_type has
+         a name, just use it.
+       * ch-lang.c (build_chill_range_type): Don't force
+         unsigned ranges on output.
+       * expr.c (store_constructor): Preclude seg fault.
+
+Wed May 12 07:49:00 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (fold_set_*): Correct tests for 
+         range set-constructor list entries.
+         (lang_init): Define setpowersetbits function.
+       * expr.c (store_constructor): Handle non-constant
+          set constructors.
+
+Tue May 11 18:25:40 1993  Per Bothner  (bothner@cygnus.com)
+
+       * ch-lang.c (build_chill_range_type):  If the parent type
+       is unknown, and the endpoints of the range are integer
+       constants, use the smallest suitable integer type.
+       * ch-lang.c (build_chill_range_type):  Remove kludge
+       for dealing with char ranges.
+
+Tue May 11 15:24:31 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (build_chill_repetition_op): Build a
+         range-type set constructor if there's only one value
+         in the repeated constructor.
+         (fold_set_*): Abort if range value seen, for now.
+       * expr.c (store_constructor): Handle range-type by
+         storing bytes rather than bits as much as possible.
+
+Mon May 10 18:45:18 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (invalid{left right}_operand): Add
+          handlers for REPLICATE_EXPR.
+         (build_chill_repetition_op): Build constructor list
+         for repetition of bitstring.
+       * ch-parse.y (call): Recognize more trees as arrays,
+         to avoid error msg.
+          (operand5): Add count, string temporaries, use them.
+
+Mon May 10 16:49:08 1993  Per Bothner  (bothner@cygnus.com)
+
+       * ch-grant.c (seize_implied_names):  Fix code that assumed
+       a FUNCTION_DECL (or PROCESS_DECL) to work on types instead.
+       * ch-grant.c (generate_set, grant_parent_of_enum,
+       grant_parent_enum): Removed unused functions.
+       * ch-grant.c (raw_decode_mode):  Remove commented-out code.
+
+Mon May 10 10:54:57 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-grant.c (do_seize, seize_implied_types): Move
+         result and parameter processing to proper place.
+          (chill_seize): Mark unseized identifier with
+          error_mark_node, to avoid excessive errors.
+       * ch-parse.y (call): Check for ERROR_MARK before 
+          reporting an error.
+
+Sun May  9 17:21:24 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * c-decl.c (pushdecl): If a strongly-visible name is
+         seen, in conflict with a weakly-visible name, take
+         the strongly-visible one and don't complain.
+       * ch-actions.c (chill_comptypes): Allow chain of ref-
+         erence types > 1 in length.
+       * ch-grant.c: Turn disguised for-loops into actual
+         ones, so continue works.  Delete redundant code in
+         seize_implied_names.  Reindent.
+       * expmed.c (store_split_bit_field): Disable abort for
+         CHILL.
+
+Sun May  9 17:11:33 1993  Per Bothner  (bothner@cygnus.com)
+
+       * ch-convert.c (convert):  Move handling of SET_TYPE until
+       after we've handled de-referencing and such like.
+       * ch-grant.c (grant_array_type):  Simplify; remove (now-)
+       bogus call to generate_set.
+       * ch-grant.c (get_type):  Remove obsolete stuff.
+
+Fri May  7 10:30:34 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (lang_init): Add definition of psslice
+          runtime routine. (build_chill_binary_op_1,
+          build_chill_binary_op): Have result type of
+          TRUTH_ANDIF_EXPR be boolean, not integer.  Some
+         reindenting.
+       * ch-convert.c (convert): Use consistent notation
+         for expression.
+       * ch-parse.y: Add front-end pass count. (locdec):
+          Add syntax for other BASED declaration.
+       * ch-tree.c: Fix comment.
+       * ch-typeck.c (build_chill_slice): Implement a runtime
+         call for bitstring slices. (build_chill_cast):
+          Add code for BITS_BIG_ENDIAN bit loop.
+         (chill_expand_tuple): Don't pass ref type to
+          digest_init, only underlying type.
+
+Thu May  6 12:52:14 1993  Per Bothner  (bothner@cygnus.com)
+
+       * ch-typeck.c (build_chill_cast):  type_for_size takes
+       a size in bits, not bytes.
+
+Wed May  5 19:02:55 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c: Break out separate routines for set
+          folding, handle ranges in set_fold_eq and set_fold_ne.
+          Fix folding as req'd by TTC test.
+       * ch-grant.c (raw_decode_more): Check for content match
+         to decide output mode, not pointer identity.
+       * ch-typeck.c: Add cross-reference comment.
+       * varasm.c (emit_set_data): Clarify parameter name.
+         Handle INTEGER_CST as set constructor.
+          (output_constant): Handle CONSTRUCTOR node for sets.
+         Apparently forgot to actually 'checkin' this one last
+          time.
+
+Wed May  5 12:23:58 1993  Jim Wilson  (wilson@sphagnum.cygnus.com)
+
+       * ch-parse.y, ch-tree.h (get_current_declspecs): Obsolete; deleted.
+
+Tue May  4 15:47:44 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (fold_set_expr): new function to fold
+          set expressions.  Calls inserted into 
+         build_chill_binary_op and build_chill_unary_op.
+          (build_chill_repetition_op): New function, called
+         from build_chill_function_call.
+       * ch-expr.c (chill_expand_assignment): Call 
+         build_chill_repetition_op.
+       * ch-grant.c (decode_constant): Comment out deep_fold
+         call.  The earlier fold_set_expr calls should make
+         this one unnecessary.  Prevent seg fault when name
+         of structure field is NULL.  Standardize for loop.
+       * ch-parse.y: Fix comments.
+          (operand5): build a REPLICATE_EXPR.  Don't call
+         build_repetition_op until we have a type.
+       * ch-tree.def (REPLICATE_EXPR): Define tree-code.
+       * ch-tree.h (build_chill_repetiton_op): Fix proto.
+       * ch-typeck.c (chill_expand_result): Call 
+         build_chill_repetition_op if needed.
+       * varasm.c (emit_set_data): Clarify parameter name.
+         Handle INTEGER_CST as set constructor.
+          (output_constant): Handle CONSTRUCTOR node for sets.
+
+Mon May  3 13:06:47 1993  Per Bothner  (bothner@cygnus.com)
+
+       * ch-typeck.c (build_chill_cast):  Allow more liberality to
+       casting:  Any discrete type to any non-discrete type that is the
+       same size as some other discrete type (and vice versa).
+       * stor-layout.c (layout_type, case SET_TYPE):  If the number
+       of bits will fit in a char or short, only use that many bits.
+
+Mon May  3 08:22:45 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-grant.c (decode_constant): Revert interpretation
+          of SET_TYPE as integer.
+
+Mon May  3 07:55:46 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * chparse.y (casealternative): Allow empty action list.
+
+Sat May  1 15:07:01 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * expr.c (expand_expr): Add parameter to __inpowerset
+         runtime call, to match new runtime.
+
+Sat May  1 14:55:58 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c: Cleanup from -Wall.  Reindent.
+         Redefine __inpowerset to take a 'minval' parameter
+         that matches the new runtime.  Added comments.
+       * ch-expr.c (chill_handle_case_label): Handle
+          NULL or ERROR trees.
+       * ch-grant.c (get_type): Survive bogus type params,
+         return empty string.
+       * ch-tree.c (build_powerset_type): Diagnose powerset
+          of non-discrete type.
+       * ch-typeck.c (discrete_type_p): Reindent.
+
+Fri Apr 30 16:08:54 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-grant.c (decode_constant): Interpret SET_TYPE
+          with integer value, so we output the same stuff as
+          the user gave us.
+       * ch-parse.y: Fix indentation.
+
+Fri Apr 30 09:34:03 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (chill_comptypes): Simplify, correct
+          integer subrange analysis.
+       * ch-grant.c (seize_implied_names): Add handling for
+         PROCESS_DECL, PROCESS_TYPE.
+          (do_seize): Call seize_implied_names for process,
+          procedure parameters and return value.
+       * ch-lang.c (finish_chill_enum): Canonicalize enum
+         types.
+       * ch-tree.def (PROCESS_TYPE): Add.
+       * ch-typeck.c (valid_array_index): Call chill_comptypes
+         rather than broken macro CH_COMPATIBLE.  The logic
+         in chill_comptypes will get moved to the macro later.
+
+Thu Apr 29 13:07:55 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (build_chill_lower, build_chill_upper):
+          Handle enumeration types.
+         (build_chill_binary_op): Call chill_comptypes
+         to error check IN arguments.  Change error
+          messages to say 'mode' rather than 'type'.  Cast
+          tree codes when build is called.
+       * ch-expr.c (chill_expand_array_assignment): Call
+         chill_comptypes to validate assignment args.
+       * ch-lex.l: Add newline for readability.
+
+Wed Apr 28 15:22:18 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * Makefile.in (ch-hash.h): Add rule to build this
+         from chill.gperf.  Not yet used.
+       * ch-actions.c (build_chill_binary_op): Allow enum
+          subranges on RHS of IN operator.
+       * ch-grant.c (decode_constant): Recognize 
+         error_mark_node as empty powerset initializer,
+         re-indent a bit.
+       * ch-lang.c (deep_fold): Return error_mark_node for
+          NULL input pointer or incoming error_mark_node.
+       * ch-lex.l: Ignore PACK and UNPACK keywords. Return
+         POS, ROW, and STEP as user-defined names.
+          (name_or_type): New function for above.
+       * ch-parse.y: Move token defs for following, comment
+         them separately: NOPACK, PACK, POS, ROW, STEP
+       * varasm.c (output_constant): Check for VAR_DECLs in 
+         records & unions, like arrays.  Don't abort.
+
+Tue Apr 27 17:42:29 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (CH_PROMOTING_INTEGER_TYPE_P):
+         rewrite for generality.
+       * ch-decl.c (grok_chill_variantdefs): Use chill
+         comptypes, so that subrange compatibility is ok.
+         (start_chill_function): Use lookup_name(), not
+         IDENTIFIER_GLOBAL_VALUE, for full generality.
+       * ch-expr.c (chill_expand_assignment): Need to
+         handle non-NOP modify codes here, since C code
+         in build_modify_expr won't understand powersets, 
+         etc.
+
+Tue Apr 27 09:05:31 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (build_max_min): Assign the set's
+         base type to the function's return type.
+          (build_chill_function_call): Before complaining
+          about parameter mismatches, convert certain actual
+          parameters.
+       * ch-expr.c (chill_expand_assignment): Before 
+          complaining about LHS/RHS mismatches, convert
+          certain RHS expressions.
+       * ch-grant.c (decode_constant): Deep-fold incoming 
+         expression, so we can output it.
+       * ch-lang.c (deep_const_expr): New function, called
+         from const_expr, actually traverses the tree 
+         looking at its leaves for 'const'ness.
+         (deep_fold): New function to fold already-built 
+         trees.
+       * ch-parse.y (case_expr): Add whitespace.
+       * ch-tree.h: Add prototype for deep_fold.
+
+Tue Apr 27 07:21:43 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (chill_comptypes): Allow enumeration
+          subranges as compatible with the parent enum.
+          (build_chill_function_call): Before checking type
+          compatibility, use convert on typeless expressions,
+          like constructors.
+       * ch-expr.c (chill_expand_assignment): Before 
+         checking type compatibility, use convert on 
+          typeless expressions, like constructors.
+       * ch-lex.l: Add comment.
+
+Thu Apr 22 17:23:25 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * .cvsignore: Add genopinit, insn-opinit.c
+       * c-common.c (binary_op_error): Prevent seg fault on
+          unknown node code.
+       * ch-typeck.c (build_chill_array_ref): Remove old
+          lower-bound-of-array-index-nonzero code.
+       * expr.c (expand-expr, get_inner_reference): Remove
+         old lower-bound-of-array-index-nonzero code.
+
+Thu Apr 22 16:01:09 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * c-decl.c (shadow_record_fields): Add pushlevel for
+         each PROCESS parameter, too.
+       * ch-process.c (make_process_struct): First working
+          version.
+       * ch-tree.def: Add PROCESS_DECL definition.
+       * ch-tree.h: Add CH_IS_EVENT_MODE macro, change proto
+          for make_process_struct.
+       * expr.c (expand_expr): Add references to 
+          PROCESS_DECL.  Add #include of ch-tree.h.
+       * tree.c (decl_function_context): Add check for a
+          PROCESS_DECL, and #include for ch-tree.h.
+
+Thu Apr 22 09:25:08 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * expr.c (expand_expr): Add missing prototypes, and
+         parameters to expand_expr call.
+
+Wed Apr 21 16:17:07 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * c-decl.c (shadow_record_fields): Add ability to
+         handle pointers to records/unions.  For PROCESS
+         compilation.
+
+Thu Apr 22 09:25:08 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-expr.c (chill_expand_expr): Add missing
+          parameters to expand_expr calls.  Some trivial
+         reformatting for readability.
+
+Wed Apr 21 16:17:07 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-lex.l: Make send_*_prio externally visible,
+          default them to zero, eliminate the init flags.
+          Same for process_type.
+
+Sat Apr 17 10:59:50 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (build_chill_binary_op): Build a
+          BIT_FIELD_REF tree for IN_EXPR operations.
+       * ch-typeck.c (build_chill_array_ref): Build a
+          BIT_FIELD_REF tree for access to packed array of
+         bits.
+
+Fri Apr 16 12:33:34 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-parse.y (EXIT action): Improve error checking,
+          messages.
+       * ch-typeck.c (chill_expand_tuple): Remove code to
+         pack sets (moved to varasm.c long ago).
+       * varasm.c (unpack_set_constructor): Rename size to
+          bit_size, since 'size' always means bytes.
+          (pack_set_constructor): Rename size to wd_size,
+          since 'size' always means bytes.
+         (output_constant): Set size to zero, so that extra
+          bytes of padding aren't output after set constants.
+
+Fri Apr 16 11:57:50 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * .cvsignore: Add .gdbinit.
+       * ch-decl.c (start_chill_bindings): Add function name
+          to binding contour's exit_label for EXIT stmt.
+       * ch-parse.y (EXIT action): Call lookup_name to avoid
+          inserting label for function name.  Also check
+          IDENTIFIER_LABEL_VALUE for label's decl.
+          (caseaction, beginendblock, ifaction): Call
+          stamp_nesting_label to put action's label into
+          contour for EXIT to find.
+
+Thu Apr 15 17:17:05 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * expr.c (expand_expr): Unify, clean up handling of
+          IN_EXPR, and handling of bit-string element ref.
+         Now, all goes through IN_EXPR handler.
+       * stmt.c (stamp_nesting_label, expand_exit_labelled):
+          New functions, which allow either label or 
+          function decls.
+
+Thu Apr 15 17:17:05 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c ch-actions.h ch-convert.c ch-decl.c ch-except.c
+          ch-expr.c ch-grant.c ch-inout.c ch-lang.c ch-lex.h ch-lex.l
+         ch-loop.c ch-parse.y ch-process.c ch-tree.c ch-tree.def
+         ch-tree.h ch-typeck.c: Add 1993 copyright, fix titles.
+       * ch-actions.c (build_chill_binary_op): Move runtime function call
+         to expr.c.  Just build a tree here.  Clean up error checking.
+       * ch-convert.c (convert): Simply store a type into an expression if
+          TREE_TYPE (expr) == NULL.  Prevent error if an enum is to be
+         converted to a set of such enums.
+       * ch-loop.c (init_loop_counter): Restore error msg for undeclared
+         variable if no local scope is to be created for the loop.
+       * ch-typeck.c (build_chill_array_ref): Turn bit array ref into IN_EXPR,
+         remove redundant code which wasn't ever called.
+
+Wed Apr 14 07:54:00 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * .cvsignore (y.tab.c) : Add to list.
+       * ch-convert.c (convert): Check pointers better - avoid NULL reference.
+         Remove redundant check for ERROR_MARK - already checked earlier.
+       * ch-parse.y (get_type_of): Add parameter checks for NULL ptrs and
+          error_mark_node.
+
+Tue Apr 13 16:00:37 1993  Per Bothner  (bothner@cygnus.com)
+
+       * c-decl.c (start_function):  If there is a previous
+       function declaration of the same name, steal its RTL.
+       This is a kludge needed for forward declarations of
+       nested functions.
+       * ch-decl.c (push_chill_extern_function), ch-tree.h:  New
+       function, for external and seized function declarations.
+       Make sure to use permanent obstack.
+       * ch-parse.y (quasi_pdef, extprocedure):  Use new function.
+
+       * ch-grant.c (chill_finish_module_code):  Since module
+       function is no longer visible,, can't get it using
+       lookup_name().  Use current_function_decl instead.
+
+       * ch-decl.c (build_chill_function_type):  Add void_type_node
+       to end of parameter types list.
+
+       * ch-grant.c (chill_start_module_code):  Make sure module
+       function isn't visible (and hence isn't granted).
+
+Tue Apr 13 15:48:25 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-loop.c (begin_chill_loop): Also stamp the user's loop name into
+          current contour for DO FOR EVER loops.
+
+Tue Apr 13 14:37:39 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-parse.y (actionstatement): Add error rule.  Delete 
+          POP_UNUSED_ON_CONTEXT.  Add comments about label name usage.
+         (nohandleraction): Better error check in EXIT processing.
+          (optexprlist): Comment out make_function_rtl call.
+          (seizestatement): Change error to warning.
+
+Tue Apr 13 08:29:31 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-grant.c (raw_decode_mode): Supply missing parameter in get_type
+          call.
+       * ch-loop.c (begin_chill_loop): Take loop label as parameter.  Stamp
+          its name into the current contour's exit_label, for EXIT to use.
+       * ch-parse.y: (actionlabel): Save label tree in global variable.
+          (actionstatement): Clear label to NULL when action is finished.
+         (handlerstatement, nohandlerstatement): Split actions into 
+          categories which do/don't permit exception handlers.
+          (exitaction): Move code into nohandleraction, make it work.
+          (doaction): Pass (possibly NULL) label tree to begin_chill_loop.
+       * ch-tree.h: Add parameter  to begin_chill_tree prototype.
+       * stmt.c (stamp_nesting_label, expand_exit_labelled): Add functions.
+          Note: This implementation of EXIT only exits from loops, not yet 
+                from other bracketted statements.
+
+Mon Apr 12 13:41:55 1993  Per Bothner  (bothner@rtl.cygnus.com)
+
+       * ch-grant.c (chill_grant):  Remove obsolete code.
+
+       * ch-decl.c (push_synmode, push_newmode):  Merged to yield ...
+       * ch-decl.c (push_modedef):  ... w/ slightly different interface.
+       * ch-tree.h, ch-process.c (make_process_struct), ch-parse.y
+       (modedefinition):  Use new push_modedef function.
+       * ch-parse.y (modedefinition):  Don't depend on inherited
+       attributes (- implemented incorrectly!): Use a global variable
+       parsing_newmode to distinguish synmode and newmode.
+
+Mon Apr 12 08:10:34 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-loop.c: Diffuse cleanup after big functional changes.
+       * ch-parse.y: Eliminate temporary variables, now unnecessary.  Use
+          parse-time stack instead.
+       * ch-tree.h: Change build_chill_iterator prototype.
+
+Sun Apr 11 15:50:33 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-convert.c (convert): Replace an ERROR_MARK type - from a 
+         untyped_expr with the given type.  Move chill_expand_case_expr
+         call inside chill_expand_expr.
+       * ch-expr.c, ch-tree.h, ch-typeck.c (chill_handle_case_default, 
+          chill_handle_case_label, chill_expand_case_expr):  Move to ch-expr.c
+          from ch-typeck.c.
+       * ch-loop.c: Major reorganization to support multiple iterators in
+          DO FOR loop, very little new code, just a re-org.
+       * ch-parse.y (iterationlist): Add handling for multiple loop iterators.
+
+Sat Apr 10 14:40:12 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (build_chill_lower, build_chill_upper): Clean up.
+       * ch-grant.c (chill_grant): Avoid making strange SYNMODE for enum
+          member.
+       * ch-lex.l (equal_number): Add function to look in the input for '='
+          followed by a decimal literal.  Call it from directive scanning.
+          (start state 'ccitt'): Deleted, unused.  Moved unused, but reserved,
+          tokens to NORMAL state.
+          (compiler_directive): Replaced by equal_number.  Now the only
+          recursive call to yylex happens in check_newline at the beginning
+          of a compilation.
+
+Sat Apr 10 09:55:50 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (build_chill_case_expr): Added from ch-parse.y.
+       * ch-lex.l (ENTRY, PERVASIVE, ROW, STEP): Add token recognition to
+          'reserve' them.
+       * ch-parse.y (case_expr): Move code into ch-actions.c.  There will
+          need to be much more written.
+       * ch-tree.def (VARY_ARRAY_REF): Add comment.
+       * ch-tree.h (build_chill_case_expr): Add prototype.
+       * ch-typeck.c (build_chill_cast): Allow untyped_expr - just assign the
+          type to the expr.  Check for CASE_EXPR, call expand_case_expr.
+
+Sat Apr 10 01:10:51 1993  Per Bothner  (bothner@rtl.cygnus.com)
+
+       * ch-parse,y (in_pseudo_module): New variable.  Try if we're
+       in a seizefile, but not in a module nested in the seizefile.
+       Use for backwards compatibility with old grantfiles.
+       * ch-decl.c (do_decls, push_syndecls, push_newmode, push_synmode):
+       If in_pseudo_module, grant new declaration.
+       * ch-decl.c (pushd_newmode):  If there is a granted previous
+       incomplete type, fix it up.
+       * ch-grant.c (seize_implied_names):  Do remaining types.
+       Guard against recursion.
+       * ch-tree.h (IDENTIFIER_ENUM_VALUE):  Removed, not used.
+       * ch-tree.h (CH_DECL_ENUM), ch-grant.c (chill_grant), ch-lang.c
+       (finish_chill_enum):  Enum constants are marked with
+       CH_DECL_ENUM so they don't get written to the grantfile.
+       * ch-tree.h (IDENTIFIER_GRANTED_VALUE):  Allow fast seizing.
+       * ch-lex.l:  Re-write to use start states, to avoid calling
+       yylex() recursively.
+       * ch-lex.l (compiler_directive);  This is now obsolste. FIXME.
+       * ch-lex.l:  Call push_module and pop_module when reading a
+       seizefile.  This creates a pseudo-module.
+       * ch-parse.y:  Clean up handling of empty declarations and
+       action statements; semicolons are now optional a number of
+       places.
+       * ch-parse.y:  Remove some bogus tests for "statement
+       out of sequence" (they're both legal and work).
+       * varasm.c (mak_function_rtl):  Remove  kludge that may
+       not be necessary (and loses anyway).
+
+Fri Apr  9 09:37:38 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-expr.c (chill_expand_array_assignment): Remove false error about
+         arrays that are too small.    
+       * ch-parse.y (callaction): Don't pass an error_mark_node to
+          c_expand_expr_stmt.
+
+Fri Apr  9 00:26:54 1993  Per Bothner  (bothner@rtl.cygnus.com)
+
+       * ch_tree.h (DECL_HIDDEN_BY_MODULE, ENCAPSULATED_ARRAY_P):
+       New macros.
+       * ch-actions.c (build_chill_function_call):  Use latter.
+       * ch-typeck.c (chill_similar):  Fix typo.
+       * ch-grant.c (raw_decode_mode):  Handle ENCAPSULATED_ARRAY_P
+       parameter types.
+       * ch-grant.c (seize_implied_names):  Handle ranges of enums.
+       * ch-grant.c (do_seize):  Set DECL_SOURCE_FILE and _LINE of
+       seized declaration to be the point of the seize itself.
+       * ch-grant.c (chill_grant), ch-tree.h:  Add a parameter
+       which is the list (in order) of decls in the module.
+       Don't reverse the getdecls() list; that is handled by caller.
+       * ch-grant.c (chill_grant):  Test that a declaration is
+       visible before writing it.
+       * ch-parse.y (push_module):  Make sure to hide declarations
+       from surrounding module.
+       * ch-parse.y (pop_module):  Restore those declarations.
+       * ch-parse.y (pop_module): This function is now responsible
+       for writing out for calling chill_grant() to the grant file.
+       * ch-actions.c (lang_finish):  Remove calls to chill_grant().
+
+Thu Apr  8 16:56:52 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (build_char_array_expr): Add handling of varying
+          arrays in relational expressions.
+       * ch-decl.c: Add prototype for lookup_name_current_level.
+       * ch-expr.c (chill_expand_expr): Make concat_expr's temp a BLKmode, 
+          so its length is used as the temp's size.
+         (chill_expand_array_assignment): Correct for varying := varying
+          assignment, clean up.
+       * ch-typeck.c: Add prototype for require_complete_type.
+
+Wed Apr  7 16:41:29 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-loop.c (for_location, begin_chill_loop, end_chill_loop): Major
+         diffuse changes to fix location loops.
+       * ch-parse.y (location): Remove ref through NULL ptr.
+
+Wed Apr  7 13:42:06 1993  Per Bothner  (bothner@rtl.cygnus.com)
+
+       * ch-decl.c (massage_param_node):  New function.
+       It handles the LOC/IN/OUT/INOUT parameter distinction,
+       as well as calling build_chill_array_parm_type if needed.
+       * ch-tree.h (massage_param_node):  New prototype.
+       * ch-decl.c (push_parms):  Use new massage_param_node().
+       * ch-parse.y (pmodearg):  Use new massage_param_node().
+       * ch-parse.y (formpar):  Don't call build_chill_array_parm_type;
+       now handled by massage_param_node.
+       * ch-typeck.c (my_build_array_ref):  Handle non-zero array
+       lower bounds.
+       * ch-actions.c (build_chill_function_call):  If the formal
+       parameter is a pseudo record wrapped around an array, make
+       sure we wrap the actual parameter in a record CONSTRUCTOR.
+       * ch-typeck.c (build_chill_array_parm_type):  Make sure
+       the pseudo struct type is allocated on the permanent_obstack.
+       * ch-parse.y (location):  Remove thinko.
+       * ch-actions.c (chill_comptypes):  Comment out test for
+       NEWMODEness - it gets broken by the forward declaration hacks.
+
+Tue Apr  6 18:05:40 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c: Move build_varying_struct to ch-typeck.c.
+       * ch-parse.y (formpar): Turn ARRAY_TYPE parms into structure.
+       * ch-parse.y (location): Do build_component_ref for an array wrapped
+          in a structure.
+       * ch-tree.h: Add prototype, #define for build_chill_array_parm_type.
+       * ch-typeck.c (build_chill_array_parm_type): Add function, move
+         build_varying_struct here from ch-actions.c.
+
+Mon Apr  5 19:56:56 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c, ch-decl.c: Use tree_int_cst_equal and integer_zerop 
+         rather than in-line code - tests LOW and HIGH values.
+       * ch-lang.c: Use tree_int_cst_lt rather than inline code.
+       * ch-typeck.c (my_build_array_ref): Handle case where array low bound
+          isn't zero.
+
+Mon Apr  5 15:45:10 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-typeck.c (my_build_array_ref): Add some more code from 
+          build_array_ref.  Change checks, error messages to mention 
+          'discrete types'.  I.E. types which don't kiss and tell..
+
+Sat Apr  3 09:27:03 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-except.c, ch-expr.c: Turn externs into prototypes.
+       * ch-grant.c (chill_grant): Remove orphan #else.
+       * ch-tree.h: Add prototype for build_chill_bin_type.
+       * ch-typeck.c: Turn externs into prototypes, delete code which
+          was commented out in chill_expand_return; it will never be used.
+
+Fri Apr  2 21:55:14 1993  Per Bothner  (bothner@rtl.cygnus.com)
+
+       Major re-write of New module/seize/grant stuff.
+       Now, a grantfile is a spec module and contains all the
+       top-level declarations of the granting module, not just
+       those that are granted.  It also contains explicit grant
+       statments naming those declared names that are granted.
+       It also has seize statements and use_seize_file directives
+       to correctly handle transitive dependencies.
+
+       * ch-parse.y:  Change to allow multiple modules per source file.
+       Allow spec modules (including quasi definitions) as well as
+       regular modules.
+       Allow spec modules inside normal modules;  these behave as if
+       they were outermost.  This violates the Blue Book, but is
+       needed by the new grantfile mechanism.  (A grant file is a
+       spec module that gets included by the use_seize_file directive.)
+       * ch-parse.y (struct module *current_module, push_module,
+       pop_module):  Support module nesting (for spec modules only).
+
+       * ch-tree.h (struct module): New.
+       * ch-grant.c (granted_decls):  New list of declarations
+       that have been granted into the outermode pseudo-module.
+       * ch-grant.c (decode_mode):  If the decl has a name,
+       always write the name, not just if the decl has already
+       been written.  Since we write out all decls, we can assume
+       it will be written later, and depend on the forward
+       declaration kludges to catch it.
+       * ch-grant.c (decode_decl):  Don't write out _EXTERN.
+       Instead write out standard (Blue Book) quasi-definitions.
+       * ch-grant.c (push_granted):  New function.
+       * ch-grant.c (seize_implied_names):  New function.  Re-write
+       how set element names are seized when a set type is seized.
+       * ch-grant.c (chill_seize):  Work by seraching the
+       granted_decls list and copying the declaration.
+       * ch-grant.c (chill_grant):  Write all declarations
+       declared in this module.  Write GRANT statements for
+       those granted.   seize statements for decls seized from
+       other modules.  Write extra syntax to make a complete
+       spec module.
+       * ch-grant.c (grant_use_seizefile):  Copy use_seize_file
+       directives into grant file.
+       * ch-lex.l (setup_seizefile_read):  Call grant_use_seizefile.
+
+       * ch-lex.l (struct input_state, current_input_state,
+       push_input_file, pop_input_file):  New (type, variable,
+       function*2).  Used to save and  restore state on an input file.
+       * ch-lex.l:  Clean up to handle nested input seizefiles
+       (needed by new grant/seize mechanism.
+       * ch-lex.l (skip_to_end_of_directive):  New function.
+       * ch-lex.l (compiler_directive: USE_SEIZE_FILE):  Make sure
+       we skip to the end of the directive *before* we switch
+       input files.
+       * ch-lex.l (setup_seizefile_read):  Prevent reading the
+       same seizefile twice (otherwise likely with new grant/seize).
+       * ch-lex.l:  Recognize SPEC.  Misc cleanups.
+
+       * ch-parse.y:  Fixed foreward references of types.
+       Removed the unknown_type_node crock.
+       * ch-decl.c:  Remove all uses of unknown_type_node.
+       Check for TYPE_SIZE zero instead.
+       * ch-decl.c (fixup_unknown_type):  Make sure new mode
+       gets copied into old mode.  Merge their variant chains.
+       * c-decl.c (lookup_name_current_level):  Make non-static.
+       * ch-decl.c (lookup_name_current_level):  No longer needed.
+
+       * ch-parse.y (call):  Allow an implicitly defined function
+       name following the CALL keyword.
+       * ch-tree.h (struct lang_identifier): Add implicit_decl,
+       and make sure order of fields matches c-tree.h.
+
+       * ch-actions.c (lang_init, build_allocate_memory_call,
+       build_allocate_globals_memory_call):  Fix names (add initial '_')
+       and prototypes of _allocate_[global_]memory (2nd param is ref).
+       Use build_chill_function_call, not build_function_call,
+       so the reference parameter gets handled.
+       * ch-actions.c. (lang_init):  Make sure boolean_{true,false}_node
+       have boolean_type_node as their types.
+       * ch-actions.c (build_chill_lower, build_chill_upper): Fix to
+       work for arrays with BOOLEAN_TYPE ranges (and simplify some).
+
+       * ch-except.c:  Make sure an end_label is generated,
+       and jump to it if there is no exception.
+
+       * ch-convert.c (convert_to_reference):  Strip off NOP_EXPR casts.
+       * expr.c (expand_expr):  Handle NOP_EXPR as Chill-style casts.
+       (Need cleaning up and FSF installation!)
+       * ch-parse.y:  If taking the address of a cast, move the
+       ADDR_EXPR inside the NOP_EXPR.
+
+       * ch-typeck.c (my_build_array_ref):  Simplified, more suitable
+       versions of build_array_ref from c-decl.c.  (E.g. don't barf
+       if index type is char or bool.)
+       * ch-typeck.c (build_chill_array_ref):  Use my_build_array-ref.
+
+       * ch-typech.c (build_chill_bin_type):  New function.
+       Support BIN(N) range type specification.
+       * ch-parse.y (mode2), ch-lex.l:  Recognize BIN(N).
+
+       * ch-tree.h (CH_SIMILAR):  Redefine in terms of chill_similar.
+       * ch-typeck.c (chill_similar):  New function.  Recognize that
+       that range types are similar to their parent types.
+
+       * ch-tree.h:  Declare flag_local_loop_counter.
+       * ch-loop.c:  Whether the loop variable is local to the loop
+       in now controlled by flag_local_loop_counter, instead of
+       #ifdef'd on CREATE_SCOPE.
+       * ch-actions.c (lang_decode_option):  Recognize flags
+       "-f[no-]local-loop-counter".
+       * toplev.c (lang_options):  Add Chill flags -f[no-]local-loop-counter.
+
+       * varasm.c (make_function_rtl):  Due to problems with forward
+       references, don't rename nested functions in Chill.  (Kudge!)
+
+Sun Mar 28 10:12:45 1993  Ken Raeburn  (raeburn@kr-pc.cygnus.com)
+
+       * ch-lex.l (push_back, readstring): Fix prototypes.
+
+Fri Mar 26 18:32:15 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-parse.y: Put %type directives back into alpha order.
+          (variant_alternative): Simplify error_mark test.
+         (variantfields, varianthack): Add error_mark checks.
+
+Fri Mar 26 13:36:23 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-lex.l (convert_charliteral): Rewrite to avoid bogus error msg.
+       * ch-parse.y (get_type_of): Add function to deal with possible fwd
+         declared type name.  Call it from lotsa places.  Add lotsa checks
+          for error_mark_node.  Standardize indentations.
+
+Thu Mar 25 15:00:11 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-expr.c (chill_expand_assignment): Avoid seg fault while checking
+          for array assignments.
+       * ch-parse.y (action): Add recognition for allocate_memory and
+          allocate_global_memory system calls.
+          (mode2): Remove ill-conceived error check that broke REFs to
+          as-yet-undeclared types.  Check for IDENTIFIER_NODE, lookup its
+          DECL if there, pass TREE_TYPE of decl to build_pointer_type.
+          (variantfields, varianthack): Clean up.
+          (variantfield): Check for IDENTIFIER_NODE, lookup its DECL if
+          there, pass TREE_TYPE of decl to grok_fixedfields.
+          (labellist): Explicitly assign error_mark_node to signal error.
+       * ch-typeck.c (chill_compatible): Report FALSE for bad parameters,
+         rather than seg faulting.
+
+Thu Mar 25 10:35:58 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (lang_init): build_function_type for allocate_memory
+         and allocate_global_memory runtime routines.  Move discrete_type_p
+          into ch-typeck.c.
+       * ch-typeck.c (discrete_type_p): Move here, where it belongs, call it
+         in build_chill_cast.
+
+Wed Mar 24 16:25:16 1993  Per Bothner  (bothner@rtl.cygnus.com)
+
+       * ch-grant.c:  Don't grant previously seized names.
+
+Tue Mar 23 15:25:39 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * Makefile.in (ch-actions.o): Add dependencies (expr.h insn-codes.h)
+       * dwarfout.c (fundamental_type_code): Add handling of BOOLEAN_TYPEs,
+          avoid abort.
+
+Tue Mar 23 09:03:35 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (build_char_array_expr): Just build a type for the
+          result of a CONCAT_EXPR, and pass the tree back.  
+          chill_expand_array_assignment can do a better job of 
+          code-generation.
+       * ch-expr.c (chill_expand_array_assignment): Generate the CONCAT_EXPR
+         code.
+
+Mon Mar 22 12:42:58 1993  Per Bothner  (bothner@rtl.cygnus.com)
+
+       * ch-except.c (start_handler_array):  Make sure the handler
+       array and its type get on the permanent obstack.
+       * ch-grant.c (write_grant_file):  Don't write the _INIT=name
+       specifier:  It isn't needed, and loses (because of funny
+       characters in the chill_initializer_name).
+       * ch-decl.c (push_synmode):  Set TYPE_NAME(mode) = syndecl.
+       * ch-lang.c (finish_chill_enum):  Don't allocate a dummy
+       TYPE_DECL for the enum.  I don't think it is needed (?),
+       and removing it is needed for the change above.
+
+       * ch-grant.c (grant_array_type, decode_mode):  Remove unused
+       'decl' parameter.
+       * ch-grant.ch (raw_decode_mode):  New function, based on old
+       decode_mode.
+       * ch-grant.c (decode_mode);  This is now just a wrapper around
+       raw-decode_mode - but does not call raw_decode_mode if the
+       type is named and has already been emitted.
+
+Fri Mar 19 11:55:35 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c: Add prototypes, remove unused variables.  Attempt to
+         continue generating grant file in presence of error (Wilfried's 
+          patch to lang_finish).
+       * ch-expr.c: Change assign_stack_temp calls so temps get recovered
+          after each statement.  Move convert call into
+          chill_expand_assignment from ch-parse.y.
+       * ch-grant.c: Generally re-order, clean up.  Include Per's decode_mode
+          simplification.  Include commented-out hack in decode_mode to return
+          type's name if type SEIZEd or already GRANTed in this file.
+       * ch-lex.l: Add prototypes.
+       * ch-parse.y (assignaction): Move convert call into
+         chill_expand_assignment.
+
+Thu Mar 18 16:04:45 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-convert.c (convert): Remove unused variable, fix int_size_in_bytes
+         comparison.
+        * ch-decl.c: Add prototypes, correct error message spelling, remove
+         unused variables.
+       * ch-lang.c (build_chill_range_type): Add error message.  Add prototypes.
+         Correct comment spelling.
+       * ch-lex.l: Add prototypes, remove unused variable, put double parens aarround
+         assignment in conditional.
+       * ch-loop.c: Add prototypes, remove unused variable.
+       * ch-parse.y (structured_variable): Return NULL_TREE is invalid WITH
+         parameter is seen, don't count it in structured_variable_list.  Pre-
+         vents seg fault when only WITH operand is invalid.
+       * ch-parse.y (label_spec): Correct assignment within IF expression which
+         was intended to be equality test.  Remove unused variables.
+       * ch-tree.h: Add prototype.  Remove unused EXCP_CODE enumeration, and
+          prototyping editorial comments.
+       * ch-typeck.c: Disable generation of code to validate array index for
+         now.  Should be done as a call-back from more generic array_ref code.
+         Clean up parameter checking.  Remove unused variables.
+
+Fri Mar 12 11:57:32 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (chill_varying_type_p): Return FALSE if given NULL type.
+       * ch-actions.c (build_chill_binary_op): Pass ALL arrays to
+         build_char_array_expr.
+       * ch-convert.c (convert): protect against seg fault, if type == NULL.
+       * ch-expr.c (chill_expand_expr): Add FIXME comment.
+
+Fri Mar 12 11:04:02 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-expr.c (chill_expand_expr): Completely rethink set unary ops.
+         Thanks very much to dje!
+
+Thu Mar 11 21:06:55 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (build_char_array_expr, build_chill_binary_op):
+         Move CONCAT_EXPR handling from binary_op to array_expr.  Add
+         handling for relationals between varying arrays to array_expr.
+
+Thu Mar 11 19:20:37 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (build_set_expr, build_chill_binary_op): Calculate
+          *BIT* length of powersets and arrays of BOOLs.
+         (invalid_left_operand, invalid_right_operand): Disallow relationals
+         with arrays of BOOL as operands.
+        * ch-convert.c (convert): Test TREE_CODE for ERROR_MARK rather than
+         comparing pointers.
+       * ch-decl.c (push_newmode): Re-indent.
+       * ch-expr.c (chill_expand_expr): Calculate *BIT* length of powersets
+          and arrays of BOOLs.
+       * ch-lang.c (build_chill_array_type): Add parameter error checking.
+
+Mon Mar  8 17:13:00 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * expr.c (store_constructor): Handle set construction.
+       * varasm.c (output_constant): Prevent seg fault - terminate case
+         alternative with a 'break'.
+
+Mon Mar  8 17:13:00 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-expr.c (): Move SET_TYPE constructor to expr.c.
+       * ch-loop.c (end_chill_loop): Only do expand_end_loop if not POWERSET loop.
+       * ch-typeck.c (build_chill_cast): Fix error msg spelling.
+
+Mon Mar  8 13:16:05 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * fold-const.c (fold_convert): Allow CHAR_TYPE CONVERT_EXPR to
+          be folded.
+
+Mon Mar  8 10:13:57 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-grant.c (get_tag_value): Correctly output certain enumerations.
+         Correct some non-standard indentations.
+
+Fri Mar  5 14:58:35 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c: Fix up comment.
+
+Thu Mar  4 18:05:43 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c: Define builtin '__nepowerset' and call it - avoid
+         negating the result of calling __eqpowerset.  New function
+         discrete_type_p().
+       * ch-grant.c (get_tag_value): Don't seg fault referring to an
+         anonymous enumeration's name.
+       * ch-lex.l: Turn EVEN token into an ignored compiler directive.
+       * ch-loop.c (end_chill_loop): Output end-of-loop marker.
+       * ch-parse.y (label_spec): redefine variant structure label_spec
+         to agree with the Z.200 spec.
+                    (locdec): Error if set/bitstring initialized with a tuple.
+                     (case_label, arrayindex): Use new discrete_type_p 
+                     function. 
+       * ch-process.c: Fix typo.
+
+Wed Mar  3 14:30:53 1993  Per Bothner  (bothner@rtl.cygnus.com)
+
+       * ch-lang.c, ch-tree.h: Rename build_range_type to
+       build_chill_range_type.  Call new build_range_type() in tree.c.
+       * ch-parse.y:  Call build_chill_range_type as approriate.
+       * ch-typeck.c (build_chill_cast);  Clean up.
+
+Wed Mar  3 09:36:56 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-parse.y: Define CONTINUE_EVENT token.
+       * ch-parse.y (mode2): Give error message for SYN modea = modeb
+         where modeb is undefined.
+
+Tue Mar  2 20:16:37 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c: Add builtin function descriptions for memset and
+         bitsetpowerset.  Allow build_chill_num expression to exceed 16 bits,
+         but not 32.
+       * ch-tree.h: Correct chill_handle_case_default prototype.
+       * ch-actions.h, ch-lex.h: Add prototypes.
+       * ch-lex.l, chill.gperf: Add CONTINUE_EVENT token.
+
+Thu Feb 25 17:35:46 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * c-decl.c (init_decl_processing): Disable creation of C-specific
+         builtin functions.  They pollute the CHILL name space.
+       * stor-layout.c (variable_size): Allow variable-size objects at file
+         scope, for CHILL.
+
+Fri Feb 26 07:14:34 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * c-decl.c (finsh_decl): Don't output non-constant storage size 
+         error for CHILL
+       * ch-actions.c: Call build_temporary_variable, fix build_tree_list
+         call in build_chill_cause_exception.
+       * ch-convert.c, ch-expr.c: Use tree_cons to build list's last entry
+       * ch-loop.c (build_temporary_variable): New function
+       * ch-process.c: Call build_temporary_variable, spell start_process
+         correctly.
+       * ch-tree.h: Extern for build_temporary_variable
+
+Thu Feb 25 12:09:01 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * c-decl.c (init_decl_processing): Disable initial creation of C-specific
+         builtins - they pollute the CHILL name space.
+       * ch-typeck.c (valid_array_index): Correct upper-bound check.
+       * expr.c (expand_expr): Use actual library name for __inpowerset
+         builtin.
+       * stor-layout.c (variable_size): Disable complaint about variable-
+         size type or decl at file scope.  Perhaps later this s.b. a warning.
+       * varasm.c (emit_set_data): Add function.
+         (output_constant): Call new emit_set_data function for VAR_DECLs, 
+         in addition to CONSTRUCTORs.
+
+Thu Feb 25 11:34:36 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c: Change all builtin functions names to their
+         actual library names.  Change references to boolean_type_node
+         to references to the TREE_CODE == BOOLEAN_TYPE, to follow the
+         convention.
+         build_set_expr: Remove length parameter, call powersetlen() instead.
+           remove handling of CHAR arrays - they're handled in build_char_array_expr.  
+           Call __eqpowerset to test for equality - we can't use a byte-length -
+           need bitcount instead.
+         build_chill_compound_expr, internal_build_compound_expr: Copy from C
+           version that does stuff we don't want.
+         build_binary_op: Check for in_size_in_bytes return < 0, indicating
+           size is changeable at run time.  Build two memcpy calls to implement
+           string concatenation.
+         powersetlen: Add function.
+         build_chill_card: Call powersetlen.
+         build_chill_max_min:  Common code for powerset max/min.
+         build_chill_length: Move VARYING array handling before regular char
+           array handling.
+       * ch-expr.c chill_expand_expr: Disable concatenate code - we need to
+         the VARYING status of the target to do this correctly.  Use powersetlen
+         for the powerset operations, not a byte length.
+       * ch-loop.c: Make CREATE_SCOPE #define to enable creation of a new scope
+         for each CHILL loop, as Z.200 requires.  Add powerset and error flags
+         to loop structure.  Evaluate user's powerset expression into a temp,
+         scan it destructively with __ffsetclrpowerset or __flsetclrpowerset
+         for powerset loop.  Only do loop-end assignments if NOT a powerset
+         loop, which has much less overhead now.
+       * ch-tree.h: Add prototype for powersetlen.
+
+Fri Feb 19 08:40:24 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-lex.l (convert_number): Evaluate number and pass it as
+         HOST_WIDE_INT.
+
+Fri Feb 19 08:56:44 1993  Michael Tiemann  (fs_tie at rcsw18)
+
+       * ch-typeck.c (build_chill_array_ref): Handle newmodes
+       correctly.
+
+       * ch-actions.c (chill_comptypes): Always initilize ERRSTR if
+       we are going to return 0.
+
+       * ch-convert.c (convert_to_reference): Don't use
+       TYPE_MAIN_VARIANT, because REFTYPE's type may be a newmode
+       (which must match the type of the expr).
+
+       * ch-grant.c (chill_seize): Don't let a type be copied just
+       because we are seizing it.
+
+       * ch-lang.c (finish_chill_enum): Convert TYPE_MIN_VALUE and
+       TYPE_MAX_VALUE to integer type.
+
+       * ch-loop.c (begin_for_range): Set lp->iter_type based on the
+       tree type of the bounds.
+       (build_loop_top): type of GE_EXPR and LE_EXPR is
+       boolean_type_node, not lp->iter_type.
+       (for_location): Ditto.
+
+       * ch-action.c (build_chill_lower,build_chill_upper): Handle
+       ENUMERAL_TYPE.  Also, handle different kinds of arguments more
+       cleanly.
+
+       * ch-parse.y (iteration): Convert start_exp and end_exp to
+       match the type of modename.
+
+       * ch-grant.c (chill_seize_aggr): Search also through anonymous
+       types.
+
+       * ch-grant.c (chill_seize): Check to see if SEIZEITEM has
+       already been seized, and if so, do nothing.
+
+       * c-typeck.c (process_init_constructor): If DEFAULT_VALUE
+       comes out error_mark_node, set ERRONEOUS.
+
+       * ch-actions.c (build_chill_binary_op_1): If EXP is NULL_TREE,
+       don't use it.
+
+       * ch-action.c (chill_comptypes): Test for structural
+       equivalence of enums.
+
+       * ch-typeck.c (build_chill_array_ref): Convert INDEX to
+       TYPE_MIN_VALUE of DOMAIN if the types are compatible.
+
+       * ch-grant.c (chill_seize): If DECLS is a TYPE_DECL for an
+       ARRAY_TYPE, seize the domain type if its a set.
+
+Thu Feb 18 20:02:15 1993  Per Bothner  (bothner@rtl.cygnus.com)
+
+       * c-typeck.c (process_init_constructor):  Emit error if some
+       array elements are not initialized.
+       * c-typeck.c (process_init_constructor):  Call digest_init()
+       recursively to expand default_value.
+       * ch-expr.c (chill_expand_array_assignment):  Simplify, and
+       handle the case that the lhs has dynamic size (e.g. a slice).
+       * ch-parse.y (elementlist):  Handle the case that tupleelement
+       generates more than one TREE_LIST node.
+
+Thu Feb 18 12:40:56 1993  Michael Tiemann  (fs_tie@rcvie.co.at)
+
+       * .cvsignore: add yacc sources, xgcc and stmp-* files. (Bill)
+       * c-typeck.c (lookup_field): add function, calls.
+       * ch-actions.c (build_chill_binary_op): figure return_type differently.
+       * ch-convert.c (convert_to_reference): return error_mark_node,
+         STRIP_NOPS.  (convert): Braces for readability.
+       * ch-decl.c (build_chill_function_type): accept typespec as parm.
+         Handle exceptions.
+         (grok_chill_variantdefs): call comptypes, not chill_comptypes.
+       * ch-expr.c (chill_expand_assignment): handle references.
+       * ch-grant.c (chill_seize_set, chill_seize_aggr): new functions
+       * ch-parse.y (structured_variable): check for REFERENCE_TYPE,
+         call convert.  Generally handle reference types.
+
+
+Thu Feb 18 09:30:11 1993  Michael Tiemann  (fs_tie@rcvie.co.at)
+
+       * ch-actions.c (chill_comptypes): Figure out which newmode or
+          synmode decls look most canonical.
+       * ch-convert.c (convert): handle location conversions of records,
+         unions and arrays.
+       * ch-decl.c (fixup_unknown_type): changes for variant records
+       * ch-parse.y (tupleelement): avoid confusing digest_init.
+       * ch-typeck.c (build_chill_array_ref): give element ref the
+         type of the ELEMENT, not the array (Bill Cox).
+
+Wed Feb 17 11:52:20 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-parse.y: change push_newmode and push_synmode interfaces.
+       * ch-actions.c (build_chill_binary_op): convert operands.
+
+Wed Feb 17 10:54:24 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (build_chill_binary_op, build_chill_unary_op):
+         handle reference types.
+       * ch-decl.c (push_newmode, push_synmode): rewritten
+       * ch-process.c (make_process_struct): new push_newmode interface.
+       * ch-typeck.c (build_chill_cast): change interface, error checks.
+
+Wed Feb 17 09:50:37 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-decl.c, ch-parse.y, ch-tree.h: delete old INOUT, OUT parameter
+         code.
+       * ch-typeck.c (valid_array_index): new function.
+
+Tue Feb 16 22:36:34 1993  Per Bothner  (bothner@rtl.cygnus.com)
+
+       * ch-convert.c (convert):  Slightly more correct conversion
+       for ARRAY_TYPEs (return as OK if CH_COMPATIBLE).
+       * ch-expr.c (chill_expand_array_assignment):  Invoke
+       __builtin_memcpy using build_function_call, not directly at
+       the rtx level (which doesn't work).
+       * ch-typeck.c (build_chill_slice):  First attempt at slices.
+       * ch-tree.h,  ch-typeck.c (build_chill_slice_with_range,
+       build_chill_slice_with_length):  New functions.
+       * ch-parse.y:  Use new slice-building functions.
+       * expr.c (get_inner_reference):  Subtract low bound of
+       array when doing an ARRAY_REF.
+
+Tue Feb 16 14:17:55 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (build_chill_function_call): better comments.
+       * ch-decl.c (push_parms): encode OUT, INOUT parms in additional way.
+       * ch-parse.y: indentation cleanup
+
+Tue Feb 16 12:03:53 1993  Michael Tiemann  (tiemann@cygnus.com)
+
+       * ch-decl.c (grok_chill_variantdefs): Really implement variant
+       records for CHILL.
+       * ch-grant.c (get_tag_value): New function.
+       * ch-grant.c (decode_mode): Grant variant records.
+
+       * ch-grant.c (chill_seize): If we seize a set, seize the set
+       values.
+
+       * ch-lex.l (RETURN_TOKEN): Make this safe to use in if/else
+       constructs.
+
+       * ch-parse.y (EMPTY): New pseudo-token to disambiguate
+       variant_alternatives.
+       (current_fieldlist): New variable to help processing tag
+       declarations in variant records.
+       (fields): Renamed from structdef.
+       (field): Renamed from fields.
+       (varianthack): New non-terminal to handle parsing ambiguity
+       for variant records.
+       (optlabellist): Changed to preserve CONST_DECLs when they are
+       parsed.
+
+       * ch-tree.h (TYPE_TAGFIELD): New macro.
+       (TYPE_TAG_VALUES): Ditto.
+
+Mon Feb 15 00:49:34 1993  Per Bothner  (bothner@rtl.cygnus.com)
+
+       * ch-grant.c (decode_mode):  Fix output for powerset modes.
+       * ch-grant.c (decode_constant):  Support grant output of
+       powerset literals.
+       * ch-actions.c (build_chill_binary_op):  IN_EXPR fix.
+       * expr.c (expand_expr):  Add Chill-specific kludge for
+       BIT_FIELD_REF if operand is SET_TYPE to call runtime function.
+       * ch-expr.c (chill_expand_assignment):  Remove no-longer-needed
+       special-case support for a BIT_FIELD_REF in right-hand-side.
+       * ch-lang.c (finish_chill_enum):  Patch up enum elements to
+       have the correct type (instead of integers, as in C).
+
+       * ch-lex.l, ch-parse.y:  Add disgusting hack (involving
+       context-dependent look-ahead) so we can parse exception
+       handlers correctly.
+       * c-typeck.c (digest_init):  Set output type for SET_TYPEs.
+       * varasm.c (unpack_set_constructor):  Add support for
+       (power-)set ranges (i.e. low_element:high_element).
+
+Sun Feb 14 13:37:52 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-inout.c: delete unused #include
+       * ch-typeck.c (build_chill_slice): turn abort call into error msg.
+
+Sat Feb 13 13:13:31 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * Makefile.in: Add cc1chill to STAGESTUFF per Eichin's suggestion.
+
+Sat Feb 13 12:17:41 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * Makefile.in: add lots of header files to the CHILL dependencies
+
+Fri Feb 12 15:48:27 1993  Per Bothner  (bothner@rtl.cygnus.com)
+
+       * ch-actions.c (build_chill_function_call):  Don't return
+       error_mark_node on empty parameter-list.
+
+Fri Feb 12 12:54:52 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (build_chill_function_call): fix start_decl parms.
+       * ch-parse.y (PUSH_ACTION): guarantee to generate an insn!
+
+Fri Feb 12 10:32:37 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (build_chill_function_call): create temps, do
+         assignments to handle INOUT and OUT parameters.
+       * ch-decl.c (build_chill_function_type): better parameter name.
+       * ch-parse.y (action): keep rules in alpha order.
+          (pmodearg): turn INOUT, OUT parameter types into reference types.
+       * ch-typeck.c (build_tree_slice): indentation change.
+
+Thu Feb 11 23:16:34 1993  Per Bothner  (bothner@rtl.cygnus.com)
+
+       * ch-lex.l (convert_bitstring), Changed SET_TYPE_CONSTRUCTOR to
+       take a list of elements which are in the set.  This corresponds
+       better to the tuple input form in Chill (and Pascal).
+       * varasm.c (unpack_set_constructor, pack_set_constructor):
+       New functions, to expand SET_TYPE CONSTRUCTORs.
+       * varasm.c (output_constructor):  Use pack_set_constructor
+       to assemble a SET_TYPE constant from a CONSTRUCTOR.
+
+       * ch-grant.c (decode_constant):  Better grant for strings,
+       enumeral, and bitstring constants.
+       * ch-grant.c:  Fixes in seize to avoid duplicates, and emit
+       things in the correct order.
+       * c-typeck.c (chill_initializer_constant_valid_p):  Kludge
+       needed to export a static function.
+       * ch-typeck.c (convert):  Avoid needlessly (and lossingly) calling
+       chill_expand_tuple to convert fix string to varying.
+       * ch-actions.c (build_chill_binary_op):  Promote short
+       integer operands if needed (otherwise emit routines barf).
+       * ch-tree.h (SET_WORD_SIZE):  New macro.
+       * ch-parse.y:  Fix syntax for RECEIVE CASE.
+       * ch-parse.y (location):  If IDENTIFIER is a CONST_DECL
+       return its value instead.
+
+Thu Feb 11 07:41:45 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (build_chill_max, build_chill_min): clean up
+       * ch-typeck.c (chill_expand_tuple): correct set initialization from
+         an enumeration tuple.  Add sort_constructor function.
+
+Thu Feb 11 07:41:45 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * config/sparc.c (sparc_type_code): handle CHAR_TYPE and
+         BOOLEAN_TYPE w/out an abort.
+
+Wed Feb 10 14:59:53 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c: change most integer_type_node references to
+         chill_integer_type_node.  Rewrite _max and _min routines,
+         redefine the signatures for those runtime routines.  Move
+         empty-set check into runtime.
+       * ch-expr.c, ch-loop.c, ch-process.c, ch-tree.c, ch-typeck.c: change
+         most integer_type_node references to chill_integer_type_node.
+
+Tue Feb  9 16:00:05 1993  Per Bothner  (bothner@rtl.cygnus.com)
+
+       * ch-except.c:  New file.  Stuff for exception handling.
+       * ch-parse.y:  Add working exception handling support.
+       * ch-lex.l, ch-parse.y:  Prefer standard type terminology
+       (BOOLS, CHARS) even though non-standard (BITS, CHAR) is ok.
+       * ch-grant.c:  Fix various problems related to granting
+       types such as bitsets.
+       * ch-tree.c (build_bitstring_type):  Set TYPE_MIN_VALUE
+       to distinguish bitstrings from powersets (in the same way
+       we distinguish char strings from char arrays).
+       * ch-tree.h:  New macro CH_BOOL_TYPE_P.
+       * ch-tree.h, ch-actions.c (lang_init), ch-grant.c (decode_mode):
+       Undo kludge where integer_type_node was hardwired to 16 bits.
+       Make integer_type_node etc have the same size as in cc1.
+       New types chill_integer_type_node and chill_unsigned_type_node
+       that correspond to the Chill source types INT and UINT.
+       For now, these match the C 'short' types, but that should
+       become a configuration option later,
+
+Tue Feb  9 11:41:25 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (build_chill_unary_op): allow NOT of a set.
+
+Tue Feb  9 08:27:18 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (build_chill_function_call): add test for
+         too many/few actual parameters (and avoid seg fault).
+       * ch-decl.c (do_decls): code cleanup for readability.
+       * ch-loop.c (begin_chill_loop, end_chill_loop): remove
+         emit_nop() calls - they now (since exceptions) cause seg faults.
+         Make derogation on poor CHILL compiler non-specific.
+       * ch-parse.y (mode2): enable VARYING keyword in CHAR(expr).
+       * ch-tree.h: remove prototypes added to c-tree.h.
+       * ch-typeck.c (build_chill_array_ref): correct getting domain
+         subtree for a PARM_DECL.  Subscripting a SET_TYPE is turned into
+         an IN_EXPR.
+
+Sun Feb  7 18:20:49 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-tree.def: add a new tree type - just for varying array 
+         references.  We were using ARRAY_REF, but the underlying C
+         code also generates that one.
+       * ch-convert.c, ch-expr.c, ch-typeck.c: use the new tree type.
+
+Sun Feb  7 17:33:17 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-convert.c: test given type against type of expr before
+         calling chill_expand_tuple.  We were getting lots of spurious
+         calls...
+
+Fri Feb  5 15:24:01 1993  Per Bothner  (bothner@rtl.cygnus.com)
+
+       * cccp.c:  Merge in various Chill-specific changes.
+       * gcc.c (default_compilers array):  Pass -lang-chill
+       to cpp, not -lang-ch.
+
+Fri Jan 29 17:18:22 1993  Per Bothner  (bothner@rtl.cygnus.com)
+
+       * Makefile.in (install-libchill, install-librmt):  Removed.
+       * ch-actions.c (build_chill_exception_decl):  Change decl
+       to initialized char array, rather than unitialized common.
+       (Simplifies extracting string name of exception.)
+       * ch-actions.c:  Adjust interface to cause_exception accordingly.
+       * ch-typeck.c (build_chill_array_ref):  Cause rangefail if
+       index > limit, not >= limit.
+
+       * ch-actions.c (build_chill_function_call):  Rename misleading
+       formal parameter.
+       * ch-decl.c (do_decls):  Allow (again) general initializer exprs.
+       * ch-parse.y (call):  Test for function call needs to test for
+       FUNCTION_TYPE, not FUNCTION_DECL.
+       nreverse arg list to build_chill_array_ref.
+       * ch-typeck.c (build_chill_array_ref):  Do recursive call at end
+       and only if multiple indexes.
+       * ch-typeck.c:  Cleanups.
+
+Fri Jan 29 11:05:58 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-decl.c (do_decls): handle set initializations better, more to do.
+       * ch-loop.c (begin_for_range): correct interface to expand_start_cond
+         and build_binary_op.
+       * ch-tree.h: lots more prototypes
+       * ch-typeck.c (build_array_from_set): added function.
+       * ch-typeck.c (chill_expand_tuple): handle set initializations better.
+
+Thu Jan 28 17:41:58 1993  Per Bothner  (bothner@rtl.cygnus.com)
+
+       * ch-grant.c (set_default_grant_file):  Change default.
+       Normally, grant file should end up in cwd.
+       * ch-lang.c (build_chill_struct_type):  Call pushtag,
+       for the sake of debugging.
+       * ch-lex.l:  Improve comment parsing.
+       * ch-lex.l (readstring):  Some improvements.
+       Initial support for control sequences in string literals.a
+
+Thu Jan 28 16:16:00 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+        * ch-convert.c (convert): correct fixed->varying conversion.
+        * ch-parse.y (mode2): delete unesthetic newline.
+
+Thu Jan 28 10:32:55 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c: delete maybe_array_ref()
+        * ch-expr.c (chill_expand_assignment): handle RHS array_ref, delay
+          calling convert().
+        * ch-lex.l, ch-parse.y, chill.gperf: add keywords, syntax for time
+         supervision actions & builtins
+        * ch-parse.y (call): eliminate optlocarrayidx, call build_chill_slice,
+          smaller actions directly (maybe_array_ref() used to call them).
+        * ch-tree.h: add build_chill_function_call, build_chill_slice
+        * ch-typeck.c: add build_chill_slice()
+
+Thu Jan 28 08:44:28 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-tree.h: bring up to date with ch-actions.c changes.
+
+Wed Jan 27 23:45:20 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-expr.c (chill_expand_assignment): handle an RHS varying array
+         reference.
+
+Wed Jan 27 22:28:36 1993  Per Bothner  (bothner@rtl.cygnus.com)
+
+       * ch-grant.c (decode_constant):  Add REAL_TYPE support.
+       * ch-actions.c (build_chill_exception_decl):  New function.
+       * ch-actions (build_chill_cause_exception, cond_exceptions):
+       Convert to take a (char*) parameter (the exception name).
+       * ch-actions.c, ch-expr.c, ch-typeck.c:  Convert calls to
+       cond_exception.
+       * ch-parse.y (check_end_label):  New function, to check if
+       and end label matches start label.
+       * ch-parse.y:  Fix syntax to properly recognize and
+       test optional end labels (using check_end_label).
+       * ch-decl.c (finish_chill_function):  Simplify, since
+       we assume check_end_label has already been called.
+       * ch-parse.y:  Put in infrastructure for exception handling.
+
+Wed Jan 27 15:45:20 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c: delete convert_chill_parameter, replace call with
+          call to convert().   
+       * ch-convert.c (convert): combine chill_give_type_to_expr in here.
+       * ch-decl.c: call convert rather than chill_give_type_to_expr.
+       * ch-expr.c: delete chill_expand_array_assignment, move code to convert.
+       * ch-expr.c (chill_expand_assignment): just call convert.
+       * ch-loop.c (end_chill_loop): expand the end of the loop for a
+         do while.
+       * ch-parse.y: call convert rather than chill_give_type_to_expr.
+       * ch-process.c: checkpoint.
+       * ch-typeck.c: delete chill_give_type_to_expr, call convert instead.
+
+Wed Jan 27 15:45:20 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-grant.c (grant_array_type): new function to allow handling of
+         VARYING array types.
+
+Wed Jan 27 15:45:20 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-typeck.c (chill_give_type_to_expr): fix typo.  Reorder to
+         avoid checking types on CONSTRUCTORs.  Correct typo.
+       * ch-expr.c (expand_assignment_to_varying_array): use proper
+         expansion function expand_expr_stmt.
+       * ch-expr.c (expand_chill_assignment): only convert VARYING
+         array refs or RHS.
+
+Wed Jan 27 15:32:21 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (build_chill_length, build_chill_lower,
+                        build_chill_upper): accept parameters, too.
+       * ch-expr.c (chill_expand_assignment):  decipher ARRAY_REF on RHS.
+       * ch-typeck.c (chill_give_type_to_expr, build_chill_array_ref):
+         assign proper type to ARRAY_REF expression.
+
+Wed Jan 27 09:51:46 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c (build_chill_binary_op): delete unused variable,
+         get set's base type from TYPE_DOMAIN rather than TREE_TYPE.
+       * ch-actions.c (build_chill_repetition_op): handle differently-built
+         declaration trees.
+       * ch-loop.c (begin_for_set): adapt to new powerset declaration tree.
+       * ch-typeck.c (chill_give_type_to_expr): give type to constructor
+
+Tue Jan 26 11:32:38 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-parse.y (ifaction): re-add lost call to expand_end_code().
+       * ch-parse.y (siezelist, grantlist): use 'name' rather than
+         'checked_name'.  It makes no sense to check sieze/grant names
+         for WITH expansion.
+       * ch-expr.c (chill_expand_expr): delete unnecessary (and
+         seg-fault-causing) code.
+       * ch-expr.c (chill_expand_assignment): make test for varying array
+         on the LHS more specific.
+       * ch-actions.c (invalid_left_operand, invalid_right_operand): error
+         for use of MOD, REM operators.
+       * ch-actions.c (build_chill_repetition_op): error for bit-field
+         initializers (which will get handled in the lexer).
+
+Mon Jan 25 17:26:47 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-typeck.c (build_chill_array_ref),
+       * ch-expr.c (chill_expand_expr, chill_expand_assignment):
+         translate varying array ref into ARRAY_REF, defer processing
+         until chill_expand_expr.  Update array's length field in
+         new function expand_assignment_to_varying_array.
+
+Mon Jan 25 14:57:24 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-parse.y (mode2): eliminate old method to mark varying arrays.
+       * ch-expr.c (expand_varying_length_assignment): repair scaling of 
+         RHS expression.
+
+Mon Jan 25 11:44:21 1993  Per Bothner  (bothner@cygnus.com)
+
+       * ch-parse.y:  Allow character and bitstring literals
+       in string repetition operator.
+
+Sat Jan 23 14:18:11 1993  Per Bothner  (bothner@cygnus.com)
+
+       * ch-parse.y (primval):  Re-recognize '(' expr ')'.
+       * ch-parse.y (name):  Remove call to check_identifier -
+       this is not appropriate in certain contexts.
+       * ch-parse.y (checked_name):  Same as <name>, but *with* the
+       call to check_identifier.  Use where appropriate.
+       * ch-parse.y (operand5):  Only allow string repetition of
+       string literals, because otherwise you get a conflict.
+
+Thu Jan 21 16:32:39 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-actions.c, ch-parse.y, ch-process.c, ch-tree.h: sync modules,
+         continue start_process development.
+
+Thu Jan 21 13:51:06 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-decl.c (do_decl): fix handling of multi-char initializer.
+
+Thu Jan 21 13:14:00 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * .cvsignore: add CHILL files to be ignored
+
+Thu Jan 21 07:38:57 1993  Bill Cox  (bill@cygnus.com)
+
+       * ch-parse.y: rough draft of start_process handling.
+
+Wed Jan 20 17:11:05 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-inout.c: fix mismatch with readtext proto in ch-tree.h.
+
+Wed Jan 20 16:48:13 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-tree.h, ch-process.c, ch-inout.c, Makefile.in: 
+         create new modules for I/O and process-related stuff.
+       * ch-actions.c: move routines to new modules.  
+         call xmalloc, not malloc.
+       * ch-lang.c (build_chill_struct_type): add parameter checking.
+       * ch-lex.l (init_lex): remove redundant cast.
+
+Tue Jan 19 16:33:56 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-parse.y (operand5): delete unnecessary argument to
+         build_chill_unary_op.  Add rule for string repetition.
+        * ch-parse.y (primval): delete string repetition attempt.
+       * ch-parse.y (start_process): rough draft of action.
+       * ch-actions.c (build_repetition_op): add it
+       * ch-actions.c (build_chill_binary_op): handle constant arguments
+         of CONCAT_EXPR, combine into a single string if possible.
+       * ch-actions.c (invalid_left_operand, invalid_right_operand):
+         allow single character arguments to CONCAT_EXPR.
+       * ch-tree.h: add prototype for build_repetition_op
+
+Tue Jan 19 15:03:29 1993  Fred Fish  (fnf@cygnus.com)
+
+       * dwarfout.c (output_type):  Add hack that matches the one in the
+       chill front end to distinquish between true string types and 
+       arrays of char, since it uses ARRAY_TYPE for both, rather than
+       trying to use the existing support for STRING_TYPE.
+
+Tue Jan 19 13:54:27 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-tree.h: added prototypes for all non-static CHILL functions.
+       * ch-actions.c (lang_init): declare builtin type for start_process
+        * ch-actions.c (build_chill_binary_op): combine        string literals when
+         concatenated.  
+       * ch-actions.c (formpars2struct): added for later start_process
+         implementation.
+       * ch-actions.h: remove un-needed function declarations.
+       * ch-decl.c: extern cleanup.
+       * ch-expr.c (chill_expand_array_assignment): add missing first
+         parameter to cond_exception call.
+       * ch-lex.l: make build_chill_string non-static.
+
+Mon Jan 18 19:15:08 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-decl.c (do_decls): get varying array length initialized.
+
+Mon Jan 18 09:51:43 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-expr.c (chill_expand_array_assignment): fix the copy length
+       in the memcpy call (it was just 4 bytes always).   Simplify some
+       code, also.
+
+Mon Jan 18 08:24:21 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-decl.c (do_decls): change CH_VARYING_TYPE_P to function.
+
+Mon Jan 18 08:00:11 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-lex.l, ch-parse.y: make BOOLS synonymous with BIT and 
+       CHARS synonymous with CHAR, in the lexer.  Delete unnecessary
+       'bools' non-terminal.
+       * ch-parse.y (assignaction): add lhs version of length() function
+       * ch-actions.c: add builtin_concat function, lots of support for 
+       CONCAT_EXPR.
+       * ch-actions.c, ch-tree.h: make a function out of former
+       macro CH_VARYING_TYPE_P
+       * ch-expr.c: add expand_varying_length_assignment ().
+       * ch-expr.c (chill_expand_expr): add CONCAT_EXPR support.
+       * ch-expr.c (chill_expand_array_assignment): call emit_library_call
+       rather than build_rts_call, to eliminate a recursion problem.
+       * ch-lang.c: eliminate 'sorry' about varying arrays.
+       * ch-typeck.c (validate_varying_array_ref): re-enable constant
+       index validation.
+
+Sun Jan 17 18:20:04 1993  Per Bothner  (bothner@cygnus.com)
+
+       * ch-grant.c, ch-lex.l:  Major simplification of how
+       seizes are done and how seizefiles are read.
+       * ch-actions.h:  Remove declaration of check_seize().
+       * ch-decl.c (do_decls):  Handle READONLY types.
+       * ch-parse.y (mode2):  Allow REF to be followed by any mode.
+       * ch-parse.y (mode2):  Allow literal expressions in string length.
+       * ch-parse.y (tupleelement):  Allow elemenst to be untyped_expr.
+       * ch-parse.y (seizestatement, etc):  Call chill_seize each
+       time something is seized, rather than building a list first.
+
+Sat Jan 16 12:24:44 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * chill.gperf, ch-hash.h: add Wilfried's tokens
+       * ch-lex.l: fold in Wilfried's changes.  Some tokens
+       weren't getting recognized, and INSTANCE wasn't correctly
+       reported to ch-parse.y as a PREDEF_MODEDCL.
+
+Thu Jan 14 15:02:39 1993  Per Bothner  (bothner@cygnus.com)
+
+       * ch-tree.h (CH_CHARS_TYPE_P):  New macro.  Add comment
+       explaining difference between char strings and char arrays.
+       * ch-tree.h (CH_STRING_TYPE_P):  Add FIXME re bitstrings.
+       * ch-tree.c (build_string_type):  Add comment.
+
+Wed Jan 13 15:19:15 1993  Per Bothner  (bothner@cygnus.com)
+
+       * calls.c, expr.c, function.c, stmt.c, varasm.c:  Set
+       MEM_IN_STRUCT_P for SET_TYPE where it is set for other aggregates
+       * expmed.c (store_bit_field, extract_field_field):  Undo
+       yesterday's removal of MEM_IN_STRUCT_P "sanity test".
+
+       * ch-decl.c (do_decls):  Put back support for initializing.
+       (Was accidentally removed in Jan 8 change.)
+
+Wed Jan 13 14:13:11 1993  Jim Wilson  (wilson@sphagnum.cygnus.com)
+
+       * ch-lex.l (convert_bitstring): Correct typo in cast.
+
+Tue Jan 12 20:29:08 1993  Per Bothner  (bothner@cygnus.com)
+
+       * ch-lex.l (convert_bitstring):  Change to pack bits
+       within words, not bytes, and to use machine bit-order
+       (not always little-endian).
+       * ch-parse.y:  Allow BOOLS(n) as well as BITS(n).
+       Use build_bitstring_type, not build_string_type.
+       * expmed.c (store_bit_field, extract_field_field):  Remove
+       "sanity test" that prevents use with SET_TYPE.
+       * tree.c (build_bitstring_type, build_powerset_type,
+       build_string_type):  Move (so far) Chill-specific functions to ...
+       * ch-tree.c:  ... new file.
+       * ch-tree.c (build_powerset_type, build_bitstring_type):  Re-write.
+       * ch-typeck.c (build_chill_array_ref):  Handle bit strings better.
+       * ch-typeck.c (chill_expand_tuple):  Kludge to handle SET_TYPE.
+       * Makefile.in (CHILL_OBJS):  Add ch-tree.o.
+       * ch-decl.c (do_decls):  Call expand_decl.
+       * stor-layout.c (layout_type):  Handle SET_TYPE.
+       * expr.c (expand_expr):  Add FIXMEs about IN_EXPR.
+       * ch-actions.c (lang_init):  Add type and decl for new
+       function __builtin_setbitinstring.
+       * ch-expr.c (chill_expand_assignmment):  Special-case handling
+       for BIT_FIELD_REF with non-constant bit position (which is
+       not yet handled by expand_expr).
+       * ch-convert.c (convert):  Handle SET_TYPE.
+
+Tue Jan 12 12:49:13 1993  Fred Fish  (fnf@cygnus.com)
+
+       * chill:  If -B arg is given, use to find gcc.
+
+Fri Jan  8 20:21:43 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-decl.c: revert to avoid seg fault
+
+Fri Jan  8 14:20:42 1993  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-decl.c: fix storage into correct offset in varying array.
+       * ch-actions.c: define sizetype for everyone, use it to build
+       varying structure.
+       * ch-parse.y: tiny cleanup.
+
+Wed Jan  6 13:25:33 1993  Bill Cox  (bill@cygnus.com)
+
+       * modules: use gdb rather than naked-gdb, to get opcodes
+       in chill definition.
+
+Wed Jan  6 09:48:35 1993  Bill Cox  (bill@cygnus.com)
+
+       * ch-typeck.c: add code to handle references to elements of VARYING
+       arrays.  Simplify chill_give_type_to_expr.  Add rough draft of run-
+       time index checking for VARYING arrays (under #if 0).
+       * ch-actions.c: new function cond_type_range_exception & calls.
+       New function cond_range_exception, for more general range-checking.
+       New function build_varying_struct, to do just that.  Use the macros
+       for the special varying field names.
+       * ch-tree.h: define macros for varying field names.
+       * ch-expr.c: use macros for varying struct names.  Simplify 
+       chill_expand_array_assignment.
+       * ch-parse.y: assure that build_varying_struct is called everywhere
+       that it applies.  Add a line-number note before the body of a DO 
+       loop.
+       * ch-loop.c: #ifdef out creation of new scope for DO loop body.
+
+Tue Jan  5 17:26:14 1993  Bill Cox  (bill@cygnus.com)
+
+       * c-decl.c: correct order of declaration of start_decl params,
+       for readability.
+
+Tue Jan  5 15:59:36 1993  Per Bothner  (bothner@cygnus.com)
+
+       * ch-grant.c (still_start_module_code), ch-parse.y (procedure):
+       Move shared code into ...
+       * ch-decl.c (start_chill_function): ... here.
+       * ch-decl.c (start_chill_function):  Add missing call to
+       expand_start_bindings.
+       * ch-decl.c (finish_chill_function): Add missing call to
+       expand_end_bindings.
+
+Tue Jan  5 01:00:47 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
+
+       * Makefile.in: took out the rest of the runtime support
+
+Mon Jan  4 18:02:06 1993  Bill Cox  (bill@cygnus.com)
+
+       * ch-expr.c: make chill_expand_array_assignment not static.
+
+Mon Jan  4 17:57:48 1993  Per Bothner  (bothner@cygnus.com)
+
+       * ch-grant.c, ch-parse.y:  Remove all code for explicitly
+       calling initializer functions.  This is not needed, since we
+       use the same mechanism used for C++ static constructors.
+       * ch-grant.c (chill_start_module_code):  Make sure the
+       init_name starts with the magic string also used for C++
+       initializers.  Also, don't embed the file name in the name,
+       just use the module name.
+       * ch-grant.c (chill_finish_module_code):  Now that the
+       initializer name follows the standard 'collect' convention,
+       don't need to call assembler_constructor_alias, but can
+       use the standard assemble_constructor instead.
+       * varasm.c (assemble_constructor_alias):  Remove no-longer-
+       needed function.
+       * ch-parse.y:  Move code that is common to the beginning of
+       all functions to a new macro INIT_ACTION.
+       Make sure INIT_ACTION is also done for callaction, fixing a bug.
+       * ch-parse.y (INIT_ACTION):  Do chill_start_module_code()
+       before emit_line_note(), not after.
+
+Mon Jan  4 11:43:12 1993  Bill Cox  (bill@cygnus.com)
+
+       * ch-parse.y: restore requirement for :upper-bound in array decl.
+       * ch-actions.c: enhance upper, lower, length functions for VARYING.
+
+Mon Jan  4 09:28:44 1993  Bill Cox  (bill@cygnus.com)
+
+       * ch-actions.c: fix NOT of boolean expr.
+
+Mon Jan  4 08:42:57 1993  Bill Cox  (bill@cygnus.com)
+
+       * ch-actions.c: provide range-checking function
+       * ch-lex.l: better compiler-directive error messages,
+       allow underscores in exponents
+       * ch-loop.c: prevent passing NULL ptr to printf
+
+Sun Jan  3 11:57:13 1993  Bill Cox  (bill@cygnus.com)
+
+       * ch-typeck.c: correct & enable array index range-checking
+
+Sun Jan  3 11:36:39 1993  Bill Cox  (bill@cygnus.com)
+
+       * ch-parse.y: define IGNORED_DIRECTIVE
+       * ch-typeck.c: subtract array's lower domain value, even if
+       index expression is constant.
+
+Sat Jan  2 23:05:14 1993  Fred Fish  (fnf@cygnus.com)
+
+       * ch-lex.l (convert_float):  Fix misspelling in error message.
+
+Sat Jan  2 16:02:16 1993  Per Bothner  (bothner@rtl.cygnus.com)
+
+       * Makefile.in:  Took out chill-runtime support.
+       Chill run times are now in ../chillrt, not ./chillrt.p
+
+Sat Jan  2 15:04:13 1993  Bill Cox  (bill@cygnus.com)
+
+       * ch-hash.h, chill.gperf: cleanup.  fewer keywords seen by ch-parse.y.
+
+Sat Jan  2 13:27:49 1993  Per Bothner  (bothner@rtl.cygnus.com)
+
+       * ch-lex.l (check_newline):  Use the orginal versions (derived
+       from the C code, not the simplified, special-case version).
+       Also, fix that version of check_newline to not call yylex()
+       recursively.
+       * ch-lex.l (yy_input):  Call check_newline to handle
+       newlines and check for # directives.
+       * ch-lex.l (syntax):  Don't recognize #-directives; these
+       are now handled by check_newline.
+       * ch-actions.c (lang_init):  Call the modified version of
+       check_newline().  Do this at the *after* we've initialized
+       standard types, so this can be done while lineno is still 0.
+
+Sat Jan  2 10:57:20 1993  Bill Cox  (bill@cygnus.com)
+
+       * ch-hash.h, chill.gperf: add remaining reserved words.
+
+Sat Jan  2 09:59:55 1993  Bill Cox  (bill@cygnus.com)
+
+       * ch-tree.h, ch-parse.y, ch-lex.l: add remaining reserved words,
+       names for exceptions
+
+Fri Jan  1 12:30:31 1993  Fred Fish  (fnf@cygnus.com)
+
+       * ch-tree.h (JOINER):  Define joiner character the same way
+       C++ defines it.
+       * ch-grant.c (chill_start_module_code):  Use JOINER character
+       to implement name mangling for the initializer function name.
+       Algorithm is designed to be simple, distinct from C++ mangled
+       symbols, and easy to convert to demangled form.
+
+Thu Dec 31 10:30:51 1992  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-expr.c: make array assignments work with indirect refs.
+       * ch-actions.c: prepare for array parameter handling.
+       * ch-loop.c, ch-parse.y, ch-tree.def, ch-typeck.c: clean up.
+
+Thu Dec 31 15:29:20 1992  Per Bothner  (bothner@rtl.cygnus.com)
+
+       * ch-lex.l (yy_input):  Re-write to return more than one
+       character at a time (execpt when reading seize-files).
+       Don't increment lineno until we start reading the next line.
+       This fixes some off-by-one errors in lineno.
+
+Wed Dec 30 16:15:23 1992  Per Bothner  (bothner@rtl.cygnus.com)
+
+       * ch-convert.c:  Assume use of new common.c.
+       * ch-convert.c (convert_to_reference, convert_from_reference):
+       New routines, to handle loc-identity declared variables and
+       LOC parameters (both of which are implemented as references).
+       * ch-lang.c (convert_to_boolean, convert_to_char):  Move to
+       ch-convert.c, where they would seem to belong.
+       * ch-convert.c (convert):  New function, since we no longer
+       link in c-convert.c.
+       * ch-expr.c (chill_expand_assignment):  Handle by calling
+       convert() instead of chill_comptypes().
+       Also handle the LHS being a reference.
+       * ch-parse.y:  Add a procedure call as an action.
+       * ch-parse.y (locdec, optlocinit):  Move handling of
+       loc-identity declarations from optlocinit to locdec
+       - and add working semantics for it.
+       * ch-parse.y (seizestatement, visibilty_stmt):  Simplify.
+       * ch-parse.y (grantstatement etc):  Don't bother making list.
+       * ch-lex.l:  #include <sys/types.h> before <sys/stat.h>.
+
+Wed Dec 30 16:06:55 1992  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-parse.y, ch-expr.c: add support for declaring & assigning
+       VARYING arrays.
+        * ch-typeck.c: allow VARYING structures in assign_type_to_expr.
+
+Tue Dec 29 15:28:48 1992  Bill Cox  (bill@cygnus.com)
+
+       * ch-actions.c: implement expressions of arrays of char,
+        ( concatenation, relationals ), correct type of code parameters
+        * ch-expr.c: correct type of code parameters
+
+Tue Dec 29 11:16:19 1992  Bill Cox  (bill@cygnus.com)
+
+       * ch-decl.c: cleanup.
+        * ch-parse.y: put emit_line_note() calls in lotsa places,
+        per Fred's request; be sure that statements get counted also.
+        * ch-lex.l: standardize function headers.
+
+Tue Dec 29 10:41:56 1992  Fred Fish  (fnf@cygnus.com)
+
+       * ch-decl.c (start_chill_function):  Always return 1, rather
+       than a random value.
+       * ch-lex.l (check_newline):  Add a version for chill that
+       just snarfs the right value for main_input_filename out of
+       the first line of the input file, without disturbing the
+       lexer state or requiring it's assistance.
+       * ch-actions.c (lang_init):  Call check_newline, like the
+       other language frontends, to get main_input_filename set
+       from first line of input file.
+
+Mon Dec 28 18:49:01 1992  Bill Cox  (bill@cygnus.com)
+
+       * ch-parse.y: clean up conflicts.  The remaining one is
+       harmless.
+
+Mon Dec 28 17:28:40 1992  Bill Cox  (bill@cygnus.com)
+
+       * ch-parse.y, ch-lex.l, ch-actions.c: add stubs for I/O,
+       clean up some parser conflicts.
+
+Mon Dec 28 15:00:20 1992  Bill Cox  (bill@cygnus.com)
+
+       * ch-parse.y, ch-lex.l:  add keywords and parsing for most of
+       CHILL I/O
+
+Sat Dec 26 20:48:23 1992  Fred Fish  (fnf@cygnus.com)
+
+       * chillrt/chillrt0.c:  Oops, SVR4 doesn't need leading '_'
+       on build_exceptions.
+
+Sat Dec 26 11:00:36 1992  Fred Fish  (fnf@cygnus.com)
+
+       * ch-grant.c (chill_finish_module_code):  Call
+       assemble_constructor_alias rather than assemble_constructor.
+       * varasm.c (assemble_constructor_alias):  New function,
+       like assemble_constructor, but also handles the case where
+       ASM_OUTPUT_CONSTRUCTOR is not defined and GNU ld is not
+       being used.  Emits a symbol table alias name with the correct
+       prefix for collect to find and add to the __CTOR_LIST__.
+       * chillrt/chillrt0.c:  Build on previous hack that gets
+       _build_exceptions into the __CTOR_LIST__, to make it work
+       for both the non GNU-ld case and for the SVR4 case.
+
+Tue Dec 22 18:24:55 1992  Bill Cox  (bill@cygnus.com)
+
+       * ch-loop.c: clean up location enumeration - one more
+       pass to do.
+
+Tue Dec 22 16:31:48 1992  Bill Cox  (bill@cygnus.com)
+
+       * ch-loop.c: Working version of location enumeration loop
+
+Tue Dec 22 14:42:14 1992  Bill Cox  (bill@cygnus.com)
+
+       * ch-lex.l: readability cleanup
+
+Mon Dec 21 14:58:39 1992  Bill Cox  (bill@cygnus.com)
+
+       * ch-parse.y, c-decl.c: Add Jukka's Pascal WITH code.
+       ch-loop.c: rough draft of location enumeration
+       ch-lex.l, ch-expr.c, ch-decl.c: minor cleanup
+       ch-actions.c: finish making pred() and succ() work.
+
+Mon Dec 21 10:04:35 1992  Bill Cox  (bill@cygnus.com)
+
+       * ch-actions.c: allow pred(char) and succ(char).
+
+Sun Dec 20 16:04:28 1992  Bill Cox  (bill@cygnus.com)
+
+       * ch-expr.c, ch-actions.c, ch-parse.y, ch-loop.c,
+       c-expr.c: make DO WITH work.
+
+Sun Dec 20 12:22:53 1992  Bill Cox  (bill@cygnus.com)
+
+       * ch-loop.c, ch-actions.c, ch-typeck.c: powerset loops
+       now work
+
+Sat Dec 19 14:20:23 1992  Per Bothner  (bothner@cygnus.com)
+
+       * c-typeck.c (process_init_constructor):  Add warning if
+       there is a duplicate default initializer element.
+       * ch-typeck.c (chill_give_type_to_expr):  New function,
+       to handle coercion of an expression to context-given type,
+       Takes care of untyped tuples, and case expressions.
+       * ch-decl.c (do_decls), ch-typeck.c (chill_expand_return,
+       chill_expand_result), ch-parse.y <assignaction>:
+       Use chill_give_type_to_expr().
+       * ch-typeck.c (chill_handle_case_label):  New parameter list,
+       to handle the (new) conventions for <case_label>, including
+       default elements and ranges.
+       * ch-parse.y <expanded_case_label>, ch-typeck.c
+       (expand_case_expr):  Use new version of chill_handle_case_label.
+       * ch-decl.c (push_syndecls):  Change parameters:  Instead of
+       TREE_LIST representing a compete <synonym definition statement>,
+       just pass the parts of a single <synonym definition> as 3
+       different parameters.  Also, use chill_give_type_to_expr(),
+       to handle untyped tuples in the RHS.
+       * ch-parse.y <syndeclist, syndef>:  Don't bother trying to construct
+       a tree - just call push_syndecls() on each <synonum_definition>
+       as we see it.
+       * ch-parse.y (exprlist_get_single):  Remove; no longer needed.
+       * ch-parse.y:  Handle <tuple> without mode name diferently from
+       <tuple> with mode name.  The latter is a <primval> that can be
+       in most contexts, but if the <mode name> is missing, the <tuple>
+       is only allowed in certain contexts.  Use the new non-terminal
+       <untyped_expr> to indicate those contexts where untyped tuples
+       (and case expressions) are valid because the expression gets a
+       type from its context (such as the RHS of an assignment).
+       Use chill_give_type_to_expr in those contexts.
+
+Sat Dec 19 14:01:26 1992  Bill Cox  (bill@cygnus.com)
+
+       * ch-actions.c, ch-loop.c, Makefile.in: looping stuff.
+
+Sat Dec 19 10:16:20 1992  Bill Cox  (bill@cygnus.com)
+
+       * ch-parse.y: clean up warning messages from byacc.  bison
+       still complains thrice.
+
+Fri Dec 18 12:33:29 1992  Michael Tiemann  (tiemann@rtl.cygnus.com)
+
+       * ch-actions.c (maybe_chill_comptypes): Delete unused
+       function.
+       (chill_comptypes): Add new parameter ERRSTR.  All callers
+       changed.
+       (build_chill_binary_op): Fix indentation to match GNU coding
+       style.
+
+Fri Dec 18 08:18:13 1992  Bill Cox  (bill@rtl.cygnus.com)
+
+       * ch-parse.y, ch-expr.c, ch-actions.c, expr.c:  major
+       cleanup of expression and assignment handling.
+
+Thu Dec 17 10:16:32 1992  Bill Cox  (bill@cygnus.com)
+
+       * ch-parse.y: standardize indentation after c-parse.y
+
+Wed Dec 16 15:22:12 1992  Per Bothner  (bothner@cygnus.com)
+
+       * c-typeck.c (process_init_constructor):  Add support for
+       a default initializer element.
+       * ch-parse.y: Implement default elements for tuples
+       (as in '(else):' and '(*):' ).
+
+       * ch-parse.y:  Previous change to dis-ambiguate case-labels
+       seems to have allowed getting rid of all of the expr_or_list hair.
+       * ch-decl.c (do_decls): Undo Tiemann's change to "Handle
+       initialization of multiple variables by a tuple" - the
+       idea is bogus.
+
+Wed Dec 16 11:17:53 1992  Bill Cox  (bill@cygnus.com)
+
+       * ch-parse.y: complete re-write of DO statement handling.
+       now operational, except WITH is stubbed out.  Improved
+       syntax error message.
+       * ch-actions.c: DO support: high_domain_value(), low_domain_value ().
+       * ch-expr.c: fixes to IN_EXPR handling.
+
+Tue Dec 15 17:15:13 1992  Jim Wilson  (wilson@sphagnum.cygnus.com)
+
+       * ch-grant.c: Add casts to alloca return to avoid compiler warning.
+       * ch-lex.c: Likewise.
+
+       * Makefile.in (ch-lex.c): Delete incorrect free declaration added
+       by flex to avoid compiler error.
+
+Tue Dec 15 08:41:08 1992  Michael Tiemann  (tiemann@rtl.cygnus.com)
+
+       * ch-decl.c (do_decls): Handle initialization of multiple
+       variables by a tuple.
+
+       * ch-decl.c (do_decls,start_chill_function): Make DECL public
+       if we're doing a GRANT ALL at top level.
+
+       * ch-lang.c (build_range_type): Deal with typecast to CHAR in
+       range expression.
+
+       * c-typeck.c (digest_init): SET_TYPE is not a scalar type.
+       BOOLEAN_TYPE and CHAR_TYPE are scalar types.
+
+Mon Dec 14 14:58:32 1992  Michael Tiemann  (tiemann@rtl.cygnus.com)
+
+       * ch-lex.l (get_chill_{linenumber,filename}): New functions.
+       (convert_number): Use LONG_TYPE_NODE instead of INTEGER_TYPE_NODE.
+
+Mon Dec 14 13:36:44 1992  Bill Cox  (bill@cygnus.com)
+
+       * expr.c: install and test newer Pascal IN_EXPR code,
+       but don't activate it - it's very verbose.
+
+Mon Dec 14 00:22:49 1992  Fred Fish  (fnf@cygnus.com)
+
+       * Makefile.in (LANGUAGES):  Add chill.
+       * Makefile.in (CHILL_INSTALL_NAME, CHILL_CROSS_NAME):
+       New macros for chill native and cross installation names.
+       * Makefile.in (COMPILERS):  Add cc1chill.
+       * Makefile.in (CHILL_OBJS):  New macro, chill objects.
+       * Makefile.in (CHILL_TREE_H):  New macro, chill headers.
+       * Makefile.in (CHILL, chill, cc1chill, chill-runtime, libchill.a,
+       sublibchill.a, ch-parse.o, ch-parse.c ch-*.o, install-libchill,
+       install-librmt):  New targets.
+       * Makefile.in (install-native):  Add install-libchill, 
+       install-librmt.
+
+Sun Dec 13 15:21:06 1992  Bill Cox  (bill@cygnus.com)
+
+       * ch-actions.c, ch-expr.c: Fix the pop-count in library calls.
+
+Sun Dec 13 14:07:32 1992  Bill Cox  (bill@cygnus.com)
+
+       * ch-actions.c: fix unary operations, modulus ops,
+       (discovered after extending regression tests).
+
+Sun Dec 13 12:16:32 1992  Bill Cox  (bill@cygnus.com)
+
+       * resync with Michael and Wilfried
+
+Sun Dec 13 09:11:25 1992  Michael Tiemann  (tiemann@rtl.cygnus.com)
+
+       * ch-parse.y (output_constant): Fixed some whitespace
+       problems.
+       * ch-tree.h: Add declarations for new chill functions that
+       have been implemented but not (yet) declared.
+
+Sat Dec 12 00:17:23 1992  Per Bothner  (bothner@cygnus.com)
+
+       * c-typeck.c (process_init_constructor):  Warn about duplicate
+       labels for labelled initializer elements.
+       * ch-lex.l (various operator tokens, such as "+"):  Don't
+       set yylval.code to a TREE_CODE; this is better done in parser.
+       * ch-parse.y:  Some work with case labels and tuples.
+       Get literal range as tuple (and case) labels working.
+       Fix some problems introduced by recent grammar overhaul.
+
+Fri Dec 11 13:28:48 1992  Bill Cox  (bill@cygnus.com)
+
+       * ch-actions.c, ch-parse.y ch-tree.h ch-expr.c, ch-typeck.c:
+       got long, real expressions working.  We can also call a func-
+       tion and use its return value.
+
+Thu Dec 10 14:45:17 1992  Per Bothner  (bothner@cygnus.com)
+
+       * ch-parse.y:  Major change to remove or at least identify
+       parser ambiguities.  One result:  We now allow actions that
+       start with '(', as required by teh Blue Book.  This does break
+       some things; look for FIXME for things that need work.
+       * ch-typeck.c (chill_expand_case_expr):  We need an extra
+       level of looping to (in the future) support <case label
+       specification>s with more than one <case label list>.
+
+Thu Dec 10 09:21:41 1992  Bill Cox  (bill@cygnus.com)
+
+       * ch-actions.c, ch-expr.c: Implement string assignments
+       and relationals.
+
+Thu Dec 10 07:17:35 1992  Bill Cox  (bill@cygnus.com)
+
+       * ch-decl.c, ch-typeck.c: rest of previous commit.
+
+Wed Dec  9 18:26:29 1992  Bill Cox  (bill@cygnus.com)
+
+       * ch-parse.y, ch-actions.c, ch-expr.c: redo type checking.
+       regression test and fix bit arrays and set ops.
+
+Mon Dec  7 14:57:46 1992  Bill Cox  (bill@cygnus.com)
+
+       * ch-actions.c: implement crude relationals between
+       non-exotic operands, such as integers.
+
+Mon Dec  7 10:42:35 1992  Bill Cox  (bill@cygnus.com)
+
+       * ch-actions.c: implement relational, logic operations
+        on arrays of BOOLs.
+
+Mon Dec  7 08:55:20 1992  Michael Tiemann  (tiemann@rtl.cygnus.com)
+
+       * ch-actions.c (lang_init): Set LINENO to 1 at beginning to
+       indicate we are done with initialization.
+
+       * ch-decl.c (do_decls): Set TREE_PUBLIC if we are doing a
+       `grant all'.
+       (start_chill_function): Ditto.
+
+       * ch-lex.c (convert_bitstring): Set TREE_CONSTANT.
+       (compiler_directive): Don't confuse compiler directives with
+       equality comparison operators.
+
+       * ch-parse.y: Clear CURRENT_LOCNAMELIST after calling do_decls.
+
+Sun Dec  6 13:12:32 1992  Bill Cox  (bill@cygnus.com)
+
+       * ch-actions.c: repair set inequality code.
+
+Sun Dec  6 11:15:59 1992  Bill Cox  (bill@cygnus.com)
+
+       * ch-parse.y, ch-actions.c, ch-expr.c: Implement set-oriented
+        relational expressions, including (<, <=, =, /=, >, >=, IN).
+
+Fri Dec  4 13:54:58 1992  Brendan Kehoe  (brendan@lisa.cygnus.com)
+
+       * tree.def: Move CARD_EXPR and SET_LE_EXPR back down with the other
+       Pascal-required ones, since C++ no longer needs them.  When
+       Chill's public, a comment can be added to the effect that
+       SET_LE_EXPR is also used by Chill.
+
+Fri Dec  4 12:05:01 1992  Bill Cox  (bill@cygnus.com)
+
+       * Restore CARD_EXPR and SET_LE_EXPR to tree.def.
+
+Fri Dec  4 10:23:10 1992  Bill Cox  (bill@cygnus.com)
+       * Get *.def and *.c in sync.
+
+Fri Dec  4 06:48:41 1992  Fred Fish  (fnf@cygnus.com)
+
+       * ch-actions.c (lang_init):  Change types "long" and
+       "ulong" from 16 bits to 32.
+       * dwarfout.c (fundamental_type_code):  Use FT_signed_char
+       for type "byte" and FT_unsigned_char for type "ubyte".
+
+Thu Dec  3 15:13:24 1992  Bill Cox  (bill@cygnus.com)
+       * ch-actions.c, ch-tree.def, ch-parse.y:  preparation
+       for powerset expressions.
+
+Tue Dec  2 17:02:30 1992  Bill Cox  (bill@cygnus.com)
+       * ch-actions.c: sketch code for exceptions generated
+       by builtin routines.
+
+Tue Dec  2 12:49:50 1992  Bill Cox  (bill@cygnus.com)
+       * ch-actions.c, ch-parse.y: add support for lower()
+       upper() builtin functions.
+
+Wed Dec  2 12:03:30 1992  Fred Fish  (fnf@cygnus.com)
+
+       * Makefile.in (chillrt0.o, install-chillrt0):  Remove.
+       * chill (library):  Remove chillrt0.o.
+       * chillrt/Makefile:  Remove maintenance of chillrt0.o as a
+       separate file.  Now gets put in libchill.a.
+
+Tue Dec  2 10:100:20 1992  Bill Cox  (bill@cygnus.com)
+
+       * ch-parse.y, ch-actions.c: add support for num()
+       builtin function.
+
+Wed Dec  2 09:52:06 1992  Michael Tiemann  (tiemann@rtl.cygnus.com)
+
+       * ch-decl.c (fixup_unknown_type): New function.
+       (push_newmode,push_synmode): Call `fixup_unknown_type' when we
+       see a declaration that uses `unknown_type_node'.  FIXME.
+
+       * ch-grant.c (decode_constant): New function.
+       (decode_decl): Call `decode_constant' for CONST_DECLs.
+
+       * ch-lex.l (char action): Use ridpointers instead of
+       lookup_name to get "char"'s declaration.
+
+       * ch-parse.y: Call `build_lang_decl' instead of `build_decl'
+       when we need to build a TYPE_DECL.
+
+Tue Dec  2 09:44:05 1992  Bill Cox  (bill@cygnus.com)
+
+       * ch-typeck.c: clean up a gcc warning with a forward
+        declaration of build_string_type.
+
+Tue Dec  1 16:51:05 1992  Bill Cox  (bill@cygnus.com)
+
+       * ch-actions.c: completely remove those builtin calls
+       that are duplicated in c-decl.c
+
+Tue Dec  1 16:38:51 1992  Fred Fish  (fnf@cygnus.com)
+
+       * ch-actions.c (lang_init):  Ifdef out initializations for
+       __builtin_abs and __builtin_fabs, since they are duplicates of
+       initializations in c-decl.c, and trigger spurious warnings.
+
+Tue Dec  1 16:35:18 1992  Bill Cox  (bill@cygnus.com)
+
+       * ch-parse.y: make size() work with a typename argument.
+
+Tue Dec  1 16:15:56 1992  Bill Cox  (bill@cygnus.com)
+
+       * ch-parse.y, ch-lex.l, ch-actions.c: add builtin
+       functions min, max, card.
+
+Tue Dec  1 12:35:56 1992  Bill Cox  (bill@cygnus.com)
+
+       * ch-lex.l: fix char-type
+
+Tue Dec  1 11:10:56 1992  Bill Cox  (bill@cygnus.com)
+
+       * ch-parse.y, ch-actions: added parsing and processing 
+        for upper, lower, and length built-ins.
+
+Tue Dec  1 09:40:49 1992  Fred Fish  (fnf@cygnus.com)
+
+       * dwarf.h (LANG_CHILL):  Add as GNU extension.
+       * dwarfout.c (output_compile_unit_die):  Test language_string and
+       set LANG_CHILL if appropriate.
+       * ch-parse.y (language_string):  New for chill.
+       * chillrt:  Renamed directory chill to chillrt.
+       * chill:  Renamed chillsh to chill.
+       * Makefile.in:  Adjust for renamings.
+       * chillrt/Makefile:  Adjust for directory renaming.
+
+Mon Nov 30 17:35:33 1992  Fred Fish  (fnf@cygnus.com)
+
+       * chillsh:  New script frontend (ala g++), installed as "chill".
+       Can't be called "chill.sh" because make tries to cat it into the
+       "chill" directory.  Can't be called just "chill" cause that's
+       already there as a directory.
+       * Makefile.in:  Add rules to install chillsh as "chill".
+       * chill/libchill.c:  Temporarily ifdef out stuff that wants
+       to conflict with i486/SVR4 runtime or wants to pull in librmt.a,
+       which itself causes linkage to fail.
+
+Mon Nov 30 16:28:19 1992  Bill Cox  (bill@cygnus.com)
+
+       * ch-lex.l: added keywords for TRUNC, ROUND, FLOAT, LFLOAT
+       conversion routines.
+       * ch-parse.y: added %tokens for TRUNC, ROUND, FLOAT, LFLOAT.
+       Added production for SIZE(expr).
+       * ch-actions.c: Add semantic routine chill_sizeof ().
+
+Mon Nov 30 16:20:40 1992  Per Bothner  (bothner@cygnus.com)
+
+       * ch-lex.l, ch-parse.y:  Translate token PFEIL into English ARROW.
+       * ch-parse.y (op6):  Remove handling of string repetition operator,
+       until we can figure out a way to parse it correctly.
+       * ch-parse.y (optmodename):  New non-terminal.
+       * ch-parse.y (tuple):  Merge the two variants using optmodename.
+       * ch-parse.y (location):  Add semantic actions for
+       dereferencing operator ->.
+
+Mon Nov 30 08:01:29 1992  Bill Cox  (bill@cygnus.com)
+
+       * ch-actions.c: removed compile warning, better code for abs.
+
+       * ch-parse.y: add productions for builtin functions succ, pred,
+       abs, and size.  Add %tokens also.  Sort %tokens alphabetically.
+
+       * ch-lex.l: add parsing for builtin function names, such as abs,
+       pred, succ, etc.  Put flex -a option into Makefile.in, so we can
+       clean up the lexer soon.
+
+Tue Nov 24 14:18:48 1992  Per Bothner  (bothner@rtl.cygnus.com)
+
+       * ch-typeck.c (chill_handle_case_label, chill_handle_case_default):
+       New functions, for code common to CASE actions and expressions.
+       * chill.y:  Replace some code by calls to chill_handle_case_label
+       and chill_handle_case_default.
+       * ch-typeck.c (chill_expand_case_expr):  Add semantics.
+
+       * tree.c:  Change doing_chill_thang from extern to common.
+
+Mon Nov 23 18:34:22 1992  Per Bothner  (bothner@rtl.cygnus.com)
+
+       * ch-tree.def:  New CASE_EXPR type, for case expressions.
+       * ch-expr.c (chill_expand_expr):  Hook for CASE_EXPR.
+       * ch-typeck.c (chill_expand_case_expr):  New function.
+       Placeholder to implement case expressions.
+       * ch-typeck.c (chill_expand_result, chill_expand_return):
+       Handle mode-unspecified tuples and case expressions in
+       the context of RETURN and RESULT actions.
+       * chill.y (assignaction):  Handle case expressions in the
+       context of the RHS of an assignment action.
+       * chill.y (caseaction): Remove spurious duplicate OF in grammar.
+       * chill.y:  Handle labeled structure tuples.
+       * chill.y:  New rules to parse CASE expressions.
+       * tree.c (build_function_types):  Allow Chill functions
+       to return arrays and functions.
+
+Wed Nov 18 13:50:28 1992  Per Bothner  (bothner@rtl.cygnus.com)
+
+       * ch-typeck.c (chill_expand_tuple):  New function. Expand a
+       tuple (constructor) given an expected (context) type.
+       * chill.y:  Implement 'LHS := TUPLE' using expand_chill_tuple,
+       using the mode of the LHS and the expected type of the TUPLE.
+       * chill.y:  Implement initialization.
+       * chill.y:  Fix some syntax bugs (forbidlist must be surrounded
+       by parentheses), and remove or note ambiguities.
+       * chill.y:  Started converting layout style to be like c-parse.in.
+       * chill.y:  Implement IF expressions.
+       * chill.y:  Added syntax rules for tuples.  Labelled and unlabelled
+       array tuples should now work (in some contexts).
+       * ch-actions.c:  Initialize doing_chill_thang to 1.
+       * ch-decl.c (do_decls):  Set DECL_INITIAL if there is an
+       initializer, to make pushdecl and finish_decl work.
+       * c-decl.c (convert_for_assignment):  If Chill, don't convert
+       function and arrays into pointers.  (Maybe functions should
+       still be converted?)
+       * c-typeck.c (grokdeclarator):  Allow functions in Chill
+       to return arrays and functions.
+
+Mon Nov 16 15:40:47 1992  Per Bothner  (bothner@rtl.cygnus.com)
+
+       * chill.y (exprlist_get_single):  New function, used when
+       parsing tuples.
+       * chill.y:  Re-did parsing of tuples to remove ambiguities.
+       This was a bitch.
+
+Tue Nov 10 16:30:55 1992  Per Bothner  (bothner@rtl.cygnus.com)
+
+       * ch-typeck.c (chill_expand_result);  Set TREE_SIDE_EFEFCTS
+       flags on assignment to result.
+       * ch-typeck.c (build_chill_array_ref):  Subtract lower
+       bound of domain if non-zero.  Preliminary hook for range checking.
+       * ch-tree.h, chill.l:  Combine variables range_check and
+       range_check_disabled into global variable range_checking.
+       * ch-tree.h:  Better definitions of CH_CLASS_IS_VALUE
+       CH_CLASS_IS_DERIVED.
+
diff --git a/gcc/ch/chill.brochure b/gcc/ch/chill.brochure
new file mode 100644 (file)
index 0000000..44301ed
--- /dev/null
@@ -0,0 +1,252 @@
+              GNU CHILL: A Complete CHILL Implementation
+
+CHILL (the CCITT High Level Language) is a strongly-typed, block
+structured language designed primarily for the implementation of large
+and complex embedded systems.  Tens of millions of lines of CHILL code
+exist, and about 15,000 programmers world-wide use CHILL.  Many
+central-office telephone switching systems use CHILL for their control
+software.
+
+CHILL was designed to
+
+  - enhance reliability and run time efficiency by means of extensive
+    compile time checking;
+  - provide sufficient flexibility and power to encompass the required 
+    range of applications and to exploit a variety of hardware;
+  _ provide facilities that encourage piecewise and modular development
+    of large systems;
+  - cater to real-time implementations by providing built-in concurrency
+    and time supervision primitives;
+  - permit the generation of highly efficient object code;
+  - facilitate ease of use and a short learning curve.
+
+CHILL is specified in the "Blue Book":
+       CCITT High Level Language (CHILL) Recommendation Z.200
+       ISO/IEC 9496, Geneva 1989           ISBN 92-61-03801-8
+
+Cygnus Support has completed the first level implementation of the 
+GNU CHILL compiler.  Our compiler now supports the core features of
+the CHILL language.  Our goal is a fully retargetable, complete
+implementation of the Z.200 specification.  The next phase of
+implementation will include:
+
+       . a minimal real-time kernel for demonstration use
+       . more rigorous type checking
+       . retargetable input/output
+       . interprocess communications
+       . fully compliant exception handling.
+
+The State of the Implementation
+
+The GNU CHILL compiler is in early beta state, performing correct
+compilation and execution of correctly coded programs.  Like most
+CHILL compilers, the GNU compiler implements a large subset of the
+language (as described below).
+
+Since it uses the same compiler back-ends as the GNU C and C++
+compilers, GNU CHILL is almost instantly available on all
+platforms supported by GNU C, including the following:
+
+       m680xx, i960, i80x86, AMD29K, R3000, R4000, SPARClite,
+       Hitachi H8 and SH families, Z8001/2
+
+It has been specifically tested under SunOS on SPARCs and under
+SCO Unix on 80386s.
+
+All of the GCC optimizations apply to CHILL as well, including 
+function inlining, dead code elimination, jump-to-jump elimination, 
+cross-jumping (tail-merging), constant propagation, common 
+subexpression elimination, loop-invariant code motion, strength 
+reduction, loop unrolling, induction variable elimination, flow
+analysis (copy propagation, dead store elimination and elimination
+of unreachable code), dataflow-driven instruction scheduling, and
+many others.
+
+I/O statements are parsed. The anticipated timeframe for I/O code
+generation is Q1 1994.
+
+What's Next
+
+The multi-tasking functions require a small real time kernel.
+A free implementation of such a kernel is not yet available.
+We plan to offer a productized P-threads interface in Q2 1994.
+Other runtime functions involving strings and powersets are 
+working.
+
+GDB, the GNU Debugger, has been modified to provide simple CHILL
+support.  Some CHILL expressions are not yet recognized.
+\f
+For those who aren't familiar with CHILL, here's a small but
+useful example program:
+
+--
+-- Convert binary integers to decimal-coded ASCII string
+--
+vary1: MODULE
+
+  -- include declarations so we can output the test results
+  <> USE_SEIZE_FILE 'chprintf.grt' <>
+  SEIZE chprintf;
+
+  -- create a new name for the CHAR array mode
+  SYNMODE dec_string = CHAR (6) VARYING;
+
+  int_to_dec_char: PROC (decimal_num INT IN)
+                   RETURNS (dec_string);
+
+    DCL neg_num BOOL := FALSE;        -- save sign of parameter
+    DCL out_string dec_string;
+
+    IF decimal_num < 0 THEN           -- positive numbers are easier
+      decimal_num := -decimal_num;
+      neg_num := TRUE;
+    FI
+
+    IF decimal_num = 0 THEN
+      out_string := '0';                 /* handle zero */
+    ELSE
+      out_string := '';
+      DO WHILE decimal_num /= 0;         -- loop until number is zero
+       -- concatenate a new digit in front of the output string
+        out_string := CHAR (ABS (decimal_num REM D'10) + H'30) 
+                     // out_string;
+        decimal_num := decimal_num / D'10;
+      OD;
+      IF neg_num THEN
+       -- prepend a hyphen for numbers < zero
+        out_string := '-' // out_string;   -- restore sign
+      FI;
+    FI;
+    RESULT out_string;               -- remember result
+
+    decimal_num := 0;                -- reset for next call
+    neg_num := FALSE;
+    out_string := '      ';
+
+  END int_to_dec_char;
+
+  /* Try some test cases */
+  chprintf (int_to_dec_char (123456), 0);
+  chprintf ("^J", 0);
+
+  chprintf (int_to_dec_char (-654321), 0);
+  chprintf ("^J", 0);
+
+  chprintf (int_to_dec_char (0), 0);
+  chprintf ("^J", 0);
+
+END vary1;
+\f
+Completeness
+
+GNU CHILL currently supports the following features.  This outline
+generally follows the structure of the Blue Book specification:
+
+       CCITT High Level Language (CHILL) Recommendation Z.200
+       ISO/IEC 9496, Geneva 1989           ISBN 92-61-03801-8
+
+
+  Modes (types)
+       no DYNAMIC modes yet
+       discrete modes
+               integer, boolean, character, real
+               multiple integer/real precisions (an extension)
+       set modes, range modes
+       powersets
+       references
+         (no ROW modes)        
+       procedure modes
+       instance modes
+       event modes
+       buffer modes
+       (no input/output modes yet)
+       (no timing modes yet)
+       composite modes
+         strings
+         arrays
+         structures
+       VARYING string/array modes
+       (type-checking is not fully rigorous yet)
+       forward references
+
+  Expressions
+       literals
+       tuples
+       slices, ranges
+       the standard operators
+
+  Actions (statements)
+       assignments
+       if .. then .. else .. fi
+       cases
+       do action
+       do .. with
+       exits
+       calls
+       results/returns
+       gotos
+       assertions
+       cause exception
+       start/stop/continue process
+
+  Input/Output
+       (not yet)
+
+  Exception handling
+       fully compiled, but exceptions aren't
+       generated in all of the required situations
+
+  Time Supervision
+       (syntax only)
+
+  Inter-process communications
+       delay/delay case actions
+       send signal/receive case actions
+       send buffer/receive case actions
+
+  Multi-module programming
+       Seize/grant processing
+       multiple modules per source file
+
+
+Bibliography
+
+This list is included as an invitation.  We'd appreciate hearing 
+of CHILL-related documents (with ISBN if possible) which aren't
+described here.  We're particularly interested in getting copies
+of other conference Proceedings.
+
+       CCITT High Level Language (CHILL) Recommendation Z.200
+       ISO/IEC 9496, Geneva 1989                ISBN 92-61-03801-8
+       (The "blue book". The formal language definition; mostly a
+        language-lawyer's document, but more readable than most.)
+
+       Study Group X - Report R 34
+       This is the May 1992 revision of Z.200.
+
+       An Analytic Description of CHILL, the CCITT high-level
+       language, Branquart, Louis & Wodon, Springer-Verlag 1981
+                                                 ISBN 3-540-11196-4
+
+       CHILL User's Manual
+       CCITT, Geneva 1986                       ISBN 92-61-02601-X
+       (Most readable, but doesn't cover the whole language).  
+
+       Introduction to CHILL
+       CCITT, Geneva 1983                       ISBN 92-61-017771-1
+
+       CHILL CCITT High Level Language
+       Proceedings of the 5th CHILL Conference
+       North-Holland, 1991                      ISBN 0 444 88904 3
+
+       Introduction to the CHILL programming Language
+       TELEBRAS, Campinas, Brazil 1990
+
+       CHILL: A Self-Instruction Manual
+       Telecommunication Institute - PITTC
+       Available from KVATRO A/S, N-7005 Trondheim, Norway
+       Phone: +47 7 52 00 90
+       (Great discussion of novelty.)
+
+Some of these documents are available from Global Engineering
+Documents, in Irvine, CA, USA.  +1 714 261 1455.
diff --git a/gcc/ch/chill.texi b/gcc/ch/chill.texi
new file mode 100644 (file)
index 0000000..92d6891
--- /dev/null
@@ -0,0 +1,1231 @@
+@\input texinfo @c -*-texinfo-*-
+@setfilename chill.info
+@settitle Guide to GNU Chill
+
+
+@ifinfo
+@format
+START-INFO-DIR-ENTRY
+* Chill::                       Chill compiler
+END-INFO-DIR-ENTRY
+@end format
+@end ifinfo
+
+@titlepage
+@title GNU Chill
+@author William Cox, Per Bothner, Wilfried Moser
+@end titlepage
+
+@ifinfo
+@node Top
+@top
+
+@menu
+* Options::               Compiler options
+* Missing::               Unimplemented parts of the Chill language
+* Enhancements::          GNU-specific enhancements to the Chill language
+* Conversions::           Value and location conversions
+* Separate compilation::  Separate compilation
+* Differences::           Differences between GNUCHILL and Z.200/1988
+* Directives::            Implemented Compiler Directives
+* References::            Language definition references
+@end menu
+
+@end ifinfo
+
+@node Options
+@chapter Compiler options
+
+Invoking the compiler:
+
+The @sc{gnu} CHILL compiler supports several new command line options, and
+brings a new use to another:
+
+@table @code
+@item -lang-chill
+This option instructs gcc that the following file is a CHILL source file,
+even though its extension is not the default `.ch'.
+
+@item -flocal-loop-counter
+The CHILL compiler makes a separate reach, or scope,
+for each DO FOR loop.  If @code{-flocal-loop-counter} is
+specified, the loop counter of value enumeration and location
+enumeration is automatically declared inside that reach.
+This is the default behavior, required by Z.200.
+
+@item -fno-local-loop-counter
+When this option is specified, the above automatic declaration
+is not performed, and the user must declare all loop counters 
+explicitly.
+
+@item -fignore-case
+When this option is specified, the compiler ignores case. All 
+identifiers are converted to lower case. This enables the usage
+of C runtime libraries.
+
+@item -fno-ignore-case
+Ignoring the case of identifiers is turned off.
+
+@item -fruntime-checking
+The CHILL compiler normally generates code to check 
+the validity of expressions assigned to variables or
+expressions passed as parameters to procedures and processes,
+if those expressions cannot be checked at compile time.
+This is the default behavior, required by Z.200.
+This option allows you to re-enable the default behavior
+after disabling it with the @code{-fno-runtime-checking}
+option.
+
+@item -fno-runtime-checking
+The CHILL compiler normally generates code to check 
+the validity of expressions assigned to variables, or
+expressions passed as parameters to procedures and processes.
+This option allows you to disable that code generation.
+This might be done to reduce the size of a program's
+generated code, or to increase its speed of execution.
+Compile time range-checking is still performed.
+
+@item -fgrant-only
+@itemx -fchill-grant-only
+This option causes the compiler to stop successfully
+after creating the grant file specified by the source
+file (see modular programming in CHILL).  No code is
+generated, and many categories of errors are not reported.
+
+@item -fold-string
+Implement the semantics of Chill 1984 with respect to strings:
+String indexing yields a slice of length one;  CHAR is similar
+to CHAR(1) (or CHARS(1)); and BOOL is similar to BIT(1) (or BOOLS(1)).
+
+@item -fno-old-string
+Don't implement 1984 Chill string semantics.  This is the default.
+
+@item -I@var{seize_path}
+This directive adds the specified seize path to the compiler's
+list of paths to search for seize files.  When processing a 
+USE_SEIZE_FILE directive, the compiler normally searches for
+the specified seize file only in the current directory.  When
+one or more seize paths are specified, the compiler also 
+searches in those directories, in the order of their
+specification on the command line, for the seize file.
+
+@item -c
+This C-related switch, which normally prevents gcc from 
+attempting to link, is *not* yet implemented by the @code{chill} command,
+but you can use the @code{gcc} command with this flag.
+@end table
+
+@node Missing
+@chapter Implemented and missing parts of the Chill language
+
+The numbers in parentheses are Z.200(1988) section numbers.
+
+@itemize @bullet
+@item The FORBID keyword in a GRANT statement is currently ignored.
+
+@item A CASE action or expression allows only a single expression
+in a case selector list (5.3.2, 6.4).
+
+@item ROW modes are not implemented (3.6.3, 3.13.4).
+
+@item Due to the absence of ROW modes, DYNAMIC has no meaning in
+connection with access and text modes.
+
+@item Array and structure layout (PACK, POS, NOPACK, 
+STEP keywords) is ignored (3.12.6).
+
+@item Bit-string slices are not implemented.
+
+@item The support for synchronization modes and concurrent execution
+is slightly non-standard.
+
+@item Exception handling is implemented, but exceptions are not
+generated in all of the required situations.
+
+@item Dynamic modes are not implemented (though string slices should work).
+
+@item Reach-bound initializations are not implemented (4.1.2).
+
+@end itemize
+
+@node Enhancements
+@chapter GNU-specific enhancements to the Chill language
+
+@itemize @bullet
+@item Grantfiles.  See @xref{Separate compilation}.
+@item Precisions.  Multiple integer and real precisions are supported,
+as well as signed and unsigned variants of the integer modes.
+@item DESCR built-in. The new built-in function 
+DESCR ( <descriptor argument> ) returns a pointer to 
+STRUCT( addr PTR, length ULONG ) where <descriptor argument> can be
+anything the compiler can handle but at least a location of any mode
+(except synchronizing modes) and any character string or powerset value.
+(A temporary location within the current stack frame may be allocated
+if an expression is used.)
+
+CHILL does not permit the writing of procedures with parameters of
+any type. Yet some interfaces---in particular those to system 
+calls---require
+the handling of a wide range of modes, e.g. any string mode, any structure
+mode, or any powerset mode. This could be handled by specifying two
+parameters (PTR, INT for the length) but this is error-prone (no guarantee
+the same location is used after in ADDR and LENGTH), and it will not be
+possible for expressions.
+
+Caveats: This feature permits the programmer to obtain the address of
+a literal (if the compiler takes this shortcut---see 1st example below).
+If hardware features protect constant parts of the program, erronous
+abuse will be detected.
+
+    Examples:
+       OFFER_HANDLER( descr("dbs"), ->dbs);
+
+       SYNMODE m_els = SET( ela, elb, elc );
+       SYNMODE m_elsel = POWERSET m_els;
+       DCL user_buf STRUCT( a mx, b my, c mz);
+       DCL select POWERSET m_elsel;
+
+       select := m_elsel[LOWER(m_els) : UPPER(m_els)];
+
+       GET_RECORD( relation, recno, descr(user_buf), descr(select) );
+
+       PUT_RECORD( relation, recno, descr(user_buf.b), descr(m_elsel[elb]) );
+
+@item LENGTH built-in on left-hand-side.       The LENGTH built-in may be
+used on the left-hand-side of an assignment, where its argument is a VARYING
+character string.
+@end itemize
+
+@node Conversions
+@chapter Value and location conversions
+
+Value and location conversions are highly dependent on the target machine.
+They are also very loosely specified in the 1988 standard.
+(The 1992 standard seems an improvement.)
+
+The GNU Chill compiler interprets @code{@var{mode}(@var{exp})} as follows:
+
+@itemize @bullet
+@item
+If @var{exp} is a referable location,
+and the size of (the mode of) @var{exp} is the same as the size of @var{mode},
+a location conversion is used.
+It is implemented exactly as:  @code{(@var{refmode}(-> @var{exp}))->},
+where @var{refmode} is a synmode for @code{REF @var{mode}}.
+
+The programmer is responsible for making sure that alignment
+restrictions on machine addresses are not violated.
+
+If both @var{mode} and the mode of @var{exp} are discrete modes,
+alignment should not be a problem, and we get the same conversion
+as a standard value conversion.
+
+@item
+If @var{exp} is a constant,
+and the size of (the mode of) @var{exp} is the same as the size of @var{mode},
+then a value conversion is performed.  This conversion is done
+at compile time, and it has not been implemented for all types.
+Specifically, converting to or from a floating-point type is not implemented.
+
+@item
+If both @var{mode} and the mode of @var{exp} are discrete modes,
+then a value conversion is performed, as described in Z.200.
+
+@item
+If both @var{mode} and the mode of @var{exp} are reference modes,
+then a value conversion is allowed.
+The same is true is one mode is a reference mode, and the other
+is an integral mode of the same size.
+
+@end itemize
+
+@node Separate compilation
+@chapter Separate compilation
+
+The GNU CHILL compiler supports modular programming.  It
+allows the user to control the visibility of variables
+and modes, outside of a MODULE, by the use of GRANT
+and SEIZE directives.  Any location or mode may be made
+visible to another MODULE by GRANTing it in the MODULE
+where it is defined, and SEIZEing it in another MODULE
+which needs to refer to it.
+
+When variables are GRANTed in one or more modules of a
+CHILL source file, the compiler outputs a grant file,
+with the original source file name as the base name,
+and the extension `.grt'.  All of the variables and modes
+defined in the source file are written to the grant file,
+together with any use_seize_file directives, and the
+GRANT directives.  A grant file is created for every such
+source file, except if an identical grant file already 
+exists.  This prevents unnecessary makefile activity.
+
+The referencing source file must:
+
+@enumerate
+@item specify the grant file in a use_seize_file directive, and
+@item SEIZE each variable or mode definition that it needs.
+@end enumerate
+
+An attempt to SEIZE a variable or mode which is not
+GRANTed in some seize file is an error.
+
+An attempt to refer to a variable which is defined in
+some seize file, but not explicitly granted, is an
+error.
+
+An attempt to GRANT a variable or mode which is not
+defined in the current MODULE is an error.
+
+Note that the GNU CHILL compiler will *not* write out a
+grant file if:
+
+@itemize @bullet
+@item there are no GRANT directives in the source file, or
+@item the entire grant file already exists, and is
+     identical to the file which the compiler has just built.
+(This latter ``feature'' may be removed at some point.)
+@end itemize
+
+Otherwise, a grant file is an automatic, unsuppressable
+result of a successful CHILL compilation.
+
+A future release will also support using remote spec modules
+in a similar (but more Blue Book-conforming) manner.
+
+@node Differences
+@chapter Differences to Z.200/1988
+
+This chapter lists the differences and extensions between GNUCHILL 
+and the CCITT recommendation Z.200 in its 1988 version (reffered to
+as Z.200/1988).
+
+@itemize @bullet
+
+@item 2.2 Vocabulary@*
+The definition of @i{<simple name string>} is changed to:
+
+@example
+@i{<simple name string> ::=}
+@example
+@i{@{<letter> | _ @} @{ <letter> | <digit | _ @}}
+@end example
+@end example
+
+@item 2.6 Compiler Directives@*
+Only one directive is allowed between the compiler directive delimiters
+`<>' and `<>' or the end-of-line, i.e.
+@example
+<> USE_SEIZE_FILE "foo.grt" <>
+<> ALL_STATIC_OFF
+@end example
+
+@item 3.3 Modes and Classes@*
+The syntax of @i{<mode>} is changed to:
+
+@example
+@i{<mode> ::=}
+@example
+  [@b{READ}] @i{<non-composite-mode>}
+| [@b{READ}] @i{composite-mode>}
+@end example
+
+@i{<non-composite-mode> ::=}
+@example
+  @i{<discrete mode>}
+| @i{<real modes>}
+| @i{<powerset modes>}
+| @i{<reference mode>}
+| @i{<procedure mode>}
+| @i{<instance mode>}
+| @i{<synchronization mode>}
+| @i{<timing mode>}
+@end example
+@end example
+
+@item 3.4 Discrete Modes@*
+The list of discrete modes is enhanced by the following modes:
+
+@example
+BYTE         8-bit signed integer
+UBYTE        8-bit unsigned integer
+UINT         16-bit unsigned integer
+LONG         32-bit signed integer
+ULONG        32-bit unsigned integer
+@end example
+
+@strong{Please note} that INT is implemented as 16-bit signed integer.
+
+@item 3.4.6 Range Modes@*
+The mode BIN(n) is not implemented. Using INT(0 : 2 ** n - 1) instead of
+BIN(n) makes this mode unneccessary.
+
+@item 3.X Real Modes@*
+Note: This is an extension to Z.200/1988, however, it is defined in
+Z.200/1992.
+
+@b{syntax:}
+
+@example
+@i{<real mode> ::=}
+@example
+@i{<floating point mode>}
+@end example
+@end example
+
+@b{semantics:}
+
+@example
+A real mode specifies a set of numerical values which approximate a
+contiguous range of real numbers.
+@end example
+
+@item 3.X.1 Floating point modes@*
+
+@b{syntax:}
+
+@example
+@i{<floating point mode> ::=}
+@example
+@i{<floating point mode name}
+@end example
+@end example
+
+@b{predefined names:}
+
+The names @i{REAL} and @i{LONG_REAL} are predefined as @b{floating
+point mode} names.
+
+@b{semantics:}
+
+A floating point mode defines a set of numeric approximations to a 
+range of real values, together with their minimum relative accuracy, 
+between implementation defined bounds, over which the usual ordering 
+and arithmetic operations are defined. This set contains only the 
+values which can be represented by the implementation.
+
+@b{examples:}
+
+@example
+@i{REAL}
+@i{LONG_REAL}
+@end example
+
+@item 3.6 Reference Modes@*
+Row modes are not implemeted at all.
+
+@item 3.7 Procedure Mode@*
+The syntax for procedure modes is changed to:
+
+@example
+@i{<procedure mode> ::=}
+@example
+  @b{PROC} @i{([<parameter list>]) [ <result spec> ]}
+  @i{[}@b{EXCEPTIONS}@i{(<exception list>)] [}@b{RECURSIVE}@i{]}
+| @i{<procedure mode name>}
+@end example
+
+@i{<parameter list> ::=}
+@example
+@i{<parameter spec> @{, <parameter spec> @} *}
+@end example
+
+@i{<parameter spec> ::=}
+@example
+@i{<mode> [ <parameter attribute> ]}
+@end example
+
+@i{<parameter attribute> ::=}
+@example
+@b{IN} | @b{OUT} | @b{INOUT} | @b{LOC}
+@end example
+
+@i{<result spec> ::=}
+@example
+@b{RETURNS} @i{( <mode> [}@b{LOC}@i{])}
+@end example
+
+@i{<exception list> ::=}
+@example
+@i{<exception name> @{, <exception name> @} *}
+@end example
+@end example
+
+
+@item 3.10 Input-Output Modes@*
+Due to the absence of row modes, DYNAMIC has no meaning in an access
+or text mode definition.
+
+
+@item 3.12.2 String Modes@*
+As @i{<string modes>} were defined differently in Z.200/1984, the syntax
+of @i{<string mode>} is changed to:
+
+@example
+@i{<string mode> ::=}
+@example
+  @i{<string type> ( <string length> ) [} @b{VARYING} @i{]}
+| @i{<parametrized string mode>}
+| @i{<string mode name>}
+@end example
+
+@i{<parameterized string mode> ::=}
+@example
+  @i{<origin string mode name> ( <string length> )}
+| @i{<parameterized string mode name>}
+@end example
+
+@i{<origin string mode name> ::=}
+@example
+@i{<string mode name>}
+@end example
+
+@i{string type}
+@example
+  @b{BOOLS}
+| @b{BIT}
+| @b{CHARS}
+| @b{CHAR}
+@end example
+
+@i{<string length> ::=}
+@example
+@i{<integer literal expression>}
+@end example
+@end example
+
+@b{VARYING} is not implemented for @i{<string type>} @b{BIT}
+and @b{BOOL}.
+
+@item 3.11.1 Duration Modes@*
+The predefined mode @i{DURATION} is implemented as a NEWMODE ULONG and
+holds the duration value in miliseconds. This gives a maximum duration
+of
+
+@example
+MILLISECS (UPPER (ULONG)),
+SECS (4294967),
+MINUTES (71582),
+HOURS (1193), and
+DAYS (49).
+@end example
+
+@item 3.11.2 Absolute Time Modes@*
+The predefined mode @i{TIME} is implemented as a NEWMODE ULONG and
+holds the absolute time in seconds since Jan. 1st, 1970. This is
+equivalent to the mode `time_t' defined on different systems.
+
+@item 3.12.4 Structure Modes@*
+Variant fields are allowed, but the CASE-construct may define only one
+tag field (one dimensional CASE). OF course, several variant fields may
+be specified in one STRUCT mode. The tag field will (both at compile-
+and runtime) not be interpreted in any way, however, it must be
+interpreted by a debugger. As a consequence, there are no parameterized 
+STRUCT modes.
+
+@item 3.12.5 Layout description for array and structure modes@*
+STEP and POS is not implemeted at all, therefore the syntax of
+@i{<element layout} and @i{field layout} is changed to:
+
+@example
+@i{<element layout> ::=}
+@example
+@b{PACK} | @b{NOPACK}
+@end example
+
+@i{<field layout> ::=}
+@example
+@b{PACK} | @b{NOPACK}
+@end example
+@end example
+
+@item 3.13.4 Dynamic parameterised structure modes@*
+Dynamic parameterised structure modes are not implemented.
+
+@item 4.1.2 Location declaration@*
+The keyword STATIC is allowed, but has no effect at module level, because
+all locations declared there are assumed to be `static' by default. Each
+granted location will become `public'. A `static' declaration inside a
+block, procedure, etc. places the variable in the data section instead of
+the stack section.
+
+@item 4.1.4 Based decleration@*
+The based declaration was taken from Z.200/1984 and has the following
+syntax:
+
+@b{syntax:}
+
+@example
+@i{<based declaration> ::=}
+@example
+@i{<defining occerrence list> <mode>} @b{BASED}
+@i{( <free reference location name> )}
+@end example
+@end example
+
+@b{semantics:}
+
+A based declaration with @i{<free reference location name>} specifies
+as many access names as are defining occerrences in the @i{defining
+occurrence list}. Names declared in a base declaration serve as an
+alternative way accessing a location by dereferencing a reference 
+value. This reference value is contained in the location specified by 
+the @i{free reference location name}. This dereferencing operation is 
+made each time and only when an access is made via a declared @b{based} 
+name.
+
+@b{static properties:}
+
+A defining occurrence in a @i{based declaration} with @i{free reference
+location name} defines a @b{based} name. The mode attached to a
+@b{based} name is the @i{mode} specified in the @i{based declaration}. A
+@b{based} name is @b{referable}.
+
+@item 4.2.2 Access names@*
+The syntax of access names is changed to:
+
+@example
+@i{<access name> ::=}
+@example
+  @i{<location name>}
+| @i{<loc-identity name>}
+| @i{<based name>}
+| @i{<location enumeration name>}
+| @i{<location do-with name>}
+@end example
+@end example
+
+The semantics, static properties and dynamic conditions remain
+unchanged except that they are enhanced by @i{base name}.
+
+@item 5.2.4.1 Literals General@*
+The syntax of @i{<literal>} is change to:
+
+@example
+@i{<literal> ::=}
+@example
+  @i{<integer literal>}
+| @i{<boolean literal>}
+| @i{<charater literal>}
+| @i{<set literal>}
+| @i{<emptiness literal>}
+| @i{<character string literal>}
+| @i{<bit string literal>}
+| @i{<floating point literal>}
+@end example
+@end example
+
+Note: The @i{<floating point literal>} is an extension to Z.200/1988 and
+will be described later on.
+
+@item 5.2.4.2 Integer literals@*
+The @i{<decimal integer literal>} is changed to:
+
+@example
+@i{<decimal integer literal> ::=}
+@example
+  @i{@{ D | d @} ' @{ <digit> | _ @} +}
+| @i{<digit> @{ <digit> | _ @} *}
+@end example
+@end example
+
+@item 5.2.4.4 Character literals@*
+A character literal, e.g. 'M', may serve as a charater string literal of
+length 1.
+
+@item 5.2.4.7 Character string literals@*
+The syntax of a character string literal is:
+
+@example
+@i{<character string literal> ::=}
+@example
+  @i{'@{ <non-reserved character> | <single quote> |}
+  @i{<control sequence> @} * '}
+| @i{'@{ <non-reserved character> | <double quote> |}
+  @i{<control sequence> @} * '}
+@end example
+
+@i{<single quote> ::=}
+@example
+@i{''}
+@end example
+
+@i{<double quote> ::=}
+@example
+@i{""}
+@end example
+@end example
+
+A character string litaral of length 1, enclosed in apostrophes
+(e.g. 'M') may also serve as a charater literal.
+
+@item 5.2.4.9 Floating point literal@*
+Note: This is an extension to Z.200/1988 ans was taken from Z.200/1992.
+
+@b{syntax:}
+
+@example
+@i{<floating point literal> ::=}
+@example
+  @i{<unsigned floating point literal>}
+| @i{<signed floating point literal>}
+@end example
+
+@i{<unsigned floating point literal> ::=}
+@example
+  @i{<digit sequence> . [ <digit sequence> ] [ <exponent> ]}
+| @i{[ <digit sequence> ] . <digit sequence> [ <exponent> ]}
+@end example
+
+@i{<signed floating point literal> ::=}
+@example
+@i{- <unsigned floating point literal>}
+@end example
+
+@i{<digit sequence> ::=}
+@example
+@i{<digit> @{ <digit> | _ @} *}
+@end example
+
+@i{<exponent> ::=}
+@example
+  @i{[ E | D | e | d ] <digit sequence>}
+| @i{[ E | D | e | d ] - <digit sequence>}
+@end example
+@end example
+
+@item 5.2.14 Start Expression@*
+The START expression is not implemented.
+
+@item 5.3 Values and Expressions@*
+The undefined value, denoted by `*', is not implemented.
+
+@item 5.3.8 Operand-5@*
+The @i{<string repetition operator>} is defined as:
+
+@example
+@i{<string repetition operator> ::=}
+@example
+@i{(<integer expression>)}
+@end example
+@end example
+
+@item 6.4 Case Action@*
+There may be only one case selector specified. The optional range list
+must not be specified.
+
+@item 6.5 Do Action@*
+A Do-Action without control part is not implemented. Grouping of
+statements can be achieved via BEGIN and END. A location enumeration is not
+allowed for BIT strings, only for (varying) CHAR strings and ARRAYs.
+
+The expression list in a DO WITH must consist of locations only.
+
+@item 6.13 Start Action@*
+The syntax of the START action is changed to:
+
+@example
+@i{<start action> ::=}
+@example
+@b{START} @i{<process name> (<copy number> [, <actual parameter list>])}
+@i{[} @b{SET} @i{<instance location> ]}
+@end example
+
+@i{<copy number> ::=}
+@example
+@i{<integer expression>}
+@end example
+@end example
+
+@item 6.16 Delay Action@*
+The optional PRIORITY specification need not be a constant.
+
+@item 6.17 Delay Case Action@*
+The optional SET branch and the, also optional, PRIORITY branch must be
+seperated by `;'.
+
+@item 6.18 Send Action@*
+The send action must define a destination instance (via the TO branch),
+since undirected signals are not supported. The optional PRIORITY
+specification need not be a constant. Additional to the data
+transported by the signal, there will be a user defined argument.
+
+The syntax of the @i{<send signal action>} is therefore:
+
+@example
+@i{<send signal action> ::=}
+@example
+@b{SEND} @i{<signal name> [ ( <value> @{, <value> @} * ) ]}
+@i{[} @b{WITH} @i{<expression> ]}
+@b{TO} @i{<instance primitive value> [ <priority> ]}
+@end example
+@end example
+
+The default priority can be specified by the compiler directive
+SEND_SIGNAL_DEFAULT_PRIORITY. If this also is omitted, the default
+priority is 0.
+
+@item 6.20.3 CHILL value built-in calls@*
+The CHILL value buit-in calls are enhanced by some calls, and other calls
+will have different arguments as described in Z.200/1988. Any call not
+mentioned here is the same as described in Z.200/1988.
+
+@b{syntax:}
+
+@example
+@i{CHILL value built-in routine call> ::=}
+@example
+  @i{ADDR (<location>)}
+| @i{PRED (<pred succ argument>)}
+| @i{SUCC (<pred succ argument>)}
+| @i{ABS (<numeric expression>)}
+| @i{LENGTH (<length argument>)}
+| @i{SIN (<floating point expression>)}
+| @i{COS (<floating point expression>)}
+| @i{TAN (<floating point expression>)}
+| @i{ARCSIN (<floating point expression>)}
+| @i{ARCCOS (<floating point expression>)}
+| @i{ARCTAN (<floating point expression>)}
+| @i{EXP (<floating point expression>)}
+| @i{LN (<floating point expression>)}
+| @i{LOG (<floating point expression>)}
+| @i{SQRT (<floating point expression>)}
+| @i{QUEUE_LENGTH (<buffer location> | <event location>)}
+| @i{GEN_INST (<integer expression> | <process name> ,}
+               @i{<integer expression>)}
+| @i{COPY_NUMBER (<instance expression>)}
+| @i{GEN_PTYE (<process name>)}
+| @i{PROC_TYPE (<instance expression>)}
+| @i{GEN_CODE (<process name> | <signal name>)}
+| @i{DESCR (<location>)}
+@end example
+
+@i{<pred succ argument> ::=}
+@example
+  @i{<discrete expression>}
+| @i{<bound reference expression>}
+@end example
+
+@i{<numeric expression> ::=}
+@example
+  @i{<integer expression>}
+| @i{floating point expression>}
+@end example
+
+@i{<length argument> ::=}
+@example
+  @i{<string location>}
+| @i{<string expression>}
+| @i{<string mode name>}
+| @i{<event location>}
+| @i{<event mode name>}
+| @i{<buffer location>}
+| @i{<buffer mode name>}
+| @i{<text location>}
+| @i{<text mode name>}
+@end example
+@end example
+
+@b{semantics:}
+
+@i{ADDR} is derived syntax for -> @i{<location>}.
+
+@i{PRED} and @i{SUCC} delivers respectively, in case of a @i{discrete
+expression}, the next lower or higher discrete value of their argument,
+in case of @i{bound reference expression} these built-in calls deliver a
+pointer to the previous or next element.
+
+@i{ABS} is defined on numeric values, i.e. integer values and floating
+point values, delivering the corresponding absolute value.
+
+@i{LENGTH} is defined on
+
+@itemize @bullet
+
+@item string and text locations and string expressions, delivering the
+length of them;
+
+@item event locations, delivering the @b{event length} of the mode of the
+location;
+
+@item buffer locations, delivering the @b{buffer length} of the mode of
+the location;
+
+@item string mode names, delivering the @b{string length} of the mode;
+
+@item text mode names, delivering the @b{text length} of the mode;
+
+@item buffer mode names, delivering the @b{buffer length} of the mode;
+
+@item event mode names, delivering the @b{event length} of the mode;
+
+@item Additionally, @i{LENGTH} also may be used on the left hand
+side of an assignment to set a new length of a @i{varying character
+string location}. However, to avoid undefined elements in the varying
+string, the new length may only be less or equal to the current length.
+Otherwise a @b{RANGEFAIL} exception will be generated.
+@end itemize
+
+@i{SIN} delivers the sine of its argument (interpreted in radians).
+
+@i{COS} delivers the cosine of its argument (interpreted in radians).
+
+@i{TAN} delivers the tangent of its argument (interpreted in radians).
+
+@i{ARCSIN} delivers the sin -1 function of its argument.
+
+@i{ARCCOS} delivers the cos -1 function of its argument.
+
+@i{ARCTAN} delivers the tan -1 function of its argument.
+
+@i{EXP} delivers the exponential function, where x is the argument.
+
+@i{LN} delivers the natural logarithm of its argument.
+
+@i{LOG} delivers the base 10 logarithm of its argument.
+
+@i{SQRT} delivers the sqare root of its argument.
+
+@i{QUEUE_LENGTH} delivers either the number of sending delayed processes
+plus the number of messages in a buffer queue (if the argument is a
+@i{buffer location}), or the number of delayed processes (if the
+argument specifies an @i{event location}) as @i{integer expression}.
+
+@i{GEN_INST} delivers an @i{instance expression} constructed from the
+arguments. Both arguments must have the @i{&INT}-derived class.
+
+@i{COPY_NUMBER} delivers as @i{&INT}-derived class the copy number of an
+@i{instance location}.
+
+@i{GEN_PTYPE} delivers as @i{&INT}-derived class the associated number
+of the @i{process name}.
+
+@i{PROC_TYPE} delivers as @i{&INT}-derived class the process type of an
+@i{instance expression}.
+
+@i{GEN_CODE} delivers as @i{&INT}-derived class the associated number of
+the @i{process name} or @i{signal name}.
+
+@i{DESCR} delivers a @i{free reference expression} pointing to a
+structure with the following layout describing the @i{location} argument.
+
+@example
+SYNMODE __tmp_descr = STRUCT (p PTR, l ULONG);
+@end example
+
+
+@item 7.4.2 Associating an outside world object@*
+The syntax of the associate built-in routine call is defined as:
+
+@example
+@i{<associate built-in routine call> ::=}
+@example
+@i{ASSOCIATE ( <association location>, <string expression>,} [@i{, <string expression>} ] @i{)}
+@end example
+@end example
+
+The ASSOCIATE call has two parameters besides the association location:
+a pathname and an optional mode string.
+
+The value of the first string expression must be a pathname according to
+the rules of the underlying operating system. (Note that a relative pathname 
+implies a name relative to the working directory of the process.)
+
+The mode string may contain the value "VARIABLE", which requests
+an external representation of records consisting of an UINT record
+length followed by as many bytes of data as indicated by the length field.
+Such a file with variable records is not indexable.
+
+A file with variable records can be written using any record mode. If the 
+record mode is CHARS(n) VARYING, the record length is equal to the actual 
+length of the value written.  (Different record may have differing lengths.)
+With all other record modes, all records written using the same access mode
+will have the same length, but will still be prefixed with the length field.
+(Note that by re-connecting with different access modes, the external
+representation may ultimately contain records with differing lengths.)
+
+A file with variable records can only be read by using a record mode of
+CHARS(n) VARYING.
+
+
+@item 7.4.2 Accessing association attributes@*
+The value of the READABLE and WRITEABLE attributes is determined using 
+the file status call provided by the operating system.  The result will
+depend on the device being accessed, or on the file mode.
+
+The INDEXABLE attribute has the value false for files with variable records,
+and for files associated with devices not supporting random positioning
+(character devices, FIFO special files, etc.).
+
+The variable attribute is true for files associated with the mode sting
+"VARIABLE", and false otherwise.
+
+
+@item 7.4.5 Modifying association attributes@*
+The syntax of the MODIFY built-in routine call is defined as:
+
+@example
+@i{<modify built-in call> ::=}
+@example
+@i{MODIFY ( <association location>, <string expression> )}
+@end example
+@end example
+
+At present, MODIFY accepts a character string containing a pathname
+in addition to the association location, which will cause a renaming 
+of the associated file.
+
+
+@item 7.4.9 Data transfer operations@*
+READRECORD will fail (causing READFAIL) if the number of bytes from the
+current position in the file to the end of the file is greater than zero
+but less than the size of the record mode, and no data will be transferred.
+(If the number of bytes is zero, no error occurs and OUTOFFILE will
+return TRUE.)
+
+The number of bytes transferred by READRECORD and WRITERECORD is equal to
+the size of the record mode of the access location. Note that the
+internal representation of this mode may vary depending on the
+record mode being packed or not.
+
+
+@item 7.5 Text Input Output@*
+Sequential text files will be represented so as to be compatible
+with the standard representation of texts on the underlying operating
+system, where control characters are used to delimit text records on files
+as well as to control the movement of a cursor or printing head on a device.
+
+For indexed text files, records of a uniform length (i.e. the size of the
+text record, including the length field) are written.  All i/o codes cause 
+an i/o transfer without any carriage control  characters being added to the
+record, which will be expanded with spaces.
+
+An indexed text file is therefore not compatible with the standard
+text representation of the underlying operating system. 
+
+
+
+@item 7.5.3 Text transfer operations@*
+The syntax of @i{<text argument>} is changed to:
+
+@example
+@i{<text argument> ::=}
+@example
+  @i{<text location>}
+| @i{<predefined text location>}
+| @i{<varying string location>}
+@end example
+
+@i{<predefined text location> ::=}
+@example
+  STDIN
+| STDOUT
+| STDERR
+@end example
+@end example
+
+NOTE: The identifiers STDIN, STDOUT, and STDERR are predefined.
+Association and connection with files or devices is done according to
+operating system rules.
+
+The effect of using READTEXT or WRITETEXT with a character string location
+as a text argument (i.e. the first parameter) where the same location also
+appears in the i/o list is undefined.
+
+The current implementation of formatting assumes run-to-completion semantics
+of CHILL tasks within an image.
+
+
+
+@item 7.5.5 Conversion@*
+Due to the implementation of @i{<floating point modes>} the syntax
+is changed to:
+
+@example
+@i{<conversion clause> ::=}
+@example
+@i{<conversion code> @{ <conversion qualifier @} *}
+@i{[ <clause width> ]}
+@end example
+
+@i{<conversion code> ::=}
+@example
+@i{B} | @i{O} | @i{H} | @i{C} | @i{F}
+@end example
+
+@i{<conversion qualifier> ::=}
+@example
+@i{L} | @i{E} | @i{P<character>}
+@end example
+
+@i{<clause width> ::=}
+@example
+  @i{@{ <digit> @} +} | @i{V}
+| @i{<real clause width>}
+@end example
+
+@i{<real clause width> ::=}
+@example
+@i{@{ @{ <digit> + | V @} : @{ @{ <digit> @} + | V @}}
+@end example
+@end example
+
+Note: The @i{<real clause width>} is only valid for @i{<conversion
+code>} `C' or `F'.
+
+
+@item 7.5.7 I/O control@*
+To achieve compatibility of text files written with CHILL i/o with
+the standard representation of text on the underlying operating system
+the interpretation of the i/o control clause of the format 
+deviates from Z.200. The following table shows the i/o codes together
+with the control characters written before and after the text record, 
+to achieve the indicated function:
+@table @samp
+@item /
+Write next record (record, line feed)
+
+@item +
+Write record on next page (form feed, record, line feed)
+
+@item -
+Write record on current line (record, carriage return)
+
+@item ?
+Write record as a prompt (carriage return, record)
+
+@item !
+Emit record (record).
+
+@item =
+Force new page for the next line: The control character written before
+the next record will be form feed, irrespective of the i/o control used for
+transferring the record.
+@end table
+
+When reading a text file containing control characters other than line feed,
+these characters have to be reckoned with by the format used to read the
+text records.
+
+
+
+
+@item 11.2.2 Regionality@*
+Regionality is not implemented at all, so there is no difference in the
+generated code when REGION is substituted by MODULE in a GNUCHILL
+compilation unit.
+
+@item 11.5 Signal definition statement@*
+The @i{<signal definition statement>} may only occur at module level.
+
+@item 12.3 Case Selection@*
+The syntax of @i{<case label specification>} is changed to:
+
+@example
+@i{<case label specification> ::=}
+@example
+@i{( <case label> @{, <case label> @} * )}
+@end example
+
+@i{<case label> ::=}
+@example
+  @i{<discrete literal expression>}
+| @i{<literal range>}
+| @i{<discrete mode name>}
+| @b{ELSE}
+@end example
+@end example
+
+@end itemize
+
+@node Directives
+@chapter Compiler Directives
+
+@itemize @bullet
+
+@item ALL_STATIC_ON, ALL_STATIC_OFF@*
+These directives control where procedure local variables are
+allocated. ALL_STATIC_ON turns allocation of procedure local variables
+in the data space ON, regardless of the keyword STATIC being used or not.
+ALL_STATIC_OFF places procedure local variables in the stack space.
+The default is ALL_STATIC_OFF.
+
+@item RANGE_ON, RANGE_OFF@*
+Turns generation of rangecheck code ON and OFF.
+
+@item USE_SEIZE_FILE <character string literal>@*
+Specify the filename (as a character string literal) where 
+subsequent SEIZE statements are related to. This directive 
+and the subsequent SEIZEs are written
+to a possibly generated grant file for this module.
+
+@example
+<> USE_SEIZE_FILE "foo.grt" <>
+SEIZE bar;
+@end example
+
+@item USE_SEIZE_FILE_RESTRICTED "filename"@*
+Same as USE_SEIZE_FILE. The difference is that this directive
+and subsequent SEIZEs are *not* written to a possibly generated
+grant file. 
+
+@item PROCESS_TYPE = <integer expression>@*
+Set start value for all PROCESS delclarations. This value automatically
+gets incremented after each PROCESS declaration and may be changed with
+a new PROCESS_TYPE compiler directive.
+
+@item SIGNAL_CODE = <integer expression>@*
+Set start value for all SIGNAL definitions. This value automatically
+gets incremented after each SIGNAL definition and may be changed with a
+new SIGNAL_CODE compiler directive.
+
+@item SEND_SIGNAL_DEFAULT_PRIORITY = <integer expression>@*
+Set default priority for send signal action.
+
+@item SEND_BUFFER_DEFAULT_PRIORITY = <integer expression>@*
+Set default priority for send buffer action.
+
+Note: Every <integer expression> in the above mentioned compiler
+directives may also be specified by a SYNONYM of an integer type.
+
+@example
+SYN first_signal_code = 10;
+<> SIGNAL_CODE = first_signal_code <>
+SIGNAL s1;
+@end example
+
+@end itemize
+
+@node References
+@chapter Language Definition References
+
+@itemize @bullet
+@item  CCITT High Level Language (CHILL) Recommendation Z.200
+       ISO/IEC 9496, Geneva 1989                ISBN 92-61-03801-8
+
+@item  An Analytic Description of CHILL, the CCITT high-level
+       language, Branquart, Louis & Wodon, Springer-Verlag 1981
+                                                 ISBN 3-540-11196-4
+
+@item  CHILL User's Manual
+       CCITT, Geneva 1986                       ISBN 92-61-02601-X
+
+@item  Introduction to CHILL
+       CCITT, Geneva 1983                       ISBN 92-61-017771-1
+
+@item  CHILL CCITT High Level Language
+       Proceedings of the 5th CHILL Conference
+       North-Holland, 1991                      ISBN 0 444 88904 3
+
+@item  Introduction to the CHILL programming Language
+       TELEBRAS, Campinas, Brazil 1990
+
+@end itemize
+
+Z.200 is mostly a language-lawyer's document, but more readable
+than most.  The User's Guide is more readable by far, but doesn't
+cover the whole language.  Our copies of these documents came through
+Global Engineering Documents, in Irvine, CA, USA. (714)261-1455.
+
+@contents
+@bye
diff --git a/gcc/ch/gperf b/gcc/ch/gperf
new file mode 100644 (file)
index 0000000..a499a32
--- /dev/null
@@ -0,0 +1,158 @@
+struct resword {
+  char        *name;
+  short        token;
+  enum rid     rid;
+  enum toktype { RESERVED, DIRECTIVE, PREDEF } flags;
+};
+extern tree ridpointers [];
+%%
+access,                        ACCESS,                 NORID,  RESERVED
+after,                 AFTER,                  NORID,  RESERVED
+all,                   ALL,                    NORID,  RESERVED
+all_static_off,                ALL_STATIC_OFF,         NORID,  DIRECTIVE
+all_static_on,         ALL_STATIC_ON,          NORID,  DIRECTIVE
+and,                   AND,                    NORID,  RESERVED
+andif,                 ANDIF,                  NORID,  RESERVED
+array,                 ARRAY,                  NORID,  RESERVED
+asm,                   ASM_KEYWORD,            NORID,  RESERVED
+assert,                        ASSERT,                 NORID,  RESERVED
+at,                    AT,                     NORID,  RESERVED
+based,                 BASED,                  NORID,  RESERVED
+begin,                 BEGINTOKEN,             NORID,  RESERVED
+bin,                   BIN,                    NORID,  RESERVED
+bit,                   BOOLS,                  RID_BOOLS,      PREDEF
+body,                  BODY,                   NORID,  RESERVED
+bools,                 BOOLS,                  RID_BOOLS,      RESERVED
+buffer,                        BUFFER,                 NORID,  RESERVED
+buffer_code,           IGNORED_DIRECTIVE,      NORID,  DIRECTIVE
+by,                    BY,                     NORID,  RESERVED
+call,                  CALL,                   NORID,  RESERVED
+case,                  CASE,                   NORID,  RESERVED
+cause,                 CAUSE,                  NORID,  RESERVED
+ccitt_os,              IGNORED_DIRECTIVE,      NORID,  DIRECTIVE
+chars,                 CHARS,                  NORID,  RESERVED
+context,               CONTEXT,                NORID,  RESERVED
+continue,              CONTINUE,               NORID,  RESERVED
+cycle,                 CYCLE,                  NORID,  RESERVED
+dcl,                   DCL,                    NORID,  RESERVED
+debug_lines,           IGNORED_DIRECTIVE,      NORID,  DIRECTIVE
+debug_symbols,         IGNORED_DIRECTIVE,      NORID,  DIRECTIVE
+debug_types,           IGNORED_DIRECTIVE,      NORID,  DIRECTIVE
+delay,                 DELAY,                  NORID,  RESERVED
+do,                    DO,                     NORID,  RESERVED
+down,                  DOWN,                   NORID,  RESERVED
+dynamic,               DYNAMIC,                RID_DYNAMIC,    RESERVED
+else,                  ELSE,                   NORID,  RESERVED
+elsif,                 ELSIF,                  NORID,  RESERVED
+empty_off,             EMPTY_OFF,              NORID,  DIRECTIVE
+empty_on,              EMPTY_ON,               NORID,  DIRECTIVE
+end,                   END,                    NORID,  RESERVED
+esac,                  ESAC,                   NORID,  RESERVED
+even,                  IGNORED_DIRECTIVE,      NORID,  DIRECTIVE
+event,                 EVENT,                  NORID,  RESERVED
+event_code,            IGNORED_DIRECTIVE,      NORID,  DIRECTIVE
+ever,                  EVER,                   NORID,  RESERVED
+exceptions,            EXCEPTIONS,             NORID,  RESERVED
+exit,                  EXIT,                   NORID,  RESERVED
+extra_const_seg,       IGNORED_DIRECTIVE,      NORID,  DIRECTIVE
+far,                   IGNORED_DIRECTIVE,      NORID,  DIRECTIVE
+fi,                    FI,                     NORID,  RESERVED
+for,                   FOR,                    NORID,  RESERVED
+forbid,                        FORBID,                 NORID,  RESERVED
+general,               GENERAL,                NORID,  RESERVED
+generate_all_set_names,        IGNORED_DIRECTIVE,      NORID,  DIRECTIVE
+generate_set_names,    IGNORED_DIRECTIVE,      NORID,  DIRECTIVE
+goto,                  GOTO,                   NORID,  RESERVED
+grant,                 GRANT,                  NORID,  RESERVED
+grant_file_size,       IGNORED_DIRECTIVE,      NORID,  DIRECTIVE
+if,                    IF,                     NORID,  RESERVED
+in,                    IN,                     RID_IN, RESERVED
+init,                  INIT,                   NORID,  RESERVED
+inline,                        INLINE,                 RID_INLINE,     RESERVED
+inout,                 PARAMATTR,              RID_INOUT,      RESERVED
+large,                 IGNORED_DIRECTIVE,      NORID,  DIRECTIVE
+list,                  IGNORED_DIRECTIVE,      NORID,  DIRECTIVE
+loc,                   LOC,                    NORID,  RESERVED
+make_publics_for_discrete_syns,        IGNORED_DIRECTIVE,      NORID,  DIRECTIVE
+medium,                        IGNORED_DIRECTIVE,      NORID,  DIRECTIVE
+mod,                   MOD,                    NORID,  RESERVED
+module,                        MODULE,                 NORID,  RESERVED
+multiple_const_segs,   IGNORED_DIRECTIVE,      NORID,  DIRECTIVE
+multiple_data_segs,    IGNORED_DIRECTIVE,      NORID,  DIRECTIVE
+newmode,               NEWMODE,                NORID,  RESERVED
+nolist,                        IGNORED_DIRECTIVE,      NORID,  DIRECTIVE
+no_overlap_check,      IGNORED_DIRECTIVE,      NORID,  DIRECTIVE
+nonref,                        NONREF,                 NORID,  RESERVED
+nopack,                        NOPACK,                 NORID,  RESERVED
+not,                   NOT,                    NORID,  RESERVED
+od,                    OD,                     NORID,  RESERVED
+of,                    OF,                     NORID,  RESERVED
+on,                    ON,                     NORID,  RESERVED
+only_for_simulation,   IGNORED_DIRECTIVE,      NORID,  DIRECTIVE
+only_for_target,       IGNORED_DIRECTIVE,      NORID,  DIRECTIVE
+optimize,              IGNORED_DIRECTIVE,      NORID,  DIRECTIVE
+optimize_runtime,      IGNORED_DIRECTIVE,      NORID,  DIRECTIVE
+optimization_window,   IGNORED_DIRECTIVE,      NORID,  DIRECTIVE
+or,                    OR,                     NORID,  RESERVED
+orif,                  ORIF,                   NORID,  RESERVED
+out,                   PARAMATTR,              RID_OUT,        RESERVED
+pack,                  PACK,                   NORID,  RESERVED
+page,                  IGNORED_DIRECTIVE,      NORID,  DIRECTIVE
+pos,                   POS,                    NORID,  RESERVED
+powerset,              POWERSET,               NORID,  RESERVED
+prefixed,              PREFIXED,               NORID,  RESERVED
+print_o_code,          IGNORED_DIRECTIVE,      NORID,  DIRECTIVE
+print_symbol_table,    IGNORED_DIRECTIVE,      NORID,  DIRECTIVE
+priority,              PRIORITY,               NORID,  RESERVED
+proc,                  PROC,                   NORID,  RESERVED
+process,               PROCESS,                NORID,  RESERVED
+process_type,          PROCESS_TYPE_TOKEN,     NORID,  DIRECTIVE
+range,                 RANGE,                  NORID,  RESERVED
+range_off,             RANGE_OFF,              NORID,  DIRECTIVE
+range_on,              RANGE_ON,               NORID,  DIRECTIVE
+read,                  READ,                   RID_READ,       RESERVED
+receive,               RECEIVE,                NORID,  RESERVED
+recursive,             RECURSIVE,              NORID,  RESERVED
+reentrant,             IGNORED_DIRECTIVE,      NORID,  DIRECTIVE
+reentrant_all,         IGNORED_DIRECTIVE,      NORID,  DIRECTIVE
+ref,                   REF,                    NORID,  RESERVED
+region,                        REGION,                 NORID,  RESERVED
+rem,                   REM,                    NORID,  RESERVED
+remote,                        REMOTE,                 NORID,  RESERVED
+result,                        RESULT,                 NORID,  RESERVED
+return,                        RETURN,                 NORID,  RESERVED
+returns,               RETURNS,                NORID,  RESERVED
+row,                   ROW,                    NORID,  RESERVED
+seize,                 SEIZE,                  NORID,  RESERVED
+send,                  SEND,                   NORID,  RESERVED
+send_buffer_default_priority,  SEND_BUFFER_DEFAULT_PRIORITY,   NORID,  DIRECTIVE
+send_signal_default_priority,  SEND_SIGNAL_DEFAULT_PRIORITY,   NORID,  DIRECTIVE
+set,                   SET,                    NORID,  RESERVED
+short_pred_succ,       IGNORED_DIRECTIVE,      NORID,  DIRECTIVE
+signal,                        SIGNAL,                 NORID,  RESERVED
+signal_code,           SIGNAL_CODE,            NORID,  DIRECTIVE
+signal_max_length,     IGNORED_DIRECTIVE,      NORID,  DIRECTIVE
+simple,                        SIMPLE,                 NORID,  RESERVED
+small,                 IGNORED_DIRECTIVE,      NORID,  DIRECTIVE
+spec,                  SPEC,                   NORID,  RESERVED
+start,                 START,                  NORID,  RESERVED
+state_routine,         IGNORED_DIRECTIVE,      NORID,  DIRECTIVE
+static,                        STATIC,                 NORID,  RESERVED
+step,                  STEP,                   NORID,  RESERVED
+stop,                  STOP,                   NORID,  RESERVED
+struct,                        STRUCT,                 NORID,  RESERVED
+support_causing_address,       IGNORED_DIRECTIVE,      NORID,  DIRECTIVE
+syn,                   SYN,                    NORID,  RESERVED
+synmode,               SYNMODE,                NORID,  RESERVED
+text,                  TEXT,                   NORID,  RESERVED
+then,                  THEN,                   NORID,  RESERVED
+this,                  THIS,                   NORID,  RESERVED
+timeout,               TIMEOUT,                NORID,  RESERVED
+to,                    TO,                     NORID,  RESERVED
+up,                    UP,                     NORID,  RESERVED
+use_seize_file,                USE_SEIZE_FILE,         NORID,  DIRECTIVE
+use_seize_file_restricted,     USE_SEIZE_FILE_RESTRICTED,      NORID,  DIRECTIVE
+varying,               VARYING,                NORID,  RESERVED
+while,                 WHILE,                  NORID,  RESERVED
+with,                  WITH,                   NORID,  RESERVED
+xor,                   XOR,                    NORID,  RESERVED
diff --git a/gcc/ch/hash.h b/gcc/ch/hash.h
new file mode 100644 (file)
index 0000000..c3fff86
--- /dev/null
@@ -0,0 +1,1059 @@
+/* C code produced by gperf version 2.5 (GNU C++ version) */
+/* Command-line: gperf -D -E -S1 -p -j1 -i 1 -g -o -t -k* gperf.tmp  */
+struct resword {
+  char        *name;
+  short        token;
+  enum rid     rid;
+  enum toktype { RESERVED, DIRECTIVE, PREDEF } flags;
+};
+extern tree ridpointers [];
+/* maximum key range = 2815, duplicates = 6 */
+
+#ifdef __GNUC__
+inline
+#endif
+static unsigned int
+hash (str, len)
+     register char *str;
+     register int unsigned len;
+{
+  static unsigned short asso_values[] =
+    {
+     2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+     2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+     2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+     2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+     2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+     2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+     2822, 2822, 2822, 2822, 2822,    4,   61,   80,   12,  350,
+       91,   39,    3,    2, 2822,    4,  129,  155,   64,   46,
+       65, 2822,   96,   13,    1,  135,    7,    2,    8,  124,
+        7, 2822, 2822, 2822, 2822,    1, 2822,   94,   40,  127,
+       21,    1,   81,    1,    1,    7, 2822,    3,   23,   74,
+      255,  203,   70, 2822,  218,    1,   88,  124,    1,    6,
+       10,   56,   40, 2822, 2822, 2822, 2822, 2822,
+    };
+  register int hval = len;
+
+  switch (hval)
+    {
+      default:
+      case 30:
+        hval += asso_values[str[29]];
+      case 29:
+        hval += asso_values[str[28]];
+      case 28:
+        hval += asso_values[str[27]];
+      case 27:
+        hval += asso_values[str[26]];
+      case 26:
+        hval += asso_values[str[25]];
+      case 25:
+        hval += asso_values[str[24]];
+      case 24:
+        hval += asso_values[str[23]];
+      case 23:
+        hval += asso_values[str[22]];
+      case 22:
+        hval += asso_values[str[21]];
+      case 21:
+        hval += asso_values[str[20]];
+      case 20:
+        hval += asso_values[str[19]];
+      case 19:
+        hval += asso_values[str[18]];
+      case 18:
+        hval += asso_values[str[17]];
+      case 17:
+        hval += asso_values[str[16]];
+      case 16:
+        hval += asso_values[str[15]];
+      case 15:
+        hval += asso_values[str[14]];
+      case 14:
+        hval += asso_values[str[13]];
+      case 13:
+        hval += asso_values[str[12]];
+      case 12:
+        hval += asso_values[str[11]];
+      case 11:
+        hval += asso_values[str[10]];
+      case 10:
+        hval += asso_values[str[9]];
+      case 9:
+        hval += asso_values[str[8]];
+      case 8:
+        hval += asso_values[str[7]];
+      case 7:
+        hval += asso_values[str[6]];
+      case 6:
+        hval += asso_values[str[5]];
+      case 5:
+        hval += asso_values[str[4]];
+      case 4:
+        hval += asso_values[str[3]];
+      case 3:
+        hval += asso_values[str[2]];
+      case 2:
+        hval += asso_values[str[1]];
+      case 1:
+        hval += asso_values[str[0]];
+    }
+  return hval;
+}
+
+#ifdef __GNUC__
+inline
+#endif
+struct resword *
+in_word_set (str, len)
+     register char *str;
+     register unsigned int len;
+{
+  enum
+    {
+      TOTAL_KEYWORDS = 300,
+      MIN_WORD_LENGTH = 2,
+      MAX_WORD_LENGTH = 30,
+      MIN_HASH_VALUE = 7,
+      MAX_HASH_VALUE = 2821,
+    };
+
+  static struct resword wordlist[] =
+    {
+      {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, 
+      {"AT",                   AT,                     NORID,  RESERVED},
+      {"WITH",                         WITH,                   NORID,  RESERVED},
+      {"THIS",                         THIS,                   NORID,  RESERVED},
+      {"else",                         ELSE,                   NORID,  RESERVED},
+      {"while",                        WHILE,                  NORID,  RESERVED},
+      {"TO",                   TO,                     NORID,  RESERVED},
+      {"seize",                        SEIZE,                  NORID,  RESERVED},
+      {"DO",                   DO,                     NORID,  RESERVED},
+      {"OD",                   OD,                     NORID,  RESERVED},
+      {"BIT",                  BOOLS,                  RID_BOOLS,      PREDEF},
+      {"IN",                   IN,                     RID_IN, RESERVED},
+      {"INIT",                         INIT,                   NORID,  RESERVED},
+      {"AND",                  AND,                    NORID,  RESERVED},
+      {"fi",                   FI,                     NORID,  RESERVED},
+      {"if",                   IF,                     NORID,  RESERVED},
+      {"set",                  SET,                    NORID,  RESERVED},
+      {"FI",                   FI,                     NORID,  RESERVED},
+      {"IF",                   IF,                     NORID,  RESERVED},
+      {"by",                   BY,                     NORID,  RESERVED},
+      {"this",                         THIS,                   NORID,  RESERVED},
+      {"with",                         WITH,                   NORID,  RESERVED},
+      {"STATIC",                       STATIC,                 NORID,  RESERVED},
+      {"exit",                         EXIT,                   NORID,  RESERVED},
+      {"ON",                   ON,                     NORID,  RESERVED},
+      {"NOT",                  NOT,                    NORID,  RESERVED},
+      {"elsif",                        ELSIF,                  NORID,  RESERVED},
+      {"START",                        START,                  NORID,  RESERVED},
+      {"list",                         IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"POS",                  POS,                    NORID,  RESERVED},
+      {"DOWN",                         DOWN,                   NORID,  RESERVED},
+      {"STOP",                         STOP,                   NORID,  RESERVED},
+      {"BIN",                  BIN,                    NORID,  RESERVED},
+      {"GOTO",                         GOTO,                   NORID,  RESERVED},
+      {"bit",                  BOOLS,                  RID_BOOLS,      PREDEF},
+      {"OF",                   OF,                     NORID,  RESERVED},
+      {"all",                  ALL,                    NORID,  RESERVED},
+      {"OR",                   OR,                     NORID,  RESERVED},
+      {"ROW",                  ROW,                    NORID,  RESERVED},
+      {"LIST",                         IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"XOR",                  XOR,                    NORID,  RESERVED},
+      {"PACK",                         PACK,                   NORID,  RESERVED},
+      {"based",                        BASED,                  NORID,  RESERVED},
+      {"step",                         STEP,                   NORID,  RESERVED},
+      {"page",                         IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"asm",                  ASM_KEYWORD,            NORID,  RESERVED},
+      {"dcl",                  DCL,                    NORID,  RESERVED},
+      {"ASM",                  ASM_KEYWORD,            NORID,  RESERVED},
+      {"ANDIF",                        ANDIF,                  NORID,  RESERVED},
+      {"simple",                       SIMPLE,                 NORID,  RESERVED},
+      {"at",                   AT,                     NORID,  RESERVED},
+      {"OUT",                  PARAMATTR,              RID_OUT,        RESERVED},
+      {"BY",                   BY,                     NORID,  RESERVED},
+      {"text",                         TEXT,                   NORID,  RESERVED},
+      {"FAR",                  IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"up",                   UP,                     NORID,  RESERVED},
+      {"delay",                        DELAY,                  NORID,  RESERVED},
+      {"CHARS",                        CHARS,                  NORID,  RESERVED},
+      {"UP",                   UP,                     NORID,  RESERVED},
+      {"spec",                         SPEC,                   NORID,  RESERVED},
+      {"SYN",                  SYN,                    NORID,  RESERVED},
+      {"GRANT",                        GRANT,                  NORID,  RESERVED},
+      {"MOD",                  MOD,                    NORID,  RESERVED},
+      {"small",                        IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"DCL",                  DCL,                    NORID,  RESERVED},
+      {"ever",                         EVER,                   NORID,  RESERVED},
+      {"do",                   DO,                     NORID,  RESERVED},
+      {"od",                   OD,                     NORID,  RESERVED},
+      {"case",                         CASE,                   NORID,  RESERVED},
+      {"esac",                         ESAC,                   NORID,  RESERVED},
+      {"CCITT_OS",             IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"FOR",                  FOR,                    NORID,  RESERVED},
+      {"ORIF",                         ORIF,                   NORID,  RESERVED},
+      {"BODY",                         BODY,                   NORID,  RESERVED},
+      {"INOUT",                        PARAMATTR,              RID_INOUT,      RESERVED},
+      {"SIGNAL",                       SIGNAL,                 NORID,  RESERVED},
+      {"LOC",                  LOC,                    NORID,  RESERVED},
+      {"NOLIST",                       IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"even",                         IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"in",                   IN,                     RID_IN, RESERVED},
+      {"ALL",                  ALL,                    NORID,  RESERVED},
+      {"NOPACK",                       NOPACK,                 NORID,  RESERVED},
+      {"call",                         CALL,                   NORID,  RESERVED},
+      {"pos",                  POS,                    NORID,  RESERVED},
+      {"end",                  END,                    NORID,  RESERVED},
+      {"send",                         SEND,                   NORID,  RESERVED},
+      {"of",                   OF,                     NORID,  RESERVED},
+      {"PROC",                         PROC,                   NORID,  RESERVED},
+      {"to",                   TO,                     NORID,  RESERVED},
+      {"rem",                  REM,                    NORID,  RESERVED},
+      {"pack",                         PACK,                   NORID,  RESERVED},
+      {"BOOLS",                        BOOLS,                  RID_BOOLS,      RESERVED},
+      {"mod",                  MOD,                    NORID,  RESERVED},
+      {"ref",                  REF,                    NORID,  RESERVED},
+      {"use_seize_file",               USE_SEIZE_FILE,         NORID,  DIRECTIVE},
+      {"bin",                  BIN,                    NORID,  RESERVED},
+      {"medium",                       IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"begin",                        BEGINTOKEN,             NORID,  RESERVED},
+      {"FORBID",                       FORBID,                 NORID,  RESERVED},
+      {"syn",                  SYN,                    NORID,  RESERVED},
+      {"body",                         BODY,                   NORID,  RESERVED},
+      {"ARRAY",                        ARRAY,                  NORID,  RESERVED},
+      {"STRUCT",                       STRUCT,                 NORID,  RESERVED},
+      {"read",                         READ,                   RID_READ,       RESERVED},
+      {"cycle",                        CYCLE,                  NORID,  RESERVED},
+      {"large",                        IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"VARYING",              VARYING,                NORID,  RESERVED},
+      {"CALL",                         CALL,                   NORID,  RESERVED},
+      {"then",                         THEN,                   NORID,  RESERVED},
+      {"event",                        EVENT,                  NORID,  RESERVED},
+      {"cause",                        CAUSE,                  NORID,  RESERVED},
+      {"loc",                  LOC,                    NORID,  RESERVED},
+      {"access",                       ACCESS,                 NORID,  RESERVED},
+      {"init",                         INIT,                   NORID,  RESERVED},
+      {"receive",              RECEIVE,                NORID,  RESERVED},
+      {"TEXT",                         TEXT,                   NORID,  RESERVED},
+      {"EXIT",                         EXIT,                   NORID,  RESERVED},
+      {"stop",                         STOP,                   NORID,  RESERVED},
+      {"SET",                  SET,                    NORID,  RESERVED},
+      {"and",                  AND,                    NORID,  RESERVED},
+      {"signal",                       SIGNAL,                 NORID,  RESERVED},
+      {"far",                  IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"assert",                       ASSERT,                 NORID,  RESERVED},
+      {"static",                       STATIC,                 NORID,  RESERVED},
+      {"debug_types",          IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"prefixed",             PREFIXED,               NORID,  RESERVED},
+      {"out",                  PARAMATTR,              RID_OUT,        RESERVED},
+      {"THEN",                         THEN,                   NORID,  RESERVED},
+      {"or",                   OR,                     NORID,  RESERVED},
+      {"END",                  END,                    NORID,  RESERVED},
+      {"row",                  ROW,                    NORID,  RESERVED},
+      {"STEP",                         STEP,                   NORID,  RESERVED},
+      {"xor",                  XOR,                    NORID,  RESERVED},
+      {"SMALL",                        IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"PRIORITY",             PRIORITY,               NORID,  RESERVED},
+      {"SEND",                         SEND,                   NORID,  RESERVED},
+      {"BASED",                        BASED,                  NORID,  RESERVED},
+      {"chars",                        CHARS,                  NORID,  RESERVED},
+      {"DYNAMIC",              DYNAMIC,                RID_DYNAMIC,    RESERVED},
+      {"CASE",                         CASE,                   NORID,  RESERVED},
+      {"ESAC",                         ESAC,                   NORID,  RESERVED},
+      {"module",                       MODULE,                 NORID,  RESERVED},
+      {"on",                   ON,                     NORID,  RESERVED},
+      {"result",                       RESULT,                 NORID,  RESERVED},
+      {"PAGE",                         IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"andif",                        ANDIF,                  NORID,  RESERVED},
+      {"READ",                         READ,                   RID_READ,       RESERVED},
+      {"bools",                        BOOLS,                  RID_BOOLS,      RESERVED},
+      {"ASSERT",                       ASSERT,                 NORID,  RESERVED},
+      {"debug_lines",          IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"after",                        AFTER,                  NORID,  RESERVED},
+      {"ALL_STATIC_ON",                ALL_STATIC_ON,          NORID,  DIRECTIVE},
+      {"down",                         DOWN,                   NORID,  RESERVED},
+      {"WHILE",                        WHILE,                  NORID,  RESERVED},
+      {"start",                        START,                  NORID,  RESERVED},
+      {"optimize",             IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"goto",                         GOTO,                   NORID,  RESERVED},
+      {"for",                  FOR,                    NORID,  RESERVED},
+      {"SPEC",                         SPEC,                   NORID,  RESERVED},
+      {"orif",                         ORIF,                   NORID,  RESERVED},
+      {"BEGIN",                        BEGINTOKEN,             NORID,  RESERVED},
+      {"REF",                  REF,                    NORID,  RESERVED},
+      {"OPTIMIZATION_WINDOW",  IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"ACCESS",                       ACCESS,                 NORID,  RESERVED},
+      {"AFTER",                        AFTER,                  NORID,  RESERVED},
+      {"not",                  NOT,                    NORID,  RESERVED},
+      {"buffer",                       BUFFER,                 NORID,  RESERVED},
+      {"inline",                       INLINE,                 RID_INLINE,     RESERVED},
+      {"CONTEXT",              CONTEXT,                NORID,  RESERVED},
+      {"RANGE",                        RANGE,                  NORID,  RESERVED},
+      {"newmode",              NEWMODE,                NORID,  RESERVED},
+      {"range",                        RANGE,                  NORID,  RESERVED},
+      {"forbid",                       FORBID,                 NORID,  RESERVED},
+      {"nolist",                       IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"CAUSE",                        CAUSE,                  NORID,  RESERVED},
+      {"ELSIF",                        ELSIF,                  NORID,  RESERVED},
+      {"remote",                       REMOTE,                 NORID,  RESERVED},
+      {"timeout",              TIMEOUT,                NORID,  RESERVED},
+      {"powerset",             POWERSET,               NORID,  RESERVED},
+      {"debug_symbols",                IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"general",              GENERAL,                NORID,  RESERVED},
+      {"REGION",                       REGION,                 NORID,  RESERVED},
+      {"REM",                  REM,                    NORID,  RESERVED},
+      {"ALL_STATIC_OFF",               ALL_STATIC_OFF,         NORID,  DIRECTIVE},
+      {"INLINE",                       INLINE,                 RID_INLINE,     RESERVED},
+      {"synmode",              SYNMODE,                NORID,  RESERVED},
+      {"proc",                         PROC,                   NORID,  RESERVED},
+      {"LARGE",                        IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"DELAY",                        DELAY,                  NORID,  RESERVED},
+      {"process",              PROCESS,                NORID,  RESERVED},
+      {"OPTIMIZE",             IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"varying",              VARYING,                NORID,  RESERVED},
+      {"dynamic",              DYNAMIC,                RID_DYNAMIC,    RESERVED},
+      {"ccitt_os",             IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"struct",                       STRUCT,                 NORID,  RESERVED},
+      {"grant",                        GRANT,                  NORID,  RESERVED},
+      {"empty_off",            EMPTY_OFF,              NORID,  DIRECTIVE},
+      {"PROCESS",              PROCESS,                NORID,  RESERVED},
+      {"RANGE_ON",             RANGE_ON,               NORID,  DIRECTIVE},
+      {"inout",                        PARAMATTR,              RID_INOUT,      RESERVED},
+      {"array",                        ARRAY,                  NORID,  RESERVED},
+      {"region",                       REGION,                 NORID,  RESERVED},
+      {"TIMEOUT",              TIMEOUT,                NORID,  RESERVED},
+      {"recursive",            RECURSIVE,              NORID,  RESERVED},
+      {"event_code",           IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"NONREF",                       NONREF,                 NORID,  RESERVED},
+      {"SIMPLE",                       SIMPLE,                 NORID,  RESERVED},
+      {"SEIZE",                        SEIZE,                  NORID,  RESERVED},
+      {"RESULT",                       RESULT,                 NORID,  RESERVED},
+      {"multiple_data_segs",   IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"signal_code",          SIGNAL_CODE,            NORID,  DIRECTIVE},
+      {"RETURN",                       RETURN,                 NORID,  RESERVED},
+      {"CONTINUE",             CONTINUE,               NORID,  RESERVED},
+      {"SIGNAL_CODE",          SIGNAL_CODE,            NORID,  DIRECTIVE},
+      {"empty_on",             EMPTY_ON,               NORID,  DIRECTIVE},
+      {"nopack",                       NOPACK,                 NORID,  RESERVED},
+      {"RETURNS",              RETURNS,                NORID,  RESERVED},
+      {"CYCLE",                        CYCLE,                  NORID,  RESERVED},
+      {"SYNMODE",              SYNMODE,                NORID,  RESERVED},
+      {"exceptions",           EXCEPTIONS,             NORID,  RESERVED},
+      {"EVEN",                         IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"PRINT_O_CODE",                 IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"EVENT",                        EVENT,                  NORID,  RESERVED},
+      {"context",              CONTEXT,                NORID,  RESERVED},
+      {"RANGE_OFF",            RANGE_OFF,              NORID,  DIRECTIVE},
+      {"EVER",                         EVER,                   NORID,  RESERVED},
+      {"EMPTY_ON",             EMPTY_ON,               NORID,  DIRECTIVE},
+      {"MEDIUM",                       IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"BUFFER",                       BUFFER,                 NORID,  RESERVED},
+      {"MODULE",                       MODULE,                 NORID,  RESERVED},
+      {"grant_file_size",      IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"ELSE",                         ELSE,                   NORID,  RESERVED},
+      {"process_type",                 PROCESS_TYPE_TOKEN,     NORID,  DIRECTIVE},
+      {"priority",             PRIORITY,               NORID,  RESERVED},
+      {"buffer_code",          IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"return",                       RETURN,                 NORID,  RESERVED},
+      {"returns",              RETURNS,                NORID,  RESERVED},
+      {"all_static_off",               ALL_STATIC_OFF,         NORID,  DIRECTIVE},
+      {"POWERSET",             POWERSET,               NORID,  RESERVED},
+      {"EMPTY_OFF",            EMPTY_OFF,              NORID,  DIRECTIVE},
+      {"range_off",            RANGE_OFF,              NORID,  DIRECTIVE},
+      {"signal_max_length",    IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"PREFIXED",             PREFIXED,               NORID,  RESERVED},
+      {"NEWMODE",              NEWMODE,                NORID,  RESERVED},
+      {"EXCEPTIONS",           EXCEPTIONS,             NORID,  RESERVED},
+      {"REMOTE",                       REMOTE,                 NORID,  RESERVED},
+      {"SHORT_PRED_SUCC",      IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"all_static_on",                ALL_STATIC_ON,          NORID,  DIRECTIVE},
+      {"nonref",                       NONREF,                 NORID,  RESERVED},
+      {"SIGNAL_MAX_LENGTH",    IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"REENTRANT",            IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"range_on",             RANGE_ON,               NORID,  DIRECTIVE},
+      {"GENERAL",              GENERAL,                NORID,  RESERVED},
+      {"continue",             CONTINUE,               NORID,  RESERVED},
+      {"STATE_ROUTINE",                IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"EXTRA_CONST_SEG",      IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"use_seize_file_restricted",    USE_SEIZE_FILE_RESTRICTED,      NORID,  DIRECTIVE},
+      {"ONLY_FOR_TARGET",      IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"extra_const_seg",      IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"multiple_const_segs",  IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"RECURSIVE",            RECURSIVE,              NORID,  RESERVED},
+      {"DEBUG_SYMBOLS",                IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"DEBUG_TYPES",          IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"GRANT_FILE_SIZE",      IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"DEBUG_LINES",          IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"ONLY_FOR_SIMULATION",  IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"state_routine",                IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"generate_set_names",   IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"print_o_code",                 IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"PROCESS_TYPE",                 PROCESS_TYPE_TOKEN,     NORID,  DIRECTIVE},
+      {"short_pred_succ",      IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"reentrant",            IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"RECEIVE",              RECEIVE,                NORID,  RESERVED},
+      {"EVENT_CODE",           IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"optimize_runtime",     IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"SUPPORT_CAUSING_ADDRESS",      IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"print_symbol_table",   IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"REENTRANT_ALL",                IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"PRINT_SYMBOL_TABLE",   IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"BUFFER_CODE",          IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"generate_all_set_names",       IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"NO_OVERLAP_CHECK",     IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"no_overlap_check",     IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"reentrant_all",                IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"MULTIPLE_DATA_SEGS",   IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"OPTIMIZE_RUNTIME",     IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"only_for_target",      IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"MULTIPLE_CONST_SEGS",  IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"optimization_window",  IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"support_causing_address",      IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"USE_SEIZE_FILE",               USE_SEIZE_FILE,         NORID,  DIRECTIVE},
+      {"SEND_SIGNAL_DEFAULT_PRIORITY",         SEND_SIGNAL_DEFAULT_PRIORITY,   NORID,  DIRECTIVE},
+      {"make_publics_for_discrete_syns",       IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"only_for_simulation",  IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"send_signal_default_priority",         SEND_SIGNAL_DEFAULT_PRIORITY,   NORID,  DIRECTIVE},
+      {"send_buffer_default_priority",         SEND_BUFFER_DEFAULT_PRIORITY,   NORID,  DIRECTIVE},
+      {"GENERATE_SET_NAMES",   IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"MAKE_PUBLICS_FOR_DISCRETE_SYNS",       IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"SEND_BUFFER_DEFAULT_PRIORITY",         SEND_BUFFER_DEFAULT_PRIORITY,   NORID,  DIRECTIVE},
+      {"GENERATE_ALL_SET_NAMES",       IGNORED_DIRECTIVE,      NORID,  DIRECTIVE},
+      {"USE_SEIZE_FILE_RESTRICTED",    USE_SEIZE_FILE_RESTRICTED,      NORID,  DIRECTIVE},
+    };
+
+  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+    {
+      register int key = hash (str, len);
+
+      if (key <= MAX_HASH_VALUE && key >= MIN_HASH_VALUE)
+        {
+            {
+              struct resword  *resword; 
+
+              switch (key)
+                {
+                case     7:
+                  resword = &wordlist[7]; break;
+                case    12:
+                  resword = &wordlist[8]; break;
+                case    23:
+                  resword = &wordlist[9]; break;
+                case    30:
+                  resword = &wordlist[10]; break;
+                case    43:
+                  resword = &wordlist[11]; break;
+                case    49:
+                  resword = &wordlist[12]; break;
+                case    55:
+                  resword = &wordlist[13]; break;
+                case    60:
+                  resword = &wordlist[14];
+                  if (*str == *resword->name && !strcmp (str + 1, resword->name + 1)) return resword;
+                  resword = &wordlist[15];
+                  if (*str == *resword->name && !strcmp (str + 1, resword->name + 1)) return resword;
+                  return 0;
+                case    67:
+                  resword = &wordlist[16]; break;
+                case    68:
+                  resword = &wordlist[17]; break;
+                case    73:
+                  resword = &wordlist[18]; break;
+                case    83:
+                  resword = &wordlist[19]; break;
+                case    90:
+                  resword = &wordlist[20];
+                  if (*str == *resword->name && !strcmp (str + 1, resword->name + 1)) return resword;
+                  resword = &wordlist[21];
+                  if (*str == *resword->name && !strcmp (str + 1, resword->name + 1)) return resword;
+                  return 0;
+                case    93:
+                  resword = &wordlist[22]; break;
+                case    95:
+                  resword = &wordlist[23];
+                  if (*str == *resword->name && !strcmp (str + 1, resword->name + 1)) return resword;
+                  resword = &wordlist[24];
+                  if (*str == *resword->name && !strcmp (str + 1, resword->name + 1)) return resword;
+                  return 0;
+                case    98:
+                  resword = &wordlist[25]; break;
+                case   101:
+                  resword = &wordlist[26]; break;
+                case   106:
+                  resword = &wordlist[27]; break;
+                case   107:
+                  resword = &wordlist[28]; break;
+                case   110:
+                  resword = &wordlist[29]; break;
+                case   112:
+                  resword = &wordlist[30]; break;
+                case   114:
+                  resword = &wordlist[31]; break;
+                case   118:
+                  resword = &wordlist[32]; break;
+                case   120:
+                  resword = &wordlist[33]; break;
+                case   123:
+                  resword = &wordlist[34]; break;
+                case   127:
+                  resword = &wordlist[35]; break;
+                case   128:
+                  resword = &wordlist[36]; break;
+                case   129:
+                  resword = &wordlist[37]; break;
+                case   130:
+                  resword = &wordlist[38]; break;
+                case   136:
+                  resword = &wordlist[39]; break;
+                case   138:
+                  resword = &wordlist[40]; break;
+                case   139:
+                  resword = &wordlist[41]; break;
+                case   143:
+                  resword = &wordlist[42]; break;
+                case   144:
+                  resword = &wordlist[43]; break;
+                case   147:
+                  resword = &wordlist[44]; break;
+                case   149:
+                  resword = &wordlist[45]; break;
+                case   153:
+                  resword = &wordlist[46]; break;
+                case   157:
+                  resword = &wordlist[47]; break;
+                case   162:
+                  resword = &wordlist[48]; break;
+                case   164:
+                  resword = &wordlist[49]; break;
+                case   170:
+                  resword = &wordlist[50]; break;
+                case   172:
+                  resword = &wordlist[51]; break;
+                case   174:
+                  resword = &wordlist[52]; break;
+                case   175:
+                  resword = &wordlist[53]; break;
+                case   178:
+                  resword = &wordlist[54]; break;
+                case   182:
+                  resword = &wordlist[55]; break;
+                case   184:
+                  resword = &wordlist[56]; break;
+                case   185:
+                  resword = &wordlist[57]; break;
+                case   187:
+                  resword = &wordlist[58]; break;
+                case   191:
+                  resword = &wordlist[59]; break;
+                case   194:
+                  resword = &wordlist[60]; break;
+                case   196:
+                  resword = &wordlist[61]; break;
+                case   200:
+                  resword = &wordlist[62]; break;
+                case   201:
+                  resword = &wordlist[63]; break;
+                case   202:
+                  resword = &wordlist[64]; break;
+                case   203:
+                  resword = &wordlist[65]; break;
+                case   204:
+                  resword = &wordlist[66]; break;
+                case   209:
+                  resword = &wordlist[67]; break;
+                case   216:
+                  resword = &wordlist[68]; break;
+                case   220:
+                  resword = &wordlist[69]; break;
+                case   224:
+                  resword = &wordlist[70]; break;
+                case   225:
+                  resword = &wordlist[71]; break;
+                case   226:
+                  resword = &wordlist[72];
+                  if (*str == *resword->name && !strcmp (str + 1, resword->name + 1)) return resword;
+                  resword = &wordlist[73];
+                  if (*str == *resword->name && !strcmp (str + 1, resword->name + 1)) return resword;
+                  return 0;
+                case   227:
+                  resword = &wordlist[74];
+                  if (*str == *resword->name && !strcmp (str + 1, resword->name + 1)) return resword;
+                  resword = &wordlist[75];
+                  if (*str == *resword->name && !strcmp (str + 1, resword->name + 1)) return resword;
+                  return 0;
+                case   232:
+                  resword = &wordlist[76]; break;
+                case   236:
+                  resword = &wordlist[77]; break;
+                case   239:
+                  resword = &wordlist[78]; break;
+                case   247:
+                  resword = &wordlist[79]; break;
+                case   253:
+                  resword = &wordlist[80]; break;
+                case   257:
+                  resword = &wordlist[81]; break;
+                case   258:
+                  resword = &wordlist[82]; break;
+                case   261:
+                  resword = &wordlist[83]; break;
+                case   262:
+                  resword = &wordlist[84]; break;
+                case   264:
+                  resword = &wordlist[85]; break;
+                case   265:
+                  resword = &wordlist[86]; break;
+                case   269:
+                  resword = &wordlist[87]; break;
+                case   271:
+                  resword = &wordlist[88]; break;
+                case   277:
+                  resword = &wordlist[89]; break;
+                case   280:
+                  resword = &wordlist[90]; break;
+                case   282:
+                  resword = &wordlist[91]; break;
+                case   286:
+                  resword = &wordlist[92]; break;
+                case   291:
+                  resword = &wordlist[93]; break;
+                case   293:
+                  resword = &wordlist[94]; break;
+                case   296:
+                  resword = &wordlist[95]; break;
+                case   298:
+                  resword = &wordlist[96]; break;
+                case   300:
+                  resword = &wordlist[97]; break;
+                case   301:
+                  resword = &wordlist[98]; break;
+                case   303:
+                  resword = &wordlist[99]; break;
+                case   304:
+                  resword = &wordlist[100]; break;
+                case   305:
+                  resword = &wordlist[101]; break;
+                case   307:
+                  resword = &wordlist[102]; break;
+                case   309:
+                  resword = &wordlist[103]; break;
+                case   314:
+                  resword = &wordlist[104]; break;
+                case   315:
+                  resword = &wordlist[105]; break;
+                case   324:
+                  resword = &wordlist[106]; break;
+                case   329:
+                  resword = &wordlist[107]; break;
+                case   332:
+                  resword = &wordlist[108]; break;
+                case   338:
+                  resword = &wordlist[109]; break;
+                case   339:
+                  resword = &wordlist[110]; break;
+                case   342:
+                  resword = &wordlist[111]; break;
+                case   343:
+                  resword = &wordlist[112]; break;
+                case   346:
+                  resword = &wordlist[113]; break;
+                case   349:
+                  resword = &wordlist[114]; break;
+                case   351:
+                  resword = &wordlist[115]; break;
+                case   352:
+                  resword = &wordlist[116]; break;
+                case   356:
+                  resword = &wordlist[117]; break;
+                case   357:
+                  resword = &wordlist[118]; break;
+                case   361:
+                  resword = &wordlist[119]; break;
+                case   363:
+                  resword = &wordlist[120]; break;
+                case   364:
+                  resword = &wordlist[121]; break;
+                case   365:
+                  resword = &wordlist[122]; break;
+                case   366:
+                  resword = &wordlist[123]; break;
+                case   367:
+                  resword = &wordlist[124]; break;
+                case   373:
+                  resword = &wordlist[125]; break;
+                case   387:
+                  resword = &wordlist[126]; break;
+                case   396:
+                  resword = &wordlist[127]; break;
+                case   409:
+                  resword = &wordlist[128]; break;
+                case   411:
+                  resword = &wordlist[129]; break;
+                case   415:
+                  resword = &wordlist[130]; break;
+                case   417:
+                  resword = &wordlist[131]; break;
+                case   418:
+                  resword = &wordlist[132]; break;
+                case   422:
+                  resword = &wordlist[133]; break;
+                case   423:
+                  resword = &wordlist[134]; break;
+                case   429:
+                  resword = &wordlist[135]; break;
+                case   430:
+                  resword = &wordlist[136]; break;
+                case   433:
+                  resword = &wordlist[137]; break;
+                case   434:
+                  resword = &wordlist[138]; break;
+                case   435:
+                  resword = &wordlist[139]; break;
+                case   440:
+                  resword = &wordlist[140]; break;
+                case   443:
+                  resword = &wordlist[141]; break;
+                case   445:
+                  resword = &wordlist[142]; break;
+                case   446:
+                  resword = &wordlist[143]; break;
+                case   448:
+                  resword = &wordlist[144]; break;
+                case   451:
+                  resword = &wordlist[145];
+                  if (*str == *resword->name && !strcmp (str + 1, resword->name + 1)) return resword;
+                  resword = &wordlist[146];
+                  if (*str == *resword->name && !strcmp (str + 1, resword->name + 1)) return resword;
+                  return 0;
+                case   452:
+                  resword = &wordlist[147]; break;
+                case   460:
+                  resword = &wordlist[148]; break;
+                case   461:
+                  resword = &wordlist[149]; break;
+                case   462:
+                  resword = &wordlist[150]; break;
+                case   463:
+                  resword = &wordlist[151]; break;
+                case   466:
+                  resword = &wordlist[152]; break;
+                case   475:
+                  resword = &wordlist[153]; break;
+                case   483:
+                  resword = &wordlist[154]; break;
+                case   486:
+                  resword = &wordlist[155]; break;
+                case   487:
+                  resword = &wordlist[156]; break;
+                case   488:
+                  resword = &wordlist[157]; break;
+                case   489:
+                  resword = &wordlist[158]; break;
+                case   491:
+                  resword = &wordlist[159]; break;
+                case   494:
+                  resword = &wordlist[160]; break;
+                case   498:
+                  resword = &wordlist[161]; break;
+                case   499:
+                  resword = &wordlist[162]; break;
+                case   505:
+                  resword = &wordlist[163]; break;
+                case   512:
+                  resword = &wordlist[164]; break;
+                case   513:
+                  resword = &wordlist[165]; break;
+                case   521:
+                  resword = &wordlist[166]; break;
+                case   540:
+                  resword = &wordlist[167]; break;
+                case   543:
+                  resword = &wordlist[168]; break;
+                case   546:
+                  resword = &wordlist[169]; break;
+                case   547:
+                  resword = &wordlist[170]; break;
+                case   549:
+                  resword = &wordlist[171]; break;
+                case   551:
+                  resword = &wordlist[172]; break;
+                case   554:
+                  resword = &wordlist[173]; break;
+                case   557:
+                  resword = &wordlist[174]; break;
+                case   558:
+                  resword = &wordlist[175]; break;
+                case   568:
+                  resword = &wordlist[176]; break;
+                case   574:
+                  resword = &wordlist[177]; break;
+                case   576:
+                  resword = &wordlist[178]; break;
+                case   583:
+                  resword = &wordlist[179]; break;
+                case   587:
+                  resword = &wordlist[180]; break;
+                case   590:
+                  resword = &wordlist[181]; break;
+                case   591:
+                  resword = &wordlist[182]; break;
+                case   592:
+                  resword = &wordlist[183]; break;
+                case   596:
+                  resword = &wordlist[184]; break;
+                case   599:
+                  resword = &wordlist[185]; break;
+                case   600:
+                  resword = &wordlist[186]; break;
+                case   603:
+                  resword = &wordlist[187]; break;
+                case   604:
+                  resword = &wordlist[188]; break;
+                case   607:
+                  resword = &wordlist[189]; break;
+                case   617:
+                  resword = &wordlist[190]; break;
+                case   618:
+                  resword = &wordlist[191]; break;
+                case   622:
+                  resword = &wordlist[192]; break;
+                case   623:
+                  resword = &wordlist[193]; break;
+                case   624:
+                  resword = &wordlist[194]; break;
+                case   628:
+                  resword = &wordlist[195]; break;
+                case   636:
+                  resword = &wordlist[196]; break;
+                case   639:
+                  resword = &wordlist[197]; break;
+                case   641:
+                  resword = &wordlist[198]; break;
+                case   650:
+                  resword = &wordlist[199]; break;
+                case   652:
+                  resword = &wordlist[200]; break;
+                case   661:
+                  resword = &wordlist[201]; break;
+                case   664:
+                  resword = &wordlist[202]; break;
+                case   670:
+                  resword = &wordlist[203]; break;
+                case   672:
+                  resword = &wordlist[204]; break;
+                case   682:
+                  resword = &wordlist[205]; break;
+                case   685:
+                  resword = &wordlist[206]; break;
+                case   691:
+                  resword = &wordlist[207]; break;
+                case   697:
+                  resword = &wordlist[208]; break;
+                case   707:
+                  resword = &wordlist[209]; break;
+                case   709:
+                  resword = &wordlist[210]; break;
+                case   717:
+                  resword = &wordlist[211]; break;
+                case   720:
+                  resword = &wordlist[212]; break;
+                case   727:
+                  resword = &wordlist[213]; break;
+                case   730:
+                  resword = &wordlist[214]; break;
+                case   731:
+                  resword = &wordlist[215]; break;
+                case   745:
+                  resword = &wordlist[216]; break;
+                case   748:
+                  resword = &wordlist[217]; break;
+                case   750:
+                  resword = &wordlist[218]; break;
+                case   751:
+                  resword = &wordlist[219]; break;
+                case   756:
+                  resword = &wordlist[220]; break;
+                case   758:
+                  resword = &wordlist[221]; break;
+                case   762:
+                  resword = &wordlist[222]; break;
+                case   768:
+                  resword = &wordlist[223]; break;
+                case   771:
+                  resword = &wordlist[224]; break;
+                case   773:
+                  resword = &wordlist[225]; break;
+                case   775:
+                  resword = &wordlist[226]; break;
+                case   776:
+                  resword = &wordlist[227]; break;
+                case   777:
+                  resword = &wordlist[228]; break;
+                case   779:
+                  resword = &wordlist[229]; break;
+                case   791:
+                  resword = &wordlist[230]; break;
+                case   807:
+                  resword = &wordlist[231]; break;
+                case   814:
+                  resword = &wordlist[232]; break;
+                case   815:
+                  resword = &wordlist[233]; break;
+                case   830:
+                  resword = &wordlist[234]; break;
+                case   833:
+                  resword = &wordlist[235]; break;
+                case   834:
+                  resword = &wordlist[236]; break;
+                case   846:
+                  resword = &wordlist[237]; break;
+                case   849:
+                  resword = &wordlist[238]; break;
+                case   875:
+                  resword = &wordlist[239]; break;
+                case   909:
+                  resword = &wordlist[240]; break;
+                case   910:
+                  resword = &wordlist[241]; break;
+                case   912:
+                  resword = &wordlist[242]; break;
+                case   926:
+                  resword = &wordlist[243]; break;
+                case   931:
+                  resword = &wordlist[244]; break;
+                case   933:
+                  resword = &wordlist[245]; break;
+                case   944:
+                  resword = &wordlist[246]; break;
+                case   947:
+                  resword = &wordlist[247]; break;
+                case   982:
+                  resword = &wordlist[248]; break;
+                case   986:
+                  resword = &wordlist[249]; break;
+                case   989:
+                  resword = &wordlist[250]; break;
+                case  1004:
+                  resword = &wordlist[251]; break;
+                case  1007:
+                  resword = &wordlist[252]; break;
+                case  1018:
+                  resword = &wordlist[253]; break;
+                case  1019:
+                  resword = &wordlist[254]; break;
+                case  1023:
+                  resword = &wordlist[255]; break;
+                case  1035:
+                  resword = &wordlist[256]; break;
+                case  1036:
+                  resword = &wordlist[257]; break;
+                case  1039:
+                  resword = &wordlist[258]; break;
+                case  1068:
+                  resword = &wordlist[259]; break;
+                case  1077:
+                  resword = &wordlist[260]; break;
+                case  1082:
+                  resword = &wordlist[261]; break;
+                case  1086:
+                  resword = &wordlist[262]; break;
+                case  1104:
+                  resword = &wordlist[263]; break;
+                case  1105:
+                  resword = &wordlist[264]; break;
+                case  1109:
+                  resword = &wordlist[265]; break;
+                case  1138:
+                  resword = &wordlist[266]; break;
+                case  1152:
+                  resword = &wordlist[267]; break;
+                case  1162:
+                  resword = &wordlist[268]; break;
+                case  1165:
+                  resword = &wordlist[269]; break;
+                case  1167:
+                  resword = &wordlist[270]; break;
+                case  1168:
+                  resword = &wordlist[271]; break;
+                case  1182:
+                  resword = &wordlist[272]; break;
+                case  1194:
+                  resword = &wordlist[273]; break;
+                case  1207:
+                  resword = &wordlist[274]; break;
+                case  1216:
+                  resword = &wordlist[275]; break;
+                case  1217:
+                  resword = &wordlist[276]; break;
+                case  1227:
+                  resword = &wordlist[277]; break;
+                case  1242:
+                  resword = &wordlist[278]; break;
+                case  1271:
+                  resword = &wordlist[279]; break;
+                case  1274:
+                  resword = &wordlist[280]; break;
+                case  1283:
+                  resword = &wordlist[281]; break;
+                case  1301:
+                  resword = &wordlist[282]; break;
+                case  1302:
+                  resword = &wordlist[283]; break;
+                case  1321:
+                  resword = &wordlist[284]; break;
+                case  1324:
+                  resword = &wordlist[285]; break;
+                case  1339:
+                  resword = &wordlist[286]; break;
+                case  1342:
+                  resword = &wordlist[287]; break;
+                case  1345:
+                  resword = &wordlist[288]; break;
+                case  1372:
+                  resword = &wordlist[289]; break;
+                case  1422:
+                  resword = &wordlist[290]; break;
+                case  1448:
+                  resword = &wordlist[291]; break;
+                case  1546:
+                  resword = &wordlist[292]; break;
+                case  1606:
+                  resword = &wordlist[293]; break;
+                case  1654:
+                  resword = &wordlist[294]; break;
+                case  1765:
+                  resword = &wordlist[295]; break;
+                case  1808:
+                  resword = &wordlist[296]; break;
+                case  1875:
+                  resword = &wordlist[297]; break;
+                case  1877:
+                  resword = &wordlist[298]; break;
+                case  1936:
+                  resword = &wordlist[299]; break;
+                case  1989:
+                  resword = &wordlist[300]; break;
+                case  2153:
+                  resword = &wordlist[301]; break;
+                case  2224:
+                  resword = &wordlist[302]; break;
+                case  2383:
+                  resword = &wordlist[303]; break;
+                case  2448:
+                  resword = &wordlist[304]; break;
+                case  2491:
+                  resword = &wordlist[305]; break;
+                case  2821:
+                  resword = &wordlist[306]; break;
+                default: return 0;
+                }
+              if (*str == *resword->name && !strcmp (str + 1, resword->name + 1))
+                return resword;
+              return 0;
+            }
+         }
+    }
+  return 0;
+}
diff --git a/gcc/ch/lang-options.h b/gcc/ch/lang-options.h
new file mode 100644 (file)
index 0000000..984892b
--- /dev/null
@@ -0,0 +1,42 @@
+/* Definitions for switches for GNU CHILL.
+   Copyright (C) 1995, 1998 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, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+/* This is the contribution to the `lang_options' array in gcc.c for
+   CHILL.  */
+
+/* CYGNUS LOCAL - the format of this file has been changed to
+   allow cc1 to implement --help.  nickc/--help */
+
+DEFINE_LANG_NAME ("Chill")
+     
+  { "-lang-chill", "" },
+  { "-flocal-loop-counter", "" },
+  { "-fno-local-loop-counter", "Do not make seperate scopes for every 'for' loop"},
+  { "-fgrant-only", "Stop after successfully generating a grant file" },
+  { "-fchill-grant-only", "" },
+  { "-fold-strings", "Implement the 1984 Chill string semantics" },
+  { "-fno-old-strings", "" },
+  { "-fignore-case", "convert all idenitifers to lower case" },
+  { "-fno-ignore-case", "" },
+  { "-fpack", "Pack structures into available space"},
+  { "-fno-pack", "" },
+  { "-fspecial_UC", "Make special words be in uppercase" },
+  { "-fspecial_LC", "" },
+  { "-fruntime-checking", "" },
+  { "-fno-runtime-checking", "Disable runtime checking of parameters" },
diff --git a/gcc/ch/lex.h b/gcc/ch/lex.h
new file mode 100644 (file)
index 0000000..61c46b7
--- /dev/null
@@ -0,0 +1,98 @@
+/* Define constants for communication with the CHILL parser.
+   Copyright (C) 1992, 93, 1994 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, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+
+
+enum rid
+{
+  RID_UNUSED,  /* keep this one first, please */
+  RID_ALL,
+  RID_ASSERTFAIL,
+  RID_ASSOCIATION,
+  RID_BIN,
+  RID_BIT,
+  RID_BOOL,
+  RID_BOOLS,
+  RID_BYTE,
+  RID_CHAR,
+  RID_CHARS,
+  RID_DOUBLE,
+  RID_DURATION,
+  RID_DYNAMIC,
+  RID_ELSE,
+  RID_EMPTY,
+  RID_FALSE,
+  RID_FLOAT,
+  RID_GENERAL,
+  RID_IN,
+  RID_INLINE,
+  RID_INOUT,
+  RID_INSTANCE,
+  RID_INT,
+  RID_LOC,
+  RID_LONG,
+  RID_LONG_REAL,
+  RID_NULL,
+  RID_OUT,
+  RID_OVERFLOW,
+  RID_PTR,
+  RID_RANGE,
+  RID_RANGEFAIL,
+  RID_READ,
+  RID_REAL,
+  RID_RECURSIVE,
+  RID_SHORT,
+  RID_SIMPLE,
+  RID_TIME,
+  RID_TRUE,
+  RID_UBYTE,
+  RID_UINT,
+  RID_ULONG,
+  RID_UNSIGNED,
+  RID_USHORT,
+  RID_VOID,
+  RID_MAX /* Last element */
+};
+
+#define NORID RID_UNUSED
+
+#define RID_FIRST_MODIFIER RID_UNSIGNED
+
+/* The elements of `ridpointers' are identifier nodes
+   for the reserved type names and storage classes.
+   It is indexed by a RID_... value.  */
+extern tree ridpointers[(int) RID_MAX];
+
+extern char *token_buffer;     /* Pointer to token buffer.  */
+
+extern tree make_pointer_declarator PROTO((tree, tree));
+extern void reinit_parse_for_function PROTO((void));
+extern int yylex PROTO((void));
+
+extern tree default_grant_file;
+extern tree current_grant_file;
+
+extern tree current_seize_file;
+
+extern int chill_at_module_level;
+extern tree chill_initializer_name;
+
+extern void finish_chill_seizes ();
+
+extern void prepare_paren_colon PROTO((void));
diff --git a/gcc/ch/runtime/cardps.c b/gcc/ch/runtime/cardps.c
new file mode 100644 (file)
index 0000000..261241d
--- /dev/null
@@ -0,0 +1,99 @@
+/* Implement POWERSET runtime actions for CHILL.
+   Copyright (C) 1992,1993 Free Software Foundation, Inc.
+   Author: Wilfried Moser, et al
+
+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, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+#define __CHILL_LIB__
+
+#include "config.h"
+#include <stdio.h>
+#include "powerset.h"
+
+
+/*
+ * function __cardpowerset
+ *
+ * parameters:
+ *     ps              powerset
+ *     bitlength       length of powerset
+ *
+ * returns:
+ *     long            number of set bits
+ *
+ * exceptions:
+ *  none
+ *
+ * abstract:
+ *  returns the number of set bit's in a powerset
+ *
+ */
+
+/* bit_count[I] is number of '1' bits in I. */
+static
+const unsigned char __four_bit_count[16] = {
+    0, 1, 1, 2,
+    1, 2, 2, 3,
+    1, 2, 2, 3,
+    2, 3, 3, 4 };
+
+long
+__cardpowerset (ps, bitlength)
+     SET_WORD      *ps;
+     unsigned long  bitlength;
+{
+  unsigned long        count = 0;
+  if (bitlength <= SET_CHAR_SIZE)
+    {
+      register SET_CHAR        c = *((SET_CHAR *)ps);
+      /* count 4 bits at a time. */
+      while (c > 0)
+       {
+         count += __four_bit_count[c & 15];
+         c >>= 4;
+       }
+      return count;
+    }
+  else if (bitlength <= SET_SHORT_SIZE)
+    {
+      register SET_SHORT c = *((SET_SHORT *)ps);
+      /* count 4 bits at a time. */
+      while (c > 0)
+       {
+         count += __four_bit_count[c & 15];
+         c >>= 4;
+       }
+      return count;
+    }
+  else
+    {
+      register SET_WORD        *p = ps;
+      SET_WORD *endp = p + BITS_TO_WORDS(bitlength);
+    
+      while (p < endp)
+       {
+         register SET_WORD c = *p++;
+         /* count 4 bits at a time. */
+         while (c > 0)
+           {
+             count += __four_bit_count[c & 15];
+             c >>= 4;
+           }
+       }
+      return (count);
+    }
+}
diff --git a/gcc/ch/runtime/delaycase.c b/gcc/ch/runtime/delaycase.c
new file mode 100644 (file)
index 0000000..22db534
--- /dev/null
@@ -0,0 +1,220 @@
+/* Implement tasking-related runtime actions for CHILL.
+   Copyright (C) 1992,1993 Free Software Foundation, Inc.
+   Author: Wilfried Moser
+
+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, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+#include "rtltypes.h"
+#include "rts.h"
+
+extern void __cause_ex1 (char *ex, char *file, int lineno);
+
+EXCEPTION (delayfail);
+#define CAUSE_DELAYFAIL     __cause_ex1 ("delayfail", filename, lineno)
+
+EXCEPTION (notyetimplemented);
+#define CAUSE_NOTIMPLEMENTED   __cause_ex1 ("notyetimplemeyed", filename, lineno)
+
+/*
+ * function __delay_event
+ *
+ * parameters:
+ *     ev_got      pointer to location where to write the event got.
+ *     nevents     number of events in list
+ *     evptrs      array of event descriptors
+ *     priority    specified priority
+ *     insloc      pointer to resulting instance location
+ *     to          timeout value
+ *     filename    filename of caller
+ *     lineno      linenumber of caller
+ *
+ * returns:
+ *     int         0 .. success
+ *                 1 .. timed out
+ *
+ * exceptions:
+ *     delayfail
+ *
+ * abstract:
+ *     implement the CHILL DELAY and DELAY CASE actions.
+ *
+ */
+
+int
+__delay_event (ev_got, nevents, evptrs, priority, to, insloc, filename, lineno)
+     void         **ev_got;
+     int            nevents;
+     Event_Descr   *evptrs;
+     int            priority;
+     void          *to;
+     INSTANCE      *insloc;
+     char          *filename;
+     int            lineno;
+{
+  int             i, already_done = 0;
+  Event_Queue    *start_list = 0;
+  Event_Queue   **retval = 0;
+  Event_Queue    *wrk;
+  int            timed_out = 0;
+  
+  /* check if all specified event queues have enough space left
+     to perform the delay */
+  for (i = 0; i < nevents; i++)
+    {
+      Event_Queue  *e;
+      unsigned long cnt = 0;
+      int j, have_done = 0;
+
+      if (evptrs[i].maxqueuelength == 0)
+       CAUSE_DELAYFAIL;
+      else if (evptrs[i].maxqueuelength == (unsigned long)-1L)
+       /* infinite length */
+       continue;
+
+      /* check if we already have processed this one, that means, this
+         event is mentioned more then once */
+      for (j = 0; j < i; j++)
+        {
+          if (evptrs[i].ev == evptrs[j].ev)
+           {
+              have_done = 1;
+              break;
+           }
+        }
+      if (have_done)
+       continue;
+      
+      memcpy (&e, evptrs[i].ev, sizeof (Event_Queue *));
+      while (e)
+       {
+         cnt++;
+         e = e->forward;
+       }
+      if (cnt >= evptrs[i].maxqueuelength)
+       CAUSE_DELAYFAIL;
+    }
+
+  for (i = 0; i < nevents; i++)
+    {
+      /* queue that stuff on each event */
+      Event_Queue      *wrk;
+      Event_Queue      *ev;
+      Event_Queue      *prev_queue_entry = 0;
+      Event_Queue      *prev_list_entry;
+      int               j, have_done = 0;
+      
+      /* check for this event already processed */
+      for (j = 0; j < i; j++)
+       {
+          if (evptrs[i].ev == evptrs[j].ev)
+           {
+              have_done = 1;
+              break;
+           }
+       }
+      if (have_done)
+       continue;
+
+      memcpy (&ev, &evptrs[i].ev, sizeof (Event_Queue *));
+      MALLOC (wrk, sizeof (Event_Queue));
+      memset (wrk, 0, sizeof (Event_Queue));
+
+      wrk->priority = priority;
+      wrk->this = THIS;
+      wrk->listhead = evptrs[i].ev;
+
+      /* search for the place to queue this entry in */
+      while (ev->forward != 0 && ev->priority >= priority)
+       {
+         prev_queue_entry = ev;
+         ev = ev->forward;
+       }
+
+      /* ready to put entry into queue */
+      if (ev->forward == 0 || prev_queue_entry == 0)
+       {
+         /* beginning or end of the list */
+         wrk->forward = ev->forward;
+         ev->forward = wrk;
+       }
+      else
+       {
+         /* this is somewhere in the middle */
+         wrk->forward = prev_queue_entry->forward;
+         prev_queue_entry->forward = wrk;
+       }
+
+      /* queue it into list */
+      wrk->startlist = start_list;
+      if (! start_list)
+       {
+         /* we are the first in the list */
+         start_list = wrk;
+         prev_list_entry = wrk;
+         wrk->startlist = start_list;
+       }
+      else
+       {
+         prev_list_entry->chain = wrk;
+         prev_list_entry = wrk;
+       }
+    }
+
+  /* tell runtime system to delay that process */
+  timed_out = __delay_this (wait_event_delay, to, filename, lineno);
+  if (timed_out)
+    {
+      /* we have to remove the entries from the queue's */
+      wrk = start_list;
+      while (wrk)
+        {
+         Event_Queue *tmp = (Event_Queue *)wrk->listhead;
+         
+         while (tmp->forward != wrk)
+           tmp = tmp->forward;
+         tmp->forward = wrk->forward;
+         wrk = wrk->chain;
+        }
+    }
+  
+  wrk = start_list;
+  while (wrk)
+    {
+      Event_Queue  *tmp;
+
+      if (wrk->is_continued && ! already_done)
+       {
+         already_done = 1;
+         retval = wrk->listhead;
+         if (insloc && !timed_out)
+           {
+             insloc->ptype = wrk->who_continued.ptype;
+             insloc->pcopy = wrk->who_continued.pcopy;
+           }
+       }
+      tmp = wrk->chain;
+      FREE (wrk);
+      wrk = tmp;
+    }
+  if (!timed_out && ev_got)
+    *ev_got = (void *)retval;
+  return timed_out;
+}
+
+/* force function print_event to be linked */
+extern void __print_event ();
+static EntryPoint pev = __print_event;
diff --git a/gcc/ch/runtime/eoln.c b/gcc/ch/runtime/eoln.c
new file mode 100644 (file)
index 0000000..60bb0f0
--- /dev/null
@@ -0,0 +1,30 @@
+/* Implement Input/Output runtime actions for CHILL.
+   Copyright (C) 1992,1993 Free Software Foundation, Inc.
+   Author: Wilfried Moser, et al
+
+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, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+#include "fileio.h"
+
+Boolean
+__eoln( Text_Mode* the_text, char* file, int line )
+{
+  if( !the_text )
+    CHILLEXCEPTION( file, line, EMPTY, NULL_TEXT );
+
+  return the_text->actual_index == the_text->access_sub->reclength - 2;
+}
diff --git a/gcc/ch/runtime/eqstr.c b/gcc/ch/runtime/eqstr.c
new file mode 100644 (file)
index 0000000..0b94665
--- /dev/null
@@ -0,0 +1,54 @@
+/* Implement string-related runtime actions for CHILL.
+   Copyright (C) 1992,1993 Free Software Foundation, Inc.
+   Author: Bill Cox
+
+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, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+extern void cause_exception (char *exname, char *file, int lineno);
+
+/*
+ * function __eqstring
+ *
+ * parameters:
+ *     S1 - pointer to left string
+ *     LEN1 - length of left string
+ *     S2 - pointer to right string
+ *     LEN2 - length of right string
+ *
+ * returns:
+ *     1 if strings equal, 0 if not
+ *
+ * exceptions:
+ *     none
+ *
+ * abstract:
+ *     compares two character strings for equality
+ *
+ */
+
+int
+__eqstring (s1, len1, s2, len2)
+     char *s1;
+     int len1;
+     char *s2;
+     int len2;
+{
+  if (len1 != len2)
+    return 0;
+
+  return ! memcmp (s1, s2, len1);
+}
diff --git a/gcc/ch/runtime/existing.c b/gcc/ch/runtime/existing.c
new file mode 100644 (file)
index 0000000..93d9eb5
--- /dev/null
@@ -0,0 +1,31 @@
+/* Implement Input/Output runtime actions for CHILL.
+   Copyright (C) 1992,1993 Free Software Foundation, Inc.
+   Author: Wilfried Moser, et al
+
+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, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+#include "fileio.h"
+
+Boolean
+__existing( Association_Mode* the_assoc, char* file, int line )
+{
+  if( !the_assoc )
+    CHILLEXCEPTION( file, line, EMPTY, NULL_ASSOCIATION );
+  if( !TEST_FLAG(the_assoc, IO_ISASSOCIATED) )
+    CHILLEXCEPTION( file, line, NOTASSOCIATED, IS_NOT_ASSOCIATED );
+  return TEST_FLAG(the_assoc, IO_EXISTING ) ? True : False;
+}
diff --git a/gcc/ch/runtime/format.c b/gcc/ch/runtime/format.c
new file mode 100644 (file)
index 0000000..b0d70af
--- /dev/null
@@ -0,0 +1,2186 @@
+/* Implement Input/Output runtime actions for CHILL.
+   Copyright (C) 1992,1993 Free Software Foundation, Inc.
+   Author: Wilfried Moser, et al
+
+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, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+#include <limits.h>
+#include <string.h>
+#include <ctype.h>
+#include <setjmp.h>
+#include <float.h>
+#include <math.h>
+#include <stdlib.h>
+#if _TEXTIO_DEBUG_
+#include <stdio.h>
+#endif
+
+#include "bitstring.h"
+#include "auxtypes.h"
+#include "iomodes.h"
+#include "format.h"
+#include "fileio.h"
+#include "ioerror.h"
+
+#define CH_BYTE_MIN   0xffffff80L
+#define CH_BYTE_MAX   0x0000007fL
+#define CH_UBYTE_MAX  0x000000ffUL
+#define CH_INT_MIN    0xffff8000L
+#define CH_INT_MAX    0x00007fffL
+#define CH_UINT_MAX   0x0000ffffUL
+#define CH_LONG_MIN   0x80000000L
+#define CH_LONG_MAX   0x7fffffffL
+#define CH_ULONG_MAX  0xffffffffUL
+
+#ifndef M_LN2
+#define M_LN2   0.69314718055994530942
+#endif
+#ifndef M_LN10
+#define M_LN10          2.30258509299404568402
+#endif
+
+#define DMANTDIGS  (1 + (int)(DBL_MANT_DIG * M_LN2 / M_LN10))
+#define FMANTDIGS  (1 + (int)(FLT_MANT_DIG * M_LN2 / M_LN10))
+
+/* float register length */
+#define MAXPREC 40
+
+#define LET 0x0001
+#define BIN 0x0002
+#define DEC 0x0004
+#define OCT 0x0008
+#define HEX 0x0010
+#define USC 0x0020
+#define BIL 0x0040
+#define SPC 0x0080
+#define SCS 0x0100
+#define IOC 0x0200
+#define EDC 0x0400
+#define CVC 0x0800
+
+#define isDEC(c)  ( chartab[(c)] & DEC )
+#define isCVC(c)  ( chartab[(c)] & CVC )
+#define isEDC(c)  ( chartab[(c)] & EDC )
+#define isIOC(c)  ( chartab[(c)] & IOC )
+#define isUSC(c)
+#define isXXX(c,XXX)  ( chartab[(c)] & XXX )
+
+/*
+ *  local definitions
+ */
+
+static
+short int chartab[256] = {
+  0, 0, 0, 0, 0, 0, 0, 0, 
+  0, SPC, SPC, SPC, SPC, SPC, 0, 0, 
+
+  0, 0, 0, 0, 0, 0, 0, 0, 
+  0, 0, 0, 0, 0, 0, 0, 0, 
+
+  SPC, IOC, 0, 0, 0, 0, 0, 0, 
+  SCS, SCS, SCS, SCS+IOC, SCS, SCS+IOC, SCS, SCS+IOC, 
+  BIN+OCT+DEC+HEX, BIN+OCT+DEC+HEX, OCT+DEC+HEX, OCT+DEC+HEX, OCT+DEC+HEX,
+     OCT+DEC+HEX, OCT+DEC+HEX, OCT+DEC+HEX, 
+  DEC+HEX, DEC+HEX, SCS, SCS, SCS+EDC, SCS+IOC, SCS+EDC, IOC, 
+
+  0, LET+HEX+BIL, LET+HEX+BIL+CVC, LET+HEX+BIL+CVC, LET+HEX+BIL, LET+HEX, 
+     LET+HEX+CVC, LET, 
+  LET+BIL+CVC, LET, LET, LET, LET, LET, LET, LET+CVC, 
+
+  LET, LET, LET, LET, LET+EDC, LET, LET, LET,
+  LET+EDC, LET, LET, SCS, 0, SCS, 0, USC, 
+
+  0, LET+HEX, LET+HEX, LET+HEX, LET+HEX, LET+HEX, LET+HEX, LET, 
+  LET, LET, LET, LET, LET, LET, LET, LET, 
+
+  LET, LET, LET, LET, LET, LET, LET, LET,
+  LET, LET, LET, 0, 0, 0, 0, 0 
+};
+
+typedef enum {
+  FormatText, FirstPercent, RepFact, ConvClause, EditClause, ClauseEnd,
+  AfterWidth, FractWidth, FractWidthCont, ExpoWidth, ExpoWidthCont, 
+  ClauseWidth, CatchPadding, LastPercent
+} fcsstate_t;
+
+#define CONVERSIONCODES "CHOBF"
+typedef enum {
+  DefaultConv, HexConv, OctalConv, BinaryConv, ScientConv
+} convcode_t;
+
+static
+short int base[4] = { 10, 16, 8, 2 };
+
+static
+short int dset[4] = { DEC, HEX, OCT, BIN };
+
+#define EDITCODES "X<>T"
+typedef enum {
+  SpaceSkip, SkipLeft, SkipRight, Tabulation
+} editcode_t;
+
+#define IOCODES "/+-?!="
+typedef enum {
+  NextRecord, NextPage, CurrentLine, Prompt, Emit, EndPage
+} iocode_t;
+
+typedef enum { 
+  ConvAct, EditAct, IOAct
+} acttype_t;
+
+typedef enum {
+  NormalEnd, EndAtParen, TextFailEnd 
+} formatexit_t;
+
+static
+double ep_1[10] = {
+  1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9 };
+static
+double ep_10[10] = {
+  1e0, 1e10, 1e20, 1e30, 1e40, 1e50, 1e60, 1e70, 1e80, 1e90 };
+static
+double ep_100 = 1e100;
+
+/* float register */
+static
+unsigned char floatdig[MAXPREC];
+
+/*
+ *  global io variables
+ */
+
+static Text_Mode*      textptr = NULL;
+static VarString*      textrecptr;
+
+static int             actual_index;
+static int             maximum_index;
+static int             iolist_index;
+
+static __tmp_IO_list*  iolistptr;
+static int             iolistlen;
+static char*           iostrptr;
+static int             iostrlen;
+
+
+static convcode_t     convcode;
+static editcode_t     editcode;
+static iocode_t       iocode;
+static unsigned long  repetition;
+static Boolean        leftadjust;
+static Boolean        overflowev;
+static Boolean        dynamicwid;
+static Boolean        paddingdef;
+static char           paddingchar;
+static Boolean        fractiondef;
+static unsigned long  fractionwidth;
+static Boolean        exponentdef;
+static unsigned long  exponentwidth;
+static unsigned long  clausewidth;
+static signed long    textindex;
+  
+static
+__tmp_IO_enum_table_type bool_tab[] = 
+   { { 0, "FALSE" }, 
+     { 1, "TRUE"  },
+     { 0 , NULL   }  };
+
+/*
+ * case insensitive compare: s1 is zero delimited, s2 has n chars
+ */
+static
+int casncmp( const char* s1, const char* s2, int n )
+{
+  int res = 0;
+  while( n-- )
+  {
+    if( (res = toupper(*s1++) - toupper(*s2++)) ) 
+      return res;
+  }
+  return *s1;
+}
+
+/*
+ * skip spaces with blank equal to tab
+ */
+static
+int skip_space( int limit )
+{
+  int skipped = 0;
+  while( actual_index < limit &&
+         (iostrptr[actual_index] == ' ' || iostrptr[actual_index] == '\t' ) )
+  {
+    actual_index++;
+    skipped++;
+  }
+  return skipped;
+}
+
+/*
+ * skip leading pad characters
+ */
+static
+int skip_pad( int limit )
+{
+  int skipped = 0;
+  while( actual_index < limit && iostrptr[actual_index] == paddingchar )
+  {
+    actual_index++;
+    skipped++;
+  }
+#if _TEXTIO_DEBUG_
+  printf( "skipping '%c' until %d: %d\n", paddingchar, limit, skipped );
+#endif
+  return skipped;
+}
+
+/*
+ * backup trailing pad characters
+ */
+static
+int piks_pad( int start, int limit )
+{
+  int skipped = 0;
+  while( start >/***=*/ limit && iostrptr[--start] == paddingchar )
+  {
+    skipped++;
+  }
+#if _TEXTIO_DEBUG_
+  printf( "piksing '%c' from %d until %d: %d\n", 
+          paddingchar, start, limit, skipped );
+#endif
+  return skipped;
+}
+
+/*
+ * parse an integer
+ */
+static
+int parse_int( int limit, int SET, int base, 
+               unsigned long* valptr, int* signptr )
+{
+  int           parsed = actual_index;
+  Boolean       digits = False;
+  unsigned long value  = 0;
+  char          curr;
+  int           dig;
+
+  if( actual_index >= limit )
+    IOEXCEPTION( TEXTFAIL, NO_CHARS_FOR_INT );
+  *signptr = +1;
+  if( iostrptr[actual_index] == '+' )
+    actual_index++;
+  else
+    if( iostrptr[actual_index] == '-' )
+    {  *signptr = -1;
+       actual_index++;
+    }
+
+  for( ; actual_index < limit; actual_index++ )
+  {
+    curr = iostrptr[actual_index];
+    if( curr == '_' ) continue;
+    if( isXXX(curr,SET) )
+    {
+      digits = True;
+      dig = curr <= '9' ? curr - '0' : toupper(curr) - 'A' + 10;
+      if( value > (ULONG_MAX - dig)/base )
+        IOEXCEPTION( TEXTFAIL, INT_VAL_OVERFLOW );
+      value = value*base + dig;
+      continue;
+    }
+    break;
+  }
+  if( !digits )
+    IOEXCEPTION( TEXTFAIL, NO_DIGITS_FOR_INT );
+
+  *valptr = value;
+#if _TEXTIO_DEBUG_
+  printf( "parsing for int until %d, base %d: %u\n", limit, base, value );
+#endif
+  return actual_index - parsed;
+}
+
+static
+double
+make_float( int dexp, int sign )
+{
+  double value = atof( floatdig );
+#if _TEXTIO_DEBUG_
+  printf( " value = %25.20e, dexp = %d\n", value, dexp );
+#endif
+  while( dexp >= 100 )
+    value *= ep_100, dexp -= 100;
+  if( dexp >= 10 )
+    value *= ep_10[dexp/10], dexp %= 10;
+  if( dexp > 0 )
+    value *= ep_1[dexp];
+
+  while( dexp <= -100 )
+    value /= ep_100, dexp += 100;
+  if( dexp <= -10 )
+    value /= ep_10[-dexp/10], dexp %= 10;
+  if( dexp < 0 )
+    value /= ep_1[-dexp];
+
+  return  sign ? -value : value;
+}
+
+/* %C -> fixed point   [+|-]<digit>+[.<digit>*]  */
+static
+int parse_fixedpoint( int limit, double* valptr )
+{
+  int           parsed = actual_index;
+  Boolean       digits = False;
+  int           sdig = 0;
+  double        value;
+  char          curr;
+  int           sign = False;
+  int           expo = 0;
+
+  if( actual_index >= limit )
+    IOEXCEPTION( TEXTFAIL, NO_CHARS_FOR_FLOAT );
+  if( iostrptr[actual_index] == '+' )
+    actual_index++;
+  else
+    if( iostrptr[actual_index] == '-' )
+    {
+       sign = True;
+       actual_index++;
+    }
+
+  floatdig[0] = '.';
+  for( ; actual_index < limit; actual_index++ )
+  {
+    curr = iostrptr[actual_index];
+    if( ! isDEC(curr) )
+      break;
+    digits = True;
+    if( sdig < MAXPREC - 1 )
+    {
+      if( sdig || curr != '0' )
+      {
+        floatdig[++sdig] = curr;
+        expo++;
+      }
+    }
+    else
+      if( sdig )
+        expo++;
+  }
+  if( digits && curr == '.' )
+  { 
+    actual_index++;
+    for( ; actual_index < limit; actual_index++ )
+    {
+      curr = iostrptr[actual_index];
+      if( !isDEC(curr) )
+        break;
+      if( sdig < MAXPREC - 1 )
+      {
+        if( sdig || curr != '0' )
+          floatdig[++sdig] = curr;
+        else
+          expo--;
+      }
+    }
+  }
+  floatdig[++sdig] = '\0';
+
+  if( !digits )
+    IOEXCEPTION( TEXTFAIL, NO_DIGITS_FOR_FLOAT );
+
+  *valptr = make_float( expo, sign);
+  return actual_index - parsed;
+}
+
+
+typedef enum {
+  s_sign, s_dig, s_period, s_fraca, s_fracb, s_expo, s_exposign, 
+  s_expoa, s_expob }
+scient_t;
+
+/* %C -> scientific   [+|-]<digit>[.<digit>*]E[=|-]<digit>+  */
+static
+int parse_scientific( int limit, double* valptr, double dmin, double dmax )
+{
+  int           parsed = actual_index;
+  int           sdig = 0;
+  char          curr;
+  double        value;
+  int           sign = False;
+  int           expo = 0;           
+  int           expo_sign = +1;
+
+  scient_t      state = s_sign;  
+
+  if( actual_index >= limit )
+    IOEXCEPTION( TEXTFAIL, NO_CHARS_FOR_FLOAT );
+
+  floatdig[0] = '.';
+  for( ; actual_index < limit; actual_index++ )
+  {
+    curr = iostrptr[actual_index];
+    switch( state )
+    {
+    case s_sign:
+      if( iostrptr[actual_index] == '+' )
+      {
+        state = s_dig;
+        break;
+      }
+      if( iostrptr[actual_index] == '-' )
+      {
+        sign = True;
+        state = s_dig;
+        break;
+      }
+      /* fall through - no break */
+    case s_dig:
+      if( isDEC(curr) && curr > '0' )
+      {
+        floatdig[++sdig] = curr;
+        state = s_period;
+        break;
+      }
+      IOEXCEPTION( TEXTFAIL, NO_DIGITS_FOR_FLOAT );
+    case s_period:
+      if( curr == '.' )
+      {
+        state = s_fraca;
+        break;
+      }
+      if( curr == 'E' )
+      {
+        state = s_exposign;
+        break;
+      }
+      IOEXCEPTION( TEXTFAIL, NO_EXPONENT );
+    case s_fraca:
+      if( isDEC(curr) )
+      {
+        floatdig[++sdig] = curr;
+        state = s_fracb;
+        break;
+      }
+      IOEXCEPTION( TEXTFAIL, NO_DIGITS_FOR_FLOAT );
+    case s_fracb:
+      if( isDEC(curr) )
+      {
+        if( sdig < MAXPREC - 1 )
+          floatdig[++sdig] = curr;
+        break;
+      }
+      if( curr == 'E' )
+      {
+        state = s_exposign;
+        break;
+      }
+      IOEXCEPTION( TEXTFAIL, NO_EXPONENT );
+    case s_exposign:
+      if( iostrptr[actual_index] == '+' )
+      {
+        state = s_expoa;
+        break;
+      }
+      if( iostrptr[actual_index] == '-' )
+      {
+        expo_sign = -1;
+        state = s_expoa;
+        break;
+      }
+    case s_expoa:
+      if( isDEC(curr) )
+      {
+        expo = curr - '0';
+        state = s_expob;
+        break;
+      }
+      IOEXCEPTION( TEXTFAIL, NO_EXPONENT );
+    case s_expob:
+      expo = expo*10 + (curr - '0');
+      if( expo > 1000 )
+        IOEXCEPTION( TEXTFAIL, REAL_OVERFLOW );
+    }
+  }
+  if( state != s_expob ) 
+    IOEXCEPTION( TEXTFAIL, NO_EXPONENT );
+
+  expo *= expo_sign;
+  expo++;
+
+  floatdig[++sdig] = '\0';
+
+  *valptr = make_float( expo, sign );
+  return actual_index - parsed;
+}
+
+
+static
+int parse_set( int limit, __tmp_IO_enum_table_type* tabptr, 
+               unsigned long* valptr )
+{
+  int    parsed = actual_index;
+  char   curr;
+  __tmp_IO_enum_table_type* etptr;
+
+  if( actual_index >= limit )
+    IOEXCEPTION( TEXTFAIL, NO_CHARS_FOR_SET );
+
+  curr = iostrptr[actual_index];
+  if( isXXX(curr,LET+USC) )
+    actual_index++;
+  else
+    IOEXCEPTION( TEXTFAIL, NO_CHARS_FOR_SET );
+
+  for( ; actual_index < limit; actual_index++ )
+  {    
+    if( ! isXXX(iostrptr[actual_index],LET+DEC+USC) )
+      break;
+  }
+
+  if( tabptr )
+     while( tabptr->name )
+     {
+       if( !casncmp( tabptr->name, &iostrptr[parsed], actual_index-parsed ) )
+       {
+         *valptr = tabptr->value;
+#if _TEXTIO_DEBUG_
+         printf( "parsing set value until %d: %u\n", limit, tabptr->value );
+#endif
+         return actual_index - parsed;         
+       }
+       tabptr++;
+     }
+  IOEXCEPTION( TEXTFAIL, SET_CONVERSION_ERROR ); 
+}
+
+static
+int parse_bit( int limit, char* bitptr )
+{
+  int parsed = actual_index;
+  int i = 0;
+  char curr;
+
+  if( actual_index >= limit )
+    IOEXCEPTION( TEXTFAIL, NO_CHARS_FOR_BOOLS );
+
+  for( ; actual_index < limit; actual_index++ )
+  {
+    curr = iostrptr[actual_index] - '0';
+    if( curr == 0 || curr == 1 )
+      /* __setbitinset( i++, bitptr, limit, curr ); */
+      __setbitpowerset (bitptr, limit, 0, i++, curr, __FILE__, __LINE__);
+    else
+      break;
+  }
+  return actual_index - parsed;
+}
+
+static
+char* myultoa( unsigned long ul, char* buf, int base )
+{
+  char*         res = buf;
+  unsigned long h = ul/base;
+  unsigned long q = 1;
+
+  while( h >= q ) q *= base;
+  while( q > 0 )
+  {
+    *buf++ = "0123456789ABCDEF"[ul/q];
+    ul %= q;
+    q /= base;
+  }
+  *buf++ = '\0';
+  return res;
+}
+
+/*
+ *  convert a bit string from src, bit offset up to len
+ */
+static
+char* bitput( char* dst, char* src, int offset, int len )
+{
+  char* res = dst;
+  int i;
+  for( i = offset; i < len; i++ )
+  {
+    *dst++ = __inpowerset( i, src, len, 0 ) ? '1' : '0';
+  }
+  return res;
+}
+
+/*
+ * dround: round decimal register *digptr starting at digit mdigs,
+ *         on carry advance begin of digit sequence and bump exponent
+ */ 
+static
+char*
+dround( char* digptr, int mdigs, int* deptr )
+{
+  int carry;
+#if _TEXTIO_DEBUG_
+  printf( "Rounding from %d\n", mdigs );
+#endif
+  if( digptr[mdigs] >= 5 )
+  {
+    carry = 1;
+    while( carry )
+    {
+      digptr[--mdigs]++;
+      if( digptr[mdigs] >= 10 )
+        digptr[mdigs] = 0;
+      else
+        carry = 0;
+    }
+  }
+  if( mdigs < 0 )
+  {
+    digptr[--mdigs] = 1;
+    (*deptr)++;
+    return digptr - 1;
+  }
+  else
+    return digptr;
+}
+
+/*
+ * mydtoa: convert val with a precision of mantdigs to a decimal fraction
+ *         first digit is at **fstdiptr, decimal exponent is at *deptr
+ */
+static
+char*
+mydtoa( double val, int mantdigs, int* deptr, int* sgnptr )
+{
+  double m;
+  int be;
+  int de = -1;
+  int fstdig = 0;
+  int idig; 
+  char* digptr = floatdig+2;
+
+  floatdig[0] = floatdig[1] = 0;
+
+  if( val < 0 ) 
+    *sgnptr = -1, val = fabs( val );
+  else
+    *sgnptr = +1;
+
+  /* split the value */
+  m = frexp( val, &be ) * 10.0;
+
+  /* 5.0 <= m < 10.0 */
+  while( be > 0 )
+  {
+    de++; be--; m /= 5.0;
+    if( m < 1.0 )
+      m *= 10.0, de--;
+  }
+  while( be < 0 )
+  {
+    de--; be++; m *= 5.0;
+    if( m >= 10.0 )
+      m /= 10.0, de++;
+  }
+
+  for( idig = 0; idig < mantdigs; idig++ )
+  {
+    digptr[idig] = (int)m;
+    m = (m - digptr[idig])*10.0;
+  }
+  digptr[idig] = (int)m;
+
+  *deptr = de;
+  return dround( digptr, mantdigs, deptr );
+}
+
+#define PUT(c) \
+  { if( ifst <= ++iprt && iprt <= ilst ) *dst++ = c; }
+
+static
+char*
+fixput( char* dst, char* src, 
+        int ifst, int ilst, 
+        int sign, int fst, int lst, 
+        int nid, int nfd )
+{
+  char* dstsav = dst;
+  int idig;
+  int iprt = 0;
+
+  if( sign < 0 )
+    PUT( '-' );
+  for( idig = nid; idig >= -nfd; idig-- )
+  {
+    if (idig == -1)
+      PUT( '.' );
+    PUT( idig > fst || lst >= idig ? '0': '0' + *src++ );
+  }
+  return dstsav;
+}
+
+static
+char*
+sciput( char* dst, char* src, char* expbeg,
+        int ifst, int ilst, 
+        int sign, int de, int expwid )
+{
+  char* dstsav = dst;
+  int iprt = 0;
+  int nfd = fractionwidth;
+  int explen = strlen( expbeg );
+
+  if( sign < 0 )
+    PUT( '-' );
+  PUT( '0' + *src++ );
+  PUT( '.' );
+
+  while( nfd-- )
+    PUT( '0' + *src++ );
+  PUT( 'E' );
+  PUT( de >= 0 ? '+' : '-' );
+  while( expwid > explen )
+  {
+    PUT( '0' );
+    expwid--;
+  }
+  while( explen-- )
+    PUT( *expbeg++ );
+  return dstsav;
+}
+
+/*
+ *  handle dynamic field width
+ */ 
+static
+get_field_width( void )
+{
+  unsigned long  width;
+  unsigned long  ulongval;
+           long  longval;
+  __tmp_IO_list  io;
+   
+
+  if( ++iolist_index > iolistlen )
+    IOEXCEPTION( TEXTFAIL, IOLIST_EXHAUSTED );  
+
+  io = *iolistptr++;
+
+  /* must be integer, >= 0 */
+  switch( io.__descr )
+  {
+  case __IO_ByteVal:
+    longval = io.__t.__valbyte; 
+    goto signed_fieldwidth;
+  case __IO_UByteVal:
+    width = io.__t.__valubyte; 
+    goto unsigned_fieldwidth;
+  case __IO_IntVal:
+    longval = io.__t.__valint; 
+    goto signed_fieldwidth;
+  case __IO_UIntVal:
+    width = io.__t.__valuint; 
+    goto unsigned_fieldwidth;
+  case __IO_LongVal:
+    longval = io.__t.__vallong; 
+    goto signed_fieldwidth;
+  case __IO_ULongVal:
+    width = io.__t.__valulong; 
+    goto unsigned_fieldwidth;
+  case __IO_ByteLoc:
+    longval = *(signed char*)io.__t.__locint; 
+    goto signed_fieldwidth;
+  case __IO_UByteLoc:
+    width = *(unsigned char*)io.__t.__locint; 
+    goto unsigned_fieldwidth;
+  case __IO_IntLoc:
+    longval = *(signed short*)io.__t.__locint; 
+    goto signed_fieldwidth;
+  case __IO_UIntLoc:
+    width = *(unsigned short*)io.__t.__locint; 
+    goto unsigned_fieldwidth;
+  case __IO_LongLoc:
+    longval = *(signed long*) io.__t.__locint; 
+    goto signed_fieldwidth;
+  case __IO_ULongLoc:
+    width = *(unsigned long*)io.__t.__locint; 
+    goto unsigned_fieldwidth;
+  default:
+    IOEXCEPTION( TEXTFAIL, NON_INT_FIELD_WIDTH );
+  }
+
+signed_fieldwidth: ;
+  if( longval < 0 )
+    IOEXCEPTION( TEXTFAIL, NEGATIVE_FIELD_WIDTH );
+  width = longval;
+
+unsigned_fieldwidth: ;
+  return width;
+}
+
+
+static
+void inpconv( void )
+{
+  __tmp_IO_list  io;
+  int            width;
+  int            limit;
+  int            skiplim;
+  int            skipped;
+  int            bypass;
+  int            parsed;
+  Boolean        fixedchars;
+  int            fixedlen;
+  unsigned char  curr;
+  double         dval;
+  float          fval;
+
+  __tmp_IO_long  lval;
+  int            sign;
+  unsigned long  umin;
+  unsigned long  umax;
+    signed long  smin;
+    signed long  smax;
+  int            ilen;
+  short unsigned slen;
+  __tmp_IO_enum_table_type* settabptr; 
+
+  while( repetition-- )
+  {
+    if( ++iolist_index > iolistlen )
+      IOEXCEPTION( TEXTFAIL, IOLIST_EXHAUSTED );  
+
+    io = *iolistptr++;
+
+    if( dynamicwid )
+      width = get_field_width();
+    else
+      width = clausewidth;
+
+    bypass = skipped = 0;
+    if( width )
+    {
+      if( actual_index + width > iostrlen )
+        IOEXCEPTION( TEXTFAIL, NOT_ENOUGH_CHARS );
+
+      switch(io.__descr)
+      {
+      case __IO_CharLoc:
+      case __IO_CharRangeLoc:
+        fixedchars = True;
+        fixedlen = 1;
+        break;
+      case __IO_CharStrLoc:
+        fixedchars = True;
+        fixedlen = io.__t.__loccharstring.string_length;
+        break;
+      default:
+        fixedchars = False;
+        break;
+      }
+         
+      if( leftadjust )
+      {
+        skiplim = fixedchars ? actual_index + fixedlen
+                             : actual_index;
+        bypass = skipped = piks_pad( actual_index + width, skiplim );
+      }
+      else
+      {
+        skiplim = fixedchars ? actual_index + width - fixedlen
+                             : actual_index + width;
+        skipped = skip_pad( skiplim );
+      }
+      width -= skipped;
+      limit = actual_index + width;
+    }
+    else
+    { /* free format */
+      if( paddingdef || !( io.__descr == __IO_CharLoc ||
+                           io.__descr == __IO_CharRangeLoc || 
+                           io.__descr == __IO_CharStrLoc ||
+                           io.__descr == __IO_CharVaryingLoc ) )
+        if( paddingchar == ' ' || paddingchar == '\t' )
+          skip_space( iostrlen );
+        else
+          skip_pad( iostrlen );
+      limit = iostrlen;
+    }
+
+    switch( io.__descr )
+    {
+    case __IO_ByteLoc:
+      ilen = 1;
+      smin = CH_BYTE_MIN;
+      smax = CH_BYTE_MAX;
+      goto parse_signed_int;
+    case __IO_UByteLoc:
+      ilen = 1;
+      umin = 0;
+      umax = CH_UBYTE_MAX;
+      goto parse_unsigned_int;
+    case __IO_IntLoc:
+      ilen = 2;
+      smin = CH_INT_MIN;
+      smax = CH_INT_MAX;
+      goto parse_signed_int;
+    case __IO_UIntLoc:
+      ilen = 2;
+      umin = 0;
+      umax = CH_UINT_MAX;
+      goto parse_unsigned_int;
+    case __IO_LongLoc:
+      ilen = 4;
+      smin = CH_LONG_MIN;
+      smax = CH_LONG_MAX;
+      goto parse_signed_int;
+    case __IO_ULongLoc:
+      ilen = 4;
+      umin = 0;
+      umax = CH_ULONG_MAX;
+      goto parse_unsigned_int;
+
+    case __IO_ByteRangeLoc:
+      ilen = 1;
+      smin = io.__t.__locintrange.lower.slong;
+      smax = io.__t.__locintrange.upper.slong;
+      goto parse_signed_int;
+    case __IO_UByteRangeLoc:
+      ilen = 1;
+      umin = io.__t.__locintrange.lower.ulong;
+      umax = io.__t.__locintrange.upper.ulong;
+      goto parse_unsigned_int;
+    case __IO_IntRangeLoc:
+      ilen = 2;
+      smin = io.__t.__locintrange.lower.slong;
+      smax = io.__t.__locintrange.upper.slong;
+      goto parse_signed_int;
+    case __IO_UIntRangeLoc:
+      ilen = 2;
+      umin = io.__t.__locintrange.lower.ulong;
+      umax = io.__t.__locintrange.upper.ulong;
+      goto parse_unsigned_int;
+    case __IO_LongRangeLoc:
+      ilen = 4;
+      smin = io.__t.__locintrange.lower.slong;
+      smax = io.__t.__locintrange.upper.slong;
+      goto parse_signed_int;
+    case __IO_ULongRangeLoc:
+      ilen = 4;
+      umin = io.__t.__locintrange.lower.ulong;
+      umax = io.__t.__locintrange.upper.ulong;
+      goto parse_unsigned_int;
+
+    case __IO_BoolLoc:
+      ilen = 1;
+      umin = 0;
+      umax = 1;
+      settabptr = bool_tab;
+      goto parse_set;
+    case __IO_BoolRangeLoc:
+      ilen = 1;
+      umin = io.__t.__locboolrange.lower;
+      umax = io.__t.__locboolrange.upper;
+      settabptr = bool_tab;
+      goto parse_set;
+
+    case __IO_SetLoc:
+      ilen = io.__t.__locsetrange.length;
+      settabptr = io.__t.__locsetrange.name_table;
+      umin = 0;
+      umax = CH_ULONG_MAX;
+      goto parse_set;
+    case __IO_SetRangeLoc:
+      ilen = io.__t.__locsetrange.length;
+      settabptr = io.__t.__locsetrange.name_table;
+      umin = io.__t.__locsetrange.lower;
+      umax = io.__t.__locsetrange.upper;
+      goto parse_set;
+
+    case __IO_CharLoc:
+      umin = 0;
+      umax = 0xff;
+      goto parse_char;
+    case __IO_CharRangeLoc:
+      umin = io.__t.__loccharrange.lower;
+      umax = io.__t.__loccharrange.upper;
+      goto parse_char;
+
+    case __IO_CharVaryingLoc:
+      if( convcode != DefaultConv )
+        IOEXCEPTION( TEXTFAIL, CONVCODE_MODE_MISFIT );
+      slen = io.__t.__loccharstring.string_length;
+      if( (parsed = limit - actual_index) < slen )
+        slen = parsed;
+      else
+        parsed = slen;  
+      memcpy( io.__t.__loccharstring.string + 2, 
+              &iostrptr[actual_index], parsed );
+      MOV2(io.__t.__loccharstring.string,&slen);
+      actual_index += parsed;
+      goto check_field_complete;
+
+
+    case __IO_CharStrLoc:
+      if( convcode != DefaultConv )
+        IOEXCEPTION( TEXTFAIL, CONVCODE_MODE_MISFIT );
+      if( actual_index + io.__t.__loccharstring.string_length > limit )
+        IOEXCEPTION( TEXTFAIL, NO_CHARS_FOR_CHARS );
+      memcpy( io.__t.__loccharstring.string,
+              &iostrptr[actual_index],
+              parsed = io.__t.__loccharstring.string_length );
+      actual_index += parsed;
+      goto check_field_complete;
+
+    case __IO_BitStrLoc:
+      if( convcode != DefaultConv )
+        IOEXCEPTION( TEXTFAIL, CONVCODE_MODE_MISFIT );
+      parsed = parse_bit( limit, io.__t.__loccharstring.string );
+      if( parsed < io.__t.__loccharstring.string_length )
+        IOEXCEPTION( TEXTFAIL, NO_CHARS_FOR_BOOLS );
+      goto check_field_complete;
+
+    case __IO_LongRealLoc:
+    case __IO_RealLoc:
+      switch( convcode )
+      {
+      case ScientConv:
+        parse_scientific( limit, &dval, DBL_MIN, DBL_MAX );
+        break;
+      case DefaultConv:
+        parse_fixedpoint( limit, &dval );
+        break;
+      default:
+        IOEXCEPTION( TEXTFAIL, CONVCODE_MODE_MISFIT );
+      }
+      if( io.__descr == __IO_LongRealLoc )
+        memcpy( io.__t.__loclongreal, &dval, sizeof(double) );
+      else
+      {
+        fval = (float)dval;
+        MOV4(io.__t.__locreal,&fval);
+      }
+      goto check_field_complete;
+    default:
+      IOEXCEPTION( TEXTFAIL, INVALID_IO_LIST );
+    }
+
+
+parse_signed_int: ;
+    if( convcode == ScientConv )
+      IOEXCEPTION( TEXTFAIL, CONVCODE_MODE_MISFIT );
+    parsed = parse_int( limit, dset[convcode], base[convcode], 
+                        &lval.ulong, &sign );
+    if( sign < 0 )
+    {
+      if( lval.ulong > (unsigned long)CH_LONG_MIN )
+        IOEXCEPTION( TEXTFAIL, INTEGER_RANGE_ERROR );
+      lval.slong = -lval.ulong;
+    }
+    else
+    {
+      /* not needed: lval.slong = lval.ulong; */
+      /* Hack: sign extension for bin/oct/dec if no sign present */
+      if( convcode != DefaultConv && lval.ulong & (1 << (ilen*8-1)) )
+      {
+        if( ilen < 4 )
+          lval.ulong |= 0xFFFFFFFF << ilen*8;
+      }
+      else
+        if( lval.ulong > (unsigned long)CH_LONG_MAX )
+          IOEXCEPTION( TEXTFAIL, INTEGER_RANGE_ERROR );
+    }
+    if( lval.slong < smin || smax < lval.slong )
+      IOEXCEPTION( TEXTFAIL, INTEGER_RANGE_ERROR );
+    goto store_int;
+
+parse_unsigned_int: ;
+    if( convcode == ScientConv )
+      IOEXCEPTION( TEXTFAIL, CONVCODE_MODE_MISFIT );
+    parsed = parse_int( limit, dset[convcode], base[convcode],
+                        &lval.ulong, &sign );
+    if( sign < 0 ||  lval.ulong < umin || umax < lval.ulong )
+      IOEXCEPTION( TEXTFAIL, INTEGER_RANGE_ERROR );
+    goto store_int;
+
+parse_set: ;
+    if( convcode != DefaultConv )
+      IOEXCEPTION( TEXTFAIL, CONVCODE_MODE_MISFIT );
+    parsed = parse_set( limit, settabptr, &lval.ulong );
+    if( lval.ulong < umin || umax < lval.ulong )
+      IOEXCEPTION( TEXTFAIL, SET_RANGE_ERROR );
+    goto store_int;
+
+store_int: ;
+    switch( ilen )
+    {
+    case 1:
+      *(unsigned char*)io.__t.__locint = lval.ulong;
+      break;
+    case 2:
+      slen = lval.ulong;
+      MOV2(io.__t.__locint,&slen);
+      break;
+    case 4:
+      MOV4(io.__t.__locint,&lval.ulong);
+      break;
+    default:
+      IOEXCEPTION( TEXTFAIL, INTERNAL_ERROR );
+    }
+    goto check_field_complete;
+
+parse_char: ;
+    if( convcode != DefaultConv )
+      IOEXCEPTION( TEXTFAIL, CONVCODE_MODE_MISFIT );
+    if( actual_index >= limit )
+      IOEXCEPTION( TEXTFAIL, NO_CHARS_FOR_CHARS );
+    curr = iostrptr[actual_index++];
+    parsed = 1;
+    if( curr < umin || umax < curr )
+      IOEXCEPTION( TEXTFAIL, CHAR_RANGE_ERROR );
+    *io.__t.__locchar = curr;
+    goto check_field_complete;
+
+check_field_complete: ;
+    actual_index += bypass;    
+    if( width > parsed )
+      IOEXCEPTION( TEXTFAIL, INVALID_CHAR );
+  }
+}
+
+static
+void inpedit( void )
+{
+  int           nchars;
+
+  if( dynamicwid ) 
+    clausewidth = get_field_width();
+
+  switch( editcode )
+  { 
+  case SpaceSkip:
+    nchars = repetition*clausewidth;
+    if( actual_index + nchars > iostrlen )
+      IOEXCEPTION( TEXTFAIL, NO_CHARS_FOR_EDIT );
+    for( ; nchars ; nchars-- )
+      if( iostrptr[actual_index++] != ' ' )
+        IOEXCEPTION( TEXTFAIL, NO_SPACE_TO_SKIP );
+    break; 
+
+  case SkipLeft:
+    nchars = repetition*clausewidth;
+    if( (actual_index -= nchars) < 0 )
+      IOEXCEPTION( TEXTFAIL, NO_CHARS_FOR_EDIT );
+    break;
+
+  case SkipRight:
+    nchars = repetition*clausewidth;
+    if( (actual_index += nchars) > iostrlen )
+      IOEXCEPTION( TEXTFAIL, NO_CHARS_FOR_EDIT );
+    break;
+  
+  case Tabulation:
+    if( (actual_index = clausewidth) > iostrlen )
+      IOEXCEPTION( TEXTFAIL, TEXT_LOC_OVERFLOW );
+    break;
+  }
+}
+
+static
+void outconv( void )
+{
+  unsigned long             width;
+  char                      itembuf[33]; 
+  unsigned long             ulongval;
+           long             longval;
+  __tmp_IO_list             io;
+  __tmp_IO_enum_table_type* etptr;
+  char*                     itembeg;
+  unsigned long             itemlen;
+  double                    doubleval;
+  int                       de;
+  int                       sign;
+  int                       mantdigs;
+  int                       nid;
+  int                       nfd;
+  char*                     expbeg;
+  int                       explen;
+  unsigned int              expwid;
+
+  while( repetition-- )
+  {
+    if( ++iolist_index > iolistlen )
+      IOEXCEPTION( TEXTFAIL, IOLIST_EXHAUSTED );  
+
+    io = *iolistptr++;
+    width =  dynamicwid ? get_field_width() : clausewidth;
+
+    switch( convcode )
+    {
+    case DefaultConv:
+      switch( io.__descr )
+      {
+      case __IO_ByteVal:
+        longval = io.__t.__valbyte; 
+        goto signed_conversion;
+      case __IO_UByteVal:
+        ulongval = io.__t.__valubyte; 
+        goto unsigned_conversion;
+      case __IO_IntVal:
+        longval = io.__t.__valint; 
+        goto signed_conversion;
+      case __IO_UIntVal:
+        ulongval = io.__t.__valuint; 
+        goto unsigned_conversion;
+      case __IO_LongVal:
+        longval = io.__t.__vallong; 
+        goto signed_conversion;
+      case __IO_ULongVal:
+        ulongval = io.__t.__valulong; 
+        goto unsigned_conversion;
+
+      case __IO_BoolVal:
+        switch( io.__t.__valbool )
+        {
+        case 0:
+          itembeg = "FALSE";
+          itemlen = 5;
+          goto move_item;
+        case 1:
+          itembeg = "TRUE";
+          itemlen = 4;
+          goto move_item;
+        default:
+          IOEXCEPTION( TEXTFAIL, BOOL_CONVERSION_ERROR );
+        }
+      case __IO_CharVal:
+        itembeg = &io.__t.__valchar;
+        itemlen = 1;
+        goto move_item;
+  
+      case __IO_SetVal:
+        /* locate name string using set mode name table */
+        itembeg = 0;
+        
+        if( (etptr = io.__t.__valset.name_table) )
+          while( etptr->name )
+         {
+            if( etptr->value == io.__t.__valset.value )
+           {
+              itembeg = etptr->name;
+              itemlen = strlen( itembeg );
+              goto move_item;
+            }
+            etptr++;
+          }
+       IOEXCEPTION( TEXTFAIL, SET_CONVERSION_ERROR ); 
+
+      case __IO_CharVaryingLoc:
+        {
+          unsigned short l;
+          itembeg = (char*)io.__t.__loccharstring.string;
+          MOV2(&l,itembeg);
+          itembeg += 2;
+          itemlen = l;
+          goto move_item;
+        }
+
+      case __IO_CharStrLoc:
+        itembeg = io.__t.__loccharstring.string;
+        itemlen = io.__t.__loccharstring.string_length;
+        goto move_item;
+
+      case __IO_BitStrLoc:
+        itemlen = io.__t.__loccharstring.string_length;
+        itembeg = io.__t.__loccharstring.string;
+
+        if( !width )
+          width = itemlen;
+
+        /* check remaining space */
+        if( actual_index + width > iostrlen )
+          IOEXCEPTION( TEXTFAIL, TEXT_LOC_OVERFLOW );
+
+        if( itemlen == width )
+          bitput( iostrptr + actual_index, itembeg, 0, itemlen );
+        else
+          if( itemlen < width )
+            if( leftadjust )
+              memset( bitput( iostrptr + actual_index, itembeg, 0, itemlen )
+                      + itemlen,
+                      paddingchar, width - itemlen );
+            else
+              bitput( memset( iostrptr + actual_index, 
+                              paddingchar, width - itemlen )
+                      + width - itemlen,
+                      itembeg, itemlen - width, itemlen );
+          else
+            if( overflowev )
+              memset( iostrptr + actual_index, '*', width );
+            else
+              if( leftadjust )
+                bitput( iostrptr + actual_index, itembeg, 0, width );
+              else
+                bitput( iostrptr + actual_index, itembeg, 
+                        itemlen - width, itemlen );
+        goto adjust_index;
+
+      case __IO_RealVal:
+        doubleval = io.__t.__valreal;
+        mantdigs = FMANTDIGS;
+        goto fixed_point_conversion;
+      case __IO_LongRealVal:
+        doubleval = io.__t.__vallongreal;
+        mantdigs = DBL_DIG;
+        goto fixed_point_conversion;
+        break;
+
+      default:
+        IOEXCEPTION( TEXTFAIL, INVALID_IO_LIST );
+      }
+
+    case HexConv:
+    case OctalConv:
+    case BinaryConv:
+      switch( io.__descr )
+      {
+      case __IO_ByteVal:
+      case __IO_UByteVal:
+        ulongval = io.__t.__valubyte; 
+        break;
+      case __IO_IntVal:
+      case __IO_UIntVal:
+        ulongval = io.__t.__valuint; 
+        break;
+      case __IO_LongVal:
+      case __IO_ULongVal:
+        ulongval = io.__t.__valulong; 
+        break;
+      default:
+        IOEXCEPTION( TEXTFAIL, CONVCODE_MODE_MISFIT );
+      }
+      itembeg = myultoa( ulongval, itembuf, base[convcode] );
+      itemlen = strlen( itembeg );
+      goto move_item;
+  
+    case ScientConv:
+      switch( io.__descr )
+      {
+      case __IO_RealVal:
+        doubleval = io.__t.__valreal;
+        mantdigs = FMANTDIGS;
+        if( !fractiondef )
+          fractionwidth = FMANTDIGS - 1;
+        goto scientific_conversion;
+      case __IO_LongRealVal:
+        doubleval = io.__t.__vallongreal;
+        mantdigs = DBL_DIG;
+        if( !fractiondef )
+          fractionwidth = DBL_DIG - 1;
+        goto scientific_conversion;
+        break;
+      default:
+        IOEXCEPTION( TEXTFAIL, CONVCODE_MODE_MISFIT );
+      }
+    }
+
+fixed_point_conversion: ;
+    itembeg = mydtoa( doubleval, mantdigs, &de, &sign );
+    if( fractiondef && de >= -fractionwidth - 1
+        && -fractionwidth > de - mantdigs )
+      itembeg = dround( itembeg, de + fractionwidth + 1, &de );
+
+    nid = de >= 0 ? de : 0;
+    nfd = fractiondef ? fractionwidth 
+                      : ( de + 1 - mantdigs > 0 ? 0 : mantdigs - de - 1 );
+    itemlen = ( sign < 0 ? 1 : 0 ) + 2 + nid + nfd;
+#if _TEXTIO_DEBUG_
+printf( "fixed item length %d\n", itemlen );
+#endif
+    if( !width )
+      width = itemlen;
+#if _TEXTIO_DEBUG_
+printf( "fixed item width %d\n", width );
+#endif
+    /* check remaining space */
+    if( actual_index + width > iostrlen )
+      IOEXCEPTION( TEXTFAIL, TEXT_LOC_OVERFLOW );
+
+    if( itemlen == width )
+      fixput( iostrptr + actual_index, itembeg, 
+              1, itemlen, sign, de, de - mantdigs, nid, nfd );
+    else
+      if( itemlen < width )
+        if( leftadjust )
+          memset( fixput( iostrptr + actual_index, itembeg, 
+                          1, itemlen, sign, de, de - mantdigs, nid, nfd )
+                  + itemlen,
+                  paddingchar, width - itemlen );
+        else
+          fixput( memset( iostrptr + actual_index, 
+                          paddingchar, width - itemlen )
+                  + width - itemlen,
+                  itembeg, 1, itemlen, sign, de, de - mantdigs, nid, nfd );
+      else
+        if( overflowev )
+          memset( iostrptr + actual_index, '*', width );
+        else
+          if( leftadjust )
+            fixput( iostrptr + actual_index, itembeg, 
+                    1, width, sign, de, de - mantdigs, nid, nfd );
+          else
+            fixput( iostrptr + actual_index, itembeg, 
+                    itemlen - width + 1, itemlen,
+                    sign, de, de - mantdigs, nid, nfd );
+    goto adjust_index;
+
+scientific_conversion: ;
+    itembeg = mydtoa( doubleval, mantdigs, &de, &sign );
+
+    if( fractiondef && fractionwidth < mantdigs )
+      itembeg = dround( itembeg, fractionwidth + 1, &de );
+
+    expbeg = myultoa( abs(de), itembuf, 10 );
+    explen = strlen( expbeg );
+
+    expwid = explen > exponentwidth ? explen : exponentwidth;
+    itemlen = ( sign < 0 ? 1 : 0 ) + 2 + fractionwidth + 2 + expwid;
+#if _TEXTIO_DEBUG_
+printf( "floating item length %d, fraction %d, exponent %d\n", 
+        itemlen, fractionwidth, expwid );
+#endif
+    if( width == 0 )
+      width = itemlen;
+#if _TEXTIO_DEBUG_
+printf( "floating item width %d\n", width );
+#endif
+    /* check remaining space */
+    if( actual_index + width > iostrlen )
+      IOEXCEPTION( TEXTFAIL, TEXT_LOC_OVERFLOW );
+
+    if( itemlen == width )
+      sciput( iostrptr + actual_index, itembeg, expbeg, 
+              1, itemlen, sign, de, expwid );
+    else
+      if( itemlen < width )
+        if( leftadjust )
+          memset( sciput( iostrptr + actual_index, itembeg, expbeg,
+                          1, itemlen, sign, de, expwid )
+                  + itemlen,
+                  paddingchar, width - itemlen );
+        else
+          sciput( memset( iostrptr + actual_index, 
+                          paddingchar, width - itemlen )
+                  + width - itemlen,
+                  itembeg, expbeg, 1, itemlen, sign, de, expwid );
+      else
+        if( overflowev )
+          memset( iostrptr + actual_index, '*', width );
+        else
+          if( leftadjust )
+            sciput( iostrptr + actual_index, itembeg, expbeg,
+                    1, width, sign, de, expwid );
+          else
+            sciput( iostrptr + actual_index, itembeg, expbeg,
+                    itemlen - width + 1, itemlen,
+                    sign, de, expwid );
+    goto adjust_index;
+
+signed_conversion: ;   
+    if( longval >= 0 )
+      itembeg = myultoa( longval, itembuf, 10 );
+    else
+    {
+      itembuf[0] = '-';
+      myultoa( -longval, itembuf+1, 10 );
+      itembeg = itembuf;
+    }  
+    itemlen = strlen( itembeg );
+    goto move_item;
+
+unsigned_conversion: ;
+    itembeg = myultoa( ulongval, itembuf, 10 );
+    itemlen = strlen( itembeg );
+    goto move_item;
+
+move_item: ;
+    if( !width )
+      width = itemlen;
+
+    /* check remaining space */
+    if( actual_index + width > iostrlen )
+      IOEXCEPTION( TEXTFAIL, TEXT_LOC_OVERFLOW );
+
+    /* move item, filling or truncating or overflow-evidencing */
+    if( itemlen == width )
+      memcpy( iostrptr + actual_index, itembeg, itemlen );
+    else
+      if( itemlen < width )
+        if( leftadjust )
+          memset( memcpy( iostrptr + actual_index, itembeg, itemlen )
+                  + itemlen,
+                  paddingchar, width - itemlen );
+        else
+          memcpy( memset( iostrptr + actual_index, 
+                          paddingchar, width - itemlen )
+                  + width - itemlen,
+                  itembeg, itemlen );
+      else
+        if( overflowev )
+          memset( iostrptr + actual_index, '*', width );
+        else
+          if( leftadjust )
+            memcpy( iostrptr + actual_index, itembeg, width );
+          else
+            memcpy( iostrptr + actual_index, 
+                    itembeg + itemlen - width, width );
+
+  /*
+   *  adjust.
+   */
+adjust_index: ;
+  actual_index += width;
+  if( actual_index > maximum_index )
+    maximum_index = actual_index;
+  }
+}
+
+static
+void outedit( void )
+{
+  int nchars;
+
+  if( dynamicwid )
+    clausewidth = get_field_width();
+  switch( editcode )
+  { 
+  case SpaceSkip:
+    nchars = repetition*clausewidth;
+    if( actual_index + nchars > iostrlen )
+      IOEXCEPTION( TEXTFAIL, TEXT_LOC_OVERFLOW );
+    memset( iostrptr + actual_index, ' ', nchars );
+    actual_index += nchars;
+    if( actual_index > maximum_index )
+      maximum_index = actual_index;
+    break;
+
+  case SkipLeft:
+    nchars = repetition*clausewidth;
+    if(  actual_index - nchars < 0 )
+      IOEXCEPTION( TEXTFAIL, TEXT_LOC_OVERFLOW );
+    actual_index -= nchars;
+    break;
+
+  case SkipRight:
+    nchars = repetition*clausewidth;
+    if( actual_index + nchars > iostrlen )
+      IOEXCEPTION( TEXTFAIL, TEXT_LOC_OVERFLOW );
+    actual_index += nchars;
+    if( actual_index > maximum_index )
+    {
+      memset( iostrptr + maximum_index, ' ', actual_index - maximum_index );
+      maximum_index = actual_index;
+    }
+    break;
+  
+  case Tabulation:
+    if( clausewidth >= iostrlen )
+      IOEXCEPTION( TEXTFAIL, TEXT_LOC_OVERFLOW );
+    actual_index = clausewidth;
+    if( actual_index > maximum_index )
+    {
+      memset( iostrptr + maximum_index, ' ', actual_index - maximum_index );
+      maximum_index = actual_index;
+    }  
+    break;
+  }
+}
+
+
+static
+void inpioctrl( void )
+{
+  unsigned short hlen;
+  if( !textptr )
+    IOEXCEPTION( TEXTFAIL, IO_CONTROL_NOT_VALID );
+  if( iocode != EndPage )
+  {
+    jmp_buf ioerror;
+    unsigned long info;
+
+    if (textptr->access_sub->association)
+      {
+       if( (info = setjmp( ioerror )) )
+         IOEXCEPTION( info>>16, info & 0xffff );    
+       while( repetition-- )
+         {
+           __readrecord( textptr->access_sub, textindex,
+                        (char*)textptr->text_record, 
+                        __FILE__, __LINE__ );
+           actual_index = 0;
+           MOV2(&hlen,&textptr->text_record->len);
+           iostrlen = hlen;
+         }
+      }
+    else
+      IOEXCEPTION (NOTCONNECTED, IS_NOT_CONNECTED);
+  }
+}
+
+/* specify pre/post in the order "/+-?!" */
+static
+char* pre_char =  "\0\f\0\r\0"; /* Z.200: "\n\f\0\n\0" */
+static
+char* post_char = "\n\n\r\0\0"; /* Z.200: "\r\r\r\0\0" */
+
+static
+void outioctrl( void )
+{
+  Association_Mode* assoc;
+  unsigned short hlen;
+  if( !textptr )
+    IOEXCEPTION( TEXTFAIL, IO_CONTROL_NOT_VALID );
+  if( (assoc = textptr->access_sub->association) )
+  {
+    jmp_buf ioerror;
+    unsigned long info;
+    if( (info = setjmp( ioerror )) )
+      IOEXCEPTION( info>>16, info & 0xffff );    
+
+    while( repetition-- )
+    {
+      if( iocode != EndPage )
+      {
+        if( TEST_FLAG( assoc, IO_FIRSTLINE ) )
+        {
+          CLR_FLAG( assoc, IO_FIRSTLINE );
+          assoc->ctl_pre = '\0';
+        }
+        else
+        {
+          if( TEST_FLAG( assoc, IO_FORCE_PAGE ) )
+          {
+            CLR_FLAG( assoc, IO_FORCE_PAGE );
+            assoc->ctl_pre = '\f';
+         }
+          else
+            assoc->ctl_pre = pre_char[iocode];
+        }
+        assoc->ctl_post = post_char[iocode];
+        hlen = actual_index;
+        MOV2(&textptr->text_record->len,&hlen);
+        __writerecord( textptr->access_sub, textindex,
+                       (char*)textptr->text_record,
+                       textptr->text_record->len,
+                       __FILE__, __LINE__ );
+        hlen = actual_index = 0;
+        MOV2(&textptr->text_record->len,&hlen);
+      }
+      else if( !TEST_FLAG( textptr, IO_FIRSTLINE ) )
+       SET_FLAG( textptr, IO_FORCE_PAGE );
+      assoc->ctl_pre = assoc->ctl_post = '\0';
+    }
+  }
+  else
+    IOEXCEPTION (NOTCONNECTED, IS_NOT_CONNECTED);
+}
+
+static
+void (**actionptr)( void );
+static
+void (*readactions[])( void ) = { inpconv, inpedit, inpioctrl };
+static
+void (*writeactions[])( void ) = { outconv, outedit, outioctrl };
+
+
+static
+void emitstr( char* begtxt, char* endtxt )
+{  
+  char c;
+  int  nchars = endtxt - begtxt;
+  if( actual_index + nchars > iostrlen )
+      IOEXCEPTION( TEXTFAIL, TEXT_LOC_OVERFLOW );
+  memcpy( iostrptr + actual_index, begtxt, nchars );
+  actual_index += nchars;
+  if( actual_index > maximum_index )
+    maximum_index = actual_index;
+}
+
+static
+void scanstr( char* begtxt, char* endtxt )
+{  
+  int  nchars = endtxt - begtxt;
+  if( actual_index + nchars > iostrlen )
+    IOEXCEPTION( TEXTFAIL, NO_CHARS_FOR_TEXT );
+  if( strncmp( iostrptr + actual_index, begtxt, nchars ) )
+    IOEXCEPTION( TEXTFAIL, FORMAT_TEXT_MISMATCH );
+  actual_index += nchars;
+}
+
+void (*ftextptr) ( char*, char* );
+
+static
+formatexit_t scanformcont( char* fcs, int len,
+                           char** fcsptr, int* lenptr )
+{
+  char          curr; 
+  fcsstate_t    state  = FormatText;
+  unsigned long buf;
+  int           dig;
+  acttype_t     action;
+  char*         begtxt = fcs;
+
+  while( len-- )
+  {
+    curr = *fcs++;
+    switch( state )
+    {
+    case FormatText: 
+      if( curr == '%' )
+      {
+        ftextptr( begtxt, fcs-1 );
+        state = FirstPercent;
+      }
+      break;
+
+after_first_percent: ;
+    case FirstPercent: 
+      if( curr == '%' )
+      {
+        state = FormatText;
+        begtxt = fcs - 1;
+        break;
+      }
+      if( curr == ')' )
+      {
+        *lenptr = len;
+        *fcsptr = fcs;
+        return EndAtParen;
+      }
+      if( isDEC(curr) )
+      {
+        state = RepFact;
+        repetition = curr - '0';
+        break;
+      }
+
+      repetition = 1; 
+
+test_for_control_codes: ;
+      if( isCVC(curr) )
+      {
+        state = ConvClause;
+        action = ConvAct;
+        convcode = strchr( CONVERSIONCODES, curr ) - CONVERSIONCODES;
+        leftadjust = False;
+        overflowev = False;
+        dynamicwid = False;
+        paddingdef = False;
+        paddingchar = ' ';
+        fractiondef = False;
+        /* fractionwidth = 0; default depends on mode ! */
+        exponentdef = False;
+        exponentwidth = 3;
+        clausewidth = 0;        
+        break;        
+      }
+      if( isEDC(curr) )
+      {
+        state = EditClause;
+        action = EditAct;
+        editcode = strchr( EDITCODES, curr ) - EDITCODES;
+        dynamicwid = False;
+        clausewidth = editcode == Tabulation ? 0 : 1;        
+        break;        
+      }
+      if( isIOC(curr) )
+      {
+        state = ClauseEnd;
+        action = IOAct;
+        iocode = strchr( IOCODES, curr ) - IOCODES;
+        break;        
+      }
+      if( curr == '(' )
+      {
+        unsigned long times = repetition;
+        int  cntlen;
+        char* cntfcs;         
+        while( times-- )
+        {        
+          if( scanformcont( fcs, len, &cntfcs, &cntlen ) != EndAtParen )
+            IOEXCEPTION( TEXTFAIL, UNMATCHED_OPENING_PAREN );
+        }
+        fcs = cntfcs;
+        len = cntlen;
+        state  = FormatText;
+        begtxt = fcs;
+        break;
+      }
+      IOEXCEPTION( TEXTFAIL, BAD_FORMAT_SPEC_CHAR );
+
+    case RepFact:
+      if( isDEC(curr) )
+      {
+        dig = curr - '0';
+        if( repetition > (ULONG_MAX - dig)/10 )
+          IOEXCEPTION( TEXTFAIL, REPFAC_OVERFLOW );
+        repetition = repetition*10 + dig;
+        break;
+      }
+      goto test_for_control_codes;
+
+    case ConvClause:
+      if( isDEC(curr) )
+      {
+        state = ClauseWidth;
+        clausewidth = curr - '0';
+        break;
+      }
+      if( curr == 'L' )  
+      {
+        if( leftadjust ) 
+          IOEXCEPTION( TEXTFAIL, DUPLICATE_QUALIFIER );
+        leftadjust = True;
+        break;
+      }
+      if( curr == 'E' )
+      {
+        if( overflowev ) 
+          IOEXCEPTION( TEXTFAIL, DUPLICATE_QUALIFIER );
+        overflowev = True;
+        break;
+      }
+      if( curr == 'P' )
+      {
+        if( paddingdef ) 
+          IOEXCEPTION( TEXTFAIL, DUPLICATE_QUALIFIER );
+        paddingdef = True;
+        state = CatchPadding;
+        break;
+      }
+
+test_for_variable_width: ;
+      if( curr == 'V' )
+      {
+        dynamicwid = True;
+        state = AfterWidth;
+        break;
+      }
+      goto test_for_fraction_width;
+
+    case ClauseWidth:
+      if( isDEC(curr) )
+      {
+        dig = curr - '0';
+        if( clausewidth > (ULONG_MAX - dig)/10 )
+          IOEXCEPTION( TEXTFAIL, CLAUSE_WIDTH_OVERFLOW );
+        clausewidth = clausewidth*10 + dig;
+        break;
+      }
+      /* fall through */
+
+test_for_fraction_width: ;
+    case AfterWidth:
+      if( curr == '.' )
+      {
+        if( convcode != DefaultConv && convcode != ScientConv )
+          IOEXCEPTION( TEXTFAIL, NO_FRACTION );
+        fractiondef = True;
+        state = FractWidth;
+        break;
+      }
+      goto test_for_exponent_width;
+
+    case FractWidth:
+      if( isDEC( curr ) )
+      {
+        state = FractWidthCont;
+        fractionwidth = curr - '0';
+        break;
+      }
+      else
+        IOEXCEPTION( TEXTFAIL, NO_FRACTION_WIDTH );
+
+    case FractWidthCont:
+      if( isDEC( curr ) )
+      {
+        dig = curr - '0';
+        if( fractionwidth > (ULONG_MAX - dig)/10 )
+          IOEXCEPTION( TEXTFAIL, FRACTION_WIDTH_OVERFLOW );
+        fractionwidth = fractionwidth*10 + dig;
+        break;
+      }
+             
+test_for_exponent_width: ;
+      if( curr == ':' )
+      {
+        if( convcode != ScientConv )
+          IOEXCEPTION( TEXTFAIL, NO_EXPONENT );
+        exponentdef = True;
+        state = ExpoWidth;
+        break;
+      }
+      goto test_for_final_percent;
+
+    case ExpoWidth:
+      if( isDEC( curr ) )
+      {
+        state = ExpoWidthCont;
+        exponentwidth = curr - '0';
+        break;
+      }
+      else
+        IOEXCEPTION( TEXTFAIL, NO_EXPONENT_WIDTH );
+
+    case ExpoWidthCont:
+      if( isDEC( curr ) )
+      {
+        dig = curr - '0';
+        if( exponentwidth > (ULONG_MAX - dig)/10 )
+          IOEXCEPTION( TEXTFAIL, EXPONENT_WIDTH_OVERFLOW );
+        exponentwidth = exponentwidth*10 + dig;
+        break;
+      }
+      /* fall through  */
+
+test_for_final_percent: ;
+    case ClauseEnd:
+      if( curr == '%' )
+      {
+        state = LastPercent;
+        break;
+      }
+  do_the_action: ;
+      actionptr[action]();
+      state = FormatText;
+      begtxt = fcs - 1;
+      break;
+
+    case CatchPadding:
+      paddingchar = curr;
+      state = ConvClause;
+      break;
+
+    case EditClause:
+      if( isDEC(curr) )
+      {
+        state = ClauseWidth;
+        clausewidth = curr - '0';
+        break;
+      }
+      goto test_for_variable_width; 
+
+    case LastPercent:
+      actionptr[action]();
+      if( curr == '.' )
+      {
+        state = FormatText;
+        begtxt = fcs;
+        break;
+      }
+      goto after_first_percent;
+
+    default:
+      IOEXCEPTION( TEXTFAIL, INTERNAL_ERROR );
+    }
+  }
+  switch( state )
+  {
+  case FormatText:
+    ftextptr( begtxt, fcs );
+    break;
+  case FirstPercent: 
+  case LastPercent:
+  case RepFact:
+  case FractWidth:
+  case ExpoWidth:
+    IOEXCEPTION( TEXTFAIL, BAD_FORMAT_SPEC_CHAR );
+  case CatchPadding:
+    IOEXCEPTION( TEXTFAIL, NO_PAD_CHAR );
+  default:
+    actionptr[action]();
+  }
+
+  *lenptr = len;
+  *fcsptr = fcs;
+  return NormalEnd;
+}
+
+static
+void
+__read_format (char*           fmtptr,
+               int             fmtlen,
+               __tmp_IO_list*  ioptr,
+               int             iolen,
+               void*           inpptr,
+               int             inplen )
+{
+  formatexit_t res;
+  unsigned short l;
+
+  iostrptr = (char*)inpptr;
+  iostrlen = inplen;
+
+  /* initialisation */
+  iolist_index = 0;
+  iolistptr    = ioptr; 
+  iolistlen    = iolen;
+  
+  actionptr = readactions;
+  ftextptr = scanstr;
+     
+  if( (res = scanformcont( fmtptr, fmtlen, &fmtptr, &fmtlen )) == EndAtParen )
+    IOEXCEPTION( TEXTFAIL, UNMATCHED_CLOSING_PAREN );
+
+  if( iolist_index != iolen )
+    IOEXCEPTION( TEXTFAIL, EXCESS_IOLIST_ELEMENTS );
+
+  return;
+}
+
+void
+__readtext_f( Text_Mode*      the_text_loc,
+              signed long     the_index,
+              char*           fmtptr,
+              int             fmtlen,
+              __tmp_IO_list*  ioptr,
+              int             iolen,
+              char*           file,
+              int             line )
+{
+  unsigned long info;
+
+  if( (info = setjmp( __io_exception )) )
+    CHILLEXCEPTION( file, line, info>>16, info & 0xffff );
+
+  textptr       = the_text_loc;
+  textrecptr    = textptr->text_record;
+  actual_index  = textptr->actual_index;
+  textindex     = the_index;
+
+  __read_format ( fmtptr, fmtlen, ioptr, iolen,
+                  (char*)textrecptr + 2, textptr->text_record->len );
+  textptr->actual_index = actual_index;
+}
+
+void
+__readtext_s( void*           string_ptr,
+              int             string_len,
+              char*           fmtptr,
+              int             fmtlen,
+              __tmp_IO_list*  ioptr,
+              int             iolen,
+              char*           file,
+              int             line )
+{
+  int info;
+
+  if( (info = setjmp( __io_exception )) )
+    CHILLEXCEPTION( file, line, info>>16, info & 0xffff );
+
+  textptr      = NULL;
+  actual_index = 0;
+
+  __read_format ( fmtptr, fmtlen,  ioptr, iolen, string_ptr, string_len );
+}
+
+static
+void
+__write_format (char*           fmtptr,
+                int             fmtlen,
+                __tmp_IO_list*  ioptr,
+                int             iolen,
+                void*           outptr,
+                int             outlen )
+{
+  formatexit_t res;
+  unsigned short l;
+
+  /* initialisation */
+  maximum_index = actual_index;
+  iolist_index = 0;
+  
+  actionptr = writeactions;
+  ftextptr  = emitstr;
+  iolistptr = ioptr; 
+  iolistlen = iolen;
+  iostrptr  = (char *)outptr + 2;
+  iostrlen  = outlen;
+
+  if( (res = scanformcont( fmtptr, fmtlen, &fmtptr, &fmtlen )) == EndAtParen )
+    IOEXCEPTION( TEXTFAIL, UNMATCHED_CLOSING_PAREN );
+
+  if( iolist_index != iolen )
+    IOEXCEPTION( TEXTFAIL, EXCESS_IOLIST_ELEMENTS );
+
+  /* set length of output string */
+#if _TEXTIO_DEBUG_
+  printf( "maximum index = %d\n", maximum_index );
+#endif
+  l = maximum_index;
+  MOV2(outptr,&l);
+  return;
+}
+
+void
+__writetext_f( Text_Mode*      the_text_loc,
+               signed long     the_index,
+               char*           fmtptr,
+               int             fmtlen,
+               __tmp_IO_list*  ioptr,
+               int             iolen,
+               char*           file,
+               int             line )
+{
+  int info;
+
+  if( (info = setjmp( __io_exception )) )
+    CHILLEXCEPTION( file, line, info>>16, info & 0xffff );
+
+  textptr       = the_text_loc;
+  textrecptr    = the_text_loc->text_record;
+  textindex     = the_index;
+  iolistptr     = ioptr; 
+  iolistlen     = iolen;
+
+  actual_index = textptr->actual_index;
+  __write_format ( fmtptr, fmtlen, ioptr, iolen,
+                   textrecptr, textptr->access_sub->reclength - 2 );
+  textptr->actual_index = actual_index;
+}
+
+void
+__writetext_s( void*           string_ptr,
+               int             string_len,
+               char*           fmtptr,
+               int             fmtlen,
+               __tmp_IO_list*  ioptr,
+               int             iolen,
+               char*           file,
+               int             line )
+{
+  int info;
+
+  if( (info = setjmp( __io_exception )) )
+    CHILLEXCEPTION( file, line, info>>16, info & 0xffff );
+
+  textptr      = NULL;
+  actual_index = 0;
+
+  __write_format ( fmtptr, fmtlen, ioptr, iolen, string_ptr, string_len );
+}
diff --git a/gcc/ch/runtime/gettextindex.c b/gcc/ch/runtime/gettextindex.c
new file mode 100644 (file)
index 0000000..60fa703
--- /dev/null
@@ -0,0 +1,30 @@
+/* Implement Input/Output runtime actions for CHILL.
+   Copyright (C) 1992,1993 Free Software Foundation, Inc.
+   Author: Wilfried Moser, et al
+
+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, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+#include "fileio.h"
+
+unsigned long
+__gettextindex( Text_Mode* the_text, char* file, int line )
+{
+  if( !the_text )
+    CHILLEXCEPTION( file, line, EMPTY, NULL_TEXT );
+
+  return the_text->actual_index;
+}
diff --git a/gcc/ch/runtime/isassociated.c b/gcc/ch/runtime/isassociated.c
new file mode 100644 (file)
index 0000000..a3a4d49
--- /dev/null
@@ -0,0 +1,29 @@
+/* Implement Input/Output runtime actions for CHILL.
+   Copyright (C) 1992,1993 Free Software Foundation, Inc.
+   Author: Wilfried Moser, et al
+
+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, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+#include "fileio.h"
+
+Boolean
+__isassociated( Association_Mode* the_assoc, char* file, int line )
+{
+  if( !the_assoc )
+    CHILLEXCEPTION( file, line, EMPTY, NULL_ASSOCIATION );
+  return TEST_FLAG(the_assoc, IO_ISASSOCIATED) ? True : False;
+}
diff --git a/gcc/ch/runtime/neps.c b/gcc/ch/runtime/neps.c
new file mode 100644 (file)
index 0000000..220577d
--- /dev/null
@@ -0,0 +1,52 @@
+/* Implement POWERSET runtime actions for CHILL.
+   Copyright (C) 1992,1993 Free Software Foundation, Inc.
+   Author: Wilfried Moser, et al
+
+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, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+#define __CHILL_LIB__
+
+#include "config.h"
+#include <stdio.h>
+#include "powerset.h"
+
+/*
+ * function __nepowerset
+ *
+ * parameters:
+ *     left            left powerset
+ *     right           right powerset
+ *     bitlength       length of powerset in bits
+ *
+ * returns:
+ *    1 if powersets are not equal, bit for bit
+ *
+ * exceptions:
+ *  none
+ *
+ * abstract:
+ *  compares two powersets for inequality
+ *
+ */
+int
+__nepowerset (left, right, bitlength)
+     SET_WORD *left;
+     SET_WORD *right;
+     unsigned long bitlength;
+{
+  return ! __eqpowerset (left, right, bitlength);
+}
diff --git a/gcc/ch/runtime/notps.c b/gcc/ch/runtime/notps.c
new file mode 100644 (file)
index 0000000..dd683ed
--- /dev/null
@@ -0,0 +1,81 @@
+/* Implement POWERSET runtime actions for CHILL.
+   Copyright (C) 1992,1993 Free Software Foundation, Inc.
+   Author: Wilfried Moser, et al
+
+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, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+#define __CHILL_LIB__
+
+#include "config.h"
+#include <stdio.h>
+#include "powerset.h"
+
+/*
+ * function __notpowerset
+ *
+ * parameters:
+ *     out             output powerset
+ *     left            input powerset
+ *     bitlength       length of powerset in bits
+ *
+ * returns:
+ *     void
+ *
+ * exceptions:
+ *  none
+ *
+ * abstract:
+ *
+ */
+
+void
+__notpowerset (out, left, bitlength)
+     SET_WORD      *out;
+     SET_WORD      *left;
+     unsigned long  bitlength;
+{
+  if (bitlength <= SET_CHAR_SIZE)
+    {
+      *((SET_CHAR *)out) = ~ (*((SET_CHAR *)left));
+#if 0
+      SET_CHAR tmp;
+      tmp = *((SET_CHAR *)left);
+      tmp = ~ tmp;
+      *((SET_CHAR *)out) = tmp;
+
+      MASK_UNUSED_CHAR_BITS((SET_CHAR *)out, bitlength);
+      *((SET_CHAR *)out) = ~ *((SET_CHAR *)left);
+      MASK_UNUSED_CHAR_BITS((SET_CHAR *)out, bitlength);
+      *((SET_CHAR *)out) = (~(0)) ^  (*((SET_CHAR *)left));
+      MASK_UNUSED_CHAR_BITS((SET_CHAR *)out, bitlength);
+#endif
+    }
+  else if (bitlength <= SET_SHORT_SIZE)
+    {
+      *((SET_SHORT *)out) = ~  (*((SET_SHORT *)left));
+      MASK_UNUSED_SHORT_BITS((SET_SHORT *)out, bitlength);
+    }
+  else
+    {
+      unsigned long len = BITS_TO_WORDS(bitlength);
+      register unsigned long i;
+    
+      for (i = 0; i < len; i++)
+       out[i] = ~ left[i];
+      MASK_UNUSED_WORD_BITS((out + len - 1), bitlength % SET_WORD_SIZE);
+    }
+}
diff --git a/gcc/ch/runtime/printbuffer.c b/gcc/ch/runtime/printbuffer.c
new file mode 100644 (file)
index 0000000..9dd9617
--- /dev/null
@@ -0,0 +1,116 @@
+/* Implement tasking-related runtime actions for CHILL.
+   Copyright (C) 1992,1993 Free Software Foundation, Inc.
+   Author: Wilfried Moser
+
+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, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+#include <stdio.h>
+#include "rtltypes.h"
+#include "rts.h"
+
+typedef char *(*fetch_names) (int number);
+extern fetch_names     __RTS_FETCH_NAMES__;
+
+/*
+ * function print_instance
+ *
+ */
+
+static char *print_instance (ins)
+     INSTANCE ins;
+{
+  static char  buf[256];
+  char *f;
+
+  if (!__RTS_FETCH_NAMES__)
+    f = 0;
+  else
+    f = (*__RTS_FETCH_NAMES__) (ins.ptype);
+  if (!f)
+    sprintf (buf, "[%u;%u]", ins.ptype, ins.pcopy);
+  else
+    sprintf (buf, "[%s;%u]", f, ins.pcopy);
+  return buf;
+}
+
+/*
+ * function __print_buffer
+ *
+ * parameters:
+ *     buffer      buffer location
+ *
+ * returns:
+ *     void
+ *
+ * exceptions:
+ *     none
+ *
+ * abstract:
+ *     Function is used for debugging purposes only to print a
+ *     buffer queue
+ */
+
+void
+__print_buffer (buffer, name)
+     Buffer_Queue   **buffer;
+     char            *name;
+{
+  Buffer_Queue      *bq;
+  int                bsqcnt = 0, bwqcnt = 0;
+  Buffer_Send_Queue *bsq;
+  Buffer_Wait_Queue *bwq;
+
+  if (name)
+    printf ("Buffer %s:\n", name);
+  else
+    printf ("Buffer at address H'%X:\n", buffer);
+
+  memcpy (&bq, buffer, sizeof (Buffer_Queue *));
+  if (bq == 0)
+    {
+      printf ("EMPTY\n");
+      return;
+    }
+
+  bsq = bq->sendqueue;
+  if (bsq != 0)
+      printf ("Send Queue:\n");
+  while (bsq)
+    {
+      printf (" %3d: ", ++bsqcnt);
+      printf ("Process %s, ", print_instance (bsq->this));
+      printf ("Priority %d", bsq->priority);
+      if (bsq->is_delayed)
+       printf (", Delayed");
+      printf ("\n");
+      bsq = bsq->forward;
+    }
+  bwq = bq->waitqueue;
+  if (bwq != 0)
+      printf ("Wait Queue:\n");
+  while (bwq)
+    {
+      printf (" %3d: ", ++bwqcnt);
+      printf ("Process %s, ", print_instance (bwq->this));
+      if (bwq->is_sent)
+       printf (", Send by %s", print_instance (bwq->who_sent));
+      printf ("\n");
+      bwq = bwq->forward;
+    }
+  if (bsqcnt == 0 && bwqcnt == 0)
+    printf ("EMPTY\n");
+}
diff --git a/gcc/ch/runtime/printevent.c b/gcc/ch/runtime/printevent.c
new file mode 100644 (file)
index 0000000..c491a2c
--- /dev/null
@@ -0,0 +1,93 @@
+/* Implement tasking-related runtime actions for CHILL.
+   Copyright (C) 1992,1993 Free Software Foundation, Inc.
+   Author: Wilfried Moser
+
+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, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+#include <stdio.h>
+#include "rtltypes.h"
+#include "rts.h"
+
+typedef char *(*fetch_names) (int number);
+extern fetch_names     __RTS_FETCH_NAMES__;
+
+/*
+ * function print_instance
+ *
+ */
+
+static char *print_instance (ins)
+     INSTANCE ins;
+{
+  static char  buf[256];
+  char *f;
+
+  if (!__RTS_FETCH_NAMES__)
+    f = 0;
+  else
+    f = (*__RTS_FETCH_NAMES__) (ins.ptype);
+  if (!f)
+    sprintf (buf, "[%u;%u]", ins.ptype, ins.pcopy);
+  else
+    sprintf (buf, "[%s;%u]", f, ins.pcopy);
+  return buf;
+}
+
+/*
+ * function __print_event
+ *
+ * parameters:
+ *     event      event location
+ *
+ * returns:
+ *     void
+ *
+ * exceptions:
+ *     none
+ *
+ * abstract:
+ *     Function is used for debugging purposes only to print an
+ *     event queue
+ */
+
+void
+__print_event (evaddr, name)
+     Event_Queue   **evaddr;
+     char           *name;
+{
+  Event_Queue    *ev;
+  int            cnt = 0;
+
+  if (name)
+    printf ("Event %s:\n", name);
+  else
+    printf ("Event at address H'%X:\n", evaddr);
+
+  memcpy (&ev, evaddr, sizeof (Event_Queue *));
+  while (ev)
+    {
+      printf (" %3d: ", ++cnt);
+      printf ("Process %s, ", print_instance (ev->this));
+      printf ("Priority %d", ev->priority);
+      if (ev->is_continued)
+       printf (" ,Continued by %s", print_instance (ev->who_continued));
+      printf ("\n");
+      ev = ev->forward;
+    }
+  if (!cnt)
+    printf ("EMPTY\n");
+}
diff --git a/gcc/ch/runtime/retmem.c b/gcc/ch/runtime/retmem.c
new file mode 100644 (file)
index 0000000..a17ef7b
--- /dev/null
@@ -0,0 +1,52 @@
+/* Implement runtime actions for CHILL.
+   Copyright (C) 1992,1993 Free Software Foundation, Inc.
+   Author: Wilfried Moser
+
+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, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+#define __CHILL_LIB__
+
+#include "config.h"
+#include <stdlib.h>
+
+/*
+ * function _return_memory
+ *
+ * parameter:
+ *  ptr                        pointer to memory to free
+ *  filename            source file which issued the call
+ *  linenumber          line number of the call within that file
+ *
+ * returns:
+ *  void
+ *
+ * exceptions:
+ *  none
+ *
+ * abstract:
+ *  free memory previously allocated by _allocate_(global_)memory
+ *
+*/
+
+void
+_return_memory (ptr, filename, linenumber)
+     void *ptr;
+     char *filename;
+     int linenumber;
+{
+    free (ptr);
+}
diff --git a/gcc/ch/runtime/rtltypes.h b/gcc/ch/runtime/rtltypes.h
new file mode 100644 (file)
index 0000000..ed994f3
--- /dev/null
@@ -0,0 +1,61 @@
+#ifndef __rtltypes_h__
+#define __rtltypes_h__
+
+#include <setjmp.h>
+
+/* Add prototype support.  */
+#ifndef PROTO
+#if defined (USE_PROTOTYPES) ? USE_PROTOTYPES : defined (__STDC__)
+#define PROTO(ARGS) ARGS
+#else
+#define PROTO(ARGS) ()
+#endif
+#endif
+
+/* argc, argv */
+typedef struct
+{
+    unsigned short     len;
+    char               body[0];
+} TVaryingCharType;
+
+#ifndef __CHILL_LIB__
+extern TVaryingCharType        **chill_argv;
+extern int             chill_argc;
+#endif
+
+/* definitions for exceptions */
+typedef struct
+{
+    char       *exname;
+    short      exnumber;
+} TExceptionDefinition;
+
+#if 1
+typedef char *__ch_exception;
+#define EX_EQ(e1, e2) (strcmp(e1, e2)==0)
+#else
+typedef void *__ch_exception;
+#define EX_EQ(e1, e2) (e1 == e2)
+#endif
+#define __ch_else_except ((__ch_exception)0)
+
+struct __ch_handled_excepts
+{
+  /* List is ended by a code==0, or ex==__ch_else_except (ELSE handler). */
+  __ch_exception ex;
+  int code; /* Positive number indicating ordinal in handler list. */
+};
+
+/* definitions for exception handlers */
+typedef struct  __ch_handler
+{
+  struct __ch_handler *prev;
+  struct __ch_handled_excepts *handlers;
+  jmp_buf jbuf;
+} TExceptionHandlerStack;
+
+/* exceptions */
+#define EXCEPTION(x)   /* nothing */
+
+#endif /* __rtltypes_h__ */
diff --git a/gcc/ch/runtime/rts.c b/gcc/ch/runtime/rts.c
new file mode 100644 (file)
index 0000000..b7602e9
--- /dev/null
@@ -0,0 +1,655 @@
+/* GNU CHILL compiler regression test file
+ 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, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <setjmp.h>
+#include <signal.h>
+
+#include "rts.h"
+
+
+/* some allocation/reallocation functions */
+
+static void *
+xmalloc (size)
+     int size;
+{
+  void *tmp = malloc (size);
+
+  if (!tmp)
+    {
+      fprintf (stderr, "Out of heap space.\n");
+      exit (1);
+    }
+  return (tmp);
+}
+
+static void *
+xrealloc (ptr, size)
+     void *ptr;
+     int size;
+{
+  void *tmp = realloc (ptr, size);
+
+  if (!tmp)
+    {
+      fprintf (stderr, "Out of heap space.\n");
+      exit (1);
+    }
+  return (tmp);
+}
+
+/* the necessary data */
+#define MAX_NUMBER 100
+typedef char UsedValues[MAX_NUMBER];
+
+#define MAX_COPIES 100
+
+#define MAX_PER_ITEM 20
+typedef struct TASKINGSTRUCTLIST
+{
+  struct TASKINGSTRUCTLIST *forward;
+  int    num;
+  TaskingStruct *data[MAX_PER_ITEM];
+  char copies[MAX_COPIES];
+  jmp_buf where;
+} TaskingStructList;
+
+static TaskingStructList *task_array[LAST_AND_UNUSED];
+static UsedValues used_values[LAST_AND_UNUSED];
+
+static short
+get_next_free_number (vals)
+     UsedValues vals;
+{
+  short  i;
+  for (i = 1; i < MAX_NUMBER; i++)
+    {
+      if (!vals[i])
+       {
+         vals[i] = 1;
+         return (i);
+       }
+    }
+  fprintf (stderr, "There are no more free numbers.\n");
+  exit (1);
+}
+
+/* function search for the next available copy number */
+static short
+get_next_copy_number (p)
+     TaskingStructList *p;
+{
+  short i;
+
+  for (i = 0; i < MAX_COPIES; i++)
+    {
+      if (!p->copies[i])
+       {
+         p->copies[i] = 1;
+         return (i);
+       }
+    }
+  fprintf (stderr, "No more copies available for \"%s\".\n",
+          p->data[0]->name);
+  exit (1);
+}
+
+/* function registers a tasking entry from a module and assign
+   a value to the type */
+
+void
+__register_tasking (t)
+     TaskingStruct *t;
+{
+  TaskingStructList *p;
+
+  /* check first if a value was provided and if it is in range */
+  if (t->value_defined && *t->value >= MAX_NUMBER)
+    {
+      fprintf (stderr, "Value %d out of range.\n", *t->value);
+      exit (1);
+    }
+
+  /* look for item defined */
+  p = task_array[t->type];
+  while (p)
+    {
+      if (!strcmp (p->data[0]->name, t->name))
+       /* have found it */
+       break;
+      p = p->forward;
+    }
+
+  if (!p)
+    {
+      TaskingStructList *wrk = (TaskingStructList *)&task_array[t->type];
+
+      /* this is a new one -- allocate space */
+      p = xmalloc (sizeof (TaskingStructList));
+      memset (p->copies, 0, sizeof (p->copies));
+      p->forward = 0;
+      p->num = 1;
+      p->data[0] = t;
+
+      /* queue it in */
+      while (wrk->forward)
+       wrk = wrk->forward;
+      wrk->forward = p;
+    }
+  else
+    {
+      if (p->num >= MAX_PER_ITEM)
+       {
+         fprintf (stderr, "Too many registrations of \"%s\".\n", t->name);
+         exit (1);
+       }
+      p->data[p->num++] = t;
+    }
+}
+\f
+/* define all the entries for the runtime system. They will be
+   needed by chillrt0.o */
+
+typedef char *(*fetch_names) ();
+typedef int (*fetch_numbers) ();
+
+static char tmp_for_fetch_name[100];
+
+char *
+__fetch_name (number)
+     int number;
+{
+  TaskingStructList *p = task_array[Process];
+
+  while (p)
+    {
+      if (*(p->data[0]->value) == number)
+       return (p->data[0]->name);
+      p = p->forward;
+    }
+  sprintf (tmp_for_fetch_name, "%d", number);
+  return (tmp_for_fetch_name);
+}
+fetch_names    __RTS_FETCH_NAMES__ = __fetch_name;
+
+static int 
+__fetch_number (name)
+     char *name;
+{
+  TaskingStructList *p = task_array[Process];
+
+  while (p)
+    {
+      if (!strcmp (p->data[0]->name, name))
+       return (*(p->data[0]->value));
+      p = p->forward;
+    }
+  return (-1);
+}
+fetch_numbers  __RTS_FETCH_NUMBERS__ = __fetch_number;
+
+
+/* here we go to check all registered items */
+static void
+ __rts_init ()
+{
+  int i;
+  TaskingStructList *p;
+
+  for (i = Process; i <= Event; i++)
+    {
+      p = task_array[i];
+      while (p)
+       {
+         TaskingStruct *t = 0;
+         int j;
+         short val;
+
+         for (j = 0; j < p->num; j++)
+           {
+             if (p->data[j]->value_defined)
+               {
+                 if (t)
+                   {
+                     if (*(t->value) != *(p->data[j]->value))
+                       {
+                         fprintf (stderr, "Different values (%d & %d) for \"%s\".",
+                                  *(t->value), *(p->data[j]->value), t->name);
+                         exit (1);
+                       }
+                   }
+                 else
+                   t = p->data[j];
+               }
+           }
+
+         if (t)
+           {
+
+             val = *(t->value);
+
+             if (used_values[t->type][val])
+               {
+                 fprintf (stderr, "Value %d for \"%s\" is already used.\n",
+                          val, t->name);
+                 exit (1);
+               }
+             used_values[t->type][val] = 1;
+           }
+         else
+           {
+             /* we have to create a new value */
+             val = get_next_free_number (used_values[p->data[0]->type]);
+           }
+             
+         for (j = 0; j < p->num; j++)
+           {
+             p->data[j]->value_defined = 1;
+             *(p->data[j]->value) = val;
+           }
+
+         p = p->forward;
+       }
+    }
+}
+EntryPoint     __RTS_INIT__ = __rts_init;
+\f
+/* define the start process queue */
+typedef struct STARTENTRY
+{
+  struct STARTENTRY *forward;
+  INSTANCE whoami;
+  EntryPoint entry;
+  void *data;
+  int datalen;
+} StartEntry;
+
+static StartEntry *start_queue = 0;
+static StartEntry *current_process = 0;
+
+/* the jump buffer for the main loop */
+static jmp_buf jump_buffer;
+static int jump_buffer_initialized = 0;
+
+/* look for entries in start_queue and start the process */
+static void
+__rts_main_loop ()
+{
+  StartEntry *s;
+
+  while (1)
+    {
+      if (setjmp (jump_buffer) == 0)
+       {
+         jump_buffer_initialized = 1;
+         s = start_queue;
+         while (s)
+           {
+             current_process = s;
+             start_queue = s->forward;
+             
+             /* call the process */
+             (*s->entry) (s->data);
+             s = start_queue;
+           }
+         /* when queue empty we have finished */
+         return;
+       }
+      else
+       {
+         /* stop executed */
+         if (current_process->data)
+           free (current_process->data);
+         free (current_process);
+         current_process = 0;
+       }
+    }
+}
+EntryPoint     __RTS_MAIN_LOOP__ = __rts_main_loop;
+
+
+void
+__start_process (ptype, pcopy, arg_size, args, ins)
+     short ptype;
+     short pcopy;
+     int arg_size;
+     void *args;
+     INSTANCE *ins;
+{
+  TaskingStructList *p = task_array[Process];
+  EntryPoint pc = 0;
+  int i;
+  short this_copy = pcopy;
+  StartEntry *s, *wrk;
+
+  /* search for the process */
+  while (p)
+    {
+      if (*(p->data[0]->value) == ptype)
+       break;
+      p = p->forward;
+    }
+  if (!p)
+    {
+      fprintf (stderr, "Cannot find a process with type %d.\n", ptype);
+      exit (1);
+    }
+  
+  /* search for the entry point */
+  for (i = 0; i < p->num; i++)
+    {
+      if (p->data[i]->entry)
+       {
+         pc = p->data[i]->entry;
+         break;
+       }
+    }
+  if (!pc)
+    {
+      fprintf (stderr, "Process \"%s\" doesn't have an entry point.\n",
+              p->data[0]->name);
+      exit (1);
+    }
+
+  /* check the copy */
+  if (pcopy >= MAX_COPIES)
+    {
+      fprintf (stderr, "Copy number (%d) out of range.\n", pcopy);
+      exit (1);
+    }
+  if (pcopy == -1)
+    {
+      /* search for a copy number */
+      this_copy = get_next_copy_number (p);
+    }
+  else
+    {
+      if (p->copies[pcopy])
+       {
+         /* FIXME: should be exception 'startfail' */
+         fprintf (stderr, "Copy number %d already in use for \"%s\".\n",
+                  pcopy, p->data[0]->name);
+         exit (1);
+       }
+      p->copies[this_copy = pcopy] = 1;
+    }
+
+  /* ready to build start_queue entry */
+  s = xmalloc (sizeof (StartEntry));
+  s->forward = 0;
+  s->whoami.pcopy = this_copy;
+  s->whoami.ptype = ptype;
+  s->entry = pc;
+  s->datalen = arg_size;
+  if (args)
+    {
+      s->data = xmalloc (arg_size);
+      memcpy (s->data, args, arg_size);
+    }
+  else
+    s->data = 0;
+
+  /* queue that stuff in */
+  wrk = (StartEntry *)&start_queue;
+  while (wrk->forward)
+    wrk = wrk->forward;
+  wrk->forward = s;
+
+  /* if we have a pointer to ins -- set it */
+  if (ins)
+    {
+      ins->ptype = ptype;
+      ins->pcopy = this_copy;
+    }
+}
+\f
+void
+__stop_process ()
+{
+  if (!jump_buffer_initialized)
+    {
+      fprintf (stderr, "STOP called before START.\n");
+      exit (1);
+    }
+  longjmp (jump_buffer, 1);
+}
+
+
+/* function returns INSTANCE of current process */
+INSTANCE
+__whoami ()
+{
+  INSTANCE whoami;
+  if (current_process)
+    whoami = current_process->whoami;
+  else
+    {
+      whoami.ptype = 0;
+      whoami.pcopy = 0;
+    }
+  return (whoami);
+}
+
+typedef struct
+{
+  short *sc;
+  int    data_len;
+  void  *data;
+} SignalDescr;
+
+typedef struct SIGNALQUEUE
+{
+  struct SIGNALQUEUE *forward;
+  short    sc;
+  int      data_len;
+  void    *data;
+  INSTANCE to;
+  INSTANCE from;
+} SignalQueue;
+
+/* define the signal queue */
+static SignalQueue *msg_queue = 0;
+\f
+/* send a signal */
+void
+__send_signal (s, to, prio, with_len, with)
+     SignalDescr *s;
+     INSTANCE     to;
+     int          prio;
+     int          with_len;
+     void        *with;
+{
+  SignalQueue *wrk = (SignalQueue *)&msg_queue;
+  SignalQueue *p;
+  TaskingStructList *t = task_array[Process];
+
+  /* search for process is defined and running */
+  while (t)
+    {
+      if (*(t->data[0]->value) == to.ptype)
+       break;
+      t = t->forward;
+    }
+  if (!t || !t->copies[to.pcopy])
+    {
+      fprintf (stderr, "Can't find instance [%d,%d].\n",
+              to.ptype, to.pcopy);
+      exit (1);
+    }
+
+  /* go to the end of the msg_queue */
+  while (wrk->forward)
+    wrk = wrk->forward;
+
+  p = xmalloc (sizeof (SignalQueue));
+  p->sc = *(s->sc);
+  if (p->data_len = s->data_len)
+    {
+      p->data = xmalloc (s->data_len);
+      memcpy (p->data, s->data, s->data_len);
+    }
+  else
+    p->data = 0;
+  p->to = to;
+  p->from = __whoami ();
+  p->forward = 0;
+  wrk->forward = p;
+}
+\f
+void
+start_signal_timeout (i, s, j)
+     int i;
+     SignalDescr *s;
+     int j;
+{
+  __send_signal (s, __whoami (), 0, 0, 0);
+}
+
+
+/* receive a signal */
+int
+__wait_signal_timed (sig_got, nsigs, sigptr, datap,
+                    datalen, ins, else_branche,
+                    to, filename, lineno)
+     short    *sig_got;
+     int       nsigs;
+     short    *sigptr[];
+     void     *datap;
+     int       datalen;
+     INSTANCE *ins;
+     int       else_branche;
+     void     *to; 
+     char     *filename;
+     int       lineno; 
+{
+  INSTANCE me = __whoami ();
+  SignalQueue *wrk, *p = msg_queue;
+  int i;
+  short sc;
+
+  /* search for a signal to `me' */
+  wrk = (SignalQueue *)&msg_queue;
+
+  while (p)
+    {
+      if (p->to.ptype == me.ptype
+         && p->to.pcopy == me.pcopy)
+       break;
+      wrk = p;
+      p = p->forward;
+    }
+
+  if (!p)
+    {
+      fprintf (stderr, "No signal for [%d,%d].\n",
+              me.ptype, me.pcopy);
+      exit (1);
+    }
+
+  /* queue the message out */
+  wrk->forward = p->forward;
+
+  /* now look for signal in list */
+  for (i = 0; i < nsigs; i++)
+    if (*(sigptr[i]) == p->sc)
+      break;
+
+  if (i >= nsigs && ! else_branche)
+    /* signal not in list and no ELSE in code */
+    __cause_exception ("signalfail", __FILE__, __LINE__);
+
+  if (i >= nsigs)
+    {
+      /* signal not in list */
+      sc = p->sc;
+      if (ins)
+       *ins = p->from;
+      if (p->data)
+       free (p->data);
+      free (p);
+      *sig_got = sc;
+      return (0);
+    }
+
+  /* we have found a signal in the list */
+  if (p->data_len)
+    {
+      if (datalen >= p->data_len
+         && datap)
+       memcpy (datap, p->data, p->data_len);
+      else
+       __cause_exception ("spacefail", __FILE__, __LINE__);
+    }
+
+  sc = p->sc;
+  if (ins)
+    *ins = p->from;
+  if (p->data)
+    free (p->data);
+  free (p);
+  *sig_got = sc;
+  return (0);
+}
+\f
+/* wait a certain amount of seconds */
+int
+__sleep_till (abstime, reltime, fname, lineno)
+     time_t abstime;
+     int    reltime;
+     char  *fname;
+     int    lineno;
+{
+  sleep (reltime);
+  return 0;
+}
+\f
+/* set up an alarm */
+static int timeout_flag = 0;
+
+static void alarm_handler ()
+{
+  timeout_flag = 1;
+}
+
+int *
+__define_timeout (howlong, filename, lineno)
+     unsigned long howlong;  /* comes in millisecs */
+     char         *filename;
+     int           lineno;
+{
+  unsigned int  prev_alarm_value;
+
+  signal (SIGALRM, alarm_handler);
+  prev_alarm_value = alarm ((unsigned int)(howlong / 1000));
+  return &timeout_flag;
+}
+\f
+/* wait till timeout expires */
+void
+__wait_timeout (toid, filename, lineno)
+     volatile int    *toid;
+     char   *filename;
+     int     lineno;
+{
+  while (! *toid) ;
+  *toid = 0;
+}
diff --git a/gcc/ch/runtime/terminate.c b/gcc/ch/runtime/terminate.c
new file mode 100644 (file)
index 0000000..ea2044e
--- /dev/null
@@ -0,0 +1,60 @@
+/* Implement runtime actions for CHILL.
+   Copyright (C) 1992,1993 Free Software Foundation, Inc.
+   Author: Wilfried Moser
+
+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, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+#define __CHILL_LIB__
+
+#include "config.h"
+#include <stdlib.h>
+#include "rtltypes.h"
+
+extern void __cause_ex1 (char *exname, char *file, int lineno);
+
+/* define needed exceptions */
+EXCEPTION (empty)
+
+/*
+ * function __terminate
+ *
+ * parameter:
+ *  ptr                        pointer to memory to free
+ *  filename            source file which issued the call
+ *  linenumber          line number of the call within that file
+ *
+ * returns:
+ *  void
+ *
+ * exceptions:
+ *  empty
+ *
+ * abstract:
+ *  free memory previously allocated by __allocate.
+ *
+*/
+
+void
+__terminate (ptr, filename, linenumber)
+     void *ptr;
+     char *filename;
+     int linenumber;
+{
+  if (! ptr)
+    __cause_ex1 ("empty", filename, linenumber);
+  free (ptr);
+}
diff --git a/gcc/ch/runtime/writerecord.c b/gcc/ch/runtime/writerecord.c
new file mode 100644 (file)
index 0000000..7e88322
--- /dev/null
@@ -0,0 +1,133 @@
+/* Implement Input/Output runtime actions for CHILL.
+   Copyright (C) 1992,1993 Free Software Foundation, Inc.
+   Author: Wilfried Moser, et al
+
+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, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+#include <setjmp.h>
+#include <errno.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/types.h>
+
+#include "fileio.h"
+
+static
+void
+doWrite( Access_Mode* the_access, void* buf, size_t nbyte )
+{
+  size_t nwrit;
+
+  nwrit = write( the_access->association->handle, buf, nbyte );
+
+  if( nwrit < nbyte )
+  {
+    the_access->association->syserrno = errno;
+    RWEXCEPTION( WRITEFAIL, OS_IO_ERROR );
+  }
+}
+
+
+void
+__writerecord( Access_Mode*  the_access,
+               signed long   the_index,
+               char*         the_val_addr,
+               unsigned long the_val_len,
+               char*         file,
+               int           line )
+
+{
+  Association_Mode* the_assoc;
+  unsigned long  info;
+  char*          actaddr;
+  unsigned short actlen;
+  off_t          filepos;
+
+  if( !the_access )
+    CHILLEXCEPTION( file, line, EMPTY, NULL_ACCESS );
+
+  if( !(the_assoc = the_access->association) )
+    CHILLEXCEPTION( file, line, NOTCONNECTED, IS_NOT_CONNECTED );
+
+  /* Usage must no be ReadOnly */
+  if( the_assoc->usage == ReadOnly )
+    CHILLEXCEPTION( file, line, WRITEFAIL, BAD_USAGE );
+
+  /*
+   *  Positioning
+   */
+  if( TEST_FLAG( the_access, IO_INDEXED ) )
+  {
+    /* index expression must be within bounds of index mode */
+    if( the_index < the_access->lowindex
+        || the_access->highindex < the_index )
+      CHILLEXCEPTION( file, line, RANGEFAIL, BAD_INDEX );
+    filepos = the_access->base + 
+              (the_index - the_access->lowindex) * the_access->reclength;
+
+    if( lseek( the_assoc->handle, filepos, SEEK_SET ) == -1L )
+      CHILLEXCEPTION( file, line, WRITEFAIL, LSEEK_FAILS );
+  }
+
+  if( (info = setjmp( __rw_exception )) )
+    CHILLEXCEPTION( file, line, info>>16, info & 0xffff );
+
+  if( TEST_FLAG( the_access, IO_TEXTIO ) )
+  {
+    if( TEST_FLAG( the_access, IO_INDEXED ) )
+    {
+      int nspace = the_access->reclength - the_val_len;
+      memset( the_val_addr + 2 + the_val_len, ' ', nspace );
+      actlen = the_access->reclength - 2;
+      MOV2(the_val_addr,&actlen);
+      doWrite( the_access, the_val_addr, the_access->reclength );
+    }
+    else
+    { 
+      if( the_assoc->ctl_pre )
+       write( the_assoc->handle, &the_assoc->ctl_pre, 1 );
+      MOV2(&actlen,the_val_addr);
+      write( the_assoc->handle, the_val_addr + 2, actlen );
+      if( the_assoc->ctl_post )
+       write( the_assoc->handle, &the_assoc->ctl_post, 1 );
+      the_assoc->ctl_pre  = '\0';
+      the_assoc->ctl_post = '\n';
+    }
+  }
+  else
+  {
+    switch( the_access->rectype )
+    {
+    case Fixed:
+      if( TEST_FLAG( the_assoc, IO_VARIABLE ) )
+      {
+        actlen = the_access->reclength;
+        doWrite( the_access, &actlen, sizeof(actlen) );
+      }
+      doWrite( the_access, the_val_addr, the_val_len );
+      break;
+    case VaryingChars:
+      MOV2(&actlen,the_val_addr);
+      if( actlen > the_access->reclength - 2 )
+        CHILLEXCEPTION( file, line, RANGEFAIL, RECORD_TOO_LONG );
+      actlen = TEST_FLAG( the_access, IO_INDEXED ) 
+               ? the_access->reclength : actlen + 2;
+      doWrite( the_access, the_val_addr, actlen );
+      break;
+    }
+  }
+}
diff --git a/gcc/ch/runtime/xorps.c b/gcc/ch/runtime/xorps.c
new file mode 100644 (file)
index 0000000..ddf0012
--- /dev/null
@@ -0,0 +1,76 @@
+/* Implement POWERSET runtime actions for CHILL.
+   Copyright (C) 1992,1993 Free Software Foundation, Inc.
+   Author: Wilfried Moser, et al
+
+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, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+#define __CHILL_LIB__
+
+#include "config.h"
+#include <stdio.h>
+#include "powerset.h"
+
+/*
+ * function __xorpowerset
+ *
+ * parameters:
+ *     out             return from __xorpowerset
+ *     left            left powerset
+ *     right           right powerset
+ *     bitlength       length of powerset in bits
+ *
+ * returns:
+ *     void
+ *
+ * exceptions:
+ *  none
+ *
+ * abstract:
+ *  xor's 2 powersets
+ *
+ */
+
+void
+__xorpowerset (out, left, right, bitlength)
+     SET_WORD      *out;
+     SET_WORD      *left;
+     SET_WORD      *right;
+     unsigned long  bitlength;
+{
+  if (bitlength <= SET_CHAR_SIZE)
+    {
+      *((SET_CHAR *)out) = *((SET_CHAR *)left) ^
+                           *((SET_CHAR *)right);
+      MASK_UNUSED_CHAR_BITS((SET_CHAR *)out, bitlength);
+    }
+  else if (bitlength <= SET_SHORT_SIZE)
+    {
+      *((SET_SHORT *)out) = *((SET_SHORT *)left) ^
+                            *((SET_SHORT *)right);
+      MASK_UNUSED_SHORT_BITS((SET_SHORT *)out, bitlength);
+    }
+  else
+    {
+      unsigned long len = BITS_TO_WORDS(bitlength);
+      register unsigned long i;
+
+      for (i = 0; i < len; i++)
+       out[i] = left[i] ^ right[i];
+      MASK_UNUSED_WORD_BITS ((out + len - 1), 
+                            bitlength % SET_WORD_SIZE);
+    }
+}
diff --git a/gcc/ch/xtypeck.c b/gcc/ch/xtypeck.c
new file mode 100644 (file)
index 0000000..2946b23
--- /dev/null
@@ -0,0 +1,264 @@
+
+#if 0
+tree
+build_component_ref (datum, field_name)
+  tree datum, field_name;
+{
+  return build_chill_component_ref (datum, field_name);
+}
+
+/* Mark EXP saying that we need to be able to take the
+   address of it; it should not be allocated in a register.
+   Value is 1 if successful.  */
+
+int
+mark_addressable (exp)
+     tree exp;
+{
+  register tree x = exp;
+  while (1)
+    switch (TREE_CODE (x))
+      {
+      case ADDR_EXPR:
+      case COMPONENT_REF:
+      case ARRAY_REF:
+      case REALPART_EXPR:
+      case IMAGPART_EXPR:
+/* start-sanitize-chill */
+      case TRUTH_ANDIF_EXPR:
+      case TRUTH_ORIF_EXPR:
+      case COMPOUND_EXPR:
+/* end-sanitize-chill */
+       x = TREE_OPERAND (x, 0);
+       break;
+/* start-sanitize-chill */
+
+      case COND_EXPR:
+       return mark_addressable (TREE_OPERAND (x, 1))
+         & mark_addressable (TREE_OPERAND (x, 2));
+/* end-sanitize-chill */
+
+      case CONSTRUCTOR:
+       TREE_ADDRESSABLE (x) = 1;
+       return 1;
+
+      case VAR_DECL:
+      case CONST_DECL:
+      case PARM_DECL:
+      case RESULT_DECL:
+       if (DECL_REGISTER (x) && !TREE_ADDRESSABLE (x)
+           && DECL_NONLOCAL (x))
+         {
+           if (TREE_PUBLIC (x))
+             {
+               error ("global register variable `%s' used in nested function",
+                      IDENTIFIER_POINTER (DECL_NAME (x)));
+               return 0;
+             }
+           pedwarn ("register variable `%s' used in nested function",
+                    IDENTIFIER_POINTER (DECL_NAME (x)));
+         }
+       else if (DECL_REGISTER (x) && !TREE_ADDRESSABLE (x))
+         {
+           if (TREE_PUBLIC (x))
+             {
+               error ("address of global register variable `%s' requested",
+                      IDENTIFIER_POINTER (DECL_NAME (x)));
+               return 0;
+             }
+
+           /* If we are making this addressable due to its having
+              volatile components, give a different error message.  Also
+              handle the case of an unnamed parameter by not trying
+              to give the name.  */
+
+           else if (C_TYPE_FIELDS_VOLATILE (TREE_TYPE (x)))
+             {
+               error ("cannot put object with volatile field into register");
+               return 0;
+             }
+
+           pedwarn ("address of register variable `%s' requested",
+                    IDENTIFIER_POINTER (DECL_NAME (x)));
+         }
+       put_var_into_stack (x);
+
+       /* drops in */
+      case FUNCTION_DECL:
+       TREE_ADDRESSABLE (x) = 1;
+#if 0  /* poplevel deals with this now.  */
+       if (DECL_CONTEXT (x) == 0)
+         TREE_ADDRESSABLE (DECL_ASSEMBLER_NAME (x)) = 1;
+#endif
+
+      default:
+       return 1;
+    }
+}
+
+/* Return an unsigned type the same as TYPE in other respects.  */
+
+tree
+unsigned_type (type)
+     tree type;
+{
+  tree type1 = TYPE_MAIN_VARIANT (type);
+  if (type1 == signed_char_type_node || type1 == char_type_node)
+    return unsigned_char_type_node;
+  if (type1 == integer_type_node)
+    return unsigned_type_node;
+  if (type1 == short_integer_type_node)
+    return short_unsigned_type_node;
+  if (type1 == long_integer_type_node)
+    return long_unsigned_type_node;
+  if (type1 == long_long_integer_type_node)
+    return long_long_unsigned_type_node;
+  return type;
+}
+
+/* Return a signed type the same as TYPE in other respects.  */
+
+tree
+signed_type (type)
+     tree type;
+{
+  tree type1 = TYPE_MAIN_VARIANT (type);
+  if (type1 == unsigned_char_type_node || type1 == char_type_node)
+    return signed_char_type_node;
+  if (type1 == unsigned_type_node)
+    return integer_type_node;
+  if (type1 == short_unsigned_type_node)
+    return short_integer_type_node;
+  if (type1 == long_unsigned_type_node)
+    return long_integer_type_node;
+  if (type1 == long_long_unsigned_type_node)
+    return long_long_integer_type_node;
+  return type;
+}
+
+/* Return a type the same as TYPE except unsigned or
+   signed according to UNSIGNEDP.  */
+
+tree
+signed_or_unsigned_type (unsignedp, type)
+     int unsignedp;
+     tree type;
+{
+  if (! INTEGRAL_TYPE_P (type))
+    return type;
+  if (TYPE_PRECISION (type) == TYPE_PRECISION (signed_char_type_node))
+    return unsignedp ? unsigned_char_type_node : signed_char_type_node;
+  if (TYPE_PRECISION (type) == TYPE_PRECISION (integer_type_node)) 
+    return unsignedp ? unsigned_type_node : integer_type_node;
+  if (TYPE_PRECISION (type) == TYPE_PRECISION (short_integer_type_node)) 
+    return unsignedp ? short_unsigned_type_node : short_integer_type_node;
+  if (TYPE_PRECISION (type) == TYPE_PRECISION (long_integer_type_node)) 
+    return unsignedp ? long_unsigned_type_node : long_integer_type_node;
+  if (TYPE_PRECISION (type) == TYPE_PRECISION (long_long_integer_type_node)) 
+    return (unsignedp ? long_long_unsigned_type_node
+           : long_long_integer_type_node);
+  return type;
+}
+
+extern tree intHI_type_node;
+extern tree intSI_type_node;
+extern tree intDI_type_node;
+
+extern tree unsigned_intHI_type_node;
+extern tree unsigned_intSI_type_node;
+extern tree unsigned_intDI_type_node;
+
+/* Return an integer type with BITS bits of precision,
+   that is unsigned if UNSIGNEDP is nonzero, otherwise signed.  */
+
+tree
+type_for_size (bits, unsignedp)
+     unsigned bits;
+     int unsignedp;
+{
+  if (bits == TYPE_PRECISION (signed_char_type_node))
+    return unsignedp ? unsigned_char_type_node : signed_char_type_node;
+
+  if (bits == TYPE_PRECISION (short_integer_type_node))
+    return unsignedp ? short_unsigned_type_node : short_integer_type_node;
+
+  if (bits == TYPE_PRECISION (integer_type_node))
+    return unsignedp ? unsigned_type_node : integer_type_node;
+
+  if (bits == TYPE_PRECISION (long_integer_type_node))
+    return unsignedp ? long_unsigned_type_node : long_integer_type_node;
+
+  if (bits == TYPE_PRECISION (long_long_integer_type_node))
+    return (unsignedp ? long_long_unsigned_type_node
+           : long_long_integer_type_node);
+
+  if (bits <= TYPE_PRECISION (intHI_type_node))
+    return unsignedp ? unsigned_intHI_type_node : intHI_type_node;
+
+  if (bits <= TYPE_PRECISION (intSI_type_node))
+    return unsignedp ? unsigned_intSI_type_node : intSI_type_node;
+
+  if (bits <= TYPE_PRECISION (intDI_type_node))
+    return unsignedp ? unsigned_intDI_type_node : intDI_type_node;
+
+  return 0;
+}
+
+/* Return a data type that has machine mode MODE.
+   If the mode is an integer,
+   then UNSIGNEDP selects between signed and unsigned types.  */
+
+tree
+type_for_mode (mode, unsignedp)
+     enum machine_mode mode;
+     int unsignedp;
+{
+  if (mode == TYPE_MODE (signed_char_type_node))
+    return unsignedp ? unsigned_char_type_node : signed_char_type_node;
+
+  if (mode == TYPE_MODE (short_integer_type_node))
+    return unsignedp ? short_unsigned_type_node : short_integer_type_node;
+
+  if (mode == TYPE_MODE (integer_type_node))
+    return unsignedp ? unsigned_type_node : integer_type_node;
+
+  if (mode == TYPE_MODE (long_integer_type_node))
+    return unsignedp ? long_unsigned_type_node : long_integer_type_node;
+
+  if (mode == TYPE_MODE (long_long_integer_type_node))
+    return unsignedp ? long_long_unsigned_type_node : long_long_integer_type_node;
+
+  if (mode == TYPE_MODE (intHI_type_node))
+    return unsignedp ? unsigned_intHI_type_node : intHI_type_node;
+
+  if (mode == TYPE_MODE (intSI_type_node))
+    return unsignedp ? unsigned_intSI_type_node : intSI_type_node;
+
+  if (mode == TYPE_MODE (intDI_type_node))
+    return unsignedp ? unsigned_intDI_type_node : intDI_type_node;
+
+  if (mode == TYPE_MODE (float_type_node))
+    return float_type_node;
+
+  if (mode == TYPE_MODE (double_type_node))
+    return double_type_node;
+
+  if (mode == TYPE_MODE (long_double_type_node))
+    return long_double_type_node;
+
+  if (mode == TYPE_MODE (build_pointer_type (char_type_node)))
+    return build_pointer_type (char_type_node);
+
+  if (mode == TYPE_MODE (build_pointer_type (integer_type_node)))
+    return build_pointer_type (integer_type_node);
+
+  return 0;
+}
+
+tree
+truthvalue_conversion (expr)
+     tree expr;
+{
+  return chill_truthvalue_conversion (expr);
+}
+#endif