Mon 18 Jan 1999 7:30 MET            Peter Gerwinski <peter@gerwinski.de>
                                  Frank Heckenbach <frank@pascal.gnu.de>
         Jan-Jaap van der Heijden <J.J.vanderHeijden@student.utwente.nl>
                                   Matthias Klose <doko@cs.tu-berlin.de> 
                              Nick Burrett <nick.burrett@btinternet.com>

	* Beta release of gpc-19990118.

Sun 17 Jan 1999 23:48  Peter Gerwinski <peter@gerwinski.de>

	* gpc.c: init_automake_temp_file_name(): give it the extension `.gpc'.

Sun 17 Jan 1999 23:34  Peter Gerwinski <peter@gerwinski.de>

	* module.c: locate_interface_source(): new function.
	  gpi_open(): always search for the source file; use the name
	  stored in the GPI only as a last resort.

Sat 16 Jan 1999 28:20  Peter Gerwinski <peter@gerwinski.de>

	* gpc.c: delete_temp_files(): delete the AutoMake temp file here
	  using delete_if_ordinary().  main(): do not delete the
	  AutoMake temp file here using unlink().

Sat 16 Jan 1999 23:44  Peter Gerwinski <peter@gerwinski.de>

	* module.c: locate_file(): use a safe `if' condition.
	  module_must_be_recompiled(): check the result of fgets();
	  enlarged buffer for reading lines of the `.d' file.
	  gpi_open(): added paranoia checks whether the `.gpi' file name
	  really contained a dot.

Sat 16 Jan 1999 16:30  Frank Heckenbach <frank@pascal.gnu.de>

        * module.h: #undef HAVE_EXECUTABLE_SUFFIX for DJGPP, similarly to
          gpc.c, so --executable-file-name will create a file without
          extension, which can be stubified afterwards.

Sat 16 Jan 1999 13:44  Peter Gerwinski <peter@gerwinski.de>

	* gpc-lex.c: process_directive(): complain if a compilation
	  fails (link8).

	* parse.y: formal_parameter: pass `const' undiscriminated schema
	  parameters by reference (fjf315).

Fri 15 Jan 1999 26:00  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/file.c: _p_data_ready(): new function

        * units/pipe.pas, units/pipec.c, demos/demoproc.pas,
          demo/pipedemo.pas: new files

        * units/printer.pas: adapted accordingly

Fri 15 Jan 1999 25:35  Peter Gerwinski <peter@gerwinski.de>

	* gpc.c: translate_options(), process_command(): take the
	  implicit `--amtmpfile' into account when counting command-line
	  arguments.
	  check_amtmpfile_switch(): we are moving structs,
	  not pointers (fjf203 et alii).

	* module.c: store_executable_name(): do not add
	  EXECUTABLE_SUFFIX twice.
	  add_automake_switches(): removed disabled obsolete code.

Fri 15 Jan 1999 23:43  Peter Gerwinski <peter@gerwinski.de>

	* doc/reference.texi: added extended skeleton for `NULL'.

	* gpc-decl.c: c_decode_option(): warn about `--autofoo="..."'.

	* gpc-typeck.c: build_function_call(): "init_any()" the temporary
	  variable for string function return values.

	* gpc.c: init_automake_temp_file(): give `--amtmpfile=/foo/bar' first;
	  ignore `-o' in the amtmpfile also if `-S' is given.
	  add_automake_files(): do not remove the amtmpfile here.
	  main(): process the amtmpfile only when linking;
	  do remove the amtmpfile here.

	* parse.y: delphi_NULL: new token.
	  new_identifier_1: updated.
	  predefined_literal: process delphi_NULL.
	  new_procedural_type: let `String' default to `String(255)' here, too.

	* util.c: KItable[]: new known identifier "Null".

Sun 10 Jan 1999 27:27  Peter Gerwinski <peter@gerwinski.de>

	* gpc.c: add_automake_files(): realize `-o foo' in `switches'
	  rather than `outfiles', so subsequent specs get a chance to
	  process it.

	* module.c: store_executable_name(): pass "-o foo" rather than
	  "foo\n-o" to the amtmpfile.
	  gpi_open(): use the TREE_PRIVATE flag to mark implicit imports.
	  import_interface(): do not let an implicit import prevent us
	  from importing the same module explicitly.

Sun 10 Jan 1999 24:57  Peter Gerwinski <peter@gerwinski.de>

	* gpc-decl.c: c_decode_option(): removed optional parameter of
	  `--autolink', `--automake', and `--autobuild'.

	* module.c: add_to_link_file_list(): discard duplicates.
	  gpi_open(): do not duplicate imports; avoid too many open files;
          record modules used by the imported one in the current import list.
	  import_interface(): do not allow double imports (dblimp[12]).

Sun 10 Jan 1999 15:11  Peter Gerwinski <peter@gerwinski.de>

	* gpc.c: init_automake_temp_file_name(): moved the stuff to
	  check for Pascal source to a separate function.
	  check_amtmpfile_switch(): new function.
	  add_automake_files(): delete the amtmpfile after use.
	  main(): call hack_predefines() and init_automake_temp_file()
	  after the specs have been read and before any user specs are
	  processed; also call check_amtmpfile_switch() here.

Sun 10 Jan 1999 12:00  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/getopt.c, rts/getopt.h: new files, copied from binutils-2.8.1,
          to avoid depending on libiberty

        * rts/pexecute.c, pexecute.h: new files, copied from ..

        * rts/Makefile.in: compile and link getopt.c, pexecute.c into libgpc.a

        * Make-lang.in: pascal.install-units: install rts/getopt.h and
          rts/pexecute.h with the units

        * units/getoptc.c: #include "getopt.h" instead of <getopt.h>

        * units/pexecute.pas, units/pexecutc.c, demos/pexecutedemo.pas:
          new files

Sat 9 Jan 1999 26:23  Peter Gerwinski <peter@gerwinski.de>

	* gpc.c: automake_temp_file_name: new variable.
	  find_pascal_input_basename(): removed.
	  init_automake_temp_file_name(): new function; choose a temp
	  file name and add an implicit `--amtmpfile' option.  This
	  allows for multiple instances of the same compilation running
	  simultaneously.
	  init_automake_temp_file(): do not choose the name; let
	  init_automake_temp_file_name() do that.  Made it `static'.
	  add_automake_files(): getting the file name is now easier.
	  main(): removed the disabled AUTOMAKE_GPC stuff;
	  call init_automake_temp_file_name() early and
	  init_automake_temp_file() as early as possible;
	  removed calls to find_pascal_input_basename().

	* lang-specs.h: do not add `--amtmpfile' but trigger an error
	  message if it is missing.

	* module.c: module_must_be_recompiled(): if no source file is
	  found, still link the object file.

Sat 9 Jan 1999 17:55  Peter Gerwinski <peter@gerwinski.de>

	* gpc.c: init_automake_temp_file(): do this if we are at top
	  level even if we do not intend to link.  The amtmpfile is
	  needed in this case, too, as it now contains the file name of
	  the compiler and the command line options.

Sat 9 Jan 1999 12:15  Peter Gerwinski <peter@gerwinski.de>

	* gpc-decl.c: c_decode_option(): read the AutoMake compiler from
	  the amtmpfile; check for '/' as well as for DIR_SEPARATOR.

	* gpc.c: init_automake_temp_file(): write the AutoMake compiler
	  into the amtmpfile.
	  main(): disabled AUTOMAKE_GPC which is no longer necessary;
	  removed disabled AUTOMAKE_EXEC_PREFIX.

	* module.c: automake_gpc: new variable.
	  locate_file(): do not produce double dir separators.
	  module_must_be_recompiled(), compile_module(): use
	  `automake_gpc' instead of `getenv ("AUTOMAKE_GPC")'.
	  gpi_open(): bounce link files from GPI to GPI instead of
	  writing them immediately to the amtmpfile (fjf312[ab]).

Fri 8 Jan 1999 28:42  Peter Gerwinski <peter@gerwinski.de>

	* module.c: process the trailer here and do an AutoMake if a
	  link file is not found.
	  gpi_close(): removed.
	  load_gpi_file(): call fclose() instead of gpi_close().

	* test/Makefile: removed obsolete rules.

Sat Jan  9 01:21:59 1999 J.J. van der Heijden <J.J.vanderheijden@student.utwente.nl>

	* rts/times.c: change gettimeofday() usage from !HAVE_NO_TIME to
	  HAVE_GETTIMEOFDAY for those who have ymie() but not gettimeofday().

Fri 8 Jan 1999 16:23  Peter Gerwinski <peter@gerwinski.de>

	* module.c: cleaned up and/or added comments.
	  create_gpi_files(): only store imported interface names from
	  the interface part.  (These should be the only ones anyway,
	  but we check explicitly.)
	  create_gpi_files(): store a dummy zero length of the
	  additional information from the implementation part, so
	  loading a GPI which does not contain them will not crash.
	  This happens, for instance, when an EP implementation module
	  loads the GPIs of its own interface.
	  extend_gpi_files(): new function.
	  gpi_close(): new function.
	  load_gpi_file(): cleaned up use of variables; call gpi_close().
	  import_interface(): mark whether an interface was imported in
	  the interface or implementation part.

	* parse.y: module_declaration: call extend_gpi_files().

Wed 6 Jan 1999 49:05  Peter Gerwinski <peter@gerwinski.de>

	* gpc-lex.c: process_directive(): do not add non-linker files to
	  the link file list but add an `.o' file even if we have not
	  found one.

Wed 6 Jan 1999 46:40  Peter Gerwinski <peter@gerwinski.de>

	* gpc.c: main(): disabled AUTOMAKE_EXEC_PREFIX which is no
	  longer necessary.

	* module.c: add_automake_switches(): disabled AUTOMAKE_EXEC_PREFIX
	  which is no longer necessary; do not mess up with spaces
	  between command line arguments.

Wed 6 Jan 1999 23:20  Peter Gerwinski <peter@gerwinski.de>

	* gpc-decl.c: c_decode_option(): `use unit_destination_path' and
	  `object_destination_path' rather than p to initialize other
	  paths (typo).

	* gpc.c: add_automake_files(): make the buffer big enough to
	  hold a `gpc1' command line since `fgets()' does not skip to
	  the next newline character but does stop reading.

	* module.c: locate_file(): cut a leading directory.
	  locate_file(), store_executable_name(), compile_module(),
	  create_gpi_files(): check for '/' as well as for DIR_SEPARATOR.
	  module_must_be_recompiled(): add link files to the list
	  instead of writing them directly to the automake temp file.
	  compile_module(): search for object files in `object_path', too.
	  gpi_open(): do not try to recompile with `--autolink'.
	  import_interface(): call `fatal()' and not only `error()' if
	  an interface could not be imported.

Wed 6 Jan 1999 16:30  Frank Heckenbach <frank@pascal.gnu.de>

        * gpc-cccp.c: always check DIR_SEPARATOR besides '/' (was missing
          in several places)

Sun 3 Jan 1999 27:00  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/Makefile.in: GPC_FLAGS: we do not need any more to pass all
          flags a second time after `--automake='.

        * doc/invoke.texi, doc/bpqstart.texi, Makefile.in, some other
          files: the same

Sat 2 Jan 1999 24:32  Peter Gerwinski <peter@gerwinski.de>

	* gpc-decl.c: c_decode_option(): when processing `--amtmpfile',
	  extract the `gpc' command line from the automake temp file and
	  use it to initialize the automake GPC options.

	* gpc-lex.c: process_directive(): let add_to_link_file_list() do
	  the whole work with link files.

	* gpc.c: find_pascal_input_basename(), init_automake_temp_file():
	  new functions.
	  main(): initialize (create) the automake temp file and store
	  the command line in it; moved the stuff to find the pascal
	  input basename to a separate function.

	* module.c: pending_link_files: new variable.
	  find_module(): store pending_link_files (link6, link7[ab]).
	  initialize_module(): new parameter `main_program' to
	  initialize the module; callers changed; process link files for
	  the main program.
	  add_to_link_file_list(): do not assume current_module to be
	  non-null; handle link file specifications in the main program, too.
	  add_automake_switches(): distinguish the AutoFoos; do not give
	  the automake options after `--autofoo='.
	  module_must_be_recompiled(): added space after "#compiling:";
	  use fgets() instead of fscanf().
	  compile_module(): added space after "#compiling:";

	* parse.y: main_program_declaration: let initialize_module()
	  initialize current_module->main_program.

	* test/Makefile: PFLAGS: we do not need any more to pass all
	  flags a second time after `--automake='. :-)

Fri 1 Jan 1999 26:09  Peter Gerwinski <peter@gerwinski.de>

	* ../Makefile.in for GCC2: use $(exeext) (applied patch from Frank).

	* diffs/gcc-2.8.1.diff: rebuilt.

	* gpc-decl.c: c_decode_option():
	  implemented --[no-]object-destination-path.

	* lang-options.h: --[no-]object-destination-path: new options.

	* module.c: flag_automake: default is `--autolink'.
	  compile_module: accept an additional parameter `destination_path'
          instead of using `unit_destination_path' always; callers changed.

	* util.c: object_destination_path: new variable.

Wed 30 Dec 1998 30:00  Frank Heckenbach <frank@pascal.gnu.de>

        * test/Makefile: pass the path of the source file as a command line
          parameter to the executables, so they can read them, even if
          testing from another directory (e.g. fjf193.pas)

        * test/sven16.pas, test/params.pas: adapted accordingly

Wed 30 Dec 1998 27:15  Peter Gerwinski <peter@gerwinski.de>

	* gpc-decl.c: c_decode_option(): implemented `--no-executable-path'
	  and `--no-unit-destination-path'.

	* gpc.c: add_automake_files(): use fgets() instead of fscanf().

	* lang-options.h: new options `--no-executable-path' and
	  `--no-unit-destination-path'.

	* module.c: gpi_open(): produce an error message if a nonexisting
	  object file is going to be linked.

	* parse.y: standard_function_statement: p_DISPOSE: create
	  a temporary variable to hold the pointer to the object being
	  disposed which is evaluated twice (miguel1).

	* types.c: convert_type_to_range(): do not destroy an integer
	  subrange type when a subrange of another type of the same size
	  is being used as an array index (ross1).

Wed 30 Dec 1998 13:40  Peter Gerwinski <peter@gerwinski.de>

	* gpc-typeck.c: convert_arguments(): undid the changes from 28 Dec:
	  Always take the address of objects passed to CString parameters;
	  do not reject "strange" constructs here (fjf306).

Mon 28 Dec 1998 26:07  Peter Gerwinski <peter@gerwinski.de>

	* module.c: store_executable_name(): strip a path from the input
	  file name before applying executable_path.

Mon 28 Dec 1998 25:40  Peter Gerwinski <peter@gerwinski.de>

	* Make-lang.in: GPC_FLAGS_TO_PASS: unsuccessfully trying to make
	  this file work both with GCC2/EGCS91 and with EGCS92. :-(

	* gpc-decl.c: c_decode_option(): append `unit_destination_path'
	  to `object_path' also.

	* gpc-typeck.c: convert_arguments(): something goes wrong when
	  the result of a string function is passed as a CString
	  parameter :-(fjf302).

	* module.c: compile_module(): pass `--gpi-destination-path' only
	  to Pascal compilations.
	  create_gpi_files(): don't crash, but generate a fatal error
	  if the GPI file cannot be opened for writing.

	* types.c: append_null_character(): unsuccessfully trying to
	  make this more robust with respect to functions returning
	  strings: return a `tree' rather than void; callers changed.

Sun 27 Dec 1998 29:00  Frank Heckenbach <frank@pascal.gnu.de>

        * demos/factorial.pas, demos/power.pas, demos/pi.pas: new files

Sun 27 Dec 1998 13:28  Peter Gerwinski <peter@gerwinski.de>

	* gpc-lex.c: process_directive(): make `--autobuild' work for
	  non-Pascal sources, too.

	* module.c: add_automake_switches(): fixed wrong treatment of `-dY'.

Sun 27 Dec 1998 12:06  Peter Gerwinski <peter@gerwinski.de>

	* gpc-decl.c: c_decode_option(): append DIR_SEPARATOR
	  to `-fexecutable-path', `-funit-destination-path',
	  and `-fgpi-destination-path'.

	* gpc.c: explicit_output_file: new variable.
	  process_command(): note whether we have an explicit `-o'.
	  add_automake_files(): don't process an implicit `-o' switch
	  if an explicit one is present.

	* module.c: store_executable_name(): use executable_path.
	  compile_module(): do not add DIR_SEPARATOR to
	  unit_destination_path; c_decode_option() already did so.
	  create_gpi_files(): use gpi_destination_path.

Sat 26 Dec 1998 24:15  Peter Gerwinski <peter@gerwinski.de>

	* gpc-decl.c: c_decode_option(): handle `-fexecutable-path',
	  `-funit-destination-path', and `-fgpi-destination-path'.

	* gpc-lex.c: process_directive(): filter `-fgpi-destination-path'.

	* lang-options.h: new options `-fexecutable-path',
	  `-funit-destination-path', and `-fgpi-destination-path'.

	* module.c: add_automake_switches(): filter `-dY'.
	  module_must_be_recompiled(): look for the `.o' file in
	  unit_path first, then in object_path.
	  compile_module(): implemented `--unit-destination-path' for AutoMake.
	  create_gpi_files(): implemented `--gpi-destination-path'.

	* util.c: executable_path, unit_destination_path,
	  gpi_destination_path: new global variables.

Fri 25 Dec 1998 26:04  Peter Gerwinski <peter@gerwinski.de>

	* gpc-cccp.c: base_name(): skip the drive name under EMX, too.
	  This looks like an obvious omission.

	* gpc-common.c: build_pascal_binary_op(): do not take subranges
	  of `char' for strings (chars2).

	* gpc-lex.c: process_directive(): reject path specifications (upath2);
	  add link files to the automake temp file only in the main program
	  but store them in memory (and later in the GPI file) in units.

	* gpc.c: hack_predefines(): corrected comment.

	* module.c: add_to_link_file_list(): new function.
	  create_gpi_files(): store the names of files to be linked in
	  the GPI file (link1[bc]).
	  gpi_open(): retreive the names of files to be linked from the
	  GPI file.

	* module.h: struct string_list: new type definition.
	  struct module: new field `link_files'.

Wed 23 Dec 1998 18:00  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/read.c: _p_read(), rts/string.c: _p_readstr():
          moved both functions into rts/read.c, let them use the same
          code (instead of two copies of the same code), reorganized the
          subroutines, merged rts/rdinc.c and rts/rdsub.c into rts/read.c

        * rts/block.c: _p_blockread(), _p_blockwrite(): moved into
          rts/randfile.c

        * rts/rdsub.c, rts/rdinc, rts/block.c: files removed

Tue 22 Dec 1998 24:00  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/file.c: _p_f_read_tty(), _p_read_buffer(): new functions

        * rts/file.c: _p_internal_fread(), rts/read.c: _p_internal_getc():
          use buffering to speed up reading from files

Sun 20 Dec 1998 31:25  Peter Gerwinski <peter@gerwinski.de>

	* diffs/gcc-egcs-2.91.57.diff, diffs/gcc-egcs-2.91.60.diff:
	  create `../mbchar.c'.

	* diffs/mkdiff: added usage message.

	* gpc-cccp.c: handle_pascal_directive():
	  removed comment about lazy I/O.

	* gpc-decl.c: flag_lazy_io: variable removed.
	  c_decode_option(): removed handling of lazy I/O flag.
	  grokdeclarator(): removed obsolete comment about `volatile'.

	* gpc-lex.c: process_directive(): removed handling of lazy I/O flag.

	* lang-options.h: removed lazy I/O options.

	* parse.y: absolute_or_value_specification: type-check numeric
	  argument of `absolute' (fjf300).

Sun 20 Dec 1998 17:15  Frank Heckenbach <frank@pascal.gnu.de>

        * util.c: init_simple(), rts/fdr.h, rts/types.h, rts/file.c:
          _p_initfdr(), _p_close(): removed fkind_UNTYP, fkind_LAZY and
          associated definitions because they're not used any more

        * rts/Makefile.in: further cleaning up

        * rts/gnuvers.sh, rts/rts-version.in: files removed

Sat 19 Dec 1998 25:30  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/write.c: _p_write(), rts/string.c: _p_writestr():
          moved both functions into rts/write.c, let them use the same
          code (instead of two copies of the same code), reorganized the
          subroutines, merged rts/wrtinc.c into rts/write.c

        * rts/hdr.h: merged into rts/rts.h because it was only included
          from there, and some `extern' declarations were in rts/rts.h
          already, anyway

        * rts.c, rts.h, util.c, gpc-defs.h, rts/file.c, rts/read.c,
          rts/randfile.c: removed `ifndef LAZY_IO'ed parts, because non-lazy
          I/O has not been supported for some time now, ignore flag_lazy_io

        * rts/dmath.c, rts/emath.c, rts/Makefile.in: removed the splitting
          of the math object files, because the gain is so small compared
          to the effort

        * rts/dmath.c: _p_pow(), rts/emath.c: _pp_pow(): translated into
          Pascal (math.pas)

        * rts/dmath.c, rts/emath.c: merged the remaining few functions
          which are merely thin wrappers around some libm functions and
          called the resulting file rts/maths.c

        * rts/wrtinc.c, rts/hdr.h, rts/dmath.c, rts/emath.c: files removed

Fri 18 Dec 1998 24:15  Peter Gerwinski <peter@gerwinski.de>

	* doc/bpqstart.texi: Data types: fixed typo.

	* gpc-decl.c: grok_direktive(): complain about whitespace in asmnames.

	* util.c: declare_vars(): complain about whitespace in asmnames.

Fri 18 Dec 1998 21:58  Peter Gerwinski <peter@gerwinski.de>

	* gpc-decl.c: init_decl_processing(): initialize register_id.
	  grokdeclarator(): handle register_id.

	* module.c: add_automake_switches(): new parameter `pascal_source'
	  (callers changed); filter GPC-specific options when preparing
	  for compilation of non-Pascal sources (fjf203).
	  module_must_be_recompiled(): when checking whether needed GPI
	  files exist or have been changed, search for them in `unit_path'.

	* rts.c: build_rts_call(): case p_POLAR: the parameters are of
	  `Real' type.

	* util.c: register_id: new variable.
	  handle_formal_param_list(): new parameter `declspecs' to allow
	  for `register' parameters and such (callers changed, but this
	  is not used currently).

Thu 17 Dec 1998 28:00  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/bind.c: hack_setinfunc(), hack_setoutfunc(): removed
          (newer TFDD interface is available)

        * rts/heap.pas: new file
        * rts/heap.c: all routines: translated into Pascal (heap.pas)
        * rts/heap.c: file removed

Thu 17 Dec 1998 17:50  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/random.pas: new file
        * rts/random.c: all routines: translated into Pascal (random.pas)
        * rts/random.c: file removed

        * rts/time.pas: new file
        * rts/times.c: most routines: translated into Pascal (time.pas)

Wed 16 Dec 1998 24:00  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/sets.pas: new file
        * rts/set.c: most routines: translated into Pascal (sets.pas),
          thereby simplifying them a lot
        * rts/set.c, rts/set.h: files removed

Tue 15 Dec 1998 26:00  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/math.c: renamed to rts/dmath.c
        * rts/intfrac.pas: renamed to rts/math.pas
        * rts/zmath.c: all routines: translated into Pascal (math.pas)
        * rts/zmath.c: file removed

        * rts/error.pas: new file
        * rts/error.c: all routines: translated into Pascal (error.pas)
        * rts/error.c: file removed

        * rts/Makefile.in: changed accordingly

Tue 15 Dec 1998 22:15  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/strings.c: _p_eq(), _p_lt(), _p_str_eq(), _p_str_lt(),
          _p_index(), _p_trim(), _p_substr(): translated into Pascal,
          moved to rts/gstrings.pas

Sun 13 Dec 1998 20:30  Frank Heckenbach <frank@pascal.gnu.de>

        * units/getopt.pas, units/getoptc.c, units/regex.pas, units/regexc.c,
          units/gmp.pas, units/ports.pas: new files

        * demos/: new directory

        * demos/getoptdemo.pas, demos/regexdemo.pas, demos/portdemo.pas:
          new files

        * Make-lang.in: pascal.install-demos: new target. Install demos
          in $(demodir) which is $(prefix)/$(DEMO_DIR). DEMO_DIR defaults
          to doc/gpc/demos, but can be overridden when installing
          pascal.install-dir: create $(demodir) if necessary
          pascal.units: target removed because compiling the units during
          GPC installation might not always work

        * units/Makefile: removed

Sat 12 Dec 1998 29:30  Frank Heckenbach <frank@pascal.gnu.de>

        * units/dosunix.pas: new file

        * rts/gstrings.pas: SetString: new procedure, StringOfChar: new
          function

Sat 12 Dec 1998 28:33  Peter Gerwinski <peter@gerwinski.de>

	* module.c: internal_exported_interface_list: new variable.
	  export_interface(), import_interface(): maintain
	  internal_exported_interface_list.
	  module_must_be_recompiled(): use internal_exported_interface_list
	  to find out whether a requested interface is in the current file;
	  choose a temporary name for the dependency file.

	* rts/gpc.pas, rts/types.h: warn about `UnixTimeType' being
	  hard-coded.

	* rts.c: ptype_longint: new variable.
	  declare_rts_types(): initialize ptype_longint.
	  build_rts_call(): case gpc_SETFILETIME: the second parameter
	  is a LongInt (UnixTimeType).

Sat 12 Dec 1998 26:53  Peter Gerwinski <peter@gerwinski.de>

	* Make-lang.in: `gansidecl.h' and `system.h' do not really
	  belong to the GPC source.

	* Makefile.in: find `gansidecl.h' in the GCC source directory.

	* config-lang.in: do not create `mbchar.c'; let the diff do that.

	* diffs/gcc-2.8.1.diff: rebuilt to include `ansidecl.h', `system.h',
	  the EGCS version of `gansidecl.h', and a dummy for `mbchar.c'.

	* diffs/mkdiff: include `ansidecl.h', `gansidecl.h', `system.h',
	  and `mbchar.c'.

	* gansidecl.h, system.h, rts/ansidecl.h: removed.

	* gpc-decl.c: c_decode_option(): not every NULL_PTR is a NULL_TREE ...

	* module.c: module_must_be_recompiled(), gpi_open(), load_gpi_file():
	  additional parameter `interface_name' to hold an identifier node
	  with the name of the interface.  Callers changed.
	  module_must_be_recompiled(): strip the directory from and free the
	  storage for `dep_filename'.
	  store_string(), load_string(), store_flags(), load_flags(),
	  store_type_flags(), load_type_flags(), store_decl_flags(),
	  load_decl_flags(), gpi_open(): made the functions `static'.
	  import_interface(): determine whether a module is in the
	  current file from the list of exported interfaces rather than
	  a file name.

Sat Dec 12 20:06:13 1998 J.J. van der Heijden <J.J.vanderHeijden@student.utwente.nl>

	* configure.in: Check for <sys/param.h>
	* rts/file.c: Only include <sys/param.h> if we have it.
	* rts/rts.h: Do not abort for lack of a libm.a on mingw32, which
	  has libm.a integrated in the C library.
	* rts/rts.h: #include GCC's "tconfig.h" instead of #config.h"
	  "config.h" contains host related info through auto-host.h, and
	  thus breaks crosscompilers.

Sat 12 Dec 1998 17:53  Peter Gerwinski <peter@gerwinski.de>

	* Make-lang.in: pascal.distclean: remove `gcc-version.h' from
	  the top, not the `p/' directory.

	* circle-buf.c, gpc-common.c, gpc-convert.c, gpc-decl.c,
	  gpc-lang.c, gpc-lex.c, gpc-typeck.c, gpc.c, gpi-hash.c,
	  module.c, objects.c, parse.y, rts.c, setop.c, types.c, util.c:
	  include `gcc-version.h' as the very first header file.

	* config-lang.in: create `gcc-version.h' in the top, not the
	  `p/' directory.  Otherwise it might not be found when building
	  in a directory other than the source directory.

Fri 11 Dec 1998 26:20  Peter Gerwinski <peter@gerwinski.de>

	* Makefile.in: preprocessor: corrected directory for mbchar.o.

	* circle-buf.c, gpc-common.c, gpc-convert.c, gpc-decl.c,
	  gpc-lang.c, gpc-lex.c, gpc-typeck.c, gpc.c, gpi-hash.c,
	  lang-options.h, module.c, objects.c, parse.y, rts.c, setop.c,
	  types.c, util.c: directly include `gcc-version.h'.  Including
	  it through `gpc-defs.h' is too late in some cases.

	* config-lang.in: after having detected the GCC version create
	  the `p' subdirectory to hold `gcc-version.h'.
	  Directly check for `mbchar.[co]' rather than for a specific
	  version of EGCS.

	* gpc-defs.h: do not include `gcc-version.h'.

	* gpc-typeck.c: convert_arguments(): when passing `var'
	  parameters, distinguish between references of the correct type
	  and others that must be treated like any other things (marius1).

	* module.c: check more carefully for a module being in the
	  file being compiled (chief14 e.a.) ... er ... this is not
	  sufficient if the source file is given in some strange way
	  :-(gpc --automake ../test/chief14.pas).  We should really
	  drop that "feature" of more than one unit/program being in
	  the same file.
	  compile_module(): indicate the end of an AutoMake call if
	  --verbose.

	* parse.y: gpc_SETFILETIME: new token.
	  new_identifier_1: updated.
	  rts_proc_parlist: implemented gpc_SETFILETIME.

	* rts/gpc.pas: GPC_ified SetFileTime.

	* rts.c: rts[]: included gpc_SETFILETIME.
	  build_rts_call(): case gpc_SETFILETIME: new case.

	* util.c: KItable[]: included gpc_SETFILETIME.

Fri 11 Dec 1998 27:00  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/file.c: _p_f_flush(): put in a work-around for DJGPP's
          clobbering the file position in fflush()

        * test/Makefile: added --unit-path and --object-path, removed
          stamp-links
          buglist: speeded up a little;-) by avoiding a loop

        * Makefile.in: check2-gpc: pass the units subdirectory of $builddir
          to test/Makefile as EXTRA_PFLAGS (upath.pas, fjf226i.pas when
          testing from $builddir)

Fri 11 Dec 1998 15:07  Peter Gerwinski <peter@gerwinski.de>

	* Make-lang.in: pascal.distclean: added `gcc-version.h'.

	* Make-lang.in, Makefile.in: took out is_egcs, is_egcs92, and
	  the MBCHAR stuff.

	* config-lang.in: detect the GCC version and create
	  `gcc-version.h' to hold the result.

	* gpc-defs.h: include `gcc-version.h'.

	* module.c: create_gpi_files(): only store the file name in the
	  GPI file rather than the complete path.

Thu 10 Dec 1998 27:30  Frank Heckenbach <frank@pascal.gnu.de>

        * units/gpcutil.pas: new file
          integrated another unit into GPC

        * rts/bind.c: _p_get_tfdd(): new function

        * rts/file.c: _p_set_file_time(): new function

        * units/dos.pas: SetFTime: use SetFileTime instead of dos_setftime()

        * units/dosc.c: dos_setftime(): removed

Wed 9 Dec 1998 19:43  Peter Gerwinski <peter@gerwinski.de>

	* Make-lang.in: is_egcs92: automatically detect egcs-2.92.x;
	  hack around `mbchar.o' only present in egcs-2.92.x.
	  GPC_FLAGS_TO_PASS: only pass things which are necessary.
	  gpc-cpp: hack around `mbchar.o' only present in egcs-2.92.x.

	* Makefile.in: preprocessor: hack around `mbchar.o' only present
	  in egcs-2.92.x.

	* util.c: include vararg stuff.
	  init_util(): use the "new" concat correctly.
	  concat(): this function is extern, not static.

Wed 9 Dec 1998 15:49  Peter Gerwinski <peter@gerwinski.de>

	* doc/reference.texi: skeletons for `addr' and `assigned'.

	* gpc-cccp.c: do_endif(): let the buffer start at the correct
	  place when skipping comments (ian2).

	* gpc-common.c: build_pascal_address_expression(): new function.

	* parse.y: bp_ADDR, bp_ASSIGNED: new tokens.
	  new_identifier_1: updated.
	  variable_or_function_access_maybe_assignment: warn about use
	  of address operators.
	  factor: use build_pascal_address_expression() for address
	  expressions.
	  variable_or_function_access_no_id: implemented bp_ADDR and
	  bp_ASSIGNED (addr1, assgnd1).

	* rts.c: build_rts_call(): case bp_ASSIGNED: new case.

	* util.c: KItable[]: included "Assigned" and "Addr".

1998-12-09  Matthias Klose  <doko@cs.tu-berlin.de>

	* util.h util.c: Change concat spec to this one found in gpc.c.
	  concat now takes an arbitrary number of arguments, last arg
	  must be NULL_PTR.
	* gpc-common.c: change concat calls to reflect change in util.[hc].
	  gpc-decl.c: likewise
	  gpc-lex.c: likewise
	  module.c: likewise
	  objects.c: likewise
	  parse.y: likewise
	* Make-lang.in: Remove definitions from GPC_FLAGS_TO_PASS which
 	  already are passed in FLAGS_TO_PASS.
	  pascal.rts, pascal.units, p/rts/Makefile: Tweak CC recognition.
	* gansidecl.h system.h: Updated for egcs-2.92.x.
	* gpc-common.c: copy c_build_qualified_type from egcs-2.92 c-common.c.
	* gpc-defs.h: For egcs-2.92 copy c_build_qualified_type decl and
	  c_build_type_variant macro from c-decl.c.
	* gpc-decl.c: c_decode_option() Reflect change in egcs-2.92
	  nonlocal_goto_handler_slot.

Tue 8 Dec 1998 24:30  Frank Heckenbach <frank@pascal.gnu.de>

        * Make-lang.in: pascal.install-units: new target, separated from
          install-libgpc; install {gpc,internal}.{o,gpi} as part of the
          compiled units, not explictly

        * units/system.pas, units/turbo3.pas: new files
          integrated more BP compatibility units into GPC

        * rts/file.c: _p_fdrchain(): fixed a little bug

Mon 7 Dec 1998 28:30  Frank Heckenbach <frank@pascal.gnu.de>

        * units/: new directory

        * units/Makefile, units/crt.inc, units/crt.pas, units/crtc.c,
          units/crtdospc.h, units/crtdummy.h, units/crtlinux386.h,
          units/crtunix.h, units/crtunix1.h, units/dos.pas, units/dosc.c,
          units/overlay.pas, units/printer.pas, units/strings.pas,
          units/windos.pas: new files
          integrated BP compatibility units into GPC

        * Make-lang.in: new target pascal.units
          cleaning rules: checked for existence of p/test before trying
          to clean in this directory
          libgpc.a: removed the dependencies on the RTS sources and renamed
          the target to pascal.rts, to avoid the redundant $(RTS_SRCS) in
          this makefile (while the RTS makefile already cares for the
          dependencies of libgpc.a), and to fix the bug that libgpc.a wasn't
          always rebuilt when necessary

        * rts/Make-lang.in: added --unit-path to the GPC_FLAGS and removed
          the work-around, cleaned up a little

Mon 7 Dec 1998 27:53  Peter Gerwinski <peter@gerwinski.de>

	* gpc-lex.c: process_directive(): clearified error message; link
	  the object, not the source file (link1a).

	* module.c: module_must_be_recompiled(): search `object_path'
	  for the object file (upath: do not recompile `gpc.pas').

	* setop.c: setop_rlo(): strip nops, so an INTEGER_CST is returned
	  and setop_copy() does not get confused (ian1, chris5, fjf196).

Mon 7 Dec 1998 12:32  Peter Gerwinski <peter@gerwinski.de>

	* gpc-lex.c: process_directive(): on non-linker {$l foo.pas}, call
	  locate_file() for the object file name (link[13], opath, predef,
	  sam[3-5]).

Mon 7 Dec 1998 11:36  Peter Gerwinski <peter@gerwinski.de>

	* rts.c: build_rts_call(): case gpc_CSTRING2STRING: found a way
	  to initialize `capacity' early enough to avoid a warning such
	  that the test programs still work.  Hopefully, this bug is
	  really fixed now ... 

Sun 6 Dec 1998 26:53  Peter Gerwinski <peter@gerwinski.de>

	* Make-lang.in: pascal.extraclean: clean test/knownbugs/.

	* gpc-decl.c: packed_array_unsigned_long_type_node,
	  packed_array_unsigned_short_type_node: new global variables.
	  init_decl_processing(): initialize them.
	  These types are guaranteed to be HOST_BITS_PER_WIDE_INT
	  respectively half that wide.

	* types.c: build_pascal_array_ref(): use types that are
	  guaranteed to be HOST_BITS_PER_WIDE_INT and half that wide;
	  give `mask' that type (if it is narrower, it will mask too
	  many bits) (chris4, confarr5, pack{4,5,6,10,11,12}).

Sun 6 Dec 1998 25:28  Peter Gerwinski <peter@gerwinski.de>

	* Make-lang.in, Makefile.in: detect EGCS and automatically add
	  `-DEGCS'.  Thanks to Niels Kristian Bech Jensen <nkbj@image.dk>! (-:

	* doc/reference.texi: @node Copy: document the optional third
	  parameter.

	* gpc-decl.c: c_decode_option(): implemented `--object-path'.

	* gpc-lex.c: process_directive(): also allow for (*$L foo,bar *);
	  use `object_path' in (*$L foo *) directives.

	* gpc-typeck.c: build_unary_op(): clearified error message about
	  an invalid lvalue for ADDR_EXPR.

	* lang-options.h: new option `--object-path' (opath).

	* module.c: object_path: new variable.
	  locate_file(): this function is no longer static.

	* rts.c: rts_string(): corrected misleading comment about `ucsd_COPY';
	  do not let the return value of `Copy', `SubStr', or `Trim' be
	  an lvalue (fjf298b).
	  build_rts_call(): case gpc_CSTRING2STRING: for the moment, try
	  it with a fixed length of the result variable. :-(
	  build_rts_call(): case gpc_CSTRING2STRING, bp_PARAMSTR: do not
	  let the return value be an lvalue (fjf298[ac]).

	* util.c: init_util(): initialize `object_path'.

Sun 6 Dec 1998 13:03  Peter Gerwinski <peter@gerwinski.de>

	* gpc-lex.c: process_directive(): allow for (*$L foo, bar *) instead of
	  (*$L foo, L bar, X+, foo-pascal *).

	* gpc.c: add_automake_files(): append `-lfoo's at the end and
	  only `bar.o's at the beginning.

	* rts.c: rts_string(): case ucsd_COPY: made the third parameter
	  optional (fjf40e).

Sun 6 Dec 1998 10:27  Peter Gerwinski <peter@gerwinski.de>

	* config-lang.in: automatically detect which patches are
	  available.

	* diffs/gcc-egcs-2.91.60.diff: new diff (for egcs-1.1.1).

	* gpc-defs.h: #define build_c_type_variant always since it has
	  not yet replaced c_build_type_variant in egcs-1.1.1.

	* gpc-typeck.c: build_modify_expr(): handle access to packed array
          components in two halfs (chris4, confarr5, pack{4,5,6,10,11,12}).

	* types.c: build_pascal_array_ref(): construct access to packed
	  array components in two halfs.

Sat 5 Dec 1998 27:00  Frank Heckenbach <frank@pascal.gnu.de>

	* rts/filename.c: new function FileName

Sat 5 Dec 1998 19:21  Peter Gerwinski <peter@gerwinski.de>

	* module.c: module_must_be_recompiled(): do not require the
	  AutoMake temp file to exist (fjf226i,upath).  If no
	  compilation is needed, it may not exist.

Sat 5 Dec 1998 18:47  Peter Gerwinski <peter@gerwinski.de>

	* doc/reference.texi: @node Copy: clearified and fixed bugs.

	* rts.c: build_rts_call(): case ucsd_COPY: pass opcode R_COPY
	  (fjf40b); case gpc_CSTRING2STRING: removed obsolete code and
	  fixed more bugs (fjf297[ab]).

Sat 5 Dec 1998 14:13  Peter Gerwinski <peter@gerwinski.de>

	* doc/reference.texi: documented `SubStr' and `Copy'.
	  This does not reflect the current behaviour of `Copy' (trcopy.pas)!

	* gpc-defs.h: if not in EGCS, #define build_c_type_variant, so
	  GPC can still work with GCC2.

	* gpc-typeck.c: build_function_call(): avoid immediate expansion
	  in functions returning string variables (fjf226[ef]).
	  build_unary_op(), lvalue_or_else(), build_modify_expr():
	  re-enabled handling of COMPOUND_EXPR.

	* module.c: module_must_be_recompiled(): sanity check;
	  if verbose, report the end of an AutoMake.  The sanity check
	  causes new failures (upath, fjf226i) that might explain other
	  bugs ...

	* rts.c: build_rts_call(): case gpc_CSTRING2STRING: fixed bugs (fjf295).

	* util.c: contains_file_p(): sanity check.

Sat 5 Dec 1998 12:25  Frank Heckenbach <frank@pascal.gnu.de>

	* gpc-lex.c: process_directive(): accept `.so' and `.lnk' extensions in
	  `{$L}' and interpret `{$L foo}' without extension as `-lfoo'

Thu 3 Dec 1998 11:15  Peter Gerwinski <peter@gerwinski.de>

	* module.c: do_extra_import(): pass NULL_TREE for filenames not
	  given explicitly (fjf101[ab]).

Wed 2 Dec 1998 26:15  Peter Gerwinski <peter@gerwinski.de>

	* gpc-typeck.c: comptypes(): clearified comments for the
	  compatibility of INTEGER_TYPE, CHAR_TYPE, and BOOLEAN_TYPE.
	  convert_for_assignment(): forbid assignments between types
	  containing files (john2d).

	* gpc.c: hack_predefines(): look for "-DMSDOS" rather than
	  "-D__MSDOS__".

	* rts.c: build_rts_call(): case CSTRING2STRING: rewritten such
	  that nothing gets expanded before the (rts) function call to
	  `CString2String' by itself gets expanded (fjf226c).

Wed 2 Dec 1998 14:20  Peter Gerwinski <peter@gerwinski.de>

	* gpc.c: hack_predefines(): don't crash at the end of the
	  string; hack `cpp_predefines' rather than `argv'.
	  main(): call hack_predefines() after `specs' has been read.

Tue 1 Dec 1998 26:38  Peter Gerwinski <peter@gerwinski.de>

	* gpc-decl.c: flag_exact_compare_strings: default to 1.

	* gpc-typeck.c: comptypes(): treat Booleans like Chars, not
	  like Enums (fjf294[ab]).
	  convert_for_assignment(): forbid assignments between files
	  (john2c).

	* lang-specs.h: predefine __GNU_PASCAL__ if no dialect has been
	  selected (dialdef).

	* module.c: do_extra_import(): implement "--uses=foo(bar),baz"
	  (fjf101b).
	  store_tree(), load_tree(): store and retreive the TREE_TYPE of
	  Booleans and such (fjf294[ab]).
	  store_tree(), load_tree(): case FUNCTION_DECL: correctly
	  recognize and store ellipsis parameters (ken1{,a}).

	* parse.y: function_heading: functions must not return files
	  (john2[ab]).

	* util.c: contains_file_p(): new function (john2b).

Mon 30 Nov 1998 26:23  Peter Gerwinski <peter@gerwinski.de>

	* Make-lang.in: install-libgpc: depend on pascal.install-dir;
	  fetch `.gpi's and `.o's from the object, not the source
	  directory.

	* gpc.c: add_automake_files (): ignore items starting with `#'.

	* lang-specs.h: define __FOO_PASCAL__ if --foo-pascal is given.

	* module.c: add_to_automake_temp_file(): renamed parameter to
	  generalize the use of this function. ;-)
	  module_must_be_recompiled(): read the amtmpfile whether this
	  module is already being compiled.  This eliminates the kludge
	  with the ten-seconds-old GPI files. :-)
	  compile_module(): document what we are doing in the amtmpfile.

	* rts.c: build_rts_call(): only pedwarn() for `Append' to
	  non-text files in BP mode.

Sun 29 Nov 1998 25:43  Peter Gerwinski <peter@gerwinski.de>

	* util.c: declare_vars(): do not make initialized `asmname'
	  variables extern (fjf245a).

Sun 29 Nov 1998 25:00  Peter Gerwinski <peter@gerwinski.de>

	NOTE: file names in parentheses refer to a test suite program
	(located in `test'), suitable to check the success of this
	particular change.

	* doc/install.texi: clearified which directories we are speaking
	  of; corrected `patches' to `diffs'; gave more and easier examples;
	  added note about the EMX misery.

	* gpc-common.c: get_operator_identifier(): unroll reference
	  types (fjf232[a-c]).

	* parse.y: constant_definition: allow type qualifiers (fjf245).

	* rts.c: build_rts_call(): case gpc_CSTRING2STRING: started to
	  get rid of early expansion (fjf226c).

Sat 28 Nov 1998 27:07  Peter Gerwinski <peter@gerwinski.de>

	* Make-lang.in: install-libgpc: install `gpc.gpi' and `gpc.o'
	  too as well as `internal.*'.

	* gpc-decl.c: flag_exact_compare_strings: new variable.
	  c_decode_option(): switch between exact vs. padded comparisons
	  of strings.

	* lang-optons.h: new options `--[no-]exact-compare-strings'.

	* module.c: include <time.h>.

	* rts.c: rts_string(): handle string comparisons according to
	  flag_exact_compare_strings.

Sat 28 Nov 1998 22:06  Peter Gerwinski <peter@gerwinski.de>

	* module.c: module_must_be_recompiled(): accept a missing `.o'
	  file when the GPI file is not older than 10 seconds.  This is
	  a kludge to prevent infinite recursion in cyclic units and
	  will be obsoleted by using `make', hopefully not too far in
	  the future.

Sat 28 Nov 1998 15:04  Peter Gerwinski <peter@gerwinski.de>

	* types.c: convert_type_to_range(): use build_pascal_range_type()
	  instead of make_signed_range(); try harder to determine the
	  correct supertype of subranges.

Fri Nov 27 18:08:39 1998  Nick Burrett  <nick.burrett@btinternet.com>

	* gpc-common.c (get_type_name): Cope with REFERENCE_TYPEs.

Thu 26 Nov 1998 26:15  Peter Gerwinski <peter@gerwinski.de>

	* Make-lang.in: install-libgpc: install `gpc.pas' in
	  $(unitsubdir) := $(libsubdir)/units.
	  pascal.install-dir: create $(unitsubdir).

	* gpc-decl.c: c_decode_option(): decode `--unit-path'.

	* lang-options.h: new option `--unit-path'.

Wed 25 Nov 1998 16:49  Peter Gerwinski <peter@gerwinski.de>

	* gbe.h: extern declaration for `save_argv'.

	* gpc-defs.h: if not already defined, define DIR_SEPARATOR and
	  PATH_SEPARATOR.

	* module.c: unit_path: new global variable.
	  locate_file(): search the SEARCHPATH.
	  module_must_be_recompiled(): use locate_file() to determine
	  whether the source exists.
	  compile_module(): search the UNIT_PATH; also search for the
	  object file.
	  gpi_open(): search the UNIT_PATH.

	* types.c: convert_type_to_range(): do not let usage as an array
	  index range spoil the ranges of the type (array[Boolean] of foo).

	* util.c: init_util(): initialize the unit path from the
	  directory we are living in.

Tue 24 Nov 1998 17:28  Peter Gerwinski <peter@gerwinski.de>

	* Make-lang.in: version number is now 19981124.

	* gpc-cccp.c: handle_pascal_directive(): skip empty Pascal
	  directives.

	* gpc-typeck.c: build_array_ref(): Pascalify error message.

	* module.c: locate_filename(): new function.
	  compile_module(), gpi_open(): use locate_filename to search
	  for input files (`.gpi' and `.pas').

	* parse.y: typename: allow forward type references only within
	  type declaration blocks, not in method definitions.

	* rts.c: rts_string(): do not immediately expand calls to
	  _p_string; build COMPOUND_EXPRs instead.  Otherwise, the call
	  cannot be optimized away in cases like "if false then".

Sun Nov 22 09:56:05 1998  Nick Burrett  <nick.burrett@btinternet.com>

	* gpc-common.c (build_c_type_variant): Renamed from
	`c_build_type_variant'.
	* gpc-typeck.c (everywhere): Use it.
	* gpc-decl.c (everywhere): Use it.
	* gpc-defs.h: Declare it.

	* gpc-defs.h (warn_write_strings): Declare.

	* gpc-decl.c (init_decl_processing): Remove unused builtins:
	BUILT_IN_FP, BUILT_IN_SP, BUILT_IN_SET_RETURN_ADDR_REG,
	BUILT_IN_EH_STUB, BUILT_IN_SET_EH_REGS.

	* Makefile.in (INCLUDES): Add top level `include' directory.

Thu 19 Nov 1998 25:10  Peter Gerwinski <peter@gerwinski.de>

	* gpc-typeck.c: build_modify_expr(): do not convert packed
	  fields of enumerated type to Integer.

Wed 18 Nov 1998 27:02  Peter Gerwinski <peter@gerwinski.de>

	* Make-lang.in: version number is now 19981118.

	* Makefile.in: gpc-typeck.o: it depends on gpc-defs.h.

	* gpc-defs.h: PASCAL_TYPE_DISCRIMINATED_STRING(): be stricter.

	* types.c: count_bits(): do not spoil the type node, but return
	  the sign in the INTEGER_CST.
	  p_grokfields(): set the sign of the type of a bitfield
	  according to the sign returned by count_bits().
	  grok_packed(): set the sign of the type of array components
	  according to the sign returned by count_bits().

Tue 17 Nov 1998  Peter Gerwinski <peter@gerwinski.de>

	* DJGPP.DJL, DJGPP.ENV, README.DJGPP: new files.

	* Make-lang.in: pascal.install-info: look for info files in
	  $(srcdir) (by Matthias).

	* gpc-common.c: build_pascal_binary_op(): Avoid warning in the case
	  "<unsigned value> in [ 0..<whatever> ]".

	* gpc-typeck.c: convert_arguments(): avoid "incompatible pointer
	  type" warnings only in the case of strings;
	  pass string constants by address in the case of ellipsis parameters.

	* parse.y: object_field_list: all object types have biggest alignment.
	  function_heading: avoid crashes on errorneous operator definitions.
	  standard_function_statment: unsuccessfully trying to reduce
	  the context where `Dispose' looks for object destructors.
	  break_statement: unsuccessfully trying to make `break' in
	  `case' statements act like expected in Pascal.

	* types.c: build_record_variant_part(): generate RECORDs instead
	  of UNIONs if the variants contain files or schemata.
	  count_bits(): do not spoil the type node.

	* util.c: declare_known_ids(): declare the most basic types last,
	  so error messages sound more "natural".
	  contains_file_or_schema_p(): make it extern instead of static
	  (used from types.c: build_record_variant_part()).

Sat  8 Nov 1998 29:00 Frank Heckenbach <frank@pascal.gnu.de>

        * util.c, rts/types.h, rts/gpc.pas, rts/bind.c, doc/extend.texi,
          doc/reference.texi: new fields AccessTime, ModificationTime and
          ChangeTime in BindingType

        * times.c: _p_unix_time_to_time_stamp (),
          _p_time_stamp_to_unix_time (): new functions

Wed 4 Nov 1998  Peter Gerwinski <peter@gerwinski.de>

	* config-lang.in, diffs/gcc-egcs*.diff: accept egcs-2.91.57 (egcs-1.1).

	* rts.c: build_rts_call(): case bp_MOVE: use the correct order
	  of parameters.

Sun 1 Nov 1998  Peter Gerwinski <peter@gerwinski.de>

	* gpc-defs.h: let `#pragma alloca' start in col 1.

	* gpc-typeck.c: comptypes(): correctly check subranges of `Boolean'.

	* parse.y: formal_parameter: pass `const foo: void' by reference.
	  factor: choose the correct type for `High'/`Low' of subranges.

	* rts.c: rts[]: call `_p_move' instead of `memmove'.
	  build_rts_call(): case bp_GETMEM: do not init_any() stuff returned
	  by `GetMem'.

	* types.c: grok_packed(): do not crash when trying to pack
	  things with an unknown number of bits.

	* util.c: un_initialize_block(): do not init_any() external variables.

Sun 1 Nov 1998  Daniel Jacobowitz <dmj@andrew.cmu.edu>

	* Make-lang.in (p/rts/Makefile): depend on $(GCC_PASSES) rather
	  than $(GCC_PARTS).

Sat 31 Oct 1998  Peter Gerwinski <peter@gerwinski.de>

	* gpc-lex.c: #include <unistd.h>.

	* gpc-typeck.c: build_function_call(): calling a function which
	  returns a string has side effects.

	* gpi-hash.c: must we #include <sys/stdtypes.h> here?  Can
	  AutoConf help here?

	* objects.c: construct_vmt(): be a little more robust in case of
	  an internal error.

	* parse.y: function_declaration: do the implicit "with Self do"
	  earlier, so it is in effect when the declaration of the result
	  variable takes place; also clearified internal error message. (-:
	  case_element: implicitly enclose case statements in
	  `begin'...`end'.  They might contain composed statements such
	  as `CString2String'.
	  assignment_or_call_statement: distinguish between expressions
	  and function calls more precisely.

Wed 21 Oct 1998 24:00 Frank Heckenbach <frank@pascal.gnu.de>

        * util.c, rts/types.h, rts/gpc.pas, rts/bind.c, doc/extend.texi,
          doc/reference.texi: new field Force in BindingType

Tue 20 Oct 1998  Peter Gerwinski <peter@gerwinski.de>

	* parse.y: new_identifier_1: removed ASM_KEYWORD which caused a
	  s/r conflict.
	  asm_statement: use input_filename and lineno instead of
	  $<filename>-1 and $<lineno>0.  (I do not understand this
	  mechanism.)-:

Mon 19 Oct 1998 20:06  Peter Gerwinski <peter@gerwinski.de>

	* README: upgraded GPC version number.

	* gpc-defs.h: removed HASH_EMBED.

	* gpc-typeck.c: re_layout_type(): avoid to call layout_type()
	  for pointers and references (can crash when the type pointed
	  to has been loaded from a GPI).

	* module.c: gpi_contents: removed.
	  store_tree(), load_tree(), create_gpi_files(), load_gpi_file:
	  removed HADH_EMBED conditionals - we always use hash embedding now.

	* parse.y: asm_qualifier: new rule.
	  function_declaration: introduced check for
	  current_function_return_variable; was interrupted; some
	  remainder of my bug tracking is still present ... :-?
	  statement_extensions: enable/disable `volatile' for asm.
	  asm_statement: moved warnings here; handle `volatile'.
	  asm_qualifier: removed warnings here; added `volatile'.

	* util.c: output_real_main_program(): let `main()' return zero.

Fri 16 Oct 1998 13:00 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rtsstr.pas: renamed to rts/gstrings.pas

Fri  2 Oct 1998 23:40 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/file.c: _p_textfile_binary: new variable

Thu  1 Oct 1998 13:30 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/file.c: _p_donefdr(): new function

Thu 24 Sep 1998 28:30 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/bind.c: _p_assign_tfdd(): new function

        * rts/read.c: hack_fread(), hack_getc(), hack_ungetc();
          rts/write.c: hack_fwrite();
          rts/file.c: _p_open(), _p_flush (), _p_close():
          if TFDD routines were set, use them instead of file access

Sun 20 Sep 1998 24:20 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/endian.pas: new file. Routines to handle endianness.

Thu 17 Sep 1998 27:00 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rtsstr.pas: a number of new functions

Tue 15 Sep 1998 19:00 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/internal.pas: new file. Moved the internal declarations
          from rts/gpc.pas there.

Sat 12 Sep 1998 24:15 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/file.c: realpath(): don't use _truename() on DJGPP because
          it was reported to not always work correctly. Instead make the
          version here work with Dos file names.

        * rts/filename.pas: export DirSeparatorVar as a variable for
          realpath()

        * Make-lang.in: new variable HARDLINK that can be changed to use
          DJGPP "links"

Wed  9 Sep 1998 26:30 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/heap.c: _p_free(): new function
          _p_getmem_ptr, _p_freemem_ptr: new variables
          redirect _p_malloc() and _p_free() through _p_getmem_ptr and
          _p_freemem_ptr

        * rts/*: use _p_free() instead of free()

Mon  7 Sep 1998  8:30 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/types.h; rts/fdr.h; rts/error.c; rts/file.c: _p_initfdr(),
          _p_close(); rts/bind.c: _p_bind(), _p_binding(), _p_unbind():
          implemented fkind_BINDABLE

Sun 30 Aug 1998 26:42 MEST          Peter Gerwinski <peter@gerwinski.de>
                                  Frank Heckenbach <frank@pascal.gnu.de>
                                   Matthias Klose <doko@cs.tu-berlin.de> 
         Jan-Jaap van der Heijden <J.J.vanderHeijden@student.utwente.nl>
                              Nick Burrett <nick.burrett@btinternet.com>

	* Beta release of gpc-19980830.

Sat 30 Aug 1998 26:41  Peter Gerwinski <peter@gerwinski.de>

	* config-lang.in, diffs/gcc-egcs-*: upgraded to egcs-2.91.55.

Sat 30 Aug 1998 25:51  Peter Gerwinski <peter@gerwinski.de>

	* Make-lang.in: Updated `gpc_release' to 19980830.

	* test/: new subdirectory `local' for platform-specific tests.
	  moved a lot of test cases to `knownbugs'.

Sat 29 Aug 1998 19:51  Peter Gerwinski <peter@gerwinski.de>

	* Make-lang.in: Updated `gpc_release' to 19980829
	  - now y2k-compliant. :-)

	* gpc-common.c: shorten_compare(): Pascalified limited-range warnings.

	* gpc-decl.c: store_parm_decls(): disabled the main program's
	  tail recursion reentry stuff.
	  resolve_forward_pointer(): handle function return types.

	* gpc-lex.c: yylex(): implemented a kludge for hosts with
	  HOST_BITS_PER_WIDE_INT <> 32. :-(

	* gpc-typeck.c: check_pascal_initializer(): call functions in
	  initalizers.
	  convert_for_assignment(): don't reject correct assignments of
	  pointers to integer types.

	* module.c: store_tree(), load_tree(): make `lang_code' a signed
	  char to make the PPC happy.

	* parse.y: function_heading: do not crash on errorneous function
	  return types.

	* rts.c: build_rts_call(): case bp_PARAMSTR: save one comparison
	  when the actual parameter is unsigned.

	* test/i386/: new directory for i386-specific tests.

	* test/knownbugs/: new directory for known bugs currently being
	  worked on.

	* types.c: check_set_bounds(): corrected warning.

	* util.c: check_identifier(): implemented the promise "for each
	  function it appears in".

Fri 28 Aug 1998 15:10  Peter Gerwinski <peter@gerwinski.de>

	* ../expr.c for EGCS: get_inner_reference(): convert `index' to
	  `sbitsizetype' or `ssizetype' to ensure that the product or sum
	  gets this type.

Mon 24 Aug 1998 19:51  Peter Gerwinski <peter@gerwinski.de>

	* gpc-decl.c: c_decode_option(): implemented `--no-autolink',
	  `--no-automake', and `--no-autobuild'.  They are all
	  equivalent and disable any AutoFoo mechanism.

	* lang-options.h: new options `--no-autolink', `--no-automake',
	  and `--no-autobuild'.

	* module.c: module_must_be_recompiled(): corrected AutoLink
	  behaviour.

	* rts.c: build_rts_call(): case bp_RUNERROR: return -1 instead of 81.

Sat 22 Aug 1998 15:32  Peter Gerwinski <peter@gerwinski.de>

	* rts/bind.c: _p_bind(): removed `type' parameter.

Sat 22 Aug 1998 11:51  Peter Gerwinski <peter@gerwinski.de>

	* parse.y: rts_proc_zeropar: `RunError' can also be called
	  without args.

	* rts.c: build_rts_call(): case bp_RUNERROR: `RunError' without
	  args is `RunError ( 81 )' ("assertion failure").

	* util.c: declare_known_id():  use TYPE_DECLs instead of VAR_DECLs
	  for built-in identifiers that are known to represent types.
	  This reduces the damage caused by the VAR_DECL kludge.  :-[

Tue 18 Aug 1998 23:00 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/configure.in, rts/rts-config.in: added AC_FUNC_CLOSEDIR_VOID,
          AC_CHECK_FUNCS(statvfs statfs)

        * rts/file.c: _p_closedir(), _p_statfs(): new functions

1998-08-03  Matthias Klose  <doko@cs.tu-berlin.de>

	* Make-lang.in (pascal.install-man): Make symbolic links to PC,
	  EPC, BPC man pages.
	  (pascal.install-info): Depend on info files built in build directory.
	  (p/doc/gpc.info, p/doc/gpc.dvi): Depend on gpcpas.texi built in
	  build directory.

Sun 2 Aug 1998 19:32  Peter Gerwinski <peter@gerwinski.de>

	* gpc-decl.c: c_decode_option(), lang-options.h:
	  implemented `--autolink'.

	* gpc-lex.c: process_directive(): adapted to new meaning of
	  flag_automake.

	* gpc-typeck.c: comp_target_types(), convert_arguments(),
	  convert_for_assignment(): be stricter about pointers to
	  integer types.  error_assignment(): new function.

	* module.c: flag_automake: new meaning.
	  module_must_be_recompiled(): adapted to new meaning of
	  flag_automake.

	* parse.y: optional_program_heading: call store_executable_name().
	  program_heading: do not call store_executable_name().
	  array_index_list: do not crash on errors.
	  variable_access_or_typename, variable_or_function_access_no_id:
	  `File' is a special case of a typename. :-(

	* rts.c: build_rts_call(): case gpc_CSTRING2STRING: store the
	  CString in a temporary variable; case p_BIND: removed the
	  "type" parameter; case bp_APPEND, p_EXTEND: require text files.

	* test/future/constrord.pas: moved to test/past/.

Sat 1 Aug 1998 13:05  Peter Breitenlohner <peb@mppmu.mpg.de>

	* Make-lang.in: RTSSTAGESTUFF: added missing "p/rts/emath-stamp".

Thu 30 Jul 1998 24:00 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/types.h: struct Fdr: replaced LastBinding by BindingChanged

1998-07-30  Matthias Klose  <doko@cs.tu-berlin.de>

	* test_summary: new file.

	* test/Makefile (test): add echos to run test_summary.

Wed 29 Jul 1998 24:36  Peter Gerwinski <peter@gerwinski.de>

	* gpc-common.c: build_pascal_binary_op(): changed internal names
	  for temporary strings.

	* gpc-convert.c: convert(): call abort() if input is nonsense.

	* objects.c: check_object_pointer(): use concat().

	* parse.y: variable_or_function_access_no_id: do not return
	  NULL_TREE for new(), but error_mark_node - even for procedural use.

	* types.c: build_pascal_string_schema(): take care that the
	  bounds of the array are in permanent obstack; use TREE_SET_CODE().
	  convert_type_to_range(): take care that the bounds of the range
	  are in permanent obstack.

	* util.c: init_any(): use build_pascal_array_ref() instead of
	  build_array_ref(), so schema pointers get pre-discriminated.
	  In fact this does *not* solve the problems which motivated
	  this change.

Tue 28 Jul 1998 24:30 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/fdr.h, rts/file.c: _p_nameit(), _p_open(): replaced the mode
          bits by simple constants. With M_SWRITE, open the file for
          reading/writing, not for appending

        * rts/types.h: struct Fdr: new field LastBinding

        * rts/check_binding(): don't close the file if the binding hasn't
          changed

Mon 27 Jul 1998 12:46-13:06  Peter Gerwinski <peter@gerwinski.de>

	* Make-lang.in: p/doc/gpc.info: `cd' into `p/doc', and add the
	  correct include path.

	* config-lang.in: dropped support for gcc-2.8.0.

	* diffs/Makefile.in.diff: removed; instead, `../Makefile.in' is
	  included into `mkdiffs'.

	* diffs/gcc-2.8.0.diff, gcc-egcs-2.91.28 through 2.91.50: removed.

	* diffs/gcc-2.8.0.diff, gcc-egcs-2.91.51: rebuilt.

	* diffs/mkdiff: include `Makefile.in' and `prefix.c'.

	* gbe.h: dropped emit_string_move() and emit_string_pad().

	* gpc-common.c: build_pascal_binary_op(): use binary_op_error()
	  to report an error.

	* gpc-decl.c: init_decl_processing(), finish_struct(), finish_enum():
	  with EGCS, re-calculate TYPE_SIZE_UNIT.
	  grok_directive(): use mark_addressable() instead of directly
	  assigning to TREE_ADDRESSABLE.

	* gpc-typeck.c: build_function_call(): pointers to functions
	  cannot be called directly - complain about missing `^'.
	  build_c_cast(): allow for conversions including REFERENCE_TYPEs.
	  convert_for_assignment(): implicitly convert a function to a
	  reference rather than a pointer; implicitly convert function
	  references instead of pointers.

	* lang-specs.h: pass " -D__NEED_ALIGNMENT__" on machines with
	  STRICT_ALIGNMENT.

	* module.c: store_tree(), load_tree(): with EGCS, store/retrieve
	  TYPE_SIZE_UNIT.

	* objects.c: inherit(), add_vmt_field(): with EGCS, re-calculate
	  TYPE_SIZE_UNIT.

	* parse.y: module_constructor, implicit_module_constructor,
	  optional_unit_constructor, module_destructor:
	  use mark_addressable() instead of directly assigning to
	  TREE_ADDRESSABLE.

	* test/README: documented `foo.run'.

	* test/john1.pas: moved to test/future/.

	* types.c: grok_packed(), make_signed_range(): with EGCS,
	  re-calculate TYPE_SIZE_UNIT.

	* util.c: maybe_call_function(): implicitly dereference pointers
	  to functions.  (Why???)

Sun 26 Jul 1998 21:00 Frank Heckenbach <frank@pascal.gnu.de>

        * Make-lang.in: when calling the rts/configure: replaced
          "CONFIG_SITE=/dev/null" by "CONFIG_SITE=nonexisting-file" to
          avoid a sh error message about /dev/null not being a regular file.
          rts/configure checks for existence of the file, so giving a
          nonexisting file has the same effect as /dev/null, but without an
          error message.

        * rts/types.h: NEG_WIDTH_ERROR_MASK, NEG_WIDTH_LEFT_MASK,
          NEG_WIDTH_CENTER_MASK: new constants

        * rts/write.c: _p_get_padding(): new function

        * rts/wrtinc.c: use NEG_WIDTH_ERROR_MASK, NEG_WIDTH_LEFT_MASK,
          NEG_WIDTH_CENTER_MASK

Sat 25 Jul 1998 21:31-21:39  Peter Gerwinski <peter@gerwinski.de>

	* gpc-common.c: build_pascal_binary_op(): use build_string_move()
	  instead of emit_string_move().

	* gpc-decl.c: init_decl_processing(): added library_name for
	  __builtin_memset().  Since this is in c-decl.c of EGCS but not
	  of GCC2, it was obviously a bug in GCC2.

	* rts.c: build_rts_call(): case bp_PARAMSTR: use build_string_move()
	  instead of emit_string_move().

	* types.c: assign_string(): use build_string_move() instead
	  of emit_string_move() and build_string_pad() instead of
	  emit_string_pad().

	* util.c: build_string_move(), build_string_pad(): new functions.

	* ../expr.c: removed emit_string_move(), emit_string_pad().

Sat 25 Jul 1998 19:54-20:39  Peter Gerwinski <peter@gerwinski.de>

	* gpc-decl.c: grok_direktive(): unexported `forward' procedures
	  are `static' in C sense.
	  start_pascal_function(): use comptypes() rather than == for
	  checking whether the function return value of declaration and
	  definition matches.

	* gpc-typeck.c: comptypes(): require matching packedness only
	  for arrays and records.
	  convert_arguments(): use `make_new_variable()' to create
	  temporary variables for `const' parameters; the temporary
	  variable must not be read-only.
	  check_pascal_initializer(): handle initialization of schemata.
	  build_modify_expr(): handle `Real ( foo ):= bar'.

	* gpc.c: hack_predefines(): new function.
	  main(): hack the command line to predefine `-D__OS_DOS__'
	  where appropriate.

	* module.c: add_automake_gpc_options(): use save_string().
	  store_executable_name(): use save_string() which fixes a "-1" bug.
	  store_tree(), load_tree(): case FILE_TYPE: store/retrieve the size.

	* parse.y: structured_borland_initializer: accept `( )'.
	  function_declaration: init_any() the function return variable.
	  declaring_statement: accept initialization with `='.
	  assignment_or_call_statement: be more tolerant to errors (doesn't
	  seem to make a difference)

	* rts.c: pascal_unpack_and_pack(): take the correct index domain.

	* test/Makefile: if present, use a script `foo.run' to execute
	  the test program.

	* types.c: assign_string: use `__builtin_memcpy()' instead of
	  emit_string_move().
	  build_array_slice_ref(): warn about ISO 7185 violation;
	  handle CStrings.
	  build_pascal_array_ref(): type-check the array index;
	  handle CStrings.

	* util.c: build_pascal_initializer(): handle schemata.

Sat 25 Jul 1998 19:50  Matthias Klose  <doko@cs.tu-berlin.de>

	* Make-lang.in: build info files in build directory.

Fri 24 Jul 1998 15:50 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/filemname.pas: TStringSize, TString, TStringBuf:
          moved into rts/rtsstr.pas

        * rts/rtsstr.pas: UpCaseString, LoCaseString, UpCaseStr, LoCaseStr:
          new procedures

Thu 23 Jul 1998 22:25-22:44  Peter Gerwinski <peter@gerwinski.de>

	* gpc-typeck.c: build_component_ref(): avoid multiple error messages;
	  do not crash on requests of fields of a type definition.
	  check_pascal_initializer(): calculate array bounds in `Integer' type.
	  re_layout_type(): preserve packedness.
	  c_expand_return(): reject `return foo;' in Procedures.

	* parse.y: return_statement: handle strings.
	  variable_or_function_access_no_id: handle `New ( p, Init )' with
	  a pointer variable `p' to an object with a constructor `Init'.

	* rts.c: build_rts_call(): renamed temporary variables consistently;
	  case p_BINDING, p_UNBIND: check for file type; case p_BIND:
	  re-formulated error message.

	* types.c: grok_packed(): handle packed arrays of arbitrary types,
	  including multidimensional arrays.

	* util.c: init_any(): calculate array bounds in `Integer' type.

	* test/past: new directory for keeping obsolete test programs,
	  e.g. for features taken out again or planned but not accepted.

Thu 23 Jul 1998 21:30 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/write.c: ok_WRITE(), rts/file.c: _p_open (), rts/fdr.h,
          rts/rts.h, rts/rt0.c: _p_initialize(): removed the special
          treatment of the null device

Thu 23 Jul 1998 12:28-12:32  Peter Gerwinski <peter@gerwinski.de>

	* module.c: load_tree(): case VAR_DECL, FUNCTION_DECL:
	  save and restore the original IDENTIFIER_LOCAL_VALUE ("import only").
	  import_interface(): reject self-dependencies.

	* test/future: new directory for keeping test programs that are
	  out of range for gpc-2.1.

Tue ;-) 22 Jul 1998 25:57-26:44  Peter Gerwinski <peter@gerwinski.de>

	* diffs/mkdiff: removed the `../mkstemp.c' stuff obsoleted by
	  inclusion of `mkstemp.c' into the GPC source.

	* gpc-decl.c: c_decode_option(): `--field-widths': accept
	  separate field widths for long integers and reals;
	  `--standard-pascal' etc.: initialize field widths.

	* gpc-defs.h: LONG_INT_OUT_WIDTH, LONG_REAL_OUT_WIDTH: new constants.
          PASCAL_TYPE_UNDISCRIMINATED_SCHEMA(): use a weaker condition.

	* gpc-typeck.c: convert_arguments(): construct sets out of set
	  constructors passed to `const' parameters;
	  use `append_null_character()' for `CString' parameters.
	  grok_discriminant(): handle formal discriminants discriminated by
	  other actual discriminants.
	  re_layout_type(): don't decrease the type precision; preserve
	  LANG_SPECIFIC of record types.
	  digest_init(): BOOLEAN_TYPE is an ordinal type, too.  In fact
	  this omission did not (yet?) cause a bug (and is untested now).
	  really_start_incremental_list(), push_init_level(): convert
	  array index type to `Integer' to avoid overflows.

	* module.c: store_tree(), load_tree(): store/load TREE_LISTs
	  iteratively to avoid deep recursion.

	* parse.y: type_definition: warn about type definition whose rhs
	  is an undiscriminated schema in EP mode.
	  type_denoter: reject multiple discriminations.
	  parameter_form: allow for untyped files.
	  standard_function_statement: treat `reset' etc. as part of
	  `rts_proc_parlist' rather than a separate `rts_file_open'.
	  rts_file_open: removed; integrated into `rts_proc_parlist'.
	  optional_filename: now superfluous rule removed.
	  rts_proc_parlist: handle `reset' etc.

	* rts.c: rts_write(): initialize local variable;
	  type-check parameters to `write' to a typed file and
	  distinguish strings from chars;
	  pass field widths for long integers and reals.
	  build_rts_call(): case bp_INC, bp_DEC: handle all integer
	  types correctly; case p_RESET etc.: re-written.

	* types.c: assign_string(): use `append_null_character()'.
	  append_null_character(): new function.
	  is_packed_field(): be more tolerant about the input.
	  select_integer_type(): don't let variables always win against
	  constants; be more careful instead.
	  build_array_slice_ref(): don't let `fold()' optimize away needed
	  parts of the array; cleaned up ISO warning.

	* util.c: long_int_out_width, long_real_out_width: new variables.
	  declare_vars(): reject undiscriminated schema types.

Tue 21 Jul 1998 09:50  Matthias Klose  <doko@cs.tu-berlin.de>

	* gpc-lex.c (process_directive): add egcs specific hack to access
	  documented_lang_options (defined in toplev.c).

	* diffs/mkdiff: include Makefile.in in patches

	* config-lang.in (trigger): updated for egcs_1_1_branch (2.91.51)

	* gcc/Makefile.in (check-gpc): call check2-gpc in p for running
	  tests in the test directory.

	* Makefile.in (check2-gpc, test/Makefile): new targets to run the
	  tests in the test directory.

	* test/Makefile (stamp-links): allow testing in directory other
	  than source directory.

	* gpc.c (main): only set AUTOMAKE_GPC and AUTOMAKE_EXEC_PREFIX if unset

	* module.c (compile_module): get gpc_name from environment if set.

Mon Jul 20 00:12:32 1998 J.J. van der Heijden <J.J.vanderHeijden@student.utwente.nl>

	* configure: Deleted. This file is no longer used.
	* gansidecl.h: Add HAVE_* code from gcc2 equivalent.
	* gpc-cccp.c: Add -remap support code from GCC 2.8.1 cccp.c
	* mkstemp.c: Copied from EGCS into distribution: FSF GCC does
	  not supply this file.
	* system.h: New file (copied from EGCS). Required for mkstemp.c
	* rts/Makefile.in: remove --automake from .pas.o rule.
	  It crashes gpc1, and should have been in $(PFLAGS) anyway.
	* rts/bind.c, rts/read.c, rts/rt0.c, rts/set.c, rts/string.c,
	  rts/write.c:  replace rindex() calls with strrchr()
	  equivalent. This helps pure ANSI systems; BSD gluecode is present.
	  bcopy() -> memcpy() and bzero() -> memset(): ditto.
	* rts/configure.in: check for memcpy(), strchr()
	* rts/configure: rebuilt.
	* rts/file.c (_p_mkdir): for _WIN32, mkdir() takes only one argument.
	* rts/random.c, rts/rt0.c: #include <process.h> for correct prototypes
	* rts/rts.h: Not all systems have <string.h> Add gluecode.

Tue 21 Jul 1998 25:30 Frank Heckenbach <frank@pascal.gnu.de>

        * gpc.c: process_command(): assume tooldir_prefix is an absolute path
          if it starts with '$', so that DJGPP->foo cross-compilers will get
          a useful path ($DJDIR\foo\bin) to their cross-binutils

        * module.c: compile_module(): fixed a FIXME

Sun 19 Jul 1998 21:30 Frank Heckenbach <frank@pascal.gnu.de>

        * gpc.c: main(): fixed a bug

        * rts/error.c: _p_exitcode, _p_erroraddr: new variables
          _p_start_error(): new function, set _p_exitcode and _p_erroraddr

        * rts/misc.c: _p_halt(): set _p_exitcode

Sat 18 Jul 1998 22:01-22:46  Peter Gerwinski <peter@gerwinski.de>

	* Make-lang.in: "Version numbers", p/gpc.o: define `gpc_major',
	  `gpc_minor', and `gpc_release' here rather than in `lang-specs.in'.

	* diffs/gcc-2.8.0.diff: added hunk to create a dummy `../mkstemp.c'.

	* diffs/gcc-2.8.1.diff: rebuilt to use `-C3' instead of `-U3'
	  and to create a dummy `../mkstemp.c'.

	* diffs/mkdiff: get the GCC version number from the command line;
	  include `mkstemp.c'.

	* gpc-cccp.c: skip_if_group(): don't count line numbers twice
	  if a comment is present in the skipped text.
	  skip_to_end_of_comment(): took out "foo" in error message. :-)

	* gpc-common.c: build_pascal_binary_op(): do type checking in
	  optimized "if foo in [ a, b..c ]".

	* gpc-decl.c: c_decode_option(): allow for multiple `--automake's
	  and `--autobuild's, collecting all options.
	  grokdeclarator(): took out C-specific warning.
	  start_pascal_function(): allow for `asmname' being used in the
	  implementation part of a unit.

	* gpc-typeck.c: comptypes(): explicitly check whether the length
	  of discriminated strings matches; do a compromise when
	  checking whether two records (schemata) match. :-/
	  comp_object_or_schema_pointer_types(): check it the hard way
	  in case the comfortable way fails.
	  build_function_call(): don't check C format strings.
	  convert_arguments(): mark variables passed as `var' parameters
	  as being assigned to.
	  check_pascal_initializer(), convert_for_assignment(): handle
	  assignments of "@'foobar'" to untyped pointers like assignments
	  to pointers to strings.
	  re_layout_type(): re-wrote code for subranges and array indices.

	* lang-specs.h: get GPC_MAJOR, GPC_MINOR, and GPC_RELEASE from
	  Make-lang.in.

	* module.c: add_automake_gpc_options(): new function.
	  store_tree(), load_tree(): store and retrieve CONSTRUCTORs.

	* parse.y: function_declaration: no change; just a cleanup.
	  function_heading, assignment_or_call_statement: avoid memory leaks.
	  factor: make `high' and `low' work with schemata and strings.

	* test/*.bug: `mmv'ed to test/#1.pas.  Perhaps they should go
	  into a new directory `known-bugs'?

	* types.c: expand_packed_field(): also handle non-subranges.

	* util.c: handle_formal_param_list(): with "open array"s, my
	  favourite bug "prior parameter's size depends on `Foo'" had
	  a rebirth.  Now it's fixed again.
	  init_any(): re-formulated loop to initialize arrays to avoid
	  an the index variable to leave the allowed range.

Fri 17 Jul 1998 10:30 Frank Heckenbach <frank@pascal.gnu.de>

        * util.c: initialize_world(), rts/gpc.pas, rts/types.h,
          rts/times.c: _p_gettimestamp(): implemented a DayOfWeek
          field for TimeStamp
          rts/times.c: _p_dayofweek(): new function

Thu 16 Jul 1998 12:00  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/filename.pas: GetTempFileName, GetTempFileName_CString:
          new functions

        * rts/rt0.c: _p_initialize(), rts/file.c: _p_nameit():
          use GetTempFileName_CString instead of _p_makename()

        * rts/rt0.c: _p_makename(): removed

        * rts/choose-temp.c: removed

Tue 14 Jul 1998 16:25  Frank Heckenbach <frank@pascal.gnu.de>

    * rts/rtsstr.pas: Pos, LastPos: new functions

    * rts/filename.pas: FSplit: new procedure
      DirFromPath, NameFromPath, ExtFromPath, FExpand,
      OpenDir, ReadDir, CloseDir: new functions

Tue 14 Jul 1998 13:01  Klaus Espenlaub <kespenla@student.informatik.uni-ulm.de>

	* pascal_program: Added call to finish_file(), writing out
	  the static constructor/destructor calling code.

	* gpc-lang.h: add prototype for finish_file().

Tue 14 Jul 1998 11:30-12:08  Peter Gerwinski <peter@gerwinski.de>

	* Make-lang.in: p/version.o: leave giving the GCC version number
	  to `gpc.c'.
	  p/doc/gpcpas.texi: new rule.
	  install-libgpc: install a copy of `gpc.pas'.

	* config-lang.in: support egcs-2.91.45.

	* diffs/mkdiff: fall back to `-C3' because `-U3' is not
	  supported by all versions of `patch'.

	* doc/gpc-source.texi, doc/gpc.texi, doc/install.texi: The supported version of GCC
	  is now 2.8.1.

	* doc/gpcpas.texi: new file (generated automatically from
	  `rts/gpc.pas').

	* doc/install.texi: removed support for CygWin. :-(

	* doc/programming.texi: include `gpcpas.texi'.

	* gpc-common.c: combine_strings(): corrected warning about string
	  catenation; avoid the array type of the empty string to overflow.

	* gpc-decl.c: handle_one_level(): prediscriminate record fields.

	* gpc-typeck.c: convert_arguments(): avoid warning when passing
	  readonly strings to `CString' parameters.
	  convert_for_assignment(): corrected fatal typo in error messages.  

	* gpc.c: main(): changed version format.

	* lang-specs.h: define `__GPC__' and `__GPC_MINOR__' to carry the
	  GPC version number, `__GPC_RELEASE__' to carry the release date.

	* parse.y: boolean_expression: avoid superfluous error message.
	  variable_or_function_access_no_id: prediscriminate record fields.

	* rts.c: rts_string(): avoid superfluous error messages.
	  build_rts_call(): case gpc_CSTRING2STRING: handle explicit `Nil';
	  case p_BIND: require `bindable' only in EP mode.

	* types.c: build_pascal_array_ref(): prediscriminate array components.

	* version.c: took out explicit `FOO_VERSION_STRING's.

Wed  8 Jul 1998 26:50  Frank Heckenbach <frank@pascal.gnu.de>

    * rts/file.c: _p_get_file_name(): added proper error messages for
      Input, Output, StdErr and files bound to CFiles

    * rts/read.c: _p_read(): improved the handling of text files without
      EOLN at the end

Tue  7 Jul 1998 26:00  Frank Heckenbach <frank@pascal.gnu.de>

    * rts/rts.h: GPC_BINDING: moved into rts/types.h, so that struct Fdr
      can refer to it properly, unlike before
      BINDING: removed. Let struct Fdr point to GPC_BINDING directly,
      and give it a new field BoundName for the only field of BINDING
      that was really used (name)

Mon  6 Jul 1998 25:15  Frank Heckenbach <frank@pascal.gnu.de>

    * rts/misc.c: _p_run_constructors(): moved the clearing of
      _p_collect_flag into rts/rt0.c: _p_initialize() to simplify
      a workaround for the GCC bug of not calling constructors on
      all platforms

    * rts/rts.h, rts/emath.c: removed NO_LONGREALFUNCS, but rather check
      for sinl, cosl, atanl, sqrtl, logl, expl and powl in configure

1998-07-09  Matthias Klose  <doko@cs.tu-berlin.de>

	* version.c: changed version format (EGCS only).

	* gpc.c (main): changed version format (EGCS only).

	* util.c: include toplev.h

	* gpc-typeck.c: include toplev.h

	* gpc-lang.c (finish_file): static_ctors, static_dtors,
 	  void_list_node ATTRIBUTE_UNUSED.
	  include toplev.h

	* gpc-lex.c: include toplev.h

	* gpc-decl.c (c_decode_option): declare return-type

	* gansidecl.h: include EGCS extensions. Can this file be removed?

	* gpc-common.c: include toplev.h, output.h

	* gpc-decl.c, gpc-convert.c: include toplev.h

	* gpc.c (do_spec_1): initialize `flag'.
	  declare temp_names dependant on MKTEMP_EACH_FILE.

Sun 5 Jul 1998 27:42  Peter Gerwinski <peter@gerwinski.de>

	* Make-lang.in: updated version number and RTS version number
	  to 980705.

	* doc/reference.texi: added declaration headers to all skeletons.

	* gpc-typeck.c: check_pascal_initializer(): use bcopy() instead
	  of strncpy() for copying strings because they might contain #0
	  characters.

	* module.c: load_tree(): case FIELD_DECL: schemata are size_volatile.

Sun  5 Jul 1998 22:40  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/base.p: removed; contens merged into gpc.pas

        * rts: s/.p/.pas/

        * rts/emath.c: atanl(): fixed a bug

        * rts/rts.h, util.c: initialize_world(), rts/bind.c: _p_bind():
          added an Directory field to BindingType

        * rts/filename.pas: DirectoryExists, GetTempDirectory: new functions
          NullDeviceName, TTYDeviceName, ConsoleDeviceName: new constants

        * assert_.h: replaced the inclusion of "assert.h" (that doesn't
          work e.g. when cross-building GPC from Linux to DJGPP) by a
          simple macro

Sat  4 Jul 1998 26:20  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/filename.p: FSearch_Executable: new function

        * rts/rts.h, util.c: initialize_world(), rts/bind.c: _p_bind():
          added an Executable field to BindingType

Fri  3 Jul 1998 25:00  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/bind.c: _p_bind(): apply FrontSlash_CString to the binding name

        * rts/file.c: _p_nameit(): apply FrontSlash_CString to the read in
          file name

Thu  2 Jul 1998 16:50  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rtsstr.p: CString2String: renamed to StrCCopy
          StrLen, StrEnd, StrScan, StrRScan, StrDup, StrCmp: new functions

Wed  1 Jul 1998 27:00  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/bind.c: _p_bind(): fixed a bug that could cause this
          function to loop endlessly

        * rts/rts.h, rts/bind.c: _p_bind(): renamed PATH_SEPARATOR to
          DIR_SEPARATOR, in accordance with other files

        * rts/filename.p: new file

Tue 30 Jun 1998 29:00  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/fassign.p: Internal_Assign: don't complain when the file
          already has a binding -- unbind it instead (so that multiple
          `reset (f, filename)' on the same file works).

Tue 30 Jun 1998 22:12  Peter Gerwinski <peter@gerwinski.de>

	* diffs/mkdiff: added `-p' flag to `diff' parameters.

	* gpc-decl.c: c_decode_option(): introduced conditionals to make
	  it compile both with GCC2 and EGCS.

	* gpc-lang.c: lang_decode_option(): introduced conditionals to make
	  it compile both with GCC2 and EGCS.

	* gpc-lex.c: process_directive(): introduced conditionals to make
	  the call to `lang_decode_option()' compile both with GCC2 and EGCS.

	* gpc-typeck.c: convert_arguments(): conforming strings:
	  corrected misplaced parenthesis. =8-(
	  build_binary_op(): handling of SET_TYPE:
	  corrected another misplaced parenthesis. =8-(

	* test/strini.p: new program.

1998-06-30  Matthias Klose  <doko@cs.tu-berlin.de>

	* gpc-cccp.c (rescan): explicit braces to avoid ambiguous `else'
	(skip_if_group): explicit braces to avoid ambiguous `else'

	* gpc-typeck.c (comp_target_types): parentheses around assignment
	  used as truth value
	  (re_layout_type): return with type.
	  (build_binary_op): parentheses around && within ||
	  (print_spelling): parentheses around assignment used as truth value

	* gpc-lex.c (process_directive): call lang_decode_option with
	  correct args.
	  (compress_float): parentheses around assignment used as truth value
	  (check_if_predefined_type): explicit braces to avoid ambiguous `else'
	  (warning_list_languages): same.
	  (yylex): same.

	* gpc-lang.c (lang_decode_option): match prototype in tree.h

	* gpc-decl.c (c_decode_option): match prototype in c-tree.h
	 (finish_decl): parentheses around && within ||
	 (resolve_forward_pointer): removed unused variable forced_type

	* gpc-common.c (binary_op_error): move default clause out of #ifndef GPC
	  (build_pascal_binary_op): add empty default in switch (3x). correct?
	  (pascal_type_variant): add parantheses in expression.
	  (pascal_type_extension): add braces around if (4x).

	* Make-lang.in: use $(exeext) for binaries.
	  (gpc1$(exeext), xgpc$(exeext)): add mkstemp.o to dependencies.

	* Makefile.in (GPC_OBJS): addmkstemp.o to dependencies.

	* gpc.c: warning patches.

Mon 29 Jun 1998 17:55  Peter Gerwinski <peter@gerwinski.de>

	* rts/wrtinc.c: WRITE_REAL(): removed second parameter to
	  `_p_dispose()'.

Mon 29 Jun 1998 17:55  Peter Gerwinski <peter@gerwinski.de>

	* test/: renamed (and changed accordingly) files to fit in
	  DOS 8.3 filenames, e.g. `frank*.pas' --> `fjf*.pas'. :-(

	* test/Makefile: feed test programs by `foo.in' rather than
	  `foo.pas.in'.

Mon 29 Jun 1998 17:31  Peter Gerwinski <peter@gerwinski.de>

	* Make-lang.in: updated version number *and* RTS version number
	  to 980629.

Mon 29 Jun 1998 16:00-17:25  Peter Gerwinski <peter@gerwinski.de>

	* ChangeLog: cheered about 292 new lines by Frank, Nick,
	  Matthias, and Jan-Jaap. :-)

	* contrib/, config/, old/: removed.

	* test/: replaced by the current developers' test suite.

	* Make-lang.in: pascal.clean, pascal.distclean, pascal.extraclean,
	  pascal.maintainer-clean: added actions to clean `test/'.

	* doc/programming.texi: wiped out "signless"; new sections about
	  schemata, pointer arithmetics, and type casts.

	* doc/reference.texi: wiped out "signless"; skeletons for
	  `ChDir', `CString2String', `erase', `filemode', `flush',
	  `high', `InOutRes', `InOutResStr', `IOresult', `LoCase',
	  `low', `MkDir', `NewCString', `rename', `RmDir', `StrPCopy',
	  `String2CString', and `UpCase'.
	  Changed `to {begin|end} do' to `to {begin|end}'.
	  @node abs: corrected.
	  @node do, ParamCount, SetLength: new sections.

	* gbe.h: added prototype for fatal().

	* gpc-cccp.c: handle_pascal_directive(): new switch $i+/-
	  (I/O checking).

	* gpc-common.c: build_pascal_binary_op(): convert only constant
	  real values to plain `Real'; try also `Longest-' for integer
	  values; fixed bug in check for arithmetical overflow.

	* gpc-decl.c: flag_no_builtin: don't recognize built-in C functions.
	  flag_io_checking: new variable.
	  c_decode_option(): new switches `--uses=...' and `--gnu-pascal'. :-)
	  start_function(): disable a C-specific warning.

	* gpc-lex.c: process_directive(): process $i+/-.

	* gpc-typeck.c: convert_arguments(): changed the parameter
	  passing conventions for open arrays; handle fixed strings
	  passed to `const' string formal parameters correctly.
	  check_pascal_initializer(): don't require $x+ for initializing
	  CString variables.
	  convert_for_assignment(): robustified and cleaned up error
	  messages.

	* lang-options.h: new options `--uses=...' and `--gnu-pascal'.

	* module.c: do_extra_import(): new function.
	  module_must_be_recompiled(): combined changes by Nick and Matthias.
	  compile_module(), gpi_open(): be more careful about errors and
	  error messages.
	  import_interface(): changed text of error message.

	* objects.c: push_self_parameter(): try hard not to barf on a
	  previous meaning of the object's name.

	* parse.y: bp_UPCASE, bp_LOCASE, bp_RANDREAL, gpc_IOCHECK:
	  new non-tokens.
	  ucsd_IORESULT, bp_FLUSH, bp_ERASE, bp_RENAME, bp_CHDIR,
	  bp_MKDIR, bp_RMDIR, gpc_UPCASE, bp_FILEMODE, bp_INOUTRES,
	  bp_PI, bp_HI, bp_LO, bp_RANDOM, bp_RANDOMIZE, gpc_LOCASE,
	  gpc_INOUTRESSTR, gpc_NEWCSTRING, gpc_STRPCOPY,
	  gpc_CSTRING2STRING, gpc_STRING2CSTRING: new tokens.
	  new_identifier_1: updated.
	  import_or_any_declaration_part: implemented `--uses'.
	  declaring_statement: don't require $x+.
	  standard_function_statement: use `rts_proc_zeropar'.
	  rts_proc_zeropar: new rule implementing `Randomize'.
	  rts_proc_onepar: implemented `flush', `erase', `ChDir',
	  `MkDir', `RmDir'.
	  rts_proc_parlist: implemented `rename'.
	  factor: implemented `high' and `low'.
	  variable_or_function_access_no_id: implemented `FileMode',
	  `InOutRes', `InOutResStr', `pi' (42 digits).
	  rts_fun_zeropar: implemented `IOresult'.
	  rts_fun_optpar: implemented `Random'.
	  rts_fun_onepar: implemented `UpCase', `LoCase', `NewCString',
	  `CString2String', `String2CString'.
	  rts_fun_twopar: implemented `StrPCopy'.

	* rts/heap.c: _p_dispose(): removed superfluous parameter `size'.

	* rts.c: rts[]: new field `io_critical';
	  implemented a lot of new functions.
	  declare_rts_types():-/ initialize `ptype_cstring' from
	  `string_type_node'.
	  rts_call(): implemented I/O checking.
	  build_rts_call: case gpc_UPCASE, gpc_LOCASE, bp_RANDOM,
	  bp_RANDOMIZE, gpc_NEWCSTRING, gpc_STRPCOPY,
	  gpc_CSTRING2STRING, gpc_STRING2CSTRING, bp_FLUSH, bp_ERASE,
	  bp_RENAME, bp_CHDIR, bp_MKDIR, bp_RMDIR, ucsd_IORESULT: new cases;
	  case p_NEW: mark the variables as being assigned to;
	  case p_DISPOSE, bp_FREEMEM: removed second parameter to `_p_dispose';
	  case bp_FREEMEM: don't give superfluous error messages;
	  case bp_PARAMSTR: use `__builtin_strlen' instead of `strlen'.
	  get_builtin_variable(): new function.

	* rts.h: struct rts_symbol: new field `io_critical'.

	* util.c: char *extra_imports: new variable.
	  handle_formal_param_list: pass the length of open arrays.
	  KItable: new identifiers `IOresult', `flush', `erase',
	  `rename', `ChDir', `MkDir', `RmDir', `UpCase', `FileMode',
	  `InOutRes', `pi', `high', `low', `Random', `Randomize',
	  `LoCase', `InOutResStr', `NewCString', `StrPCopy',
	  `CString2String', `String2CString'.
	  declare_known_ids(): added warning about use of `Longest*' in
	  the RTS; new built-in types `SizeType' and `PtrDiffType'.

	Due to a lot of renamed files, the diff against gpc-980511
	has 123485 lines.

Fri 26 Jun 1998 28:00 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts.h, rts/heap.c, rts/rt0.c: replaced GLOBAL_P, GLOBAL_I,
          G_NP, G_NPE, G_NPB, GLOBAL_SIZE and _p_GLOBAL by _p_heap_begin
          and _p_heap_end

        * rts/error.c: _p_error_integer(), _p_internal_error_integer(),
          _p_report_integer(): changed the type of the second argument
          to long int so that also pointers can be passed for it
          (currently used for an error message from rts/heap.c)

        * rts/heap.c: rewrote the Mark/Release handling from scratch,
          so that now Mark/Release and Dispose can be used in the same
          program, and pointers allocated with New/GemMem can be freed
          with free(), and pointers allocated with malloc() can be freed
          with Dispose/FreeMem

Fri 26 Jun 1998 18:40 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rt0.c: _p_initialize(): removed the line buffering of stderr

Tue 25 Jun 1998 29:00 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rt0.c: _p_makename(): added a missing type cast (avoid
          warning under Solaris)

        * rts/rts.h: include <strings.h> (avoid warnings under Solaris),
          and define NO_LONGREALFUNCS for Solaris

Tue 25 Jun 1998 27:00 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-* (except rts-config.* and rts-version.*): removed the
          "rts-" prefix from the filenames, adjusted these files,
          Makefile.in and some other files accordingly

Thu Jun 25 12:59:31 1998  Nick Burrett  <nick.burrett@btinternet.com>

	* configure.in: Remove file.
	* Makefile.in (gpc-config.h): Remove rule.
	* gpc-defs.h: Don't include gpc-config.h.
	(STRINGIFY): Define; replaces GPC_MAKE_STRING.
	(GPC_MAKE_STRING): Remove.
	Wrap string.h and strings.h, bcopy, bzero and bcmp in autoconf
	checks.
	[!EGCS]: Define autoconf check macros to keep support with gcc 2.8.
	(NULL, GENERIC_PTR, NULL_PTR, PTR, const, PROTO): Remove.
	(PVPROTO, VA_START, __attribute__): Remove.
	(GPC_GET_REAL): Replace GPC_MAKE_STRING with STRINGIFY.
	* module.c (store_tree [PROCESS_NODE]): Likewise.
	(load_tree [PROCESS_NODE]): Likewise.

	* gbe.h: Remove prototype support.
	* circle-buf.h: Likewise.
	
	* circle-buf.c: Include gansidecl.h.
	[EGCS]: Include system.h.
	* gpc-convert.c, gpc-lex.c, gpi-hash.c, setop.c: Likewise.
	* gpc-decl.c, gpc-typeck.c, module.c, parse.y: Likewise.
	* types.c, gpc-common.c, gpc.c, objects.c: Likewise.
	* rts.c, util.c: Likewise.

	* Makefile.in (circle-buf.o): Add gansidecl.h dependency; remove
	gpc-config.h dependency.
	(gpi-hash.o, module.o, objects.o, rts.o, setop.o): Likewise.
	(types.o, util.o, gpc-common.o, gpc-convert.o): Likewise.
	(gpc-decl.o, gpc-lang.o, gpc-lex.o, gpc-typeck.o): Likewise.

Wed 24 Jun 1998 29:00 Frank Heckenbach <frank@pascal.gnu.de>

        * rts.c, rts/*: s/Gpc_/_p_/

Tue Jun 23 16:24:19 1998  Nick Burrett  <nick.burrett@btinternet.com>

	* parse.y (language_string): Remove name hack for RS6000
	as it is no longer required.

Tue Jun 23 15:05:47 1998  Nick Burrett  <nick.burrett@btinternet.com>

	* setop.c (expand_set_comparison): Cope with `set0 <= set1'
	comparisons where one set has mode BLKmode.

Wed 24 Jun 1998 27:00 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-random.c: renamed to rts/rts-randfile.c

        * rts/rts-random.c: new file

        * rts/strdup.c: removed, because it doesn't seem to be used anywhere,
          and rts/rts-rt0.c already contains a _p_strdup() function

        * rts/rts-hdr.h: longestint, longestcard, longestreal: new type
          declarations

Fri 19 Jun 1998 28:00 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-file.c: _p_get_file_name(): new function

        * rts/rts-hdr.h: IOERROR_FILE: new macro: produce clearer error
          messages for internal and external files, using _p_get_file_name()

        * rts/rts-bind.c, rts/rts-block.c, rts/rts-file.c, rts/rts-random.c,
          rts/rts-read.c, rts/rts-write.c: use IOERROR_FILE for file errors

Thu 18 Jun 1998 20:00 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rtsstr.p: StrCaseCmp: new function

        * rts/strcasecmp.c, rts/rts-compat.c: removed

        * rts/rts.h: new field CFile in GPC_BINDING

        * rts/rts-file.c: _p_open(): use CFile if given

        * rts/fassign.p: Assign_CFile: new procedure

        * rts/rts-fdr.h: new FDR status flag FiFLUSH

        * rts/rts-file.c: _p_open(): set FiFLUSH for character devices

        * rts/rts-write.c: _p_write(), _p_put(): flush after write if
          FiFLUSH is set (not only for terminals)

Wed 17 Jun 1998 19:30 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-file.c: _p_erase(), _p_rename(),
          _p_chdir(), _p_mkdir(), _p_rmdir(): new functions

Tue 16 Jun 1998 24:30 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-file.c: _p_open(): implemented FileMode (BP compatibility)

        * rts/rts-file.c: _p_open(), rts/rts-random.c: _p_seekupdate(),
          _p_update(): fixed some bugs about treating the file status

        * rts/rts-read.c: ok_EOF(): also test ok_READ()

Sat 14 Jun 1998 30:00 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-write.c: _p_write(): implemented a buffer for the output
          collected during one execution of the function

Thu 11 Jun 1998 24:15 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-read.c: _p_lazytryget(): new function that, in contrast
          to _p_lazyget(), does not cause an error when the file is not
          readable or at EOF (needed for dereferencing file pointers when
          it is not know if it will be read from or written to them).

        * gpc-common.c: build_pascal_pointer_reference(),
          rts.c: build_buffer_ref(): create a call to _p_lazytryget() for
          dereferencing file buffers. Semantics of the second parameter
          of build_buffer_ref() changed. Calls from rts_read() and
          rts_write() adapted accordingly.

Sat  6 Jun 1998 20:00 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-error.c: rearranged error codes
          _p_internal_error(), _p_internal_error_string(),
          _p_io_error(), _p_io_error_string(),
          _p_check_inoutres(), _p_ioresult(): new functions
          _p_inoutres, _p_inoutres_str: new variables
          _p_error_pointer(), _p_report_pointer(): removed

        * rts/rts-hdr.h: IOERROR, IOERROR_STRING: new macros

        * rts/rts-bind.c, rts/rts-block.c, rts/rts-file.c, rts/rts-random.c,
          rts/rts-rdinc.c, rts/rts-read.c, rts/rts-string.c, rts/rts-write.c,
          rts/rts-wrtinc.c: use IOERROR and IOERROR_STRING for I/O errors,
          check _p_ioresult at the beginning of functions, and when
          _p_ioresult is set, return immediately and in a clean state

Tue  4 Jun 1998 25:00 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/*: renamed _p_generic() to _p_error() and made it a `void'
          function

Tue Jun  2 22:22:31 1998  Nick Burrett  <nick.burrett@btinternet.com>

	* parse.y (main_program_declaration): Initialise
	`current_function_return_variable'.

Mon Jun  1 17:55:26 1998  Nick Burrett  <nick.burrett@btinternet.com>

	* module.c ("obstack.h"): Include.
	(obstack_chunk_alloc, obstack_chunk_free): Define.
	(add_automake_switches): New function.
	(module_must_be_recompiled): Use it. Build AutoMake command
	line with obstack.
	(compile_module): Likewise.
	Don't assume that `OBJECT_SUFFIX' is 3 characters.

Sun 31 May 1998 26:00 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-*.p: removed the "rts-" prefix from the filenames,
          adjusted these files, Makefile.in and some other files accordingly

        * rts/rts-file.c: _p_open(): when opening a file with a file name,
          do a binding internally. Don't do this in _p_open(), but rather
          in _p_reset(), _p_rewrite() and _p_extend().

        * rts/fassign.p: InternalAssign: new function, used from
          rts/rts-file.c

        * rts/rtsstr.p: CString2String: prevent destination overflow

Sun May 24 19:54:10 1998  Nick Burrett  <nick.burrett@btinternet.com>

	* module.c (store_executable_name): Use `EXECUTABLE_SUFFIX'
	  and correctly add it to `name'.

Sat 23 May 1998 26:00 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-error.c: restructured the error reporting greatly:
          _p_generic(), _p_prmessage(): changed
          _p_igeneric(), _p_warning(), _p_error(): removed
          _p_error_integer(), _p_error_string(), _p_error_pointer(),
          _p_report(), _p_report_integer(), _p_report_string(),
          _p_report_pointer(): new functions

        * rts/rts-rt0.c, rts/rts-read.c, rts/rts-file.c, rts/rts-write.c,
          rts/rts-error.c, rts/rts-heap.c, rts/rts-random.c, rts/rts-misc.c,
          rts/rts-bind.c, rts/rts-set.c, rts/rts-rdinc.c, rts/rts-rdsub.c,
          rts/rts-string.c, rts/rts-zmath.c, rts/rts-math.c, rts/rts-emath.c,
          rts/rts-times.c: adapted to the changes in rts/rts-error.c
          moved all runtime error messages into rts/rts-error.c and gave
          them a number

        * rts/rts-file.c: _p_open(): when opening a bound file fails,
          don't ask for a file name, but directly cause a runtime error.

Sat 23 May 1998 20:00 Frank Heckenbach <frank@pascal.gnu.de>

        * util.c: initialize_world(), rts/gpc.pas, rts/rts-types.h:
          implemented a MicroSecond field for TimeStamp

        * rts/rts-times.c: _p_gettimestamp(): set the MicroSecond field
          if HAVE_GETTIMEOFDAY is defined

Fri May 22 17:00:48 1998 J.J. van der Heijden <J.J.vanderHeijden@studenty.utwente.nl>

	* Makefile.in: execute configure from $(srcdir) which need not be
	  the current directory

Thu 21 May 1998 17:50  Matthias Klose <doko@cs.tu-berlin.de>

	* diffs/gcc-egcs-2.91.28.diff: add check-gpc to gcc/Makefile.in
	  check target.

	* gpc.c (main): correctly set the language dialect, if the driver is
	  called with an `x' as prefix.

	  set two environment variables (AUTOMAKE_GPC, AUTOMAKE_EXEC_PREFIX)
	  to correctly (???) call the driver for the automake feature.
	  Sure, that's a hack ...

	* module.c (module_must_be_recompiled): get the name of the gpc
	  and the exec prefix used from the environment, if set
	  (AUTOMAKE_GPC, AUTOMAKE_EXEC_PREFIX).

	* Makefile.in (gpc-config.h): search configure in $(srcdir)
	  added SCHED_CFLAGS to FLAGS_TO_PASS.

	* Make-lang.in: added p/rts/emath-stamp to GPCSTAGESTUFF.
	  add RANLIB and RANLIB_TEST to RTS_FLAGS_TO_PASS (@RANLIB_TEST@
 	  is replaced by egcs configure with empty string.
	  added SCHED_CFLAGS to GPC_FLAGS_TO_PASS.
	  (p/version.o): remember date and time of the first
	  build and use it for later stages, else `make compare' fails.
	  (pascal.distclean): remove p/gpc_date and p/gpc_time

Wed 13 May 1998 13:00 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-str.p: UpCase, LoCase, BP_UpCase, BP_LoCase:
          new functions

        * rts/rts-rt0.c: _p_initialize(): added locale support for
          UpCase and LoCase

Tue 12 May 1998 24:50 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-read.c: _p_got(): new function
          _p_GetN(): bug fixed (wrong argument to hack_fread())

        * parse.y, rts.c: rts-read(): use p_got() instead of p_get() after
          reading from a typed file, so that this also behaves lazy

        * rts/*: removed some warnings

Mon 11 May 1998 18:21  Peter Gerwinski <peter@gerwinski.de>

	* Make-lang.in: updated version number to 980511. :-I
	  Pass the GCC version number as "2.8.1" rather than "gcc-2.8.1".
	  Corrected typos and wrong quoting "\(" and "\)".
	  pascal.install-dir: new rule.
	  pascal.install: use pascal.install-dir.

	* Makefile.in: removed bytecode stuff.

	* config-lang.in: cleaned up GCC patching; generalized for EGCS.

	* diffs/gcc-2.8.1.diff: rebuilt.

	* diffs/gcc-egcs-2.91.28.diff: new file.

	* diffs/mkdiff: took out `gcc.c'; switched target to EGCS.

	* doc/reference.texi: skeletons for `append', `Assign',
	  `FilePos', `FileSize', `Truncate' and `RunError'.

	* gpc-decl.c: warn_unknown_pragmas: new variable (for EGCS).

	* gpc-defs.h: prototype for record_function_format().

	* parse.y: new tokens bp_APPEND, bp_FILEPOS, bp_FILESIZE,
	  bp_TRUNCATE, and bp_RUNERROR.
	  new_identifier_1: updated for new redefinable tokens.
	  rts_file_open: implemented bp_APPEND.
	  rts_proc_onepar: implemented bp_RUNERROR.
	  rts_proc_parlist: implemented bp_TRUNCATE.
	  rts_fun_onepar: implemented bp_FILEPOS and bp_FILESIZE.
	  unit_implementation: moved away optional_init_and_final_part.
	  module_constructor, optional_unit_constructor: un_initialize
	  non-interface variables.
	  implicit_module_constructor: new rule.
	  optional_init_and_final_part: invoke implicit_module_constructor.

	* rts/Makefile.in: new variable GPC_FLAGS.

	* rts/choose-temp.c: TEMP_FILE: template changed to "GPXXXXXX".

	* rts/rts-emath.c: atanl(), sinl(), cosl(): new functions (for
	  systems where they are not present).

	* rts.c: rts[]: took out `atanl', `sinl', and `cosl';
	  included bp_APPEND, bp_FILEPOS, bp_FILESIZE, and bp_RUNERROR.
	  rts_string(), build_rts_call(): initialize local variables.
	  build_rts_call(): case bp_FILESIZE, bp_FILEPOS, bp_APPEND,
	  bp_RUNERROR: implemented new standard procedures/functions.

	* util.c: do not support bytecode with EGCS.
	  kitable[]: included bp_Append, bp_FILEPOS, bp_FILESIZE,
	  bp_TRUNCATE, bp_RUNERROR.
	  init_parse(), finish_parse(), lang_print_xnode(): new functions
	  (EGCS hooks).

Wed 6 May 1998 17:42  Peter Gerwinski <peter@gerwinski.de>

	* Make-lang.in: updated version number to 980506.
	  (We should automate that somehow ...)

	* Make-lang.in, version.c: distinguish between GCC and GPC
	  version number.

Fri 1 May 1998 23:20  Peter Gerwinski <peter@gerwinski.de>

	* Makefile.in: added rule to call `configure', and included
	  `gpc-config.h' into the lists of dependencies.

	* rts/Makefile.in: added ".SUFFIXES:" line.

	* types.c: dont't crash when prediscriminiating schemata of
	  incomplete type (while being loaded from a GPI file)
	  (instead, crash later)-:.

Fri  4 May 1998 12:00 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-bind.c: hack_setoutfunc(), hack_setinfunc(),
          rts/rts-read.c: hack_fread(), hack_getc(), hack_ungetc(),
          rts/rts-write.c: hack_fwrite():
          new functions to implement the beginnings of an emulation for
          BP's TFDD mechanism. Currently, there are hack_setoutfunc() and
          hack_setinfunc() to assign arbitrary input/output functions to
          text files.

Wed 29 Apr 1998 25:00 Frank Heckenbach <frank@pascal.gnu.de>

        * test/borland_pascal/kohl.pas: added support for Kohl 2.0 ;-)

Wed 29 Apr 1998 23:19  Peter Gerwinski <peter@gerwinski.de>

	* gpc-common.c: build_pascal_pointer_reference(): handle
	  parameterless direct function calls as arguments to `^'.

	* rts.c: rts[]: use `atan', `sin', `cos' on systems where they
	  are the same as `atanl', `sinl', `cosl'.

Tue 21 Apr 1998 22:00  Peter Gerwinski <peter@gerwinski.de>

	* module.c: store_tree(), load_tree(): case BOOLEAN_TYPE:
	  store/load TYPE_MIN_VALUE and TYPE_MAX_VALUE.

Mon 20 Apr 1998 21:35  Peter Gerwinski <peter@gerwinski.de>

	* Most files: updated my email address.

	* Make-lang.in: updated version number to 980420.

	* gpc-common.c: get_operator_identifier(), build_pascal_binary_op():
          for user-defined operators, treat all reals as `Real' and all
	  integers as either `Integer' or `LongestInt'.
	  build_pascal_binary_op(): convert char constants back to
	  string constants for string catenation.

	* gpc-decl.c: pascal_shadow_record_fields(): avoid crash or
	  additional error message on errorneous `with' elements.

	* gpc-lex.c: yylex(): made the `-dY' option (slower but) more robust.

	* gpc-typeck.c: comp_object_or_schema_pointer_types(),
	  convert_arguments(): avoid crashes or superfluous error messages.

	* module.c: store_tree(), load_tree(): case VAR_DECL: handle
	  `absolute' variables.  load_tree(): case IDENTIFIER_NODE:
	  don't spoil `IDENTIFIER_LOCAL_VALUE's.

	* parse.y: variable_declaration, declaring_statement: corrected
	  error with multiple `absolute' variables (which had never
	  shown up:-); handle export of `absolute' variables.

	* rts/rts-heap.c: removed obsolete/misleading comments.

Sat 18 Apr 1998 19:30 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/gpc.pas: added a draft for the internal types for AnyString
          parameters

Fri 17 Apr 1998 27:30 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/gpc.pas: new file. Re-declares all declarations from the RTS
          that should be visible to the compiler and/or to programs.

Thu 16 Apr 1998 30:00 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-str.p: NewCString, StrPCopy, CString2String: new functions

        * rts/rts-file.c: _p_open(): every readable and writable non-text
          file is opened for random access

        * rts.c: build_buffer_ref(): new second parameter that tells if the
          buffer is to be read from or written to. If it's written to, don't
          read ahead, but clear the buffer if neccesary via _p_lazyunget().

        * parse.y: new token r_LAZYUNGET

        * rts/rts-read.c: _p_lazyunget(): new function

        * rts/rts-rt0.c: _p_initialize(): use choose_temp_base() now to find
          a directoy for temporary files

        * rts/choose-temp.c: new file, copied almost verbatim from
          ../choose-temp.c. Provides choose_temp_base().

Fri 10 Apr 1998 21:35  Peter Gerwinski <peter@gerwinski.de>

	* Make-lang.in: updated version number to 980410.

	* gpc-typeck.c: build_function_call: Pascalified error message.
	  convert_arguments(): preserve volatility and readonlyness of
	  conforming string parameters; don't initialize temporary
	  variables for `const' parameters but explicitly assign the
	  value to them because of problems with variable size.

Tue 7 Apr 1998 23:23  Peter Gerwinski <peter@gerwinski.de>

	* gpc-lex.c: process_directive(): don't warn about $B.
	  yylex(): warn about double-quoted strings when
	  flag_what_pascal is nonzero.

	* gpc-typeck.c: comptypes(): check the type names of fields in
	  order to avoid recursion with similar recursive structures.

Mon 6 Apr 1998 21:52  Peter Gerwinski <peter@gerwinski.de>

	* Make-lang.in: updated version number to 980405.

	* gpc-typeck.c: convert_arguments(): append `chr ( 0 )' to
	  string schemata passed as `CString' parameters.

	* gpc.c: removed the kludge about temporary file names under
	  DJGPP since `-D MKTEMP_EACH_FILE' provides a cleaner solution.
	  main(): call add_automake_files() only if linking is intended.

Sun 5 Apr 1998 26:32-27:23  Peter Gerwinski <peter@gerwinski.de>

	* gpc-common.c: build_pascal_binary_op(): concatenated strings
	  are no lvalues; check for division by zero.
	  build_pascal_pointer_reference(): don't handle parameter lists here.

	* gpc-convert.c: convert_sets(): check whether the set types are
	  in fact the same.  (If not, conversion might still produce
	  incorrect code.)-:

	* gpc-decl.c: c_decode_option(): new option `--autobuild'.
	  init_decl_processing(): `boolean_false_node' and `boolean_true_node'
	  are unsigned; take them from `boolean_type_node'.
	  start_pascal_function(): complain about nonexisting methods.
	  resolve_forward_pointer(): also resolve const or volatile variants.
	  handle_one_level(): handle only constructors and destructors,
	  if requested.

	* gpc-defs.h: PASCAL_CONSTRUCTOR_METHOD(): flag accessor macro renamed
	  to PASCAL_STRUCTOR_METHOD(); callers changed.
	  PASCAL_CONSTRUCTOR_METHOD(), PASCAL_DESTRUCTOR_METNOD(): new macros.

	* gpc-lex.c: process_directive(): in `--borland-pascal' mode,
	  don't warn about long directives and about $x (which is compatible).

	* gpc-typeck.c: comp_target_types(): be stricter about pointers
	  to integer types.
	  build_indirect_ref(): don't warn about void dereference in
	  `--borland-pascal' mode.
	  convert_arguments(): don't strip NON_LVALUE_EXPRs for `var'
	  parameters; preserve PASCAL_TYPE_VAL_REF_PARM for string
	  references; create a temporary string for chars passed to
	  `const string ' parameters; preserve constantness and
	  volatility when trying to avoid "incompatible type" warnings;
	  be stricter about pointers to integer types.
	  check_pascal_initializer(): don't warn about GPC bug in
	  `--borland-pascal' mode.
	  build_unary_op(): accept casts and constant declarations as
	  lvalues of address expressions.

	* gpc.c: main(): work around a problem with `mktemp()' in DJGPP.

	* gpc.gperf: "Index" is not a reserved word in Borland Pascal.

	* lang-options.h: new option `--autobuild'.

	* module.c: module_must_be_recompiled(): handle `--autobuild'.
	  store_tree(): do not store built-in identifier meanings.

	* parse.y: optional_actual_schema_discriminants: move BP warning
	  to the correct place.
	  object_section: mark the field decl and the function decl of
	  constructors and destructors.
	  object_method_heading, function_heading: mark destructors.
	  optional_qualifier_list: warning moved here from declare_vars()
	  (in util.c).
	  function_heading: make the parser recognize names of
	  user-defined operators.
	  statement_sequence: disabled misleading error message. :-/
	  assignment_or_call_statement: don't crash on "exotic" function
	  calls when checking for constructors.
	  simple_expression: implement `xor' here - both for Boolean as
	  well as for integer operands.
	  primary: handle user-defined operators more carefully.
	  factor: call functions here; removed expressions in parentheses
	  (now only in `variable_or_function_access_no_id').
	  variable_or_function_access: call only functions which do not
	  need parameters; do not call them when coming from `-no_id'.
	  variable_or_function_access_no_id: removed parameter lists;
	  do not call methods here; instead allow function calls through
	  another `variable_or_function_access' instead of just an
	  `identifier'.
	  adding_operator: removed `xor' here.

	* rts.c: rts_read(), rts_write(): do not give additional error
	  messages for errorneous parameters.
	  build_rts_call(): case p_LENGTH: `length' is not an lvalue.

	* types.c: base_type(): be transparent for `error_mark_node'.
	  build_pascal_array_ref(): implemented some trivial range checking.

	* util.c: check_identifier(): be quiet for identifiers already
	  denoting `error_mark_node'.
	  make_new_variable(): trying to solve a problem with `goto' when
	  the block gets a stack level a posteriori.
	  declare_vars(): moved warning to `optional_qualifier_list'
	  (in parse.y).

Wed 1 Apr 1998 22:55  Peter Gerwinski <peter@gerwinski.de>

	* Make-lang.in: updated version number to 980401.

	* gpc-cccp.c: do_ifopt(): new function.
	  directive_table[]: handle do_ifopt().

	* gpc-decl.c: grokparms(): allow the object type just being
	  defined in parameter lists of methods.
	  grok_directive(): functions in interface modules are external.

	* gpc-lex.c: process_directive(): handle "ifopt".

	* gpc-typeck.c: comp_object_or_schema_pointer_types(): `const'
	  schemata are compatible with non-`const' schemata.
	  check_pascal_initializer(): avoid superfluous error messages.

	* gpc.c: process_command(), main(): included DJGPP-specific stuff.

	* objects.c: call_method(): allow for taking the address of methods.

	* parse.y: constant_definition: don't crash on an errorneous type.
	  assignment_or_call_statement: really don't warn about ignored
	  results of constructor methods; do not rely on `current_type_name'
	  when determining a methods assembler name.
	  factor: mark constant addresses as such.

Tue 31 Mar 1998 20:28  Peter Gerwinski <peter@gerwinski.de>

	* rts/rts-file.c: p_extend(): fixed fatal typo and the closing
	  #endif.  (How could this ever happen???)

	* Make-lang.in: updated version number to 980331.

Mon 30 Mar 1998 26:33  Peter Gerwinski <peter@gerwinski.de>

	* diffs/README: updated for gcc-2.8.0.

	* parse.y: rr_POW, rr_EXPON: new pseudo-tokens.

	* rts/rts-emath.c: moved "#define atanl atan" etc. *inside* the
	  "#ifdef NO_LONGREALFUNCS" - where they belong.

	* rts.c: rts[]: activate `_pp_pow()' and `_pp_expon()' by
	  associating them with `rr_POW' and `rr_EXPON'.
	  build_rts_call(): case r_EXPON, r_POW: handle `LongReal's.

	* types.c: select_integer_type(): do not consider EXPON_EXPRs
	  since they cannot be handled using build_binary_op() and fold().
	  build_pascal_pointer_type(): lookup decls whose DECL_NAME
	  already is an IDENTIFIER_NODE. (@@@ Why isn't it always?)

Mon 30 Mar 1998 14:07:45  Peter Gerwinski <peter@gerwinski.de>

	* gpc-typeck.c: build_c_cast(): warn about possible alignment
	  problems; really convert pointers instead of just building a
	  NOP_EXPR (which caused problems with references).

	* gpi_hash.c: MAX_HASH_TABLE: trying a bigger constant.

	* module.c: module_must_be_recompiled(): correctly append ".gpi";
	  call stat() at the correct place.
	  store_tree(), load_tree(): use PROCESS_NODE() even with HASH_EMBED.

	* parse.y: new token `FAIL'.
	  new_identifier_1: updated.
	  object_method_heading: constructor methods return `Boolean'.
	  function_declaration: mark constructor methods as such, and
	  let them return `true' by default.
	  function_heading: constructor methods return `Boolean' and
	  need to be marked as such.
	  assignment_or_call_statement: don't warn about ignored results
	  of constructor methods.
	  return_statement: implemented `FAIL'.
	  variable_or_function_access_no_id: p_NEW: handle `FAIL'.

	* rts.c: rts_read(): handle `read' without parameters at the
	  correct place.
	  rts_write(): be more specific in error message.
	  build_rts_call(): case gpc_GETFILE: the parameter is `const'.

Sat 28 Mar 1998 29:20 Frank Heckenbach <frank@pascal.gnu.de>

    * rts/rts-bind.c: _p_clearbinding(): new function

Fri 27 Mar 1998 21:20 Frank Heckenbach <frank@pascal.gnu.de>

    * rts/rts-file.c: _p_filename(): new function

Thu 19 Mar 1998 17:43 Kevin A. Foss <kfoss@mint.net>

    * rts/rts-file.c: _p_extend(): read in the EOF under EMX because EMX
      doesn't allow appending otherwise

Tue 24 Mar 1998 22:58 Peter Gerwinski <peter@gerwinski.de>

	* rts.c: build_rts_call(): case p_DISPOSE: don't give additional
	  error messages for ERROR_MARK parameters.

Fri 7 Mar 1998 26:07 Peter Gerwinski <peter@gerwinski.de>

	* gpc-decl.c: grok_directive(): set TREE_ADDRESSABLE for `d_forward',
	  too, and (hopefully) more systematically.

	* objects.c: inherit(): checked braces.

	* parse.y: function_interface_decl: pass directives correctly to
	  `grok_directive()'.

	* setop.c: setop_copy(): @@@@@@ checked `align' parameter to
	  `clear_storage()'; considered it wrong, but left it untouched.
	  (Jan-Jaap??)

Sun 22 Feb 1998 26:40 Peter Gerwinski <peter@gerwinski.de>

	* gpc-cccp.c: eval_if_expression(): copied gcc-2.8.0-specific
	  addition of a newline character to the temporary buffer.

	* gpc-decl.c: set DOLLARS_IN_IDENTIFIERS to zero by default.
	  lookup_tag(): use the new macro TREE_SET_CODE().
	  grokdeclarator(): don't complain about array size overflow in
	  the case of undiscriminated schemata.
	  grok_directive(): mark external functions TREE_ADDRESSABLE, so
	  the optimizer won't remove them.

	* module.c: let all C preprocessor directives start with the `#'
	  in the first column.

	* parse.y: type_definition: do schema definitions inside the
	  region with immediate_size_expand == 0.  @@@ This seems to have
	  no effect.  Why???
	  function_interface_decl: pass directives in TREE_LISTs.
	  module_constructor, optional_unit_constructor,
	  module_destructor: mark constructors and destructors
	  TREE_ADDRESSABLE, so the optimizer won't remove them.

	* rts.c: pascal_unpack_and_pack(): re-wrote the loop to avoid
	  the index variable to overflow.

	* util.c: output_real_main_program(): create `char**' arguments
	  instead of `void*' arguments.

Fri 20 Feb 1998 24:20 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-string.c: _p_readstr(): don't cause an error when reading
          strings and source is empty

Sun 15 Feb 1998 16:30 Frank Heckenbach <frank@pascal.gnu.de>

        * parse.y: file_type: pass NULL_TREE rather than unsigned_type_node as
          index type for untyped files

        * rts/rts-bind.c: _p_bind(): corrected the directory check so that
          e.g. block devices can be bound properly

        * rts/rts-fdr.h: FiSIZEK: new constant

        * rts/rts-file.c: _p_open(): mark FiSIZEK if size of file is known

        * rts/rts-random.c: _p_truncate(), _p_seekread(), _p_seekwrite(),
          _p_seekupdate(): check the file size only if FiSIZEK is set

Mon 9 Feb 1998 10:00 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/wrtinc.c: added a check for nil CStrings (which are treated as
          empty now)

Thu 29 Jan 1998 27:47 Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* ChangeLog: corrected typos.  (Thanks, Frank!:-)

	* doc/reference.texi: corrected `;' to `::' in the menu.

	* gpc-decl.c: c_decode_option(): set `flag_capital_exponent'
	  in BP compatibility mode(s).
	  pascal_shadow_record_fields(): make the pointer `const' if the
	  `with' element is read-only.

	* gpc-typeck.c: convert_arguments(): functions passed as
	  parameters: call them if the return type is compatible to the
	  formal parameter; it needn't match exactly.
	  convert_arguments(): don't crash on type mismatches in `var'
	  parameters to indirect function calls (such as methods).

	* lang-specs.h: define `__*_LITTLE_ENDIAN__'.

	* rts/rts-emath.c: corrected misplaced conditional.

	* rts/rts-move.c: use `__*_LITTLE_ENDIAN__'.

	* rts/rts-str.p: Insert, Delete: use `SetLength' instead of the
	  old syntax `AssignLength'.

	* types.c: build_pascal_array_ref(): convert the index to
	  `Integer' for doing arithmetics.

Tue 20 Jan 1998 30:30 Frank Heckenbach <frank@pascal.gnu.de>

        * parse.y, gpc.gperf: "overlay" is not a reserved word in BP

Tue 20 Jan 1998 26:50 Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-base.p: New file. Currently it declares only constants for
          endianness and need for alignment.

        * rts/rts-move.p: Merge: use the new constants from rts/rts-base.p

Sat 17 Jan 1998 27:47 Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* parse.y, rts.c, util.c, doc/reference.texi: renamed `AssignType'
	  and `AssignLength' to `SetType' and `SetLength'.

	* parse.y: case_statement: copy_node() and string_may_be_char()
	  the case expression (for type checking).
	  optional_semicolon_or_else_branch(): removed wrong warning.

	* util.c: handle_formal_conf_array_param_list(): handle `packed'
	  in each level separately.

	Now GPC passes all ISO-7185 level-0 and level-1 conformance tests
	on the DEC Alpha with `-O0'.  With `-O6' two level-0 tests fail;
	both are related to set operations.

Thu 15 Jan 1998 11:24 Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* rts.c: rts_read(): for non-text files, check that the types
	  match - instead of just crashing.

Thu 15 Jan 1998 10:59 Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* rts/rts.h: DJGPP has no separate functions for long reals.

	* rts/rts-emath.c: #define replacements for long real functions
	  for platforms that don't support them.

Thu 15 Jan 1998 10:52 Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* rts.c: pascal_unpack_and_pack(): avoid type conflicts in
	  implicit assignments.

Thu 15 Jan 1998 10:37 Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-common.c: convert_and_check(): range-check `expr'
	  rather than `t'.

Wed 14 Jan 1998 25:12 Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* util.c: handle_formal_conf_array_param_list(): reverse the
	  index ranges when constructing the array, but don't reverse
	  them when pushing the index parameters.

Wed 14 Jan 1998 21:25 Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* rts.c: build_rts_call(): case p_EXTEND, p_REWRITE, p_RESET:
	  handle the new position of the file size field in the FDR correctly.

Wed 14 Jan 1998 20:54 Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* parse.y: variable_or_function_access_no_id: if parameters are
	  given, call the function, even if it is a procedural variable
	  instead of a method.

Wed 14 Jan 1998 20:00 Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* parse.y: constant_definition, absolute_or_value_specification:
	  disable function calls in initializers to allow initialization
	  of procedural variables.

Wed 14 Jan 1998 19:35 Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* rts/rts-types.h: struct Fdr: moved `FilSiz' back to its old
	  position after the buffer pointer and the flags, where the
	  lazy-I/O stuff wants it.

	* rts.c: build_rts_call(): case p_EXTEND, p_REWRITE, p_RESET:
	  handle the new position of the file size field in the FDR.

Wed 14 Jan 1998 17:27 Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* lang-options.h: new options `-f[no-]truncate-strings' and
	  `-f[no-]write-capital-exponent'.

	* gpc-decl.c: flag_capital_exponent: new variable.
	  c_decode_option(): handle `-f[no-]truncate-strings' and
	  `-f[no-]write-capital-exponent'.

	* gpc-typeck.c: check_pascal_initializer(), convert_for_assignment():
	  output error message for overflowing string constants when
	 `flag_truncate_strings' is zero.

	* parse.y: ucsd_BLOCKREAD, ucsd_BLOCKWRITE: new tokens.
	  new_identifier_1: updated.
	  file_type: accept untyped files.
	  rts_proc_parlist: accept `BlockRead' and `BlockWrite'.

	* rts/rts-types.h: struct Fdr: moved `FilSiz' to the beginning
	  to simplify compiler access to that field.

	* rts.c: rts[]: included `ucsd_BLOCKREAD' and `ucsd_BLOCKWRITE'.
	  rts_write(): pass REAL_CAPITAL_EXP_MASK.
	  build_rts_call(): case ucsd_FILLCHAR, bp_MOVE, ucsd_MOVELEFT,
	  ucsd_MOVERIGHT: don't crash on errorneous parameter lists;
	  case ucsd_BLOCKREAD, ucsd_BLOCKWRITE: new cases;
	  case p_EXTEND, p_REWRITE, p_RESET: handle size specification
	  for untyped files.

	* util.c: init_simple(): handle untyped files.
	  KItable[]: included "Blockread" and "Blockwrite".

	* doc/reference.texi: skeleton for `BlockRead', `BlockWrite'.

Tue 13 Jan 1998 17:27 Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* types.c: build_pascal_array_ref(): promote the type's
	  TREE_UNSIGNED to the BIT_FIELD_REF, so packed array components
	  get the correct sign even with constant indices.

Tue 13 Jan 1998 15:55 Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* types.c: expand_packed_field(): new function.

	* gpc-typeck.c: convert_arguments(): use expand_packed_field().
	  build_function_call(): don't call procedures having bit-field
	  `var' parameters more than once.

	* rts.c: rts_read(): allow bit fields.

	Applied EMX-related patches by Kevin A. Foss <kfoss@mint.net>:

	* compile.cmd: replace `specs.h' and `options.h'.

	* config/emx/Makefile.RTS: handle `rts-intf.p'.

	* config/emx/rts-vers.c: back on stage.

	* rts/rts-file.c: EMX does not have S_ISBLK().

Mon 12 Jan 1998 12:15 Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* rts.c: rts[], build_rts_call(): case ucsd_INT, bp_FRAC:
	  make `int' and `frac' use Frank's RTS functions rather than
	  converting the argument to `Integer' and back.

Sat 10 Jan 1998 12:15 Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* module.c: load_tree(): case TYPE_DECL: remember the name of
	  the type in the *_TYPE node.

Tue 6 Jan 1998 20:00:00 Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* rts.c: rts-read(): pass correct string capacity for
	  `Var' parameter strings of `read'/`readln'/`ReadStr'.
	  build_rts_call(): case p_PACK, p_UNPACK: string constants are char
	  constants when passed to `pack'/`unpack' as the array index.

	* diffs/mkdiff: handle `tree.c'.

	* diffs/gcc-2.7.2.x.diff: rebuilt.

	* compile.cmd, doc/install.texi, config/emx/Makefile.RTS:
	  applied EMX-related patches by Kevin A. Foss <kfoss@mint.net>.
	  Removed patched C files from `config/emx' since a port of
	  Larry Wall's GNU patch to EMX exists.

Sun 4 Jan 1998 23:20:30  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* ../tree.c:-(new back-end file being modified for GPC)-:
	  get_set_constructor_bits(): sets are word-aligned; don't let
	  them start exactly from the lower bound.

	* Make-lang.in, Makefile.in: updated for patched `tree.c'.

Sun 4 Jan 1998 20:33:40  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* module.c: clarified comments.
	  store_tree(), load_tree(): case FILE_TYPE: store TYPE_MIN_VALUE
	  which indicates whether the file is "text". :-/

Wed 31 Dec 1997 20:20  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-move.p: MoveLeft, MoveRight: Take care of alignment if
          necessary, taking into account the endianness

        * rts/rts-random.c:_p_position(): checked for error in ftell

Tue 30 Dec 1997 30:00  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-intfrac.p: New file. Int, Frac: routines to get the integer
          and fractional part of a real number

Tue 30 Dec 1997 13:13:13  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* rts.c: rts_read(): handle fixed strings correctly.

Mon 29 Dec 1997 22:13  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-decl.c: handle_one_level(), pascal_shadow_record_fields():
	  new parameter `methods_only' - optionally only shadow methods.
	  shadow_record_fields(): renamed to pascal_shadow_record_fields().
	  Callers changed.  (No idea why the C guys define a prototype for
	  shadow_record_fields().)

	* parse.y: function_declaration: disable "Inherited" only at the
	  end of the method, not at the end of a subfunction of the method.

	* rts/make-emath.sed: new file, currently unused, but who knows?

Sun 21 Dec 1997 25:35  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-read.c: _p_eof(),_p_eoln(): fixed a bug concerning typed and
          untyped files with buffer size >1

Fri 19 Dec 1997 27:40  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-fdr.h: replaced FiPIPE (unimplemented) by FiSEEK

        * rts/rts-file.c: _p_open(): mark FiSEEK if file is seekable

        * rts/rts-read.c: _p_eof(): for seekable direct-access files,
          determine EOF by comparing the file position to the file size
          rather than trying to read something ahead

        * rts/rts-block.c: _p_blockread(): made it work for non-seekable
          untyped files after checking _p_eof(). This allows e.g. stdin to
          be assigned to an untyped file.

Fri 19 Dec 1997 19:00  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-bind.c:_p_bind(): Fixed a bug introduced while removing
          Bound_objects; added Dos devices nul and con

Tue 16 Dec 1997 26:15  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-file.c, rts/rts-random.c, rts/rts-read.c:
          implemented LAZY_IO

        * rts/rts-rdinc.c, rts/rts-rdsub.c, rts/rts-read.c, rts/rts-string.c:
          new macros START_READING, END_READING, IS_EOF in rts/rts-read.c and
          rts/rts-string.c instead of checking for GPC_STRINGS in
          rts/rts-rdinc.c and rts/rts-rdsub.c

        * gpc-defs.h: made LAZY_IO the default rather than LAZY_IO_TEXT

        * rts/Makefile.in: added ../gpc-defs.h (though including it doesn't
          seem to work in RTS files)

        * util.c: fixed a typo

Tue 16 Dec 1997 24:50  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* AUTHORS: updated.

	* gpc-typeck.c: comptypes(): all char types are compatible.

	* util.c: handle_formal_conf_array_param_list(): use
	  grok_packed() correctly.

Tue 16 Dec 1997 20:49  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* ../dostage1.cmd: moved to config/emx.

	* Make-lang.in: do not remove `*diff' files.

	* patches, patches/*, config-lang.in: GCC patch file renamed
	  from `gcc-2.7.2.x.patch' to `gcc-2.7.2.x.diff'; directory
	  renamed from `patches' to `diffs'.  Now it's again like in G77.

	* diffs/mkpatch: simplified comment; make the script produce and
	  remove a symlink.

	* doc/install.texi: corrected typo; renamed "patch" to "diff".

	* doc/reference.texi: menu entries for `int' and `frac',
	  skeleton for `PtrInt', `PtrCard', `PtrWord'.

	* gpc-decl.c: ptrsize_integer_type_node,
	  ptrsize_unsigned_type_node: new variables.
	  init_decl_processing(): initialize them.

	* gpc-defs.h: PASCAL_TYPE_CONFORMANT_ARRAY(): new macro.

	* gpc-lex.c: yylex(): real constants are of type `LongestReal' now.

	* gpc-typeck.c: comp_object_or_schema_pointer_types(): take
	  conformant arrays into account.
	  build_binary_op(): don't warn about pointer comparison of
	  compatible objects or schemata.
	  build_c_cast(): don't warn about casts between compatible
	  object types unless in pedantic situations.

	* lang-specs.h: define __BITS_BIG_ENDIAN__, __BYTES_BIG_ENDIAN__,
	  __WORDS_BIG_ENDIAN__; take GPC-specific flags `%3' into account.

	* parse.y: function_declaration, function_identifier: be more careful
	  with `current_type_name'.
	  declaring_statement: initialize the variables.
	  simple_if: improved (?) debugging information.
	  assignment_or_call_statement: output debugging information for
	  procedure calls.
	  variable_or_function_access_no_id: call INHERITED methods here
	  instead of in assignment_or_call_statement.

	* rts.c: rts_read(): in BP mode, only pass INT_READ_HEX_MASK.
	  build_rts_call(): case ucsd_SEEK, etc.: allow subranges as
	  file index types.

	* util.c: declare_known_ids(): declare `PtrInt', `PtrCard', and
	  `PtrWord'.

Fri 5 Dec 1997 23:45  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-times.c:_p_gettimestamp(): fixed a typo and a type mismatch

Sun 30 Nov 1997 27:00  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-bind.c: _p_unbind(): free memory used for binding

Sun 30 Nov 1997 16:00  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-file.c: _p_open(): accept '-' for stdin/stdout

        * rts/rts-block.c: made EOF checking more reasonable for consoles

Sat 29 Nov 1997 26:00  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-block.c: New file. _p_blockread(), p_blockwrite(): block
          operations for untyped files

        * rts/Makefile.in: added rts-block.c

        * rts/rts-error.c: new error messages for BlockRead and BlockWrite

        * rts/rts-bind.c: removed Bound_objects and Bound_free_list because
          they seem useless. Let functions in this file work directly on
          FDRs. Changed the first parameter of them from void * to FDR.
          Removed _p_get_binding()

        * rts/rts-hdr.h: changed the prototypes of functions in rts/rts-bind.c

        * rts/rts-fdr.h: removed m_FISIZE; added tst_UNTYP,set_UNTYP,clr_UNTYP

        * rts/rts-types.h: removed FilElem; added FiUntyp,fkind_UNTYP

        * rts/rts.h: removed next and addr in struct BindList

        * rts/rts-file.c: handle FiUntyp, don't pre-read buffer if set
          _p_open(): accept binding to empty string for stdin/stdout
                     don't create files opened with M_WRITE|M_UPDATE
                       (this happens in SeekWrite)
          set status (FiWRI/FiORE) in _p_open() rather than in _p_reset(),
            _p_rewrite() and _p_extend()
          _p_close(): don't close stdin, stdout and stderr

        * rts/rts-random.c: handle FiUntyp, don't pre-read buffer if set
          _p_getsize(), _p_truncate(): new functions
          _p_definesize(): now composed of _p_seekwrite() and _p_truncate()
          _p_truncate(), _p_seekread(), _p_seekwrite(), _p_seekupdate(),
            _p_lastposition: use _p_getsize instead of m_FISIZE

Fri 21 Nov 1997 18:37  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* util.c: check_for_control_variable(): don't crash in
	  units/modules where main_program_name is NULL_TREE.

	* doc/reference.texi: skeleton for `int' and `frac'.

Fri 21 Nov 1997 17:54  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc.gperf: added "Static" and "Volatile".

	* hash.h: rebuilt from gpc.gperf.

	* parse.y: D_VOLATILE: new token.
	  variable_declaration: enable and disable "External", "Static",
	  and "Volatile".

Fri 21 Nov 1997 17:00  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* module.c: name_exported_p(): cleaned up a little.

	* util.c: external_var_p(): new function.
	  declare_variables(): don't decapitalize names of external
	  variables; accept a previous external declaration.

Thu 20 Nov 1997 18:40  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* ../convert.c: convert_to_complex(): also convert reals, not
	  only integral types.

	* ../fold-const.c: const_binop(): check for overflow also with
	  unsigned integers.

	* gpc-cccp.c: rescan(): don't squeak if you find {...} nested in
	  (* ... *).

	* gpc-common.c: build_pascal_binary_op(): check for arithmetical
	  overflow.  build_pascal_pointer_reference(): new function that
	  does some auxiliary tasks for the parser.

	* gpc-decl.c: flag_truncate_strings: new variable.
	  contains_forward_directive(): changed to contains_directive();
	  callers changed.
	  build_pascal_function(): treat "Procedure Foo; external;
	  Procedure Foo; begin end;" as an external function in those
	  "somwhat simpler GPC modules".
	  handle_one_level(): handle schema discriminants.

	* gpc-defs.h: PASCAL_TYPE_PREDISCRIMINATED_SCHEMA(): new macro.
	  (* Wurde auch Zeit! *)

	* gpc-lex.c: yylex(): assign integer constants a reasonable type
 	  (see comment).

	* gpc-typeck.c: comp_object_or_schema_pointer_types(): handle
	  discriminated strings and schemata.
	  build_component_ref(): clarify error message for schemata
	  being records.
	  convert_arguments(): type-check `Var' parameters.
	  check_pascal_initializer(): handle procedural variables.
	  build_c_cast(): use int_cst_lt_always().

	* gpc.gperf: disable "Otherwise" by default.

	* parse.y: documented a new shift/reduce conflict which showed
	  up in parmlist2 after having introduced '(' identifier ')' into
	  variable_or_function_access_maybe_assignment.
	  BP_INLINE: token removed.
	  ucsd_INT, bp_FRAC, pp_SIN, pp_COS, pp_EXP, pp_LN, pp_SQRT,
	  pp_ARCTAN: new tokens.
	  new_identifier_1: updated; removed OTHERWISE, DEFAULT, and OTHERS.
	  type_denoter: don't allow discriminants for already discriminated
	  strings.
	  rest_of_variant: disabled optional_colon after case_default.
	  function_declaration: disable "Inline" later and enable it earlier.
	  optional_inline_1: rule removed.
	  optional_inline: use INLINE directly.
	  parmlist2: documented shift/reduce conflict caused by error
	  recovery rule.
	  structured_variable: implicitly de-dereference schemata;
	  mention schemata in error message.
	  case_statement: enable and disable "Otherwise".
	  optional_semicolon_or_else_branch: corrected treatment of case
	  defaults.
	  case_element: commented out wrong case defaults.
	  case_default: rewritten; removed "others" and "default".
	  variable_or_function_access_maybe_assignment: allow
	  identifiers in parentheses to be lvalues.
	  asm_statement: mark the output operands earlier - they might
	  not be the same after the call to c_expand_asm_operands().
	  primary: warn about application of `SizeOf', `BitSizeOf', and
	  `AlignOf' to constants; do not allow application of `SizeOf'
	  and `BitSizeOf' to undiscriminated string and schema types.
	  variable_or_function_access_no_id: allow "( expression )^";
	  use build_pascal_pointer_reference() instead of doing
	  everything directly.
	  rts_fun_onepar: implemented ucsd_INT, bp_FRAC.
	  optional_colon: commented out.

	* patches/gcc-2.7.2.x.patch: updated changes to `../convert.c'.

	* rts/Makefile.in: added EMATHOBJS, rts-emath.c, emath-stamp.

	* rts/rts-emath.c: new file.

	* rts/rts-random.c: clarified comment about "natural" direct access
	  file types.  _p_seekread(), _p_seekwrite(): don't seek back.

	* rts.c: ptype_long_double: new variable.
	  rts[]: added pp_ARCTAN, pp_COS, pp_EXP, pp_LN, pp_SIN, pp_SQRT.
	  declare_rts_types(): initialize ptype_long_double.
	  rts_read(): writing to constants is an error, not only a pedwarn;
	  rts_write(): pass flag whether to truncate the string in `WriteStr';
	  mask with OUTPUT_TYPE_MASK when deciding what string we have.
	  build_rts_call(): case ucsd_INT, bp_FRAC: new cases; case p_NEW:
	  handle undiscriminated (types) as well as prediscriminated
	  (variables) strings and schemata; case p_SQRT, p_SIN, etc.: handle
	  long reals; case ucsd_INSERT, uscd_DELETE, p_MARK, p_RELEASE,
	  p_DEFINESIZE, gpc_GETFILE, bp_ASSIGN, p_EMPTY: check the number
	  of arguments; other cases: cleaned up a little.

	* types.c: construct_set(): use int_cst_lt_always; cleaned up a little.
	  number_of_schema_discriminants(): allow for undiscriminated and
	  prediscriminated strings and schemata.
	  grok_packed(): copy the type node when attaching the "packed" flag.
	  select_integer_type(): convert the "why" operands to longest
	  possible type to avoid overflows.
	  build_pascal_array_type(): don't barf on errorneous values that do
	  not have a type.
	  build_pascal_array_ref(): use a single word mask where possible;
	  calculate the offset correctly.

	* util.c: contains_file_or_schema_type_p(): take UNION_TYPE (for
	  variant records) into account.
	  init_any(): case ARRAY_TYPE: removed obsolete code; convert the
	  array index to the actual type (like in `succ' - see rts.c,
	  build_rts_call(), case p_SUCC).
	  KItable[]: added "Int", "Frac"; disabled "Default" and "Others".

Wed 12 Nov 1997 27:00  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-str.p: Insert_F, Delete_F: use built-in MoveLeft, MoveRight
          Insert, Delete: use built-in AssignLength

Wed 12 Nov 1997 19:24  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* doc/reference.texi: skeleton for FillChar, move, MoveLeft,
	  MoveRight, Seek.

	* gpc-decl.c: finish_struct(): avoid creating invalid schema types.

	* gpc-typeck.c: convert_arguments(): don't reverse index pairs for
	  conformant arrays.
	  convert_for_assignment(): allow the assignment of the address
	  of a string constant to a string pointer.

	* module.c: load_tree() and store_tree(): case FUNCTION_DECL:
	  fixed bugs in new code for arguments.

	* parse.y: ucsd_FILLCHAR, bp_MOVE, ucsd_MOVELEFT, ucsd_MOVERIGHT,
	  ucsd_SEEK: new tokens.  new_identifier_1: updated.
	  expression_list: renamed to discriminant_expression_list.
	  optional_actual_schema_discriminants, discriminant_expression_list:
	  look out for discriminants of other schemata.
	  goto_statement: don't call expand_goto_main_program() in Units.
	  rts_proc_parlist: implemented ucsd_SEEK, ucsd_FILLCHAR,
	  ucsd_MOVELEFT, ucsd_MOVERIGHT, and bp_MOVE.

	* rts/rts-move.p: new file; implements `MoveLeft' and `MoveRight'.

	* rts/Makefile.in: updated for `rts/rts-move.p'.

	* rts/rts-file.c: added names of authors.

	* rts/rts-hdr.c: added prototypes for `_p_flush()' and `_p_getfile()'.

	* rts/rts-random.c: _p_seekall(): new function.

	* rts.c: rts[]: added ucsd_SEEK, ucsd_FILLCHAR, bp_MOVE,
	  ucsd_MOVELEFT, ucsd_MOVERIGHT.
	  build_rts_call(): case ucsd_FILLCHAR, bp_MOVE, ucsd_MOVELEFT,
	  ucsd_MOVERIGHT: new cases; case p_SEEK*: added case ucsd_SEEK
	  and re-wrote warnings.

	* util.c: generate_main_program_rtx(): save the assignment if
	  there was not any nonlocal `goto' targetting the main program.
	  KItable[]: added "Fillchar", "Move", "Moveleft", "Moveright",
	  and "Seek".

Tue 11 Nov 1997 27:00  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-file.c:_p_open(): mark files as external if they have a
          binding, or a name is given to the opening procedure (Reset,
          Rewrite, ...)

Mon 10 Nov 1997 25:03  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* doc/reference.texi: skeleton for ParamCount, ParamStr.

	* gpc-decl.c: finish_struct(): check schema discriminants
	  against record fields.
	  grok_directive(): get asmname and attributes in TREE_PURPOSE.

	* gpc-typeck.c: re_layout_type(): do not call `layout_type' for
	  FILE_TYPE.  initializer_constant_valid_p: allow conversions
	  between reference and pointer types.

	* module.c: load_tree() and store_tree(): case FUNCTION_DECL:
	  code for arguments re-written to transport their names, too.
	  load_tree(): case PARM_DECL: call `hash_loaded_node' later.

	* parse.y: bp_PARAMCOUNT, bp_PARAMSTR: new tokens.
	  new_identifier_1: updated.
	  type_definition: forbid mixing schemata and objects.
	  directive_or_identifier, directive_list, directive: transport
	  asmnames and attributes through TREE_PURPOSE.
	  standard_functions: added rts_fun_zeropar.
	  rts_fun_zeropar: new rule (for bp_PARAMCOUNT).
	  rts_fun_onepar: implemented bp_PARAMSTR.

	* rts/rts-misc.c: disabled _p_paramcount() and _p_paramstr().

	* rts.c: rts_write(): warn about non-numbers in `Str'.
	  build_rts_call(): case ucsd_CONCAT: copy data for empty string;
	  case bp_PARAMCOUNT, bp_PARAMSTR: new cases.

	* util.c: handle_formal_conf_array_param_list(): conformant
	  arrays are size_volatile.
	  handle_formal_param_list: no change; just re-ordered.
	  init_any: case ARRAY_TYPE: re-written; now dynamic arrays work, too;
	  case RECORD_TYPE: schemata might contain files, too ...
	  KItable[]: added "Paramcount", "Paramstr".

Thu 6 Nov 1997 15:55  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* doc/reference.texi: skeleton for Copy, Delete, Insert, pos.

	* gpc-common.c: convert_and_check(): use int_cst_lt_always.
	  build_pascal_unary_op(): don't destroy XARG.

	* gpc-typeck.c: comptypes(): allow subranges of enumeral types.
	  convert_arguments(): handle varargs reasonably.
	  check_pascal_initializer(): use int_cst_lt_always; truncate
	  strings correctly, or pad them with blanks.
	  convert_for_assignment: be less strict about arrays.

	* parse.y: ucsd_COPY, ucsd_DELETE, ucsd_POS: new tokens.
	  bp_INSERT: renamed to ucsd_INSERT.  new_identifier_1: updated.
	  variable_declaration: disable function calls for initialized
	  procedural variables.
	  typename_or_conformant_array_schema: new rule.
	  packed_conformant_array_schema, unpacked_conformant_array_schema:
	  allow for "array [...] of array [...] of foo".
	  case_statement, case_element: do type checking.
	  assignment_or_call_statement: "typed const" warning moved to util.c.
	  standard_function_statement: allow for `read' and `write' without
	  parameters.
	  rts_proc_parlist: moved p_READ to standard_function_statement;
	  rts_fun_twopar: implemented ucsd_POS.
	  rts_fun_parlist: implemented ucsd_COPY and ucsd_DELETE.

	* rts/rts-file.c: _p_close(): don't forget the name of the file.

	* rts.c: rts[]: added ucsd_DELETE, ucsd_COPY, ucsd_POS; renamed
	  bp_INSERT to ucsd_INSERT.
	  rts_read(): warn about and ignore `read' without parameters;
	  warn about `read'ing constants or typed constants; note that
	  we have assigned values to the variables.
	  rts_write(): note that we have assigned a value to the string;
	  warn about and ignore `write' without parameters.
	  rts_string(): implemented ucsd_POS and ucsd_COPY.
	  build_rts_call(): case ucsd_DELETE, ucsd_POS, ucsd_COPY: new cases.

	* types.c: assign_string(): silently truncate strings which are
	  too long for the target.
	  build_record_variant_part(): typecheck case selectors.
	  select_integer_type(): select `Integer' whereever possible.
	  build_pascal_array_type(): check for a negative domain.

	* util.c: make_new_variable(): init_any the new variable.
	  new_string_by_model(): don't copy the capacity of an
	  undiscriminated string model; first initialize, then assign.
	  handle_formal_conf_array_param_list(): convert "array [...] of
	  array [...] of foo" to "array [..., ...] of foo".
	  KItable[]: added `Delete', `Pos', `Copy'.
	  typed_const_warning(): new function.

Sun 2 Nov 1997 22:00  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-numtodec.p:LongReal_to_Decimal, rts/rts-wrtinc.c:
          avoided using the (perhaps unportable, and partially broken)
          isnan(), isinf() or isnanl(), isinfl() libc functions, but rather
          some self-made code to check for unnormal real numbers

Sat 1 Nov 1997 11:42  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* parse.y: bp_INSERT: new token.  new_identifier_1: updated.
	  standard_function_statement: included bp_INSERT.

	* rts/rts-str.p: Insert: asmnamed it `_p_insert' and made the
	  source parameter `const'.
	  Delete: asmnamed it `_p_delete'.

	* rts.c: rts[]: added `Insert'.
	  build_rts_call(): case bp_INSERT: new case.

	* util.c: KItable[]: added `Insert'.

Fri 31 Oct 1997 25:35  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* dostage1.cmd, compile.cmd, config/emx/Makefile.RTS,
	  config/emx/*.c, config/emx/*.h, config/msdos/configur.bat,
          doc/install.texi: updated.

	* doc/reference.texi: skeleton for AssignLength, StdErr,
	  StandardError, Str, Val.

	* gpc-common.c: build_pascal_binary_op(): optimize `in' with
	  constructors.
	  build_pascal_unary_op(): mark "fresh" integer constants.

	* gpc-decl.c: c_decode_option(): --[no-]clip-strings and
	  --[no-]real-blank changed to --[no-]write-clip-strings and
	  --[no-]write-real-blank.
	  duplicate_decls(): don't check for matching types in GPI files.

	* gpc-defs.h: new flag PASCAL_TREE_FRESH_INT_CST (same flag as
	  PASCAL_CONSTRUCTOR_METHOD and PASCAL_TREE_PACKED_ACCESS).

	* gpc-lex.c: yylex(): save and restore `baseflag' rather than
	  incrementing and decrementing it; mark fresh integer constants
	  as such.

	* gpc-typeck.c: comptypes(): all integer types are compatible.
	  build_component_ref(): cleaned up error message for schemata.
	  build_function_call(), convert_arguments(): handle packed fields
	  passed as `var' parameters through temporary variables.
	  check_pascal_initializer(): handle CString initialization with
	  arrays of chars.
	  build_binary_op(): handle division of `LongReal'.

	* gpc.c: delete_temp_files(): strip the option from the file name.
	  delete_automake_tempfile(): removed.

	* lang-options.h: --[no-]clip-strings and --[no-]real-blank changed
	  to --[no-]write-clip-strings and --[no-]write-real-blank.

	* lang-specs.h: added blank after `-famtmpfile'.

	* parse.y: gpc_ASSIGNLENGTH, bp_VAL, bp_VAL_*, ucsd_STR: new tokens.
	  new_identifier_1: updated.
	  type_definition: enable and disable `Value'.
	  standard_function_statement: included `ucsd_STR' and `bp_VAL'.
	  rts_proc_parlist: included `gpc_ASSIGNLENGTH'.
	  unit_implementation: included optional import part.

	* rts.c: rts[]: added `ucsd_STR' and `bp_VAL_*'.
	  rts_read(), rts_write(), rts_string(), pascal_pack_and_unpack(): 
	  made them `static'.
	  rts_write(): implemented `ucsd_STR'.
	  rts_val(): new function.
	  build_rts_call(): case gpc_ASSIGNLENGTH, bp_VAL: new cases;
	  case ucsd_STR: added to case p_WRITESTR;
	  case bp_ASSIGN: UCSD Pascal does not have `Assign'.

	* types.c: assign_string(): always warn about "char:= string".
	  build_pascal_string_schema(): add 1 to the capacity.
	  is_packed_field(): new function.
	  int_cst_lt_always(): new function.
	  select_integer_type(): re-written with new parameter `why';
	  callers changed.

	* util.c: new_string_by_model(): changed name of temporary string
	  variables.
	  init_any(): don't crash on errors in array domains;
	  initialize string schemata with incremented capacity.
	  KItable[]: added `Assignlength', `Str', and `Val'.

Sun 26 Oct 1997 26:00  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-types.h: new flag REAL_CAPITAL_EXP_MASK to use `E' instead
          of `e' for the exponent when writing real numbers

        * rts/rts-numtodec.p:LongReal_to_Decimal: handle REAL_CAPITAL_EXP_MASK

Wed 22 Oct 1997 24:00  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-string.c: made separpate functions _p_val_*_check and
          _p_val_*_nocheck (for integer types) and _p_val_* (for real types)
          out of _p_val so that no varargs are needed here

Thu 16 Oct 1997 27:20  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-heap.c:_p_dispose(): added check for NIL pointer

Mon 13 Oct 1997 25:00  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-string.c:_p_writestr(): do the checking for invalid string
          codes before rather than after the output operations

Sun 12 Oct 1997 23:00  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-types.h: FIX_INT_MASK: renamed to FIX_WIDTH_MASK because
            it's used for all types now, not only integers
          P_S_FIX_INT, P_S_FIX_LONGLONG, P_U_FIX_INT, P_U_FIX_LONGLONG,
            P_FIX_CHAR, P_FIX_BOOL, P_FIX_STRING, FIX1_REAL_MASK: removed,
            using FIX_WIDTH_MASK instead now
          P_FIX_STRING_NOCLIP: removed, using new mask CLIP_STRING_MASK now
          P_ANY_STRING: new type specifier, currently only used for writing

        * rts.c:rts-write(): use new constants from rts/rts-types.h
          changed the order of parameters for strings with fixed width: pass
          the pointer first, then the length, then the width

        * rts/wrtinc.c: use new constants from rts/rts-types.h
          integer and real types are now output directly by using the
          conversion routines in rts-numtodec.p rather than variants of sprintf
          case P_BOOL: removed line "val &= 0xff;" that doesn't seem to
          serve any purpose since booleans are already promoted to int
          in rts.c:rts_write()
          case P_ANY_STRING: accept parameters in changed order, see rts.c

        * rts/rts-numtodec.p: New file. Integer and real to decimal conversion
          routines in Pascal: Card_to_Decimal, LongCard_to_Decimal,
          LongReal_to_Decimal

        * rts/Makefile.in: added rts-numtodec.p
          fixed a bug (missing rts-types.h)

        * rts/rts-write.c and rts/rts-string.c:PRINTF2, PRINTF3, PRINTF4, and
          rts-string.c:PRINTFX, asprintf(): removed, not needed any more

        * rts/rts.h: REAL_MIN_WIDTH: removed
          (rts/rts-numtode.p:LongReal_to_Decimal now makes sure that at least
          1 digit after the point is written unless specified otherwise)
          REAL_DEFAULT_DIGITS: move to rts/rts-numtodec.p

Thu 9 Oct 1997 17:45  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* TODO: updated.

	* module.c: standard_interface_error: new variable.
	  associate_external_objects(), check_external_objects():
	  implemented `StdErr'.
	  import_interface: implemented `StandardError'.

	* parse.y: gpc_STDERR: new token.
	  new_identifier_1: added gpc_STDERR.
	  variable_or_function_access_no_id: implemented gpc_STDERR;
	  added warning for RESULT.

	* rts.c: get_standard_error(): new function.

	* rts/rts-types.h: STDERR_FILE_NAME: it's "Stderr", not "StdErr",
	  internally.

	* util.c: identifier_stderr, global_error_file_node: new variables.
	  initialize_world: initialize identifier_stderr,
	  standard_interface_error, and global_error_file_node.
	  KItable[]: added "Stderr".

Tue 7 Oct 1997 27:00  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-error.c: new error message (String too long in `insert')

        * rts/rts-str.p: New file. String functions in Pascal: Insert, Delete

        * rts/Makefile.in: added rts-str.p

Mon 6 Oct 1997 25:30  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-types.h: new mask TRUNCATE_STRING_MASK
          new constants RTS_STDERR_FILE_NAME, STDERR_FILE_NAME

        * rts/rts-string.c: CFWRITE: truncate destination strings of WriteStr
          instead of giving an error message if TRUNCATE_STRING_MASK is set

        * rts.h, rts-rt0.c: new variable _p_stderr

        * rts-file.c: _p_initialize_std_files(): open _p_stderr
          _p_open(): use stderr
          _p_nameit(): do not ask for a name for stderr

Sat 4 Oct 1997 18:30  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-types.h: new constants P_SHORT_STRING, P_FIXED_STRING,
          P_CSTRING; removed flag STR_READ_CSTRING_MASK (the new constants
          are now used instead)

        * rts/rts-rdinc.c: new cases for P_SHORT_STRING, P_FIXED_STRING, P_CSTRING

        * rts/rts-rdsub.c: _p_read_string(): current length now returned instead
          of written to a reference parameter; space padding and #0
          terminators now done in rts-rdinc.c instead of here

        * rts/rts-string.c: _p_writestr(): changed arguments; added handling
          of short strings as destination

Fri 3 Oct 1997 16:00  Frank Heckenbach <frank@pascal.gnu.de>

        * rts/rts-types.h: new mask INT_READ_HEX_MASK

        * rts.c: rts_read() and rts/rdsub.c: _p_readi(): code changed to
          use INT_READ_HEX_MASK

Wed 1 Oct 1997 23:00 MET DST  Peter Gerwinski <peter.gerwinski@uni-essen.de>
             Jan-Jaap van der Heijden <j.j.vanderheijden@student.utwente.nl>
                                   Bill Currie <billc@blackmagic.tait.co.nz>
                                      Frank Heckenbach <frank@pascal.gnu.de>
                                             Alexej Volokhov <voh@ispras.ru>

	* Beta release of gpc-971001.

Wed 1 Oct 1997 22:31  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* AUTHORS: updated.

	* Make-lang.in, README, doc/gpc.texi: updated version number.

	* gpc-decl.c: check_variant_record(): anonymous fields are never
	  duplicates.

	* gpc-typeck.c: convert_arguments(): convert integer constants passed
	  to vararg function to type `Integer' - even if they don't fit in one.

	* gpc.gperf: Class, External, Private, Public, and Value disabled.

	* parse.y: type_definition_part: enable and disable `Class', `Public',
	  `Private', and `Protected'.
	  variable_declaration: enable and disable `Absolute' and `Value'.
	  asm_operand: convert integer constants to type `Integer'.

	* rts.c: rts_write(): convert integer constants to `Integer' or
	  `Cardinal' if they fit there.

	* setop.c: setop_runtime(): for the inner part in SET_INSIDE, check
	  whether a non-constant lower bound is greater than the upper bound
	  - in which case nothing has to be done.  *Greater* - not "less".
	
	* types.c: construct_set(): use the base_type of the elements as the
	  type of the set; strip NOPs from constructor bounds; try to take the
	  range of the type of non-constant bounds as set bounds; when
	  constructing a limited set don't start below zero, and calculate the
	  bounds directly from the TREE_INT_CST_LOWs.

Sun 28 Sep 1997 20:00  Frank Heckenbach <frank@pascal.gnu.de>

        * rts-string.c: _p_val(): new function
          CFWRITE: fixed a bug that caused overwriting a memory location
          after the destination string in _p_writestr() in a certain case
          NEXTCHAR: fixed a bug that caused infinite loops in _p_read_longreal()
          and _p_readi() in some cases
          _p_writestr(): allowed CStrings as destination in WriteStr

        * rts-rdsub.c: _p_rdreal(): renamed to _p_read_longreal()
          _p_read_real(), _p_read_shortreal(): new functions
          _p_readi(): fixed a bug that prevented "-0" to be read for
          unsigned ranges starting at 0... :-)
          _p_read_string(): allowed CStrings as destination in Read, Readln, ReadStr
          modified some code to fit _p_val()

        * rts-rdinc.c: allowed CStrings as destination in Read, Readln, ReadStr
          modified some code to fit _p_val()

        * rts-types.h: new flag STR_READ_CSTRING_MASK

        * rts-string.c: _p_writestr(),_p_readstr(),_p_val() and
          rts-read.c: _p_read() and
          rts-write.c: _p_write(): turned some varargs that don't change
          into normal arguments

Fri 26 Sep 1997 15:29  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-typeck.c: check_pascal_initializer(): assign the correct length
	  to truncated string constants.

	* module.c: module_must_be_recompiled(): recompile if imported GPIs
	  are younger than the current GPI.  Maybe this needs recursion.

Thu 25 Sep 1997 12:37  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-cccp.c: rescan(): don't warn about "}" nested in "(*...*)"
	  if nested comments are allowed.

	* gpc-common.c: build_pascal_binary_op(): don't convert empty sets.

	* gpc-decl.c: lookup_label(): don't barf on labels declared both
	  locally and in the main program.

	* gpc-typeck.c: convert_arguments(): removed useless call to
	  default_conversion(); allow passing pointers as `var' parameters
	  (was broken on 21 Sep), and relax type-checking for untyped
	  pointers in this situation.
	  build_modify_expr(): when writing to packed arrays, strip
	  NOP_EXPRs also when this changes the machine mode, and use a
	  temporary variable.
	
	* gpc.c: do_spec_1(): removed obsolete code.

	* parse.y: main_program_declaration: initialize main program rtx in
	  two steps.

	* rts.c: rts[]: the arcustangent in `libm.a' is `atan', not `arctan'.
	  pascal_unpack_and_pack(): work with really packed arrays.

	* types.c: count_bits(): now external.

	* util.c: generate_main_program_rtx(): new function: don't initialize,
	  only declare.
	  init_main_program_rtx(): don't declare, only initialize.

Tue 23 Sep 1997 22:50  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-convert.c: convert_sets(): assign constructor returned by
	  `construct_set' to the temporary variable.

	* gpc-decl.c: c_decode_option(): show the identifier node.
	  declare_label(): call shadow_label(), and correctly count the number
	  of labels in the main program.
	  lookup_label(): don't complain about labels outside of any function;
	  make the program identify a label used in a function;
	  fix the problem in poplevel() by allocating permanently.
	  define_label(): clean up DECL_INITIAL after it has done its job.
	  start_function(): don't reset declared_labels.
	  store_parm_decls(): make the main program remember its labels etc.

	* gpc-typeck.c: convert_arguments(): call a function only if the
	  return type matches the parameter.
	  
	* parse.y: goto_statement: don't call expand_goto_main_program()
	  for local jumps inside the main program.

	* types.h: prototype for is_of_string_type().

	* util.c: main_program_first_label_num, main_program_named_labels:
	  new variables.
	  init_main_program_rtx(): mark the handler's variables TREE_USED.
	  expand_goto_main_program(): the main program doesn't need context.

Sun 21 Sep 1997 22:50  Frank Heckenbach <frank@pascal.gnu.de>

	* rts/rts-error.c: new error messages for real numbers.

	* rts/rts-rdinc.c: new cases for different real number types

	* rts/rts-rdsub.c: _p_rdfloat(): renamed to _p_rdreal(); reorganized;
                                         read real numbers directly, instead
                                         of using sscanf()

	* rts/rts-types.h: flag INT_READ_CHK_WHITE_MASK renamed to
          NUM_READ_CHK_WHITE_MASK because it's used also for real types now

	* rts.c: rts_read(): case REAL_TYPE: handle non-standard real types.

Sun 21 Sep 1997 21:15  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gbe.h: new declarations for functions and variables concerning
	  nonlocal `goto's.

	* gpc-convert.c: convert_sets(): allow subtypes; don't spoil the nodes
	  in the type domain; use MULT_EXPR instead of BIT_AND_EXPR.

	* gpc-decl.c: poplevel(): work around strange bug ... looks like
	  uninitialized fields in named_labels ...;
	  pedwarn about undeclared labels.
	  declare_label(): handle non-local `goto's to the main program.
	  lookup_label(): maintain main_program_nonlocal_labels; check whether
	  each label was declared.
	  define_label(): handle labels in the main program.
	  store_parm_decls(): special treatment of the main program.

	* gpc-lex.c: yylex(): make INLINE redefinable.

	* gpc-typeck.c: comptypes(): compare record types.
	  convert_arguments(): don't call procedures; do not take the address
	  of an address when passing it as a function reference.
	  build_unary_op(): allow packed var parameters in some situations.
	  convert_for_assignment(): complain about object assignments;
          check record assignments.

	* gpc.gperf: BP_INLINE renamed to INLINE and enabled.

	* lang-specs.h: disable nested comments for ISO Pascal.

	* parse.y: main_program_declaration: code for labels in the main
	  program rewritten.
	  record_field_list: new structure for variant record tag info.
	  function_declaration: handle INLINE; call push_label_level()
	  earlier and pop_label_level() later.
	  goto_statement: handle `goto' to the main program as a special case.

	* rts.c: allow_packed_var_parameters: new variable.
	  rts_call(), rts_read(): allow packed var parameters.
	  rts_write(): allow packed var parameters for `WriteStr'.
	  build_rts_call(): case p_NEW: handle tag fields of variant records;
	  case p_EQ, etc.: only warn about ISO 10206 extensions.

	* setop.c: expand_set_comparision(): no change, just some clean-up.
	  Instead, we juggle with tree nodes to work around the problem which
	  should be addressed here.
	
	* types.c: assign_string(): use allow_packed_var_parameters instead of
	  faking tree nodes.
	  build_record_variant_part(): new structure for variant record tag
	  info also stores the case constants.

	* util.c: main_program_*: several new variables to deal with nonlocal
	  `goto's from a procedure or function to the main program.
	  assign_tags(): new function.
	  init_main_program_rtx(), expand_goto_main_program(): new functions.

Thu Sep 18 23:53:29 1997 J.J. van der Heijden <janjaap@zoo-station.student.utwente.nl>

	* Make-lang.in: Remove alloca.h from $(GPC_SRCS)
	  rts/configure: Share config.cache in GPC source dir.
	  pascal.distclean: remove additional temporary autoconf files

	* alloca.h: removed. Functionality integrated in gpc-defs.h

	* config/msdos/gpc-config.h: New file. Needed because new autoconf
	  script cannot be run on MS-DOS.

	* config-lang.in: Additional code to detect whether the GCC version
	  is correct and the GBE patch has been applied. Apply patch if
	  needed.

	* configure.in: New file. Additional configuration for GPC, not
	  provided by toplevel configure. Beware: doesn't write Makefile,
	  just gpc-config.h

	* gpc-config.in: New file. Skeleton gpc-config.h

	* gpc-defs.h: HASH_DEBUG: Defined here, not in gpi-hash.h
	  #include gpc-config.h
	  Incorporate alloca functionality from alloca.h
	  #define macros for memset() and memcmp() for those who don't have
	  them.

	* gpi-hash.c: Replace bzero() calls by memset().

	* module.c: ditto.

	* p/patches/gcc-2.7.2.1.patch: renamed to gcc-2.7.2.x.patch

	* rts/rt0: clear_junk(): #undef unless BSD_RTS.

	* rts.c: Initialize ambigous variables.

	* setop.c, types.c: ditto.

	* rts.c: ditto.
	  Remove #definition of LAZY_IO_TEXT: defined in gpc-defs.h

Sun 14 Sep 1997 21:15  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-common.c: build_pascal_binary_op(): always convert string
	  constants of length 1 to chars to avoid violation of ISO 7185
	  in char comparisions; simplified conversion of set constructors
	  to sets to avoid type conflicts; fixed wrong condition for ISO
	  violation warning in string comparision.

	* gpc-decl.c: declare_label(), lookup_label(): trying to fix
	  problems with labels and `goto's in the main program ...

	* gpc-typeck.c: common_type(): extend subranges to full types for
	  type comparisions. compatible_types_p(): check base types, not
	  the types themselves; caller changed.

	* gpc.c: concat_args(): concat more than two args.

        * module.c: pass_automake_gpc_options(): removed obsolete
	  function.  module_must_be_recompiled(), compile_module(): pass
	  automake GPC options; output debugging information.

	* parse.y: top_label_levels, main_program_labels: variables and
	  references removed.
	  main_program_declaration: only warn, don't pedwarn about missing
	  program parameters since ISO does not really require them.

	* rts/rts-rt0.c: define clear_junk() only when actually needed.

	* rts/rts-types.h: aligned comments *above* definitions.

	* types.c: base_type(): take type variants into account.
	  build_pascal_range_type(): give it the correct TREE_CODE.

	* util.c: check_for_control_variable(): allow global variables
	  in the main program.

Sun Sep 14 18:25:50 1997 J.J. van der Heijden <janjaap@zoo-station.student.utwente.nl>

	* Make-lang.in: alloca.h, assert_.h, circle-buf.h, gansidecl.h,
	  gbe.h, gpc-defs.h, gpc-lang.h, gpi-hash.h, lang-options.h,
	  lang-specs.h, module.h, objects.h, rts.h, setop.h, types.h,
	  util.h: add to $(GPC_SRCS) to trigger rebuild of gpc1 in case of
	  change.

	* gpc-decl.c: disable unused `with_element_chain'

	* gpc-defs.h: #include <alloca.h> if HAVE_ALLOCA_H, "alloca.h"
	  otherwise.
	  Remove duplicate definitions of integer_set_type_node,
	  integer_ptr_type_node, boolean_type_node, size_of_file_type
	  and text_type_node which now live in "util.h"
	  string_id, schema_id, type_id, const_id, inline_id, varparm_id,
	  volatile_id, auto_id, extern_id, static_id and attribute_id: ditto.
	  string_schema_proto_type, const_string_schema_proto_type: ditto.
	  empty_arglist, char_array_index_type_node, cstring_type_node,
	  Definitions of un_initialize_block, handle_formal_param_list,
	  handle_formal_conf_array_param_list, concat, save_string,
	  probably_call_function, maybe_call_function,
	  resume_function_calls, suspend_function_calls, check_identifier,
	  gpc_main, main_program_name, requested_set_size,
	  get_unique_identifier, get_identifier_with_blank, 
	  output_real_main_program, get_main_program_name, 
	  build_pascal_initializer, new_string_by_model,
	  make_new_variable, declare_vars, no_parameters: removed because
	  of duplicate in util.h
	  Remove duplicate definition of export_all,
	  associate_external_objects, flag_automake, automake_gpc_options, 
	  automake_temp_filename, executable_file_name, simple_get_field,
	  call_method, get_method_name, push_self_parameter,
	  store_object_name, inherit, add_vmt_field, construct_vmt,
	  mark_virtual_method: now in module.h.
	  module_export_clause, module_export_range,
	  module_repair_exported_ranges, name_exported_p,
	  handle_autoexport, add_to_automake_temp_file, store_executable_name,
	  pass_automake_gpc_options, module_must_be_recompiled,
	  compile_module, store_string, load_string, store_flags,
	  load_flags, store_type_flags, load_type_flags, store_decl_flags,
	  load_decl_flags, store_tree, load_tree, gpi_open, load_gpi_file,
	  load_gpm_file, create_gpm_file, create_gpi_files,
	  maybe_make_static: Removed. Either moved to module.h or deleted
	  because they are internal to module.c
	  Remove duplicate definition of make_signed_range, p_grokfields, 
	  string_may_be_char, build_pascal_string_schema,
	  select_integer_type, build_pascal_range_type,
	  build_pascal_array_type, build_pascal_array_ref, 
	  build_pascal_pointer_type, object_size, construct_set_member,
	  construct_set, build_set_constructor, grok_packed,
	  build_file_type, build_set_type, build_record_variant_part,
	  convert_type_to_range, maybe_schema_discriminant,
	  build_schema_type, number_of_schema_discriminants,
	  is_schema_discriminant_access, prediscriminate_schema,
	  cstring_informed, ptrarith_informed, base_type, 
	  is_string_type, declared_string_capacity: now in types.h.
	  Remove duplicate definition of declare_rts_types, build_buffer_ref,
	  get_standard_input, get_standard_output: now in rts.h.
	  Remove duplicate definition of version_flag: now in gbe.h
	  allocate_type_lang_specific, asm_combine_strings, bit_sizeof,
	  grok_directive, pascal_type_variant, pascal_type_extension,
	  build_discriminated_schema_type, which_language,
	  warning_list_languages, warn_about_keyword_redeclaration,
	  enable_keyword, disable_keyword, resolve_forward_pointer,
	  lookup_forward_pointer, find_field, check_if_predefined_type,
	  is_known_directive, de_capitalize: define `extern'.
	  Remove unused gpc_test1, gpc_test2, gpc_test3, gpc_test4,
	  init_std_files.
	  Remove is_of_string_type: internale to types.c
	  Disable unused with_element_chain

	* alloca.h: New file. Use only if system doesn't supply one.

	* types.c: Add prototype for select_integer_type()

	* setop.c: Move NEXT_WORD, WORD_IN_BITS, WORD_IN_UNITS,
	  BITS_IN_UNIT, CONV_INT, GET_MODE_2 macros to setop.h

	* setop.h: Add external definitions.

Sun Sep 14 01:59:02 1997 J.J. van der Heijden <janjaap@zoo-station.student.utwente.nl>

	* Make-lang.in: Add choose-temp.c and pexecute.c to $(GPC_SRCS)

	* Makefile.in:
	  Enable -Wall on GPC-only source files.
	  choose-temp.c, pexecute.c and gansidecl.h: new files
	  Taken from gcc2 snapshot. Used to implement standardized child
	  process control for automake in module.c

	* assert_.h: new file. Unified interface to systems <assert.h> if
	  present and old style GPC assertions.

	* gpc-defs.h:
	  Remove old style assertion definition.
	  Move definitions of LAZY_IO_TEXT and HASH_EMBED here.
	  Add autoconfigurable interface to <stddef.h>, <stdlib.h>,
	  <string.h>.
	  Prototyping: while GCC is not properly prototyped, add prototypes
	  for functions that live in modified GCC files here. This applies
	  to gpc-common.c, gpc-decl.c, gpc-lex.c and gpc-typeck.c
	  FIXME: Each of these files should get it's own header.

	* gpi-hash.c: Replace inclusion of "tree.h", "c-tree.h",
	  "obstack.h" and "flags.h" with "gbe.h"
	  Add #include "config.h", "util.h" and "module.h".

	* gpi-hash.h: change DEBUG_HASH_KEY from 0x81726354 to 0x54637281:
	  DEBUG_HASH_KEY is an int and 0x81726354 is > MAX_INT
	  Add gcc_obstack_init proto.

	* module.c: Replace inclusion of "tree.h", "c-tree.h",
	  "input.h", "rtl.h", "obstack.h" and "flags.h" with "gbe.h"
	  Add #include "objects.h" and "util.h"
	  Move #define HASH_EMBED to gpc-defs.h
	  Make #include <fcntl.h>, <sys/types.h> and <unistd.h>
	  autoconfigurable.
	  Prototyping: add prototypes for all functions.
	  Remove all instances of pexecute(), and perror_exec().
	  Replace execute_child() with new function execute().
	  Execute(): run a child process using standard pexecute() and
	  pwait() functions. Pass child argv to execute() as a char*,
	  instead of char**.
	  pass_automake_gpc_options(): delete (no longer used).
	  module_must_be_recompiled(): minor changes to adapt to execute()
	  instead of child_execute().
	  Use R_OK in access() instead of value ("4")
	  compile_module(): ditto.
	  Use OBJECT_SUFFIX instead of "o"
	  load_gpi_file(): Move declaration of name, rname to
	  "#ifndef HASH_EMBED" section to eliminate unused variables.
	  import_interface(): remove unused variable `name'.

	* module.h:
	  Prototype of this_is_an_interface_module() moved to gpc-defs.h
	  Add prototypes for all functions exported from module.c

	* objects.c: call_method(): eliminate unused variable `type'.
	  construct_vmt(): Remove unused variables `mom', `vmt_var',
	  `field_name' and `method_name'.

	* parse.y:
	  procedural_type_formal_parameter: Remove unused `size'.
	  set_type: comment out unused `range'.

	* rts.c: rts_string(): Remove unused variables `len3', `arg3',
	  `string_length' and `string_curlen'
	  build_rts_call(): Remove unused `schema_size'.
	  In p_BIND: Add parentheses in type bindability test.
	  build_buffer_ref(): Remove unused `lazy_undefined'.

	* setop.c: Add function prototypes for all functions.
	  Disable unused function setop_size().
	  Replace inclusion of "tree.h", "c-tree.h", "input.h", "rtl.h",
	  "expr.h" and "flags.h" with "gbe.h"
	  expand_set_binop(): Add empty default rule to switch statements.
	  expand_set_card(): setop_card_one_word() pass zero for missing
	  third argument.
	  setop_runtime(): comment out `bounds_match'.
	  expand_set_card(): Remove unused `ntarget'.
	  expand_set_binop(): Remove unused `adjust_set1'.
	  expand_set_comparison(): Remove unused `bytesA', `bytesB'
	  and `binoptab'.
	  expand_set_in(): Remove unused `result'.
	  store_set_constructor(): Remove unused `shift_count', `rlow'
	  and `code'

	* types.c: construct_set(): Remove unused `target', `type' and
	  `result'.
	  build_set_type(): Remove unused `dhigh' and `dlow'.
	  assign_string():  Add parentheses in string assignment test.
	  is_variable_string_type: Add extra parenthesis.
	  build_array_slice_ref(): Remove unused `slice'.

	* util.c: Add prototypes for all functions
	  Macros INIT_RANGE_TYPE and DO_FIELD moved to util.h
	  init_any(): Add empty default rule to switch statement.
	  declare_vars(): Remove unused `pending'.
	  declare_known_ids(): make it return void.
	  Remove declaration of count_bits.
	  init_constructor(): Remove unused `rfun'

Sat 13 Sep 1997 19:02  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* rts.c: build_rts_call(): changed `AND' to `AND_' and `NOT' to `NOT_'.
	  rts_read(): handle dialect options by passing the
	  INT_READ_BASE_SPEC_MASK and REAL_READ_ISO7185_ONLY_MASK flags.

	* util.c: KItable[]: use `RETURN_' instead of `RETURN'.

	* rts/rts-write.c: CFWRITE(): use temporary variables.

Sat Sep 13 13:57:30 1997 J.J. van der Heijden <janjaap@zoo-station.student.utwente.nl>

	* Make-lang.in: Add definition of GPC_FOR_TARGET, to be used for
	  building the RTS. Allows overriding from command prompt, i.e.:
	  `make GPC_FOR_TARGET=my_gpc' 
	  Pass GPC_FOR_TARGET to p/Makefile
	  Add objects.c, rts.c and types.c to GPC_SRCS.
	  RTS_SRCS: new. list of RTS sources.
	  libgpc.a: depend on RTS_SRCS
	  
	* Makefile.in: Add GPC_FOR_TARGET.

	* rts/Makefile: Change GPC_FOR_TARGET fallback value to newly built
	  GPC. FIXME: configure should check the sanity of GPC_FOR_TARGET.

Sat Sep 13 12:50:45 1997 J.J. van der Heijden <janjaap@zoo-station.student.utwente.nl>

	* gpc-defs.h: Add definitions of this_is_an_interface_module,
	  current_type_list, defining_types and main_program_name

	* gpc-decl.c: #include module.h, objects.h and util.h

	* gpc-typeck.c: #include module.h, objects.h and util.h

	* parse.y: #include module.h, objects.h, rts.h, types.h and util.h
	  Replace #include "#include "config.h", "tree.h", "input.h",
	  "c-tree.h" and "flags.h" with #include "gbe.h"

	  Rename AND, CONST, DIV, MOD, NIL, NOT, RETURN and SET to AND_,
	  CONST_, DIV_, MOD_, NIL_ NOT, RETURN_ and SET_ to prevent collision
	  with rtl.def in GCC.

	* gpc.gperf:
	  Rename AND, CONST, DIV, MOD, NIL, NOT, RETURN and SET to AND_,
	  CONST_, DIV_, MOD_, NIL_ NOT, RETURN_ and SET_ to prevent collision
	  with rtl.def in GCC.

	* gbe.h: new file.
	  Interface support to GNU back end.
	  Will supply missing prototypes in GBE.

	* module.c: #include module.h

	* module.h: new file.
	  Interface to module.c
	  struct module, module_t, NULL_MODULE: moved from gpc-defs.h
	  External variables current_module, this_is_an_interface_module,
	  we_are_loading_a_gpi_file, standard_interface_input,
	  standard_interface_output: moved from gpc-defs.h

	  Prototypes of initialize_module(), finalize_module(),
	  handle_pending_decls(), import_interface(), export_interface():
	  moved from gpc-defs.h to module.h

	* objects.c: new file.
	  simple_get_field(), call_method(), get_method_name(),
	  push_self_parameter(), check_object_pointer(), store_object_name(),
	  inherit(), add_vmt_field(), construct_vmt(),
	  mark_virtual_method(): move from util.c to objects.c

	* objects.h: new file.
	  Interface to objects.c

	* rts.c: new file.
	  do_ptype(), declare_rts_types(), rts_call(), rts_read(),
	  rts_write(), rts_string(), pascal_unpack_and_pack(),
	  build_rts_call(), build_buffer_ref(), get_standard_input(),
	  get_standard_output(): move from util.c to rts.c
	  rts_call(): no longer static.

	* rts.h: new file.
	  Interface to rts.c
	  Dont confuse with rts/rts.h (which I intend to rename to libgpc.h
	  for an upcoming major RTS update).

	* types.c: new file.
	  clear_set(), construct_set_member(), build_set_constructor(),
	  construct_set(), check_set_bounds(), build_set_type(),
	  assign_string(), string_may_be_char(), build_pascal_string_schema(),
	  is_string_type(), is_of_string_type(), declared_string_capacity(),
	  is_variable_string_type(), maybe_schema_discriminant(),
	  build_schema_type(), number_of_schema_discriminants(),
	  is_schema_discriminant_access(), prediscriminate_schema(),
	  base_type(), build_file_type(), build_record_variant_part(),
	  grok_packed(), count_bits(), p_grokfields(),
	  pascal_array_type_nelts(), object_size(), select_integer_type(),
	  build_pascal_range_type(), build_pascal_pointer_type(),
	  build_pascal_array_type(), build_array_slice_ref(),
	  build_pascal_array_ref(), guess_precision(), make_signed_range(),
	  convert_type_to_range(): move from util.c to types.c
	  Add missing function prototypes.
	  clear_set(): declare to return void.
	  clear_set(): arg 2 of `expand_expr' should be NULL_RTX, not
	  NULL_TREE.
	  cstring_informed, ptrarith_informed: moved here from util.c

	* types.h: new file.
	  Interface to types.c

	* util.c:
	  init_util(): declare to return void.
	  init_any(): don't be static.

	* util.h: new file.
	  Interface to util.c

Fri 12 Sep 1997 13:28  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-decl.c: flag_input_range_checking: new variable.

	* gpc-lex.c: yylex(): don't confuse chains of BP char constants
	  with ISO numbers.

	* gpc-typeck.c: unary_complex_lvalue(), pedantic_lvalue_warning():
	  C-specific functions removed (including callers).
	  check_pascal_initializer(): only change the type when initializing a
	  `CString' with an address of a string constant - it already *is* an
	  address, not a value.
	  build_unary_op(): warn/error about taking the address of a field of
	  a packed structured type.
	  build_c_cast(): when converting integers, take care that the size
	  conversion is done on the unsigned type.

	* gpc.c: add_automake_files(), delete_automake_tempfile(): don't crash
	  when invoked without a Pascal source file name, and use a buffer of
	  the correct size instead of 256.

	* ../toplev.c: put `--pedantic-errors' back to its original meaning.

	* util.c: assign_string(): temporarily remove the "packed" flag from
	  enclosing structured variables when assigning a string in order to
	  avoid a warning or error message about the implicit use of the
	  string field as a variable parameter.
	  rts_read(): accept `CString's and non-standard integers for `ReadStr'.
	  build_rts_call(): call parameterless functions passed as arguments.

Sun 7 Sep 1997 13:28  Frank Heckenbach <frank@pascal.gnu.de>
	
	* rts/rts-error.c: new error message.

	* rts/rts-rdinc.c: new flag REAL_READ_ISO7185_ONLY_MASK to make the
          standard level a runtime flag instead of a #define at the
          GPC building time

	* rts/rts-rdsub.c: _p_rdfloat(): see rts/rts-rdinc.c
                           _p_readi(): changed the handling of flags

	* rts/rts-string.c: p_readstr(): accept `CString's for `ReadStr'.

	* rts/rts-types.h: new flags for various reading options

Sat 6 Sep 1997 13:28  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-nodes.def: corrected file names.

	* gpc-typeck.c: comptypes(): compare object types by looking at their
	  names.  check_pascal_initializer(): allow initializing pointers to
	  strings by addresses of string constants.

	* gpc.c: add_automake_files(): don't delete temporary file here.
	  delete_automake_tempfile(): new function.
	  main(): call delete_automake_tempfile() when deleting the other
	  temporary files.

	* module.c: load_tree(): case FUNCTION_DECL: introduce an additional
	  level to avoid barfing on references to object types in parameter
	  lists.

	* parse.y: constant_definition: use build_type_copy() instead of just
	  copy_node() to copy a type; make typed constants static.

	* util.c: construct_vmt(): only store untyped pointers, but don't
	  store the actual types of the functions in the VMT - otherwise, ugly
	  things would happen in GPI files.
	  call_method(): take the new structure of the VMT into account.
	  declare_vars: removed obsolete code.

Tue 2 Sep 1997 13:28  Frank Heckenbach <frank@pascal.gnu.de>

	* ChangeLog, doc/*.texi, gpc-lang.c, rts/configure, rts/rts-files.c,
	  setop.c: corrected typos.

	* Makefile.in: handle new RTS source files.

	* rts/rts-error.c: errs[]: new errors.

	* rts/rts-rdinc.c: new file.

	* rts/rts-rdsub.c: moved some macros to rts/rts-string.c and
                           rts/rts-read.c
                           getint(): moved into _p_readi()
                           _p_readi(): enabled range checking and base
                                       specifiers ($, n#)

	* rts/rts-read.c, rts/rts-string.c: moved code portions into
	                                    rts-rdinc.c

	* rts/rts-types.h: new flags INT_READ_CHECK_MASK, INPUT_TYPE_MASK,
                                     OUTPUT_TYPE_MASK

	* rts/rts-wrtsub.c: renamed to rts/rts/wrtinc.c.

	* rts/rts.h: removed macro READ_INT_TRAP because now useless

	* util.c: rts_write(), rts_read(): pass the current length of string
	  schemata written out or read from as a value parameter rather than
	  as a reference parameter; [...]

Thu 28 Aug 1997 17:18  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* parse.y: absolute_or_value_specification: generalized `absolute' to
	  accept arbitrary expressions and to take a constant as a specified
	  address for the variable.

	* doc/reference.texi: documented new meanings of `absolute'.

	* util.c: build_rts_call(): case p_SQR, p_SUCC, p_PRED, gpc_MAX,
	  gpc_MIN: use build_pascal_binary_op() instead of build_binary_op()
	  to avoid problems with integer constants.

Thu 28 Aug 1997 17:18  Frank Heckenbach <frank@pascal.gnu.de>

	* gpc-defs.h: PASCAL_STRING_LENGTH(): allow lower bound to be
	  different from one.

	* rts/rts-string.c: _p_substr(): corrected typos in error messages.
	  myasprintf(): new function.

Sun 24 Aug 1997 18:45  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-common.c: build_pascal_unary_op(): don't overflow on the
	  smallest-possible (negative) integer number.

Sun 24 Aug 1997 11:21  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-decl.c: grokdeclarator(): function parameters are references,
	  no pointers, unless specified otherwise.

	* gpc-typeck.c: grok_discriminant(): discriminants are CONVERT_EXPRs
	  now, no more NOP_EXPRs.
	  re_layout_type(): copy_node() ordinal types before modifying their
	  bounds.

	* parse.y: main_program_declaration: initialize all global variables
	  in a module constructor; un-initialize them in a module destructor.

	* util.c: is_of_string_type(): don't require char_type_node; also
	  accept a TYPE_MAIN_VARIANT of it.

Wed 20 Aug 1997 42:45  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-decl.c: top_level_p(): cleaned up.

	* gpc-typeck.c: default_conversion(): don't convert functions to
	  pointers implicitly.
	  build_function_call(): convert functions to pointers here.
	  convert_arguments(): don't accept a function for a function pointer
	  argument.
	  lvalue_p(): accept `@foo' as an lvalue if `foo' is a function
	  reference.
	  build_c_cast(): dereference function references; don't convert them
	  to pointers.
	  convert_for_assignment(): convert functions to pointers here.

	* parse.y: variable_or_function_access_maybe_assignment: take
	  addresses of functions.
	  factor: allow other factors in address expressions (i.e. `@@foo');
	  take addresses of functions.
	  variable_or_function_access: separate dereferences and
	  function calls.

	* util.c: get_unique_identifier: generate two underscores
	  instead of one.
	  construct_vmt(): take addresses of methods.
	  probably_call_function(): it needn't be a FUNCTION_DECL.
	  init_constructor(): convert functions to pointers here.

Tue 19 Aug 1997 24:52  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-cccp.c: handle_directive(): don't forget to pass the `#' of
	  a char constant to `gpc1'.

	* gpc-common.c: convert_and_check(): take out-of-range constants
	  out of business.
	  get_type_name(): new function.
	  get_operator_identifier(): search for type names more eagerly.
	  build_pascal_op(): renamed to build_pascal_binary_op(); handle
	  integer constants of various types.
	  build_pascal_unary_op(): convert unsigned integer constants to
	  signed ones and do some trivial range checking.

	* gpc-decl.c: top_level_p(): subfunctions of the main program are
	  no more nested.
	  start_decl(): look for Pascal's global level, not C's one.
	  start_pascal_function(): check second occurrence of forward declared
	  functions against first one.

	* gpc-lex.c: yylex(): digits: always return `LongestCard' constants.

	* gpc-typeck.c: check_pascal_initializer(): do some trivial range
	  checking on ordinal types; don't error, but warn about truncated
	  string constants.
	  grok_discriminant(): minor structural changes.
	  re_layout_type(): handle domains of subranges.
	  build_discriminated_schema_type: use CONVERT_EXPRs instead of
	  NOP_EXPRs.

	* module.c: store_tree(), load_tree(): handle ENUMERAL_TYPEs,
	  SET_TYPEs correctly; handle PLACEHOLDER_EXPRs.

	* parse.y: main_program_declaration: rewritten to make subfunctions of
	  the main program global.
	  optional_program_header: don't pedwarn, just warn.
	  subrange_type: call build_pascal_range_type() instead of
	  build_range_type().
	  function_declaration: subfunctions of the main program are global;
	  cleaned up a little.
	  module_constructor: use `lineno_statement' instead of `statement' to
	  produce correct debugging info.

	* util.c: maybe_schema_discriminant(): use CONVERT_EXPRs instead
	  of NOP_EXPRs.
	  construct_vmt(): don't let range checking barf on this.
	  grok_packed(): `layout_type()' the type correctly.
	  select_integer_type(): new function.
	  build_pascal_range_type(): new function, so to say.

Wed 13 Aug 1997 16:00  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* util.c: build_set_constructor(): set it up in a way the back-end
	  understands, and mark it as TREE_STATIC, if constant.
	  construct_set(): added warning in case build_set_constructor() was
	  not called.

Tue 12 Aug 1997 25:50  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* config/msdos/Makefile.rts, rts/Makefile.in: Added rules for
	  `rts-assign.p'.  This should be re-written to make clean use
	  of the `gpc' just created.

	* gpc-decl.c, gpc-defs.h: attribute_id: new variable.

	* parse.y: storage_qualifier: included ATTRIBUTE.
	  rts_proc_parlist: included bp_ASSIGN.

	* rts/rts-assign.p: new file.

	* util.c: attribute_id: new variable.
	  extract_attributes(): new function.
	  declare_vars(): handle attributes.
	  ptype_string_schema, ptype_const_string_schema: new variables.
	  declare_rts_types(): handle ptype_[const_]string_schema.
	  rts[]: included bp_ASSIGN.
	  build_rts_call: case bp_ASSIGN: new case.
	  initialize_world(): call declare_rts_types() later, so the string
	  schema types above are known already.

Mon 11 Aug 1997 21:05  Frank Heckenbach <frank@pascal.gnu.de>

	* ChangeLog, gpc-defs.h, gpc-typeck.c, util.c: fixed typo.

	* Makefile.in: put RTS rules to correct place; added `rts-wrtsub.c'.

	* rts/rts-error.c: fixed typo.

	* rts/rts-string.c: don't use return value of asprintf

	* rts/rts-types.h: new constants for new treatment of reals.

	* rts/rts-write.c: DIRECTVIDEO(): new macro; used to clean up the
	  PRINTF*() macros.

	* rts/rts-wrsub.c: new treatment of reals without leading blank;
	  handle `LongReal's; receive string length as a value parameter
	  rather than as a reference parameter

	* util.c: rts_write(): handle `LongReal's; corrected handling of
          non-standard integers; pass string length as a value parameter

Tue 12 Aug 1997 19:18  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* doc/programming.texi: size of integer types clarified.

	* gpc-typeck.c: check_pascal_initializer(): implemented a trivial
	  range check for string constants.

	Fixed bugs reported by Jan-Jaap:

	* module.c: module_export_range(): really return something.

	* parse.y: main_program_declaration: removed superfluous parameter.
	  assignment_or_call_statement: removed dead code.

	* util.c: rts_string(): removed superfluous parameter.

Sat 9 Aug 1997 13:40  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* doc/gpc.texi, doc/bpqstart.texi, doc/bugs.texi, doc/extend.texi,
	  doc/install.texi, doc/invoke.texi, doc/sets.texi: cleaned up a little.

	* doc/gpc-source.texi, doc/programming.texi, doc/reference.texi:
	  violently extended.

	* gpc-lex.c: process_directive(): corrected typo which caused to look
	  for `.a' files under an `.o' name. #-)
	  yylex(): barf on integer constants exceeding `LongestCard'.

	* gpc.gperf: re-sorted alphabetically.

	* gpi-hash.c: get_uid(): no need to check for `l->node'.

	* parse.y: factor: SIZEOF: handle object type names correctly.

	* util.c: check_object_pointer(): don't limit the identifier for the
	  pointer to 256 chars; export the pointer, if in a unit or module.
	  KItable[]: directly call libc function for `arctan', `sin', and
	  `cos'.

Sat 9 Aug 1997 13:40  Bill Currie <billc@blackmagic.tait.co.nz>

	* parse.y: gpc_GETFILE: new token.
	  new_identifier_1: included `gpc_GETFILE'.
	  rts_fun_onepar: handle `gpc_GETFILE'.

	* util.c: rts[], KItable[]: added gpc_GETFILE.
	  build_rts_call(): case gpc_GETFILE: new case.

Tue 7 Aug 1997 13:40  Frank Heckenbach <frank@pascal.gnu.de>

	* rts/rts-read.c: use P_S_INT instead of P_INT.

	* rts/rts-string.c: PRINTFX(), PRINTF2(), PRINTF3(), PRINTF4(),
	  CFWRITE(): new macros.
	  _p_writestr(): handle `chr ( 0 )' in strings correctly; use include
	  file `rts-wrtsub.c'; use P_S_INT instead of P_INT.

	* rts/rts-types.h: P_INT etc. constants re-arranged to
	  enable us to handle modified types, too.

	* rts/rts-write.c: CFWRITE(): fixed bug with DJGPP conio.
	  p_write(): use include file `rts-wrtsub.c'.

	* rts/rts-wrtsub.c: new file.

	* util.c: rts_read(): adapted to new constants `P_INT', etc.; handle
	  long (in C: long long) integers.

Wed 6 Aug 1997 14:36  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* doc/*.texi: revised.

	* Make-lang.in, doc/README, doc/TODO: adapted to new structure
	  of doc/*.

	* gpc-typeck.c: build_c_cast(): don't barf on pointers being converted
	  to integers.

	* gpi-hash.c: HASH_FUNC(): use `abs' to get a unique id for "negative"
	  pointers, too.  This fixes Bill Currie's bug.  (Thanks, Bill!)
	  hash_table[], store_header(), load_module_header(): allocated
	  statically again.

	* parse.y: attribute_list: return a TREE_LIST for expressions.
	  declaring_statement: warn about it unless in (*$X+*) mode.

Mon 28 Jul 1997 12:41  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-typeck.c: grok_discriminant(), re_layout_type(): copy
	  expressions rather than acting on the original - which will
	  be restored later.

	* module.c: load_tree(): case VAR_DECL: bcopy flags in right direction.

	* util.c: assign_string(): handle fixed strings with lower bounds
	  different from one.

Sun 27 Jul 1997 14:10  Frank Heckenbach <frank@pascal.gnu.de>

	* rts/rts-types.h: P_S_LONGLONG, P_U_LONGLONG: new constants.

	* rts/rts-write.c: _p_write(): handle unsigned and long long integers.

	* util.c: rts_read(), rts_write(): handle non-standard integers.

Sun 27 Jul 1997 11:05  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-typeck.c: grok_discriminant(): handle expressions.
	  re_layout_type(): don't spoil the TYPE_DOMAIN of a
	  type template array.

	* gpi-hash.c: hash_table[], store_header(), load_module_header():
	  allocate hash_table dynamically to see what happens.  This is to
	  find an error reported by Bill Currie I cannot reproduce here.  :-(

	* module.c: load_tree(): case VAR_DECL: handle `volatile' correctly;
	  expressions: hash them, so we can have recursive expressions
	  (schemata need them).

	* parse.y: subrange_type: warn about packed subranges.
	  assignment_or_call_statement: re-ordered; no real change.
	  variable_or_function_access: implicitly dereference the schema ($$),
	  not a pointer to it or such ($1).

	* util.c: prediscriminate_schema(): don't spoil schema template.
	  (This seems to have no effect on GPC's behaviour, but it was
	  important for strings.)
	  declare_vars(): preserve qualifiers, so `volatile' variables don't
	  get `external'.

Mon 21 Jul 1997 16:11  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* AUTHORS: new file.

	* README.FILE_LAYOUT and TODO: updated.

	* gpc-common.c: convert_and_check(): use parentheses around `?:'.

	* gpc-typeck.c: build_c_cast(): do some trivial range checking.
	  (With parentheses around `?:'.)
	  convert_for_assignment(): do range checking, even if type main
	  variants match.

	* gpi-hash.c: store_header(), load_module_header(): bzero hash_table.
	  Was this the origin of many problems with this hashing?

	* parse.y: variable_or_function_access_maybe_assignment:
	  allow `@foo' lvalues for procedural variables.
	  factor: handle special case of `@foo'.
	  variable_or_function_access_no_id: allow use of `New' as a
	  "function" with pointers to schemata, and fix some bugs.

	* util.c: maybe_schema_discriminant(): handle expressions.
	  build_rts_call(): case p_NEW: restore `val' - it might be a
	  type decl; turned "tag field" warning into error message.
	  declare_known_ids(): new types "MedReal" and "LongestReal".

	* stor-layout.c: fixup_unsigned_type(): record unsignedness in
	  TYPE_[MIN|MAX]_VALUEs.

Sat 19 Jul 1997 25:47  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-decl.c: resolve_forward_pointer(): reduce the damage caused
	  by a direct assignment of the contents of tree nodes.

	* gpc-defs.h: added prototypes to number_of_schema_discriminants(),
	  is_schema_discriminant_access(), and prediscriminate_schema().

	* gpc-typeck.c: convert_arguments(): accept prediscriminated AND
	  undiscriminated string schemata.

	* gpc-parse.y: factor: when taking the address of a function,
	  explicitly call default_conversion already here, because
	  otherwise the function might be called.
	  variable_or_function_access_no_id: p_NEW: call finish_decl().

	* util.s: prediscriminate_schema: new parameter `overwrite'. Callers
	  changed.
	
Tue 15 Jul 1997 24:42  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpi-hash.c: HASH_FUNC(): variable `_end' replaced by just zero.
	  As Alexey said, this only serves to get unique ids for all tree
	  nodes, so it does not really matter.

Mon 14 Jul 1997 18:50  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* Beta release of gpc-970714.

Mon 14 Jul 1997 17:27  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-decl.c: unsuccessfully tried to implement a check whether
	  two heads for the same function match.  :-(

	* gpc-defs.h: PASCAL_TYPE_UNDISCRIMINATED_STRING() and
	  PASCAL_TYPE_DISCRIMINATED_STRING(): simplified.
	  Now they are less holperig.  :-)
	  This fixed the bug I had given up to fix yesterday.  :-)
	  PASCAL_TYPE_PREDISCRIMINATED_STRING(): new macro.

	* gpc-typeck.c: comptypes(): handle REFERENCE_TYPEs, including a
	  misfeature of load_tree().

	* util.c: number_of_schema_discriminants and build_rts_call():
	  case p_NEW: look out for PREDISCRIMINIATED_STRINGs, not for
	  UNDISCRIMINATED_ ones.
	  maybe_call_function():  Check whether `fun' is indeed a PARM_DECL
	  before evaluating its PASCAL_PROCEDURE_PARAMETER slot.  Doing this
	  for something not a *_DECL node resulted in undefined results, thus
	  producing a very ugly bug which is fixed now - I hope at least.

Sun 13 Jul 1997 13:17  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-common.c: convert_and_check(): do some trivial range checks.
	  binary_op_error(): cleaned up.

	* gpc-decl.c: print_lang_decl(), print_lang_type(): print something.
	  is_known_directive(): simplified error message.
	  start_pascal_function(): gave up trying to fix a "prior parameter's
	  size depends on `Foo'" bug arising with undiscriminated string
	  parameters in functions exported by a Unit.  :-(

	* gpc-typeck.c: bit_sizeof(): new function.
	  re_layout_type: don't re-layout pointers and references.
	  build_binary_op(): warn about function pointer comparisions.
	  build_c_cast(): handle casts among real numbers as conversions.
	  convert_for_assignment(): clean up warnings for pointer conversions.

	* module.c: load_tree(): case FUNCTION_DECL: not changed,
	  just re-arranged.

	* parse.y: ucsd_CONCAT, BITSIZEOF: new tokens.
	  new_identifier_1: ucsd_CONCAT and BITSIZEOF are redefinable.
	  function_declaration: accept and ignore `near' and `far' directives.
	  optional_borland_directive: new rule.
	  factor: SIZEOF: cleaned up error message; handle BITSIZEOF.
	  rts_fun_parlist: handle ucsd_CONCAT.

	* util.c: assign_string(): implemented first trivial range checks.
	  build_rts_call(): case ucsd_CONCAT: new case.
	  KItable[]: handle "Concat" and "Bitsizeof".

Mon 7 Jul 1997 24:00  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-module.c: integrated bug fix by Alexej Volokhov <voh@ispras.ru>

	* gpi-hash.c: get_uid(): worked around strange bug.  :-/

Sat 5 Jul 1997 14:09  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-module.c, gpi-hash.c, gpi-hash.h, circle-buf.c, circle-buf.h:
	  integrated changes by Alexej Volokhov <voh@ispras.ru>

	* Make-lang.in: integrated gpi-hash.c and circle-buf.c.

	* Makefile.in: integrated gpi-hash.o and circle-buf.o.

Tue 1 Jul 1997 22:56  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* lang-specs.h: integrated bug fix by Jan-Jaap.

	* gpc-module.c: create_gpm_file(): new function.
	  create_gpi_files(): took out the GPM stuff.
	  store_tree(): case FUNCTION_DECL: store machine attributes.
	  load_tree(): case FUNCTION_DECL: load machine attributes.

	* parse.y: type_denoter: kludge around recursion when storing
	  `Integer(8)' in a GPI file.  (This can and should be taken out
	  again when the improvements by Alexej are fully integrated.)
	  rest_of_module: call create_gpm_file.  This it *not* done for Units.

	* testsuite/lib/gpc.exp: as Jan-Jaap proposed, we now use the Pascal
	  compiler, not the C compiler to compile the Pascal test programs. :-)

	* util.c: number_of_schema_discriminants(): Don't try to discriminate
	  already discriminated schemata.
	  grok_packed(): set TYPE_PRECISION of packed subranges.
	  rts_write(): case INTEGER_TYPE: convert `Integer(8)' etc. to
	  `Integer' for writing.
	  init_simple(): don't "pedwarn" about non-effect of `packed'.

Sat 28 Jun 1997 15:59  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-typeck.c: compatible_types_p(): handle enum subranges.

Tue 24 Jun 1997 26:00 MET DST   Peter Gerwinski <peter.gerwinski@uni-essen.de>
               Jan-Jaap van der Heijden <j.j.vanderheijden@student.utwente.nl>

	* Beta release of gpc-970624.

Tue 24 Jun 1997 25:58  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-lex.c: process_directive(): the $x switch implies an assignment
	  to flag_ignore_function_results.

Tue 24 Jun 1997 24:35  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-typeck.c: build_c_cast(): do casts between pointers and integers
	  without an auxiliary pointer.

Tue 24 Jun 1997 21:45  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* config-lang.in:  Make the complaint about unpatched GCC source
	  more friendly.

Tue Jun 24 20:30:18 1997 J.J. van der Heijden <J.J. van der Heijden@student.utwente.nl>

	* Make-lang.in: pascal.bindist: new target to create binary
	  distribution named "gpc-$(gpc_version).$(target).tar.gz"

	* version.c: moved version number to Make-lang.in

	* Makefile.in: bomb out if invoked without arguments (i.e. not
	  from toplevel Makefile)

Tue 24 Jun 1997 18:37  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-decl.c: c_decode_option(): new options --no-extended-syntax,
	  --[no-]ignore-function-results.  flag_ignore_function_results:
	  new variable.

	* lang-options.h: new options --no-extended-syntax,
	  --[no-]ignore-function-results.

	* parse.y: assignment_or_call_statement: make "value is ignored"
	  warning dependent of flag_ignore_functon_results.

	* version.c: upgraded to gpc-970624.

Tue 24 Jun 1997 15:50  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* compile.cmd: new file.

	* config/emx/*: re-structured.  Added copies of the patched GCC
	  source files because we cannot assume each EMX user to have
	  `patch' installed.

	* doc/install.texi: merged changes by Jan-Jaap.

	* gpc-decl.c: finish_struct(): Pascalized error-message.
	  check_variant_record(): new function.

	* gpc-typeck.c: build_c_cast(): allow casts to any types;
	  tuned error and warning messages.

	* parse.y: made some warnings more consistent.
	  type_denoter: defined integer types with specified number of bits.
	  subrange_type: implemented packed subranges.
	  record_field_list: check variant records for duplicate identifiers.

	* patches/gcc-2.7.2.1.patch: updated.

	* rts/rts-version.in: file was missing.

	* util.c: grok_packed(): handle packed subranges.
	  build_rts_call(): case gpc_MIN, gpc_MAX: convert the arguments;
	  don't cast them.
	  declare_known_ids(): implemented more integer types: Med*, Longest*,
	  *card.

Tue 17 Jun 1997 16:20  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-decl.c: grokdeclarator(): changed something I suspect to be a
	  general GCC bug.  This was one of the DEC-Alpha-specific bugs.

	* gpc-defs.h: MAYBE_CALL_FUNCTION(): macro generalized and simplified.

	* gpc.c.pre-driver: renamed to gpc-pre-driver.c.

	* gpc-typeck.c: check_pascal_initializer(): moved here from util.c
	  because it needs `convert_for_assignment'.

	* parse.y: type_definition: let the back-end know that schemata are
	  size_volatile.  structured_iso_initializer,
	  structured_borland_initializer: don't crash on error.
	  iso_initializer_expression: accept more IDENTIFIERs as field names.
	  borland_initializer_expression: accept structured stuff.
	  function_declaration, function_identifier, method_identifier,
	  parmlist1: handle nested subfunctions of methods correctly.
	  function_declaration: function return variables don't need to be
	  volatile any more, because we are calling `c_expand_return' now.
	  This was another one of the DEC-Alpha-specific bugs.
	  variable_or_function_access: expand function calls in no-ids.
	  module_constructor, module_destructor, optional_unit_constructor:
	  name the stuff `__init_Foo' or `__fini_Foo' to make the Alpha's
	  linker happy.  This was the third and last one of the
	  DEC-Alpha-specific bugs.  (Phew!)

	* patches/mkpatch:  use unidiff, and name it `.patch', not `.diff'.

	* rts/rts-write.c: _p_write(): handle CStrings (length == -1).

	* util.c: assign_string(): handle CStrings.  init_any(): cosmetical
	  changes.  check_pascal_initializer(): moved to gpc-typeck.c.

	* ../stor-layout.c: variable_size(): don't store pending_sizes if
	  size_volatile is nonzero.

Fri 13 Jun 1997 44:05  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* Tried hard to fix some DEC-Alpha-specific bugs:  Functions sometimes
	  use the wrong register to return `Char' values when optimization is
	  on; and Module/Unit constructors/destructors don't work on the
	  Alpha.  Gave it up for the moment.  :-(

	* diffs: renamed to patches; gcc-2.7.2.1.diff: renamed to
	  gcc-2.7.2.1.patch; mkdiff: renamed to mkpatch.  Otherwise,
	  these are removed by "make extraclean".

	* gpc-common.c: truthvalue_conversion1(): case ADDR_EXPR:
	  merged "APX patch" to fix some DEC-Alpha-specific bugs.
	  (Did not help.)-:

	* gpc-decl.c: c_decode_option(): replace the `-famtmpfile' kludge
	  by something better.

	* gpc-typeck.c: improved warnings and error messages concerning
	  pointer arithmetics.

	* module.c: store_executable_name(): recycle main input file name.

	* parse.y: gpc_ASSIGNTYPE: new token.
	  Improved warnings.
	  assignment_or_call_statement: don't handle assignment to `TypeOf'.
	  rts_prog_parlist: handle gpc_ASSIGNTYPE.
	  asm_statement: mark output operands as PASCAL_VALUE_ASSIGNED.
	  variable_or_function_access_no_id: don't allow assignments to
	  `TypeOf'.  module_constructor, optional_unit_constructor,
	  module_destructor: don't call assemble_*() directly; let
	  finish_function() do that job.

	* Peter Gerwinski: upgraded from "Dipl.-Phys." to "Dr. rer. nat."
	  (4.6.1997 11:00-12:30 MET DST)

	* util.c: construct_vmt(): use `sizetype' instead of
	  `integer_type_node' for "object_size" and "neg_object_size" fields;
	  do conversion when "neg_object_size" is assigned.
	  build_pascal_array_ref(): use HOST_BITS_PER_WIDE_INT instead of
	  the number of bits per char to access the array.
	  rts_write(): for va_arg: pass everything smaller than `int' as `int'.
	  build_rts_call(): case p_SUCC, p_PRED, bp_INC, bp_DEC: increment
	  pointers by size of type pointed to; case gpc_ASSIGNTYPE: new case.
	  invalid_pascal_initializer(): renamed to check_pascal_initializer();
	  strip trailing zero when initializing String variables with
	  STRING_CSTs.  KItable[]: implemented gpc_ASSIGNTYPE.

Sun 1 Jun 1997 26:34  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* Merged changes since 10 May 1997 with Jan-Jaap's gpc-i970601.

	* gpc-decl.c: c_decode_option(): derive the name of executable from
	  `-famtmpfile'.  This is essentially the same as `input_filename'
	  but is known at startup time, i.e. earlier.  Don't yet care about
	  ".exe" extension.

	* module.c: store_executable_name(): store "-ofoo" instead of "-o foo",
	  and add the ".exe" extension here rather than in `gpc-decl.c'.

 	* parse.y: program_heading: do not derive the name of executable from
	  the name of the program.

	* Make-lang.in: added `gpc-decl.c'.

	* util.c: invalid_pascal_initializer(): fixed undefined result when
	  structured variables were initialized.

Sun Jun  1 18:03:57 1997 J.J. van der Heijden <janjaap@zoo-station.student.utwent.nl>

	* config/msdos/configur.bat: replacement `configur.bat' for DJGPP,
	  so that GPC is included.

	* config/msdos/Makefile, config/msdos/Makefile.doc,
	  config/msdos/specs.gpc: removed (no longer used)

	* Make-lang.in: New targets: pascal.install, pascal.install-compiler
	  `pascal.install' will install GPC into an existing GCC installation,
	  without overwriting existing files.
	  `pascal.clean': remove xgpc

	* gcc.c: Add empty rule for *.p and *.pas to prevent an error
	  from ld ("linker input file unused since linking not done")

	* gpc.c: print_message_and_exit(): New fuction. Does what you'd
	  expect :-) Is called if `gpc' is executed with "-h" or without any
	  options at all.

Fri 30 May 1997  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* Makefile.in: manually set GPC_VERSION to 970510.  Don't let this be
	  done automatically each time `configure' is run.

	* gcc.c: do_spec_1(): case 'v': get version number correctly.
	  add_automake_temp_files(): handle output files; derive the compiler
	  from the extension.

	* gpc-decl.c: current_function_return_variable: new variable.
	  c_decode_option(): new option `-fexecutable-file-name'.

	* gpc-lex.c: process_directive(): fix typo: change strncmp() calls
	  to strcmp() ;-)
	  Also in process_directive(): fix a bug reported by Frank Heckenbach:

    Dear Sir,

    this is a very interesting feature. I suggest we call it Randomized Compiler
    Selection. When We release the program, We will call it Automated Tool
    Control, and next year, We'll call it Embedded Application Management.
    Don't forget to include Our Delay97, Sleep97 and Nop97 libraries, and to
    write some obscure technical documentations, as usual.

    Yours, Bill G.

	* gpc-module.c: store_executable_name(): new function.
	  pass_automake_gpc_options(): handle non-Pascal compilations.
	  module_repair_exported_ranges(): handle exported ENUMERAL_TYPEs.

	* gpc-options.h: new option `-fexecutable-file-name'.

 	* gpc-parse.y: program_heading: derive the name of executable from the
	  name of the program.
	  return_statement: handle function return values with `Exit'.
	  factor: undo dereference of strings, too (three places).

	* gpc-typeck.c: compatible_types_p(), compatible_assignment_p(),
	  compatible_relop_p(): accept tree nodes rather than tree codes.  All
	  three functions got prototypes.  Callers changed.
	  comptypes(): Enumeral types must match exactly.

	* Peter Gerwinski: got engaged with Anja <anja@theo-phys.uni-essen.de>

	* gpc-util.c: executable_file_name: new variable.
	  output_real_main_program(): return `int' rather than `void'.

	* rts/rts-rdsub.c: make `ReadStr' work with numbers.

Thu May 29 22:47:41 1997 J.J. van der Heijden <janjaap@zoo-station.student.utwent.nl>

	* Make-lang.in: New target: check
	  executes the dejagnu based compiler testsuite.

Wed May 28 16:39:19 1997 J.J. van der Heijden <janjaap@zoo-station.student.utwent.nl>

	* Make-lang.in: fix typo in GPC_FLAGS_TO_PASS

	* preliminary support for ppc-mac-machten platform
	  Patches are in config/machten.

Sun May 25 23:10:39 1997 J.J. van der Heijden <janjaap@zoo-station.student.utwent.nl>

	* Gave up on seperate pre-compiler driver idea because of conflicts
	  with `--automake' feature. Will continue with a modified gcc.c,
	  present as p/gpc.c

	* gpc.c: Implement Pascal dialect specific behaviour if `gpc' is
	  invoked as `pc' (standard pascal), `epc' (extended pascal),
	  `bpc' (borland pascal).
	  Remove Pascal contribution to struct default_compilers[], this
	  is handled through "lang-specs.h"
	  Add `library' variable indicating that linking is requested, so
	  "-lgpc -lm" can be added to the command line options. This
	  eliminates the need for a special GPC link_command_spec and a
	  special GPC "specs" file on some platforms (read: DJGPP).
	  Add "-h" ("--help") option to show some info and most used options.

	* Make-lang.in: changes to build new compiler driver as `xgpc'
	  Install target adds links for dialect specific driver names.

	* gcc.c: Add empty fallback rules {".pas", "#Pascal"},
	  {".p", #Pascal"} rules to struct default_compilers[] to stop the
	  dreaded "linker input file unused since linking not done" message
	  for gcc drivers not supporting Pascal

Mon May 19 10:35:30 1997 J.J. van der Heijden <janjaap@zoo-station.student.utwent.nl>

	* gpc-lex.c: process_directive() fix typo: change strncmp() calls
	  to strcmp().

Sun 18 May 1997 21:12  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-common.c: build_pascal_op(): special treatment of concatenations
	  of string constants.

	* gpc-defs.h: PASCAL_TYPE_UNDISCRIMINATED_SCHEMA(),
	  PASCAL_TYPE_DISCRIMINATED_SCHEMA(): check for TYPE_MAIN_VARIANTS,
	  too, so pointers to pointers to undiscriminated schemata are
	  recognized.

	* gpc-lex.c: yylex(): case '^': only recognize `^A' through `^Z';
	  don't accept `^^', `^_', or monstrosities like `^;' or `^ '.

	* gpc-parse.y: RESULT: new token.
	  enable_caret: new rule, used in constant_definition (twice),
	  type_definition, array_type, object_section, variable_declaration,
	  packed_conformant_array_schema, unpacked_conformant_array_schema,
	  open_array, declaring_statement.
	  type_denoter: don't warn about missing string capacity in
	  `--borland-pascal' mode.
	  object_method heading, function_heading: let strings default to a
	  length of 255 and warn unless we are in `--borland-pascal' mode.
	  index_expression_list: warn about subarray access.
	  variable_or_function_access_no_id: implemented RESULT (Delphi).

	* gpc-typeck.c: convert_arguments(): accept chars passed to formal
	  string parameters.

	* gpc-util.c: check_identifier(): don't crash on errorneous constant
	  declarations.  prediscriminate_schema(): don't insist on VAR_DECLs
	  or PARM_DECLs but accept any pointer-valued expression.
	  build_rts_call(): case p_NEW: pre-discriminate schemata; use a
	  temporary variable for function-style calls.
	  init_any(): Only initialize discriminated strings.
	  KItable[]: implemented "Result".  declare_known_ids(): don't check
	  for GNU_PASCAL in flag_what_pascal; implemented Delphi types.

	* gpc.gperf: disabled `Abstract'.

Sun May 18 14:30:44 1997 J.J. van der Heijden <janjaap@zoo-station.student.utwent.nl>

	* Make-lang.in: add site.exp and site.bak to `distclean' target.
	  Add driver aliases PC_INSTALL_NAME, EPC_INSTALL_NAME,
	  BPC_INSTALL_NAME, PC_CROSS_NAME, EPC_CROSS_NAME and BPC_CROSS_NAME.
	  Used with (un)installation.

	* gcc.c: Move "automake" code back in from gpc.c.
	  This saves one pass through the gcc driver.

Thu 10 May 1997 21:12  Peter Gerwinski [670510] <peter.gerwinski@uni-essen.de>

	* gpc-parse.y: TYPEOF: new token.
	  assignment_or_call_statement: don't warn about typed const
	  assignments in --borland-pascal mode; warn about assignments to
	  TYPEOF.  variable_or_function_access_no_id:  implemented TYPEOF.

	* gpc-util.c: known_id[]: implemented TYPEOF.

	* Today is my 30th birthday.

Thu 8 May 1997 24:44  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-parse.y: factor: implement SIZEOF for objects.

Thu 8 May 1997 23:23  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-cccp.c: handle_pascal_directive(): allow more than just `+'
          or `-' after `$L'.
	  skip_if_group(): avoid "`{' within comment" warning.

	* gpc-decl.c: allocate_type_lang_specific(): `bzero' it.

	* gpc-lex.c: process_directive(): implement (*$L foo.o *) to link
	  `foo.o', (*$L foo.c *) to compile `foo.c' and link `foo.o' with
	  `--automake'.

	* gpc-module.c: store_tree(): store tree flags of VAR_DECL nodes.
	  load_tree(): load tree flags of VAR_DECL nodes.

	* gpc-parse.y: object_type: don't crash on errorneous parent objects.

Thu 8 May 1997 9:23  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* Makefile.in: GPCVERSION: display "yymmdd" instead of "2.0".
	  Explicit rules for files depending on gpc-defs.h

	* doc/gpc.texi: started to include a reference manual.

	* doc/how_to_contrib.texi: updated.

	* doc/reference.texi: new file.

	* gcc.c: main(): use name of first Pascal input file for AutoMake.

	* gpc-cccp.c: this_can_be_a_char_constant: new variable.
	  handle_directive(): distinguish line numbers and Borland-style
	  character constants.

	* gpc-decl.c: duplicate_decls(): allow different Units to export
	  the same identifier.  string_id, schema_id: new variables.
	  parmlist_tags_warning(): replace C warnings by Pascal error messages.
	  store_variant_tag_info(), get_variant_tag_info(): use TYPE_LANG_*
	  macros.  finish_struct(): do not warn about record declarations in
	  parameter lists (which occur with schemata).

	* gpc-defs.h: E_O_B_D_PASCAL: new macrochen.
	  IS_OBJECT_TYPE(): replaced by PASCAL_OBJECT_TYPE().
	  PASCAL_TYPE_STRING() ,PASCAL_TYPE_SCHEMA(),
	  PASCAL_TYPE_OBJECT(): rewritten use the TYPE_LANG_SPECIFIC.
	  PASCAL_TYPE_DISCRIMINATED_SCHEMA(),
	  PASCAL_TYPE_UNDISCRIMINATED_SCHEMA(),
	  PASCAL_TYPE_DISCRIMINATED_STRING(),
	  PASCAL_TYPE_UNDISCRIMINATED_STRING(), TYPE_LANG_*, PASCAL_LANG_*:
	  new macros.  PASCAL_TREE_DISCRIMINANTS(): moved from tree 4 to tree 3.
	  MAYBE_CALL_FUNCTION(): handle procedural types.
	  PASCAL_PROCEDURAL_VARIABLE(): new macro.

	* gpc-lex.c: lex_const_equal, lex_caret: new variables.
	  yylex(): case '^': new case; case '=': handle CONST_EQUAL.

	* gpc-module.c: store_tree() and load_tree(): case RECORD_TYPE: store
	  and load TYPE_LANG_SPECIFIC.

	* gpc-parse.y: CARET, CONST_EQUAL: new tokens.
	  new_procedural_type, procedural_type_formal_parameter,
	  procedural_type_formal_parameter_list, expression_list,
	  optional_procedural_type_formal_parameter_list: new rules.
	  optional_par_type_list, comma_or_semi: rules removed (handled in
	  procedural_typ_formal_parameter).
	  Made comments about unimplemented ISO initializers more visible.
	  typename: recognize the name of he object being defined in
	  parameter lists of method of that object.
	  Warnings improved.
	  constant_definition, absolute_or_value_specification: use CONST_EQUAL
	  instead of '=' to eliminate a shift/reduce conflict.
	  type_denoter_1, pointer_domain_type: include new_procedural_type.
	  pointer_char: recognize CARET.
	  optional_actual_schema_discriminants: allow expression lists.
	  absolute_or_value_specification: mark `absolute' target as TREE_USED.
	  constant_definition, type_definition, array_type, object_section,
	  variable_declaration, packed_conformant_array_schema,
	  unpacked_conformant_array_schema, open_array: enable use of CARET.
	  declaring_statement: enable BP_ABSOLUTE earlier.
	  variable_or_function_access,
	  variable_or_function_access_maybe_assignment,
	  assignment_or_call_statement: handle procedural variables.
	  variable_or_function_access,
	  variable_or_function_access_maybe_assignment: use schema_id.
	  rts_proc_onepar: p_PAGE moved to standard_function_statement.
	  factor: removed superfluous maybe_call_function; undo implicit
	  dereferences of schemata with `^', `SizeOf', and `AlignOf'.
	  variable_or_function_access_no_id: allow schema discriminant access;
	  use TYPE_LANG_BASE to find base type of objects.

	* ChangeLog: take a break while writing this.  Later ...

	* gpc-typeck.c: comp_object_pointer_types() renamed to
	  comp_object_or_schema_pointer_types() and generalized.
	  Removed obsolete code.
	  convert_arguments(): handle schemata.
	  build_discriminated_schema_type(): restore type template;
	  store values in new type; use TYPE_LANG_SPECIFIC; preserve flags.
	  convert_for_assignment(): handle procedural variables.

	* gpc-util.c: string_id, schema_id: new variables.
	  build_pascal_string_type(): use string_id and TYPE_LANG_SPECIFIC.
	  build_schema_type(): use schema_id and TYPE_LANG_SPECIFIC.
	  number_of_schema_discriminants(): re-written to handle general case.
	  is_schema_discriminant_access(), 
	  prediscriminate_schema(): new functions.
	  call_method(), store_object_name(), inherit(), construct_vmt():
	  use TYPE_LANG_SPECIFIC accessor macros.
	  push_self_parameter(): don't crash when name of object unknown.
	  construct_vmt(): mark VMT as TREE_USED.
	  new_string_by_model(): don't make it constant.
	  declare_vars(): pre-discriminate string and schema pointer variables.
	  handle_formal_param_list(): handle undiscriminated string and
	  schema `var' parameters (pre-discriminate them).
	  build_rts_call(): case p_NEW: handle strings and schemata correctly;
	  case p_PAGE: accept zero or one parameter.
	  init_any(): initialize schemata.
	  maybe_call_function(): handle procedural variables.
	  initialize_world(): initialize TYPE_LANG_BASE
	  of string_schema_proto_type.

	* stor-layout.c: size_volatile: new variable.
	  variable-size(): optionally don't create SAVE_EXPR nodes.

Tue Apr 29 16:59:34 1997 J.J. van der Heijden <janjaap@zoo-station.student.utwente.nl>

	* Reworked GPC directory layout. GPC lives in a `p/' subdirectory of
	  the gcc distribution. Compiling GPC is now part of the GCC build
	  proces. Run GCC `configure' as usual, then `make LANGUAGES=pascal'
	  to build GPC. 

	  1) GPC had modified copies of some files of the GNU back end (GBE)
	     in it's directory. The changes have been merged into GCC
	     (surrounded by #ifdef GPC .. endif) and are distributed as
	     `p/diffs/gcc-2.7.2.1.diff'. Affected files are:

		convert.c, dbxout.c, expr.c, fold-const.c, function.c,
		optabs.c, stor-layout.c and toplev.c

	     These files have been deleted from the GPC directory.

	  2) A number of files that implement the Pascal language were
	     derived from C originals. These are gpc-*.c However, a number
	     of new, GPC sepecific files were also named gpc-*. These have
	     been renamed for clarity:
		gpc-gperf.c -> hash.h
		gpc-parse.y -> parse.y
		gpc-options.h -> lang-options.h		
		gpc-util.c -> util.c

	* gpc-common.c: #include "parse.h" instead of "gpc-parse.h".

	* util.c: ditto.

	* gpc-lex.c: #include "parse.h" instead of "gpc-parse.h", and
	  change #include "gpc-gperf.c" to "hash.h"

	* Make-lang.in: new file (top level makefile fragment for GPC)

	* config-lang.in: new file (top level configure fragment for GPC)

	* version.c: Complete rewrite.

	* Makefile.in: Complete rewrite.

Sun 20 Apr 1997 20:10  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-decl.c: c_decode_option(): "-fdebug_tree": debug_tree the
	  meaning, not the identifier node.

	* gpc-defs.h: PASCAL_DECL_FIXUPLIST: new macro.

	* gpc-module.c: export_interface(), module_export_clause(): removed
	  superfluous code.  module_export_range(): re-written.
	  module_repair_exported_ranges(): new function.

	* gpc-parse.y: optional_capacity_expression: renamed to
	  optional_actual_schema_discriminants; removed superfluous code;
	  convert string constants of length 1 to char constants.
	  optional_schema_discriminants: renamed to
	  optional_formal_schema_discriminants.
	  type_definition: don't lay out bogus types (schema type templates);
	  don't release schema discriminant identifiers here, but let
	  build_schema_type do it.
	  type_denoter: lay out schemata.
	  subrange_type: take care of schema discriminants.  This affects
	  array indices simultaneously.
	  case_default: corrected wrong warning.
	  assignment_or_call_statement: handle char subranges.
	  variable_or_function_access_maybe_assignment: handle schemata.
	  variable_or_function_access: handle schemata.
	  rest_of_unit, rest_of_module: handle exported ranges.

	* gpc-typeck.c: convert_arguments(): handle string values given to
	  formal char parameters; handle char subranges; unused variable
	  `val_is_char' removed.  Corrected typo: like in German, it's
	  "schemata", not "schemas".  (Sorry! #-)  grok_discriminant(),
	  re_layout_type(), build_discriminated_schema_type(): new functions.

	* gpc-util.c: assign_string(): handle char subranges.
	  is_of_string_type(): corrected wrong warning.
	  maybe_schema_discriminant(): new function.
	  build_schema_type(): corrected wrong order of arguments; #-(
	  re-wrote function more than once.
	  build_pascal_array_ref(): handle strings being chars.
	  rts-write(): handle subranges; `Byte', for instance, is a subrange
	  of `Integer' and can be `writeln'ed now. :-)
	  check_for_control_variable(): suppress redundant error messages.

Sat 19 Apr 1997  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* configure.bat: gcc-2721, not gcc-272.

	* gpc-decl.c: c_decode_option(): new option `-fdebug-tree'.

	* gpc-defs.h: ISO_PASCAL, PASCAL_TYPE_SCHEMA, PASCAL_TREE_DISCRIMINANT:
	  new macros.  Cosmetical change: Flags put in order, new comments.

	* gpc-options.h: new option `-fdebug-tree'.

	* gpc-parse.y: discriminant_specification,
	  discriminant_specification_list, optional_schema_discriminants:
	  new rules.  type_definition, type_denoter: handle schema definitions.

	* gpc-util.c: Cosmetical change: added `^L' structure to the file,
	  sorted the functions, etc.  The diff is unreadable now, but the
	  source itself is more readable than before.  (I hope at least.)
	  build_schema_type(): new function.

Fri 18 Apr 1997 14:03  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-convert.c: convert_to_boolean(): convert all ordinal types.

	* gpc-decl.c: grokdeclarator(): preserve signedness of bit-fields,
	  accept all ordinal types as bit-fields, do not convert them to
	  Integer.

	* gpc-defs.h: PASCAL_TYPE_PACKED(): don't eat another "LANG" flag.

	* gpc-lex.c: process_directive(): warn about `--pedantic' combined
	  with `--extended-syntax'.  yylex(): IDENTIFIER: don't warn
	  about underscores with `--borland-pascal'.

	* gpc-module.c: load_tree(): case ARRAY_TYPE:  don't spoil flags.

	* gpc-parse.y: new_structured_type: with `PACKED', temporarily flip
	  `flag_pack_struct'.  or_else: warn about `OR ELSE'.  and_then:
	  warn about `AND THEN'.

	* gpc-typeck.c: lookup_field(): exclude superfluous code.
	  convert_arguments(): "VAR parameters don't require a complete type":
	  check TYPE, not VAL (bug fix), but don't crash if TYPE == NULL_TREE.
	  parser_build_binary_op(): not used -> removed.
	  build_binary_op():
	  comparisions return Boolean expressions.
	  lvalue_p(): BIT_FIELD_REFs (components of packed records) are
	  valid lvalues.
	  build_modify_expr(): don't handle C compound and conditional
	  expressions; handle assignments to packed array components.

	* gpc-util.c: count_bits(): new function.
	  grok_packed(): handle packed arrays.  handle_formal_param_list():
	  preserve volatility of `protected' parameters.
	  p_grokfields: handle packed records.
	  rts_write(): convert String lengths to Integer type.
	  build_pascal_range_type(): new function; currently not used.
	  build_pascal_array_ref(): handle packed arrays.
	  
Sat 12 Apr 1997 22:24  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gcc.c: standard_compilers[]: always pass `-famtmpfile', not
	  only with `-fautomake'.

	* gpc-common.c: build_pascal_op(): allow pointers only with the
	  `=' or `<>' operator unless `--extended-syntax' is on.

	* gpc-decl.c: c_decode_option(): options put in order.

	* gpc-options.h: options put in order, filled in missing
	  `--no-foobar' options.

	* gpc-defs.h: S1_E_O_G_PASCAL: new macrochen.  (* German.;*)

	* gpc-lex.c: process_directive(): warn about unknown options.
	  skip_white_space(): preserve case inside strings; remove the `"'.

	* gpc-typeck.c: build_array_ref(): allow `CString' indexing.
	  convert_arguments(): Strings: don't warn about missing `packed'
	  here.  (Let's hope that really in all cases a warning will be
	  given later.)

	* gpc-util.c: cstring_informed, ptrarith_informed: new variables.
	  handle_formal_conf_array_param_list(): warn.
	  build_rts_call(): case p_SUCC, p_PRED: warn about 2. argument;
	  accept pointers if `--extended-syntax' is on;
	  case p_INC, p_DEC: accept pointers if `--extended-syntax' is on.
	  build_pascal_array_ref(): accept `CString' if `--extended-syntax'
	  is on.  check_for_control_variable(): check for ordinal type;
	  accept pointers if `--extended-syntax' is on.
	  invalid_pascal_initializer(): accept string constants as
	  initializers for `CString' variables if `--extended-syntax' is on.

Fri 11 Apr 1997 22:24  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-util.c: is_string_type(), is_of_string_type(): additional
	  parameter whether we should warn about a missing `packed';
	  prototype in gpc-defs.h and callers changed.
	  is_of_string_type(): only warn about missing `packed' - no error.
	  error_level(): function removed.  Cosmetical changes.
	  check_for_control_variable(): new function.
	  declare_kwown_ids(): `CString' == `PChar' == pointer to Char.

	* gpc-defs.h: main_program_name: new external declaration.

	* gpc-common.c: build_pascal_op(): accept `<' and '>' with sets.

	* gpc-parse.y: for_statement: check control variable for ISO
	  compliance; check for strings being chars; implemented set
	  member iteration.  boolean_expression: check whether it is
	  really of Boolean type.  Cosmetical changes. 

	* gpc-typeck.c: convert_arguments(): accept variants of `CString'.
	  build_conditional_expr(): `pedwarn' about array comparision.
	  convert_for_assignment(): `0' is not equivalent to `Nil'.

Wed 9 Apr 1997 22:52  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gcc.c: new spec "GPC1_SPEC" in the `specs' file is inserted
	  by `%3'.  standard_compilers[]: dialect-specific options are
	  handled in gpc-decl.c now rather than here.

	* gpc-common.c: asm_combine_strings(): new function.

	* gpc-decl.c: flag_short_circuit: now on by default.
	  c_decode_option: new options concerning the behaviour of `write';
	  handle dialect-specific dependencies; allow `:' and `='.

	* gpc-defs.h: *_OUT_WIDTH constants moved here from rts/rts.h.
	  Prototypes for new functions; external declarations for new
	  variables.

	* gpc.gperf: "ASM" changed to "ASM_KEYWORD".

	* gpc-lex.c: process_directive(), skip_white_space(): Implemented
	  "long" compiler directives by calling lang_decode_option for them.
	  belongs_to_directive(): new function.

	* gpc-module.c: load_tree(): case FUNCTION_DECL: avoid a warning.

	* gpc-options.h: new options; other options have lost their `:'s.

	* gpc-parse.y: "ASM" changed to "ASM_KEYWORD".
	  object_section: allow methods to be static,
	  e.g. in implementation Modules.
	  asm_statement: insert "\n\t" between combined strings.
	  asm_operand: also accept Chars.

	* gpc-typeck.c: convert_arguments(): bug with Strings fixed.
	  digest_init(): accept non-constant array initialization.

	* gpc-util.c: int_out_width, real_out_width, bool_out_width:
	  new variables.  handle_formal_conf_array_param_list():
	  pass value conformant array parameters by reference.
	  handle_formal_param_list(): same for open arrays.
	  rts_write(): accept Char constants as `write' parameters;
	  pass default field widths for Integers, Booleans, and Reals;
	  also handle Reals without leading blank and Strings without
	  clipping.  call_method(): resolve reference to `Self'.
	  output_real_main_program(): don't pass the language dialect
	  to the run time system; instead, the arguments passed to `write'
	  are different for different dialects.

	* rts/Makefile.in: `.c' files depend on $(HS).

	* rts/rts-misc.c: gpc_flag_what_pascal: removed.

	* rts/rts-string.c: _p_writestr(): case P_INT: default field
	  width is zero; case P_REAL: leading blank is optional, and
	  don't derive a Real's default number of digits from default
	  field width; case P_FIX_STRING: clipping is optional; case
	  P_BOOL: default field width is zero.

	* rts/rts-types.h: P_REAL_NOBLANK, P_FIX_STRING_NOCLIP, etc.: new
	  `write' argument specifiers.

	* rts/rts-write.c: _p_write(): case P_INT, P_INT2: default
	  field width is zero; case P_FIX_INT, P_REAL, P_CHAR, P_BOOLEAN:
	  don't suppress output for a field width of zero; case P_REAL,
	  etc.: leading blank is optional, and don't derive a Real's
	  default number of digits from default field width; case
	  P_FIX_STRING: clipping is optional; case P_BOOL: default field
	  width is zero.

	* rts/rts.h: INT_OUT_WIDTH, REAL_OUT_WIDTH, BOOL_OUT_WIDTH: moved
	  to gpc-defs.h because they are passed to `write' now.
	  FALSE_str, TRUE_str, REAL_MIN_WIDTH: now redefinable at
	  compile-time.  REAL_DEFAULT_DIGITS: new constant.  Language
	  dialect constants removed.

	* toplev.c: compile_file(): included 4-line bug fix by Nick Burrett
	  <nickb@digibank.demon.co.uk>: open rtl dump file.

Wed 2 Apr 1997 15:39  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-common.c: build_pascal_op(): check for String constants
	  being Chars.

	* rts/rts-string.c: _p_string(): extract Chars with "va_arg (p, int)"
	  since "va_arg (p, char)" calls abort() on FreeBSD.

	* toplev.c: GPC-specific changes surrounded by `#ifdef GPC';
	  "invalid option ..." messages changed back to "Invalid option ..."
	  because these are not following a file name (see the GNU coding
	  standard to complete the confusion).

Tue 1 Apr 1997 15:39  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-util.c: number_of_schema_discriminants(): check the
	  TYPE_MAIN_VARIANT, not only the type.

Tue 1 Apr 1997 12:39  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* doc/invoke.texi: document `-pedantic-errors' correctly.

	* gpc-common.c: pascal_type_variant(): change_main_variant returns
	  void, not the type.

	* gpc-defs.h: PASCAL_TYPE_VAL_REF_PARM: new flag.

	* gpc.gperf: enable `Asm'.

	* gpc-module.c: export_interface(): implemented export renaming.
	  store_tree(), load_tree(): store and load TYPE_MAIN_VARIANTs.
	  load_tree(): case IDENTIFIER_NODE: load the IDENTIFIER_LIMBO_VALUE
	  rather than the IDENTIFIER_LOCAL_VALUE.
	  create_gpi_files(), load_gpi_file(): implement export renaming.
	  load_gpm_file(), import_interface(): move IDENTIFIER_LIMBO_VALUEs to
	  IDENTIFIER_LOCAL_VALUEs.  Necessary for import with `only'.
	  import_interace(): implement import renaming and `only' import.
	  module_export_clause(): implement `protected' export.

	* gpc-parse.y: subrange_type: accept character constants.
	  formal_parameter: make small CONST parameters passed by value.

	* gpc-typeck.c: default_conversion(): ARRAY_TYPE: don't rely on
	  TYPE_POINTER_TO; call `build_pointer_type' instead.
	  convert_arguments(): handle value parameters passed by reference
	  (currently only String Schemas) and constant values passed to a
	  `Const' parameter; unsuccessful try to implement optional parameters.
	  readonly_warning(): check TREE_READONLY, too.

	* gpc-util.c: cosmetical changes;
	  handle_formal_param_list(): pass `string_schema_proto_type's by
	  reference.  invalid_pascal_initializer(): fix sets of unknown type.

	* setop.c: store_set_constructor(): initialize empty sets correctly.

	* toplev.c: don't let `-pedantic-errors' imply `-pedantic'.

Sat 8 Mar 1997 18:05  Peter Gerwinski <peter.gerwinski@uni-essen.de> 

	* Makefile.in: recompile library if its source was changed.

	* gpc-parse.y: for_statement: don't require `identifier's;
	  accept any `variable_or_function_access'.

	* gpc-util.c: output_real_main_program(): initialize RTS variable
	  `gpc_flag_what_pascal' with the value of `flag_what_pascal'.

	* rts/Makefile.in: don't cry for `rts-machine.h'.  It does not exist,
	  and it is not needed anyway.

	* rts/rts-misc.c: gpc_flag_what_pascal: new variable.  Holds the
	  value of `flag_what_pascal' when the main program was compiled.

	* rts/rts-string.c: _p_writestr(): case P_STRING, case P_FIX_STRING:
	  handle all cases of string lengths and field widths.

	* rts/rts-write.c: _p_write(): case P_STRING, case P_FIX_STRING:
	  handle all cases of string lengths and field widths.

	* rts/rts.h: *_OUT_WIDTH: let fields default to left-justified output.
	  STANDARD_PASCAL_LEVEL_0 .. ANY_PASCAL, STANDARD_PASCAL .. SC_G_PASCAL:
	  copied here from gpc-defs.h.

Thu 27 Feb 1997 11:54  Peter Gerwinski <peter.gerwinski@uni-essen.de> 

	* gpc-module.c: store_tree(): case IDENTIFIER_NODE, and load_tree():
	  case IDENTIFIER_NODE: not IDENTIFIER_GLOBAL_VALUES must be carried
	  through the GPI file, but IDENTIFIER_LOCAL_VALUES.

	* digest_init(): CHAR_TYPEs are scalar types, too.

Wed 26 Feb 1997 23:29  Peter Gerwinski <peter.gerwinski@uni-essen.de> 

	* rts/rts-write.c: BSD does not like my FWRITE macro ...

	* gpc-util.c: invalid_pascal_initializer: don't assume all Strings
	  having capacity and length 2 ...

Wed 26 Feb 1997 21:20  Peter Gerwinski <peter.gerwinski@uni-essen.de> 

	* Some fixes in the doc and in the comments ...

	* gcc.c: standard_compilers[]: "pas" changed to "pascal".

	* gpc-decl.c: pascal_global_bindings_p(): new function.
	  top_level_p(): take one more level into account when compiling a
          module.  redeclaration_error_message(): recognize Pascal's top level.
	  grokdeclarator(): /* It's a variable.  */: dito.

	* gpc-defs.h: prototypes for new functions.

	* gpc-module.c: finalize_module(), handle_pending_decls():
	  new functions.  module_must_be_recompiled(): do not recompile the
	  current file.  store_tree(): case IDENTIFIER_NODE: take into account
	  that modules are between pushlevel ... poplevel now; case
	  FUNCTION_TYPE: store flags last; case FUNCTION_DECL: store flags.
	  load_tree(): case FUNCTION_DECL: retrieve flags (for methods).
	  create_gpi_files(): also create a GPM file.
	  load_gpm_file(): new function.

	* gpc-parse.y: comments updated.  subrange_type: integer types match.
	  object_section: recognize Pascal's top level.
	  ISO and Borland initializers re-written:  simple_initializer,
	  structured_initializer, initializer_list: rules replaced by
	  structured_iso_initializer, structured_borland_initializer,
	  iso_initializer_list, borland_initializer_list,
	  iso_initializer_expression, borland_initializer_expression.
	  The 72 shift/reduce conflicts are resolved. :-)
	  address_operator: warn about `@'.
	  set_constructor_element_list: removed error recovery rule which
	  crashed with ISO initializers.
	  module_declaration: push and pop levels around Modules and Units,
	  and finalize modules after use.
	  rest_of_unit, rest_of_module: handle pending decls through
	  the function rather than manually.
	  rest_of_unit: current_module is now set to NULL_TREE in
	  module_declaration.
	  rest_of_module: read GPM file.

	* gpc-typeck.c: output_init_element(), process_init_element():
	  STRING_CSTs can initialize arrays of Chars, not of Integers.

	* gpc-util.c: handle_formal_param_list():  first check for `Var',
	  then for `Protected' to make `Const' work.
	  build_pascal_array_ref():  don't crash when an array TYPE is
	  given rather than an array variable ...
	  invalid_pascal_initializer():  initialize Strings correctly.

	* toplev.c: rest_of_decl_compilation():  in Pascal, don't wait
	  till the end to output variables.

Sun 23 Feb 1997 20:58  Peter Gerwinski <peter.gerwinski@uni-essen.de> 

	* gpc-parse.y: structured_initializer: allow "[ ... ]" as an
	  alternative to "( ... )".  This causes 72 shift/reduce conflicts,
	  thus more work is needed on this ... :-(

	* gpc-util.c: invalid_pascal_initializer(): warn about ignored
	  TREE_PURPOSEs.  construct_set(): subrange types have no TYPE_DOMAIN.

Sat 22 Feb 1997 20:58  Peter Gerwinski <peter.gerwinski@uni-essen.de> 

	* gpc-util.c: un_initialize_block(): don't initialize
	  `absolute' variables.

	* gpc-defs.h: PEDANTIC(): always warn if --pedantic is given.

	* gpc-parse.y: address_operator: warn about `&'.

	* gcc.c: standard_compilers[]: default to --short-circuit unless
	  ISO compliance is requested.

	* documentation: document --standard-pascal etc., update bug list,
	  and so on.

Sat 22 Feb 1997 17:21  Peter Gerwinski <peter.gerwinski@uni-essen.de> 

	* gpc-parse.y: import_specification: allow an optional Unit
	  filename after IN (Delphi extension).  optional_unit_filename:
	  new rule.

	* gpc-module.c: gpi_open(): new parameter `source'.
	  load_gpi_file(): new parameter `source'. 
	  import_interface(): new parameter `unit_filename'.
	  Callers and prototypes in gpc-defs.h changed.
	  Handle the case that the name of a Unit (Module) and the source
	  file differ (Delphi extension).

Fri 21 Feb 1997 17:21  Peter Gerwinski <peter.gerwinski@uni-essen.de> 

	* gpc-module.c: store_tree(): case FUNCTION_DECL: do not store
	  TYPE_SIZE.  load_tree(): case FUNCTION_DECL: construct it with
	  build_function_type rather than doing the layout manually.

	* gpc-util.c: construct_set_member(): string constants may be chars.
	  construct_set(): handle type nodes with or without TYPE_DOMAIN.
	  KItable[]: re-animate "Index".  invalid_pascal_initializer():
	  convert array constants to String Schemas.

Wed 19 Feb 1997 19:02  Peter Gerwinski <peter.gerwinski@uni-essen.de> 

	* gpc-util.c: string_may_be_char(): new function.  Prototype in
	  gpc-defs.h.  build_rts_call(): convert string constants to char
	  constants for rts functions like `ord' which require ordinal
	  values.  construct_vmt(): pass initializer as a TREE_LIST.
	  invalid_pascal_initializer(), build_pascal_initializer():
	  require a TREE_LIST.

	* gpc-decl.c: init_decl_processing(): store signedness of
	  `char_type_node' in its TREE_UNSIGNED flag.

	* gpc-parse.y: one_case_constant, case_statement: check for
	  strings being chars.  simple_initializer: return a TREE_LIST.

	* gpc-typeck.c: c_expand_start_case(): give Pascal error messages.
	  convert_arguments(): treat string constants assigned to chars.

	* test/borland/openarr.pas: initialize `array of char' with a
	  string constant.  (It works now! :)

Sat 15 Feb 1997 20:42  Peter Gerwinski <peter.gerwinski@uni-essen.de> 

	* Documentation: "Kahlschlag".  Removed C-related stuff.

Sat 15 Feb 1997 18:33  Peter Gerwinski <peter.gerwinski@uni-essen.de> 

	* gpc-options.h: new options -fborland-char-constants and
	  -fno-borland-char-constants.

	* gpc-decl.c: flag_borland_char_constants: new variable;
	  external declaration in gpc-defs.h.  Handle new options
	  -fborland-char-constants and -fno-borland-char-constants.

	* gpc-lex.c: check_newline(): handle `#' character constants
	  at the beginning of a line at the expense of losing
	  `#<number>' line numbers without a blank between the `#'
	  and the number.

	* gcc.c: default_compilers[]: default is to allow `#' character
	  constants except with -fstandard-pascal, -fstandard-pascal-level0,
	  -fextended-pascal, or -fobject-pascal.

Sat 15 Feb 1997 16:07  Peter Gerwinski <peter.gerwinski@uni-essen.de> 

	* gpc-lex.c: yylex(): new case `#' to handle Borland-style
	  `#42' character constants.

	* gpc-parse.y: moved CHAR_LITERAL from constant_literal to
	  string_constant to allow strings like 'Foo'#$42'ar'.

Sat 15 Feb 1997 14:00  Peter Gerwinski <peter.gerwinski@uni-essen.de> 

	* gpc-parse.y: parameter_form: String schemas are now a special
	  case of `typename'.

	* gpc-util.c: declared_string_capacity(): new function.
	  Prototype in gpc-defs.h.

Fri 14 Feb 1997 19:02  Peter Gerwinski <peter.gerwinski@uni-essen.de> 

	* gpc-parse.y: type_denoter: treat String schemas here rather
	  than separately. new_string_type: rule removed.  Token
	  STRING_SCHEMA replaced by STRING_KEYWORD which is not actually
	  used.  This is a preparation to implement the general schema
	  type.

Fri 14 Feb 1997 12:07  Peter Gerwinski <peter.gerwinski@uni-essen.de> 

	* gpc-decl.c: nested_comments: default is 1.
	  c_decode_option(): new option -fno-nested-comments.

	* gpc-options.h: new option -fno-nested-comments.

	* gpc-cccp.c: no_nested_comments: default is 0.
	  Option `-nestedcomments' changed to `-nonestedcomments'.

	* gcc.c: default_compilers[]: default is to allow nested comments,
	  except with -fstandard-pascal, -fstandard-pascal-level0, or
	  -fextended-pascal.

	* Makefile.in: gpc-cccp.o is dependent of gpc-cccp.c (*{!%@::}*),
	  and toplev.o is dependent of gpc-options.h.

Thu 13 Feb 1997 12:09  Peter Gerwinski <peter.gerwinski@uni-essen.de> 

	"Cleaning up GPC":  Make clear from which standard which feature
	is, and allow the command line to specify which standard to use.
	`--extended-pascal' should yield a true Extended Pascal compiler
	(not yet reached); `--borland-pascal' should emulate a Borland
	compatible Pascal compiler (not yet reached either).

	* Most files: `warning's which should trigger errors with
	  --pedantic-errors changed to `pedwarn'.  Search for `pedwarn'.

	* Most files: trigger pedantic `pedwarn's only if the dialect in
	  which the construct would be legal is not specified in the
	  command line.  New warnings about incompatibilities to Borland
	  Pascal.  Some instances of "ISO Pascal does not allow this or that"
	  corrected to "ISO 7185 Pascal does not allow this or that".  Search
	  for `pedwarn', and especially look out for `PEDANTIC'.

	* gpc-defs.h: constants for Pascal dialects and combinations of
	  them.  Search for `STANDARD_PASCAL'.  PEDANTIC: new macro.

	* gpc-decl.c, gpc-defs.h: new option `-fstandard-pascal-level-0'.

	* gpc-decl.c: c_decode_option(): new treatment of `-fXXX-pascal'
	  options.

	* gpc.gperf: list of reserved words heavily modified to hold
	  `unsigned long iclass' flags.

	* gpc-lex.c: which_language(): rewritten.  warning_list_languages():
	  new function.  warn_about_keyword_redeclaration(): new function
	  (called in gpc-parse.y).  enable_keyword(): take the value of
	  flag_what_pascal into account.  init_language_specification():
	  new function.  yylex(): recognition of reserved words rewritten.

	* gpc-parse.y: new_identifier_1: new rule.  new_identifer: rewritten.
	  Lots of new tokens.

	* gpc-util.c: KItable [], declare_known_ids(): rewritten.  Define
	  more types and other identifiers when the command line allows it.
	  initialize_world(): call `init_language_specification'.

	* Makefile.in: GPERF_FLAGS: added -G.

Mon 10 Feb 1997 21:14  Peter Gerwinski <peter.gerwinski@uni-essen.de> 

	* gpc-cccp.c, gpc-common.c, gpc-decl.c, gpc-lex.c, gpc-module.c,
	  gpc-parse.y, gpc-typeck.c, gpc-util.c, toplev.c: changed text
	  of warning and error messages to comply to the GNU guidelines.

Fri 7 Feb 1997 27:20  Peter Gerwinski <peter.gerwinski@uni-essen.de> 

	* gpc-decl.c: grok_directive(): return the declaration node.
	  gpc-defs.h, gpc-parse.y: object_method_heading and
	  gpc-module.c: load_tree(): case FUNCTION_DECL adapted.

	* gpc-parse.y: absolute_or_value_specification_1: removed.

	* gpc-module.c: load_tree(): case FUNCTION_DECL: copy the node
	  `t' before changing its DECL_NAME.

Fri 7 Feb 1997 20:35  Peter Gerwinski <peter.gerwinski@uni-essen.de> 

	* gpc-parse.y: factor: call suspend_function_calls() after
	  address_operator.  Otherwise you cannot take addresses of
	  functions.

	* gpc-util.c: allow_function_calls(): new function.  At the
	  moment, it isn't used anywhere.  gpc-defs.h adapted.

Fri 7 Feb 1997 19:27  Peter Gerwinski <peter.gerwinski@uni-essen.de> 

	* gpc-util.c: const_string_schema_proto_type: new variable.
	  initialize_world(): initialize it.  gpc-defs.h adapted.

	* gpc-typeck.c: convert_arguments(): check TYPE_MAIN_VARIANT (type)
	  against string_schema_proto_type, not just type.

	* gpc-parse.y: declaring_statement: handle ABSOLUTE variables.
	  I am sure this has been there already!

Fri 7 Feb 1997 18:10  Peter Gerwinski <peter.gerwinski@uni-essen.de> 

	* gpc-nodes.def: new file; extracted from gpc-module.c.
	  Also support the nodes in gpc-util.c.  Makefile.in adapted.

Thu 6 Feb 1997 26:10  Peter Gerwinski <peter.gerwinski@uni-essen.de> 

	* gpc-typeck.c: construct_set(): catch errors when we know that we 
	  are constructing a set which does not fit in the target.

Thu 6 Feb 1997 24:15  Peter Gerwinski <peter.gerwinski@uni-essen.de> 

	* gpc-convert.c: convert_sets(): really convert something.

	* gpc-typeck.c: comptypes(): all sets are compatible to the empty set.
	  convert_for_assignment(): trigger conversion of sets if necessary.
	  digest_init(): check sets, too.

Thu 6 Feb 1997 16:44  Peter Gerwinski <peter.gerwinski@uni-essen.de> 

	* gpc-util.c: declare_vars(): do variable initialization in two
	  steps: (1) check for a type mismatch and (2) build the constructor
	  between start_decl and finish_decl.
	  construct_vmt(): calls to build_pascal_initializer() removed.
	  invalid_pascal_initializer(), process_init_list(): new functions.
	  build_pascal_initializer(): rewritten from scratch.

	* gpc-defs.h: prototype for new function invalid_pascal_initializer().

	* gpc-parse.y: calls to build_pascal_initializer() removed.

Wed 5 Feb 1997 24:35  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-util.c: construct_vmt(): use NEGATE_EXPR instead of
	  BIT_NOT_EXPR.  This will make runtime checks easier, one day.

Wed 5 Feb 1997 19:50  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* toplev.c: main(): new option `-dY'.  gpc-lex.c: yylex():
	  implement `-dY' to copy finput to stderr after reading each
	  token.  (Intended to help isolating compiler crashes.)

	* doc/invoke.texi: document `-dY'.

Sat 25 Jan 1997 23:30  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-parse.y: standard_function_statement: rts_file_open:
	  check second parameter against `null_pointer_node', not
	  against NULL_TREE.

	* rts/rts-write.c: _p_write(): Patched for MSDOS to allow
	  `conio' operations.

	* rts/rts-bind.c: _p_bind(): Patched for MSDOS to allow to
	  access devices.

Thu 26 Dec 1996 18:00  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* Changed all documentation files to comply to the FSF conventions
	  for referring to operating systems.  Removed the files `FAQ',
	  `FPKvsGNU', and `doc/fpk_vs_gnu.texi' for the same reason.
	
Thu 12 Dec 1996 00:07:10 MET  Peter Gerwinski <peter.gerwinski@uni-essen.de>
             Jan-Jaap van der Heijden <j.j.vanderheijden@student.utwente.nl>
                                                 Jukka Virtanen <jtv@hut.fi>

	* Release of GNU Pascal version 2.0

Mon Nov 18 21:15:03 1996 Jan-Jaap van der Heijden <j.j.vanderheijden@student.utwente.nl>

	* config/msdos/gpc-version.c:
	  Deleted. (automatically built now, like in unix)

	* config/msdos/Makefile:
	  updated `clean' target to delete *.exe too

Mon 18 Nov 1996 19:47  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-parse.y: string_constant: new rule to convert CHAR_LITERALS
	  into STRING_LITERALS for `asmname' specifications.
	  storage_qualifier, directive: use string_constant instead of
	  STRING_LITERAL.
	  storage_qualifier: include D_EXTERNAL and D_ASMNAME.
	  @@@ This must be re-written in a cleaner way.

	* test/borland_pascal/asmnames.pas: Check for `asmname' variables, too.

Sun 17 Nov 1996 20:06  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* Promoted to version 2.0, updated NEWS, etc.

	* old_doc: removed.

	* test/misc/txtfile.pas, test/misc/binfile.pas: remove
	  " + chr ( 0 )" workaround in procedure assign.

Sun 17 Nov 1996 2:52  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* config/emx/*: use the DJGPP source distribution with 8.3 file
	  names, so we do not need separate makefiles for FAT and HPFS
	  partitions.  Scripts and documentation updated.

	* config/emx/rts-conf.h: #undef'ed HAVE_SETLINEBUF and
	  HAVE_STRCASECMP.

Tue Nov 12 22:15:03 1996 Jan-Jaap van der Heijden <j.j.vanderheijden@student.utwente.nl>

	* Makefile.in, doc/Makefile.in:
	  changes to info, info-clean, clean, distclean, info-distclean,
	  install, install-info and bindist targets. Now all of them work
	  when GPC isn't built in the source dir.

	* configure: rebuilt

	* configure.in, aclocal.m4: move BSD RTS selection to aclocal.m4,
	  select BSD_RTS only if BSD is detected and "--with-bsdrts" switch
	  is used.

	* config/cygwin32/README.beta16:
	  Updated information for gcc-2.7.2.1

	* config/cygwin32/gcc-2.7.2.i386-cygwin32-b16.diff:
	  replaced with gcc-2.7.2.1.i386-cygwin32-b16.diff

	* config/msdos/INSTALL.txt:
	  New file, installation instructions for a GPC/djgpp binary dist.

	* config/msdos/Makefile, Makefile.rts:
	  updated for djgpp v2.01. Less msdos fuss because djgpp now comes
	  with GNU fileutils and shellutils. Recursing into subdirectories
	  works without troubles now.

	* config/msdos/Makefile.doc:
	  New file

	* config/msdos/README.dj, djgpp.env, rts-config.h, specs.gpc:
	  updated for djgpp v2.01

	* configure.bat:
	  add doc/Makefile, delete config/msdos/Makefile.doc

	* gcc.c:
	  removed djgpp related mktemp() bugfix code; the problem is not
	  mktemp() but the "obstack_grow (&obstack, t->suffix, t->length);"
	  call (near line 3600) which was apparently EMX specific.

	* rts/rts-config.in, rts/rts.h:
	  HAVE_SIGSYS: renamed to BSD_RTS

Sun 3 Nov 1996 23:15  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* doc/bpqstart.texi: documented alignment of record fields.

Thu 31 Oct 1996 17:20  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-typeck.c: comp_object_pointer_types(): use IS_OBJECT_TYPE
	  instead of comparing TREE_CODE (...) == RECORD_TYPE (bug fix).

Tue 29 Oct 1996 16:15  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-defs.h: new flag PASCAL_TYPE_OPEN_ARRAY;
	  new variable warn_void_dereference.

	* gpc-parse.y: open_array: array is flagged;
	  variable_or_function_access_no_id: handle warn_void_dereference
	  when pointers are explicitely dereferenced.

	* gpc-typeck.c: new variable warn_void_dereference;
	  comptypes(): dont't check domain ranges of open arrays; 
	  build_indirect_ref(): warn about "untyped" rather than
	  "void *" pointers and only if warn_void_dereference is
	  nonzero.  This suppresses warnings when taking addresses
	  of untyped parameters, e.g. with "&", "@", or ABSOLUTE.

	* doc/extend.texi, doc/bpqstart.texi, doc/bugs.texi, and
          test/borland_pascal/voidparm.pas updated.

Mon 28 Oct 1996 11:15  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* doc/bpqstart.texi: documentation about CASE and untyped
	  parameters updated.

Sun 27 Oct 1996 22:13  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-parse.y: implemented untyped CONST and VAR parameters.
	  Additional shift/reduce conflicts arise from error recovery
	  rules.

Sun 27 Oct 1996 18:30  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-parse.y: flagged rules which cause shift/reduce conflicts:
	  typed constant and variable initializers with '=', structured 
	  initializers with '(' ... ')', and error recovery rules.

Sun 27 Oct 1996 14:30  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-parse.y: case_statement: implemented ELSE branch.
	  optional_semicolon_or_else_branch: new rule.

	* test/borland_pascal/caseelse.pas: new test program.
	  test/borland_pascal/Makefile updated.

Sat 26 Oct 1996 20:30  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-parse.y: assignment_or_call_statement: handle return value
	  assignments for method functions.
	  object_section: fixed bug in call to grok_directive().
	  variable_or_function_access_no_id: call also methods without
	  an actual parameter list.

Thu 24 Oct 1996 13:44  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* gpc-module.c: load_tree(): case FUNCTION_DECL: fixed bug:
	  load methods as "Objectname_Methodname" for the external
	  declaration, but as "Methodname" only for the object's field.

Sun 19 Oct 1996 13:33  Peter Gerwinski <peter.gerwinski@uni-essen.de>

	* config/emx/Make*.RTS: rename libgpc.a to gpc.a while installing
	  and add -DHAVE_TIME to RTSFLAGS.

	* config/emx/Make*: rename libgpc.a to gpc.a while uninstalling.

	* gpc-util.c: get_main_program_name(): map "Name" to "program_Name"
	  instead of "name" to avoid clashes with C library functions.

Sat 18 Oct 1996 16:25  Peter Gerwinski  <peter.gerwinski@uni-essen.de>

	* test/borland_pascal/Makefile changed to use the *installed* gpc

	* gpc-module.c: load_tree(): case FUNCTION_DECL: fixed bug
          when calling grok_directive()

	* config/emx/Make*.RTS: included gcc_bcmp.?

        * gcc.c: add_automake_files(): delete automake info file after use.
	  The "%d" in the spec should already do this--bug in GCC?

Tue 17 Oct 1996 24:05  Peter Gerwinski  <peter.gerwinski@uni-essen.de>

	* Documentation: bugs.texi and fpk_vs_gnu.texi updated.

Tue Oct 10 16:04:58 1996 Jan-Jaap van der Heijden <j.j.vanderheijden@student.utwente.nl>

	* Integrated patches from Juki <jtv@hut.fi>. His own comments:

        Makefile.in     : Change GCCVERSION (might cause problems)
                          make info a .phony target
        configure.in    : Create doc/Makefile
                          the doc/Makefile needs to be renamed to
                          doc/Makefile.in and modified
        expr.c          : GCC one-line fix
        gpc-typeck.c    : GCC adds an error_init()
        stor-layout.c   : GCC bitfield alignment fix
                          because it does not
        doc/Makefile.in : rename doc/Makefile -> doc/Makefile.in
                          The makefile did not work when objects and sources
                          are in different directories. unfortunately
                          it still might not work as I did not have
                          all the necessary programs it uses so
                          I did not test it very much :-)
 
Sun Oct  6 15:18:30 1996 Jan-Jaap van der Heijden <j.j.vanderheijden@student.utwente.nl>

	* aclocal.m4, configure.in, Makefile.in: added tests for
	  EXTRA_GCC_OBJS, USE_COLLECT2, MAYBE_USE_COLLECT2 and TARGET_DEFAULT

	* configure: rebuild.

Sun 29 Sep 1996 17:27  Peter Gerwinski  <peter.gerwinski@uni-essen.de>

	* gpc-parse.y: implemented multiple directives
	  directive: ATTRIBUTE got optional parentheses
	  directive_list: new rule
	  optional_directive: changed to optional_directive_list
	  function_declaration, function_interface_decl modified to
	  use directive_list

	* gpc-decl.c: is_known_directive(), grok_directive(), 
	  start_pascal_function(): modified to handle multiple directives
	  contains_forward_directive(): new function

Mon Sep 23 22:49:59 1996 Jan-Jaap van der Heijden <j.j.vanderheijden@student.utwente.nl>

        * gcc.c: main():  Changed to substitute the basename of the first
          input file for %b in link_command_spec not just for __EMX__
          It would crash the gpc driver in add_automake_files when only
          linking was requested.

        * Makefile.in: Disable -Dabort=fancy_abort per default.
          Possibly it is still enabled, but only if GCC defines it in
          config.h

        * tests/* : moved to tests/borland_pascal/
          tests/extended_pascal: new directory with Extended Pascal test(s).

        * rts/rts-times.c: enabled time related Extended Pascal functions
          per default. Use -DHAVE_NO_TIME to disable them again.

        * Makefile.in: 'make info' target changed to work, even when called
          from a different location.

        * README-bugs: new file (copied from GCC development tree)

        * configure : rebuilt

        * configure.in: misc. changes to allow building crosscompilers
          and crossbuilding the compiler without any additional switches
          to configure.

        * config/cygwin32/gcc-2.7.2.i386-cygwin32-b16.diff: new file.
          Apply to regular gcc-2.7.2 to add cygwin32-b16 support.

        * doc/how_to_contrib.texi: updated email address.

        * gcc.c, toplev.c, gpc-module.c: change all #define __WIN32__
          to __CYGWIN32__.  Now, cygwin32 defines _WIN32 and __CYGWIN32__
          while U-Washington nt-gcc defines _WIN32 and __WINNT__

        * gpc-common.c: add prefix_attributes stuff.

        * rts/rts-file.c: for MS-DOS, EMX, Windows 95/NT: open all file
          types other than "text" in binary mode, to avoid corruption.

        * rts/rts-rt0.c: changes to RTS signal catcher. Signal catcher
          (temporarily ?) disabled.

Wed 11 Sep 1996 25:15  Peter Gerwinski  <peter.gerwinski@uni-essen.de>

	* gpc-parse.y, gpc-util.c, gpc-decl.c: implemented machine
	  attributes for functions:  Procedure foo; attribute stdcall;

Mon 9 Sep 1996 11:15  Peter Gerwinski  <peter.gerwinski@uni-essen.de>

	* ChangeLog: added changes from summer 1995

Sun 8 Sep 1996  Peter Gerwinski  <peter.gerwinski@uni-essen.de>

	* gpc-module.c: store_tree(), load_tree(): in a VAR_DECL
	  node, store DECL_ASSEMBLER_NAME as well

Sat 7 Sep 1996  Peter Gerwinski  <peter.gerwinski@uni-essen.de>

	* gpc-parse.y: new token ASMNAME, used in storage_qualifier
	  to pass a STRING_LITERAL to declare_vars() which is going
	  to be the assembler name of a declared variable

        * gpc-util.c: declare_vars(): appreciate an assembler name
	  for a variable in the TREE_PURPOSE of `qualifiers'

Wed Sep 04 21:56:26 1996 1996 Jan-Jaap van der Heijden <j.j.vanderheijden@student.utwente.nl>

        * gpc-util.c: get_unique_identifier():  Generate unique
          identifier_nodes of the form "_%s_%d_" instead of "<%s_%d>"
          because djgpp's GAS doesn't like "<%s_%d>"
          Suggested by Robert Hoehne <Robert.Hoehne@Mathematik.TU-Chemnitz.DE>

Wed 21 Aug 1996 3:07  Peter Gerwinski  <peter.gerwinski@uni-essen.de>

	* config/emx patched to work with dmake instead of nmake

	* gcc.c: link_spec updated according to gcc-2.7.2 from the
	  EMX distribution

	* Makefile.in: remove stamps in extraclean

Mon 19 Aug 1996 2:00  Peter Gerwinski  <peter.gerwinski@uni-essen.de>

	* configure.bat: detect DJGPP or EMX.

	* configure.cmd created.

Sun 18 Aug 1996 21:00  Peter Gerwinski  <peter.gerwinski@uni-essen.de>

	* README files in doc and old_doc created

Sat 17 Aug 1996 0:21  Peter Gerwinski  <peter.gerwinski@uni-essen.de>

	* ChangeLog: added changes from July 1996
	  (four hours of work)

Fri 16 Aug 1996 20:35  Peter Gerwinski  <peter.gerwinski@uni-essen.de>

	* Makefile.in: explicitly call $(CC) for "language independent"
	  object files

	* gpc-module.c: change `EMX' to `__EMX__' and add `#define vfork'
	  for USG

	* Makefile.in: added .gdbinit to TAR_FILES

Fri Aug 16 11:35:47 1996 Jan-Jaap van der Heijden <j.j.vanderheijden@student.utwene.nl>

	* aclocal.m4, configure.in: minor changes to support crossbuilding
	  the compiler.

	* gpc-defs.h: move GPC_MAKE_STRING outside REAL_IS_NOT_DOUBLE

	* config/cygwin32/: new files. cygwin32 configuration currently
	  broken: may hang when forking a child process, i.e. automake,
	  linking etc.

Mon 12 Aug 1996 19:25  Peter Gerwinski  <peter.gerwinski@uni-essen.de>

	* gpc-parse.y: updated my e-mail address

	* gpc-defs.h: PASCAL_CONSTRUCTOR_METHOD and PASCAL_VIRTUAL_METHOD
	  moved from DECL_LANG_FLAG_* to TREE_LANG_FLAG_* (they are used
	  in EXPR_* nodes, too)

	* gpc-parse.y: get_unique_identifier ("self", 0 -> 1) to fix
	  crash when compiling with -g

Mon 12 Aug 1996 16:45  Peter Gerwinski  <peter.gerwinski@uni-essen.de>

	* gpc-parse.y: fixed missing parameter to two calls to top_level_p ()

	* gpc-defs.h: added prototype for top_level_p ()

Sun 12 Aug 1996 1:45  Peter Gerwinski <peter.gerwinski@uni-essen.de>

        * gcc.c: main(): with DJGPP, read specs from "specs.gpc"

        * gcc.c: default_compilers[]: use %b.gpc instead of %g.gpc
          for AutoMake temporary files

        * gcc.c: choose_temp_base(): Work around DOS specific
          problem with mktemp()

Wed Aug  7 13:49:07 1996  Jan-Jaap van der Heijden <j.j.vanderheijden@student.utwene.nl>

	* version.in : renamed to gpc-version.in

	* target version.c is now gpc-version.c to avoid VPATH problems.

Mon Aug  5 00:14:33 1996  Jan-Jaap van der Heijden <j.j.vanderheijden@student.utwene.nl>

	* configure.in, aclocal.m4, config.guess, config.sub, install-sh:
		new files.

	* Makefile.in: rewritten for GNU autoconf.

	* Version.c : renamed to version.in to avoid problems with version.c
		on case-remembering but case-insensitive environments like
		Windows NT.

	* rts/Version.c: renamed to rts-version.in, same reason.

	* rts/rts-config.in: new file.

	* rts/rts.h: includes rts-config.h, #define HAVE_* moved to
		rts-config.h.

	* rts/Makefile.in: adapted for autoconf.

	* Makefile.in: do not always recreate version.c to avoid unnecessary
		relinking of the compiler.

	* gnuvers.sh: moved to rts/gnuvers.sh

July 1996  Peter Gerwinski  <peter.gerwinski@uni-essen.de>

	Remark: Changes marked with (X) were already present in
	turbo-1.1-gpc-2.6.3, changes marked with (Y) already in
	turbo-1.0-gpc-2.6.3.  They had vanished in phil-2.7.2.
	I have re-merged them while doing the other changes.

	* gcc.c:
	  concat_args (): new function
	  add_automake_files (): new function
	  default_compilers []: added -fautomake => -famtmpfile
	  do_spec_1 (): fixed bug (?) with MKTMP_EACH_FILE

	* gpc-common.c:
	  build_pxsc_operator (): new function

	* gpc-decl.c:
	  new variables bounds_in_static_decl, bounds_poplevel
	  c_decode_option (): added options -fdebug-gpi, -fautomake,
	  -famtmpfile, and -fgpc-main
	  init_decl_processing (): initialize export_all mark
	  grokdeclarator (): set DECL_FIELD_BITPOS (decl) nonzero for
	  method functions (due to problems with debugging) (X)
	  allocate_type_lang_specific (): allocate more space (X)
	  de_capitalize (): toupper -> tolower
	  grok_directive (): added comments

	* gpc-defs.h:
	  `GPC_MAIN' is a variable `gpc_main' now.
	  added autoexport variables (for `export foo = all')
	  we_are_loading_a_gpi_file: new variable
	  d_asmname: directive variable was missing
	  export_all: new variable
	  save_string (), build_pxsc_operator: prototypes for new functions
	  flag_debug_gpi, flag_automake, automake_gpc_options,
	  automake_temp_filename: new variables
	  version_flag: now a global variable
	  handle_autoexport (), ..., create_gpi_files (): prototypes for
	  new functions

	* gpc-lex.c:
	  yylex (): addex PXSC operators (CEILPLUS, ...)

	* gpc_module.c:
	  added #include <sys/types.h>, <sys/stat.h>, and <fnctl.h>;
	  with EMX also <process.h>, <stdlib.h>, and <errno.h>.
	  export_all: new variable.
	  gpi_contents, ..., we_are_loading_a_gpi_file: new variables
	  export_interface (): support `export foo = all'
	  name_exported_p (): removed autoexport mechanism here

	  New section "The AutoMake facility".  p_execute () and
	  friends copied from gcc.c.  New functions:
	  execute_child (), add_to_automake_temp_file (),
	  pass_automake_gpc_options (), module_must_be_recompiled (),
	  compile_module ().

	  New section "GPI file handling".  New functions:
	  store_string (), load_string (),
	  store_flags (), load_flags (),
	  store_type_flags (), load_type_flags (), 
	  store_decl_flags (), load_decl_flags (),
	  store_tree (), load_tree (),
	  create_gpi_files (), gpi_open (), load_gpi_file ().

	* gpc-options.h:
	  new options -fdebug-gpi, -fautomake,
	  -famtmpfile, -fgpc-main

	* gpc-parse.y:
	  removed obsolete comments, corrected spelling
	  new token ALL

	  type_definition_part: enable/disable keyword "Object" (Y)
	  (was too late in unpacked_structured_type)
	  variable_declaration: enable/disable keyword "Absolute" (Y)
	  (was too late in absolute_or_value_specification)
	  declaring_statement: enable keyword "Absolute" (Y)
	  absolute_or_value_specification_1: corrected wrong warning text (Y)
	  initializer_list: allow more than two components

	  constant_definition, type_definition, object_section,
	  function_interface_decl: added handle_autoexport
	  rest_of_unit: export_interface uses ALL now, 
	  handle pending declarations and create gpi files
	  rest_of_module: create gpi files
	  export_part: enable/disable keywords "Protected" and "All"
	  export_list_or_all: new rule

	  new operators CEILPLUS, ..., FLOORDIV
	  operator_identifier, simple_expression, term: added PXSC operators
	  pxsc_adding_operator, pxsc_multiplying_operator: new rules

	  variable_or_function_access_no_id: use TYPE_LANG_SPECIFIC instead
	  of TYPE_BINFO to store inheritance information
	  (debugging problems) (X)

	* gpc-typeck.c:
	  comp_object_pointer_types (): use TYPE_LANG_SPECIFIC instead of 
	  TYPE_BINFO (X)
	  build_function_call (): fixed "String" bug.  Functions returning
	  String schemas are now called only once.

	* gpc-util.c:
	  gpc_main: new variable
	  declare_vars (): call handle_autoexport (), don't make
	  everything static, handle case of gpi files

	  call_method (): fixed bug with virtual methods and constructors
	  check_object_pointer (): new function
	  store_object_name (): store base type in TYPE_LANG_SPECIFIC (X)
	  inherit (): bugs fixed, use TYPE_LANG_SPECIFIC instead of
	  TYPE_BINFO (X)

	  build_rts_call (): DISPOSE parameter was missing (X)
	  get_method_name (): fixed i386 alignment problems (X)
	  construct_vmt (): fixed i386 alignment problems (X)
	  initialization mechanism changed
	  use forward declared methods (X)

	  output_real_main_program (): use gpc_main instead of GPC_MAIN
	  save_string (): new function

	* gpc.gperf:
	  new keyword "All"
	  enabled Borland keywords (X) and added a comment, why

	* toplev.c:
	  main (): version_flag is now a global variable
	  bounds_checking_enabled: new variable (from the EMX GCC source)
	  lang_options []: new option `-fbounds-checking'
	  updated EMX dump file names to 2.7.2

Sat Dec  9 20:58:48 1995  Jukka Virtanen  <jtv@vinkku.hut.fi>

	* rts/rts-bind.c: Cast arguments of bcopy() to (char *).

Sat Dec  9 20:47:23 1995  Jukka Virtanen  <jtv@vinkku.hut.fi>

	* doc/README.FIRST: Upgraded to 2.7.2.

Sat Dec  9 20:32:43 1995  Mr B. Force  <zoot@vinkku.hut.fi>

	* COPYING, COPYING.LIB: Initial revision

Sat Dec  9 20:19:47 1995  Jukka Virtanen  <jtv@vinkku.hut.fi>

	* gpc-gperf.c: Generated with turbo keywords.

	* convert.c, dbxout.c, fold-const.c, function.c, optabs.c,
	  stor-layout.c, toplev.c, gpc-lang.c, gpc-common.c,
	  gpc-convert.c, expr.c, gpc-cccp.c:
	Upgraded to 2.7.2.

	* gpc-parse.y: Upgraded to 2.7.2.

	Added NULL_TREE parameters where attribute is
	expected in start_function(), start_decl,
	finish_enum(), finish_struct().

	* gpc-decl.c: Upgraded to 2.7.2.

	* configure: Upgraded to 2.7.2.

	Added rule for finding out_object-file.

	* gcc.c: Upgraded to 2.7.2.

	Merged more __EMX__ changes.

	* gpc-util.c: Upgraded to 2.7.2.

	Updated clear_storage() parameters.

	Added (currently) NULL_TREE parameters to match new attribute
	parms in: finish_struct(), start_decl, finish_enum(), start_function().

	push_parm_decl() parameter changed.

	* gpc-typeck.c: Upgraded to 2.7.2.

	build_binary_op(); use build_type to set boolean result;
	removed boolean_result variable and changed the users of it.

	* gpc-options.h, options.h: Initial revision

	* setop.c: Changed macro NEXT_WORD to use void expand_inc(),
	changed all uses of it (not a function anymore).

	use expand_dec() instead of expand_binop() where possible.

	remove unecessary calls to emit_barrier().

	clear_storage() interface was changes, fix parameters.

	Fixed bugs in set code (crashed in alpha), the following loop
	construct mixed up the registers that were used inside
	the loop:

		start:
		  insns
		  test-and-jump-to-start-if-required

	Changed all of these to:

		start:
		  test-and-jump-to-end-if-required
		  insns
		  jump-to-start
		end:

	This seems to work much better. Perhaps I am was not doing something
	right in the first case???

	Output loop notes around loops.

	See the RCS diff to revision 1.4 for more info.

	Indixes/counts are now mostly word_mode.

	* Makefile.in: Version number: 1.2.
	Remove unused sed  command from 'target='.
	Added 'out_object_file=' and use it.
	Added rule 'all-diffs' and friends.

Fri Dec  1 17:59:43 1995  Jukka Virtanen  <jtv@vinkku.hut.fi>

	* gpc.gperf: Added TURBO changes from Peter.

	Modified so that none of the BP_* reserved words are not recognized
	by default. So they have to be enabled, or be in the KItable to be
	treated as redefinable identifiers.

	* gpc-util.c: Merged changes from Peter (TURBO+others).
	(Incompatible with old rts, new is a function now)

	Fixed assign_string() when assigning a string to a char.

	Added initialization of objects created by new
	(it was removed from Peters code, but must be present).

	* gpc-parse.y: Merged TURBO changes from Peter.
	(I made a couple of fixes)

	Unfortunately there are still 12 shift/reduce conflicts and
	1 reduce/reduce conflicts. These have to be fixed!!!

	* gpc-lex.c: Merged TURBO changes from Peter.

	* rts/rts-heap.c: _p_new() is again a function.
	
	* gpc-defs.h: Move BINDING_NAME_LENGTH to rts/rts-types.h

	* gpc-cccp.c: Merged TURBO and EMX changes from Peter.

Sat Nov 18 19:19:51 1995  Mr B. Force  <zoot@vinkku.hut.fi>

	* gcc.c: Added EMX and Borland dependent things.

Mon Nov  6 19:55:56 1995  Mr B. Force  <root@vinkku.hut.fi>

	* gpc-module.c: name_exported_p() exports everything for "units".

	* gpc-decl.c: New stuff for object & method handling.
	Include "ctype.h" for toupper().

	* gpc-defs.h: New language types (PASCAL_SC & PASCAL_BORLAND).
	Protos for new functions, new macros and new external defs for variables.
	Use up more *_LANG_FLAGS, sigh.

	* gpc-typeck.c: Added new routine comp_object_pointer_types().
	Call it in convert_for_assignment().

	Fixed some types in comments.

	Include object types in error messages.

	Don't require_complete_type() for VAR parameters in convert_arguments().

	* toplev.c: Added options:
	   "-fborland-pascal",
	   "-fpascal-sc",
	   "-fextended-syntax",

	Re-implemented __EMX__ suffix mapping with a routine map_suffix().
	Make open_dump_file() use the routine.
	Strip of the original file suffix for __EMX__ systems in compile_file().
	Call _emxload_env() for __EMX__ systems in main().
	Don't run "ps" program for __EMX__ systems.

	* gpc-common.c: Added get_operator_identifier () routine.
	Map operator tokens to names in build_pascal_op().

	* gpc-util.c: Moved concat() routine here from parser.

	* gpc-parse.y: Moved concat() routine to gpc-util.c

	* gpc-defs.h: external definition of concat().

	* gpc-common.c: binary_op_error: added LSHIFT_EXPR and RSHIFT_EXPR.

Fri Sep 22 07:18:38 1995  Jukka Virtanen  <jtv@vinkku.hut.fi>

	* INSTALL: Clarified GCC compilation (separate object directory).

Summer 1995  Peter Gerwinski  <pege@mail.theo-phys.uni-essen.de>

	* gcc.c, gpc-cccp.c, gpc-common.c, gpc-decl.c, gpc-defs.h,
	  gpc-gperf.c, gpc-lex.c, gpc-module.c, gpc-parse.y,
	  gpc-parse.c, gpc-parse.h, gpc-typeck.c, gpc-util.c, gpc.gperf,
	  rs6000.c, toplev.c, rts/rts-hdr.h, rts/rts-heap.c,
	  rts/rts-file.c, rts/rts-misc.c, rts/gcc_bcmp.c, emx/*:  ported
	  GPC to EMX, made program parameters optional, implemented
	  bit-operations, increment and decrement, min and max,
	  implemented Borland- or UCSD-style Units, implemented Borland-
	  or UCSD-style preprocessor directives and compiler switches,
	  solved the problem parsing `protected', implemented
	  Borland-style hex numbers, typed constants and absolute
	  variables, implemented `@' as an address operator
	  (alternatively to `&'), implemented GetMem and FreeMem,
	  implemented open array formal parameters, enabled ranges as
	  selector types in variant records, implemented `AsmName'
	  directive to specify an external name for functions,
	  implemented Borland-style object extensions, modified New and
	  Dispose to deal with objects, implemented PXSC-style
	  user-defineable operators, wrote some documentation about all
	  this, sent everything to Finland where they started to merge
	  it in Nov 1995.

Wed Apr 26 16:44:26 1995  Jukka Virtanen  <jtv@vinkku.hut.fi>

	* setop.c:
	expand_set_comparison(): Initialize the word counter (index) with BLKmode
	LE_EXPR comparisons. (by Phil Nelson)

Wed Apr 26 16:38:23 1995  Mr B. Force  <root@vinkku.hut.fi>

	* expr.c:
	compare: When comparing sets, always use EQ expr to compare the result
	of the expanded set comparison to const1_rtx to set the condition codes.

Thu Apr 13 14:18:36 1995  Jukka Virtanen  <jtv@vinkku.hut.fi>

	* INSTALL: Clarified section 2.
	Documented how to run configure without the DOCONF* scripts in section 3.

	* DOCONF.example:
	Allow specification of GCCSRC and GCCBIN by environment vars.

	* gpc-util.c:
	build_pascal_pointer_type: Allow type_decl nodes in global scope
	build_pascal_array_ref: Allow subscripting a string schema.

Sun Apr  9 02:13:29 1995  Jukka Virtanen  <jtv@vinkku.hut.fi>

	* VERSION: Initial revision

Sun Apr  9 01:07:45 1995  Mr B. Force  <root@vinkku.hut.fi>

	* ChangeLog: Updated.

Sun Apr  9 01:02:47 1995  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* gpc-convert.c: Include gpc-defs.h.
	convert_sets: Added a hack to fix inlined function set arguments.
	convert: call the above hack. Enabled code to convert REFERENCE_TYPE
		 to POINTER_TYPE.

	* PROBLEMS: Document -O6 problems in the Alpha.

	* DOCONF.kampi: Use GCCSRC and GCCBIN environment vars if defined.

	* gpc-decl.c:
	handle_forward_pointers: When a non-pointer is in tags list, just
	handle it's components and continue.

	* gpc-defs.h: Added prototype to new routine no_parameters().

	* gpc-parse.y:
	variable_or_function_access_no_id: report if output or input are
	uninitialized.
	module initializers: Don't give NULL_TREE parameter -> crash.
	optional_init_and_final_part : Allow contructor without a destructor.

	* gpc-util.c:
	construct_set: Don't crash when an integer constant is given to a
		       non-integer set constructor -> errmsg.
	build_array_ref: report error when indexing a non-array.
	output_real_main_program: call assemble_external (from Phil Nelson).
	no_parameters: new routine.

	* NEW-PVS-LIST:
	alpha (osf3.0), i486 (mach3/ux), sparc (solaris 2.3), snake (hpux903),
	rs6000 (aix325) updated.

Sat Apr  8 13:07:06 1995  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* DOCONF.kampi: Fixed comment about hppa1

Sat Apr  8 02:20:15 1995  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* GPC.GUIDE: Refer to borland2ep.doc.
	Document function string return bug.
	Clarify EXTERN and C directives.
	Document module visibility bugs.

	* gpc-module.c: find_module: Initialize fields after bzero()

	* gpc-decl.c: Rewrote forward pointer handling code.

	* gpc-lex.c:
	Modified code that informs of keywords handled as new_identifier.
	Removed obsolete NEW_IDENTIFER code.

	* gpc-parse.y: Reordered new_identifier.
	Attach DECL_INITIAL to type node after finish_decl() has been called.
	Added error rule to value_specification.
	Give error on invalid function value assignment, don't call abort().
	Modified restricted type qualifier code; it still does not work.
	Convert integer exponent in ** to real.

	* gpc-util.c:
	declare_vars: Declare vars extern if in interface module.
	build_pascal_pointer_type: Fix pointers to schemas and functions.
				   Give errors.
	init_simple: Some code to support integer subrange files according
	to the size of the subrange. Still treated as ints.

	* PROBLEMS: Document the "file of 0..255" bug as a feature not
	  yet fixed.

Mon Mar 27 00:30:41 1995  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* INSTALL: Request for gnu make usage.

	* INSTALL: Documented the ALPHA_BUG stuff.

	* Version.c: Alpha specific fix to something I don't know about.
	This bug occurred in OSF/1 V3.2 with gnu compilers.

Sat Mar 25 23:07:23 1995  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* Pascal-standards.FAQ: Initial revision

	* INSTALL: Added list item 0.

	* README.FIRST: Updated version number.

	* README: Removed obsolete comments.

	* PROBLEMS: Deleted references to fixed bugs.

Sat Mar 25 18:42:58 1995  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* gpc-util.c: Removed unused module globals -> moved to struct module.
	Also main program is now a module, changed all references to the
	previously global vars to access the per module struct
	current_module.

	New parameter: declare_vars() now knows if the var decl
	is in an interface module. Don't declare variables in
	an interface module, only generate external refs.
	Make unexported variables static.

	New file: Moved module code to gpc-module.c

	Added static directive.

	* gpc-defs.h: Added per module struct module.
	Export gpc-module.c global variables.
	Export d_<directives>.
	Deleted some unused external defs.
	Removed extern in front of function prototypes.

	* gpc-decl.c: Added static directive.
	Use d_forward instead of get_identifier("Forward");

	* gpc-module.c: Initial revision

	* Makefile.in: Added gpc-module.c and borland2ep.doc.

	* borland2ep.doc: Initial revision

	* gpc-parse.y: Added directive `static'.

	Adapted the new module state struct to the parser.

	Main program also has a module info record so it can be treated
	internally like a module.

	Removed now obsolete code for forward pointers.
	declare_vars() has one more parameter; changed callers. Now the
	interface only generates external refs for exported names if they are
	vars or functions. The actual declaration is done when the
	implementation module is seen.

Fri Mar 24 10:45:13 1995  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* Makefile.in: Run GNU Tar with z option.
	Include gpc-cccp.c in distribution.
	Renamed rts-readsub.c and rts-headers.h
	rule gpcdist rewritten (dist path includes version directory).

	* gnuvers.sh: Run whoami is $USER is not set.

	* NEW-PVS-LIST: Updated to 2.6.3.

Fri Mar 24 10:25:13 1995  Mr A. B. Force  <root@lerppu.hut.fi>

	* gpc-convert.c: Conversion of REFERENCE_TYPE required when compiling
	with -O6 in alpha (zap.pas). The problem is not fixed
	only documnted...

Thu Mar 23 21:03:06 1995  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* gpc-decl.c, gpc-util.c:
	Use IDENTIFIER_POINTER in pointer domain warning.

	* GPC.GUIDE: Added preprosessor initial doc.

	* toplev.c: added gpc options.

	* gpc-util.c, gpc-parse.y: Forward pointers reimplemented.

	* gpc-lex.c: Better error messages from directives.
	Added input_file_stack.
	Use routines in ctype.h.

	* gpc-defs.h: resolve_forward_pointer returns an int.

	* gpc-decl.c: Reimplemented forward pointer handling.

	* gcc.c: Support -fnested-comments option.

	* dbxout.c:
	  Related to forward pointers:
	  Removed overloading of TYPE_VFIELD.
	  Added new routine dbxout_set_type_status() to
	  set the TYPE_UNSEEN or TYPE_DEFINED to the typevec array
	  element TYPE_SYMTAB_ADDRESS.

	  This is done to prevent dbxout_type() from outputting
	  LANG_TYPE stuff, and also to be able to output a stab
	  to a forward referenced pointer twice (firt time it is
	  not complete, the second one is).

	  A better solution would be to make gdb understand
	  	  .stabs ":t<anumber>=<bnumber>",<whatever>


	* gpc-cccp.c: Added support for nested/no_nested pascal comments.

	* PROBLEMS: Updated, documented fwd pointer .stabs.

	* DOCONF.kampi: The machine architecture can be given as an argument.

Wed Mar 22 23:10:16 1995  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* Makefile.in: Fixed toplev.c.
	Modified preprosessor rules.

	* gpc-cccp.c: The language is not always reported to be ANSI C,
	but rather set in a variable.

Tue Mar 21 12:40:31 1995  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* gpc-parse.y: Report undefined function types.

Mon Mar 20 15:33:49 1995  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* toplev.c: Initial revision

	* stor-layout.c: Upgraded to version 2.6.3.
	Rewrote SET_TYPE handling.

	* optabs.c, gpc-typeck.c, gpc-lang.c, gpc-decl.c, gpc-common.c,
	function.c, fold-const.c, expr.c, dbxout.c:
	Upgraded to version 2.6.3.

	* gpc-cccp.c: Added option -nocharescape and support for it.
	Initialized -lang-asm.
	Added a missing break to skip_paren_group() line 7853.

	* gcc.c: Upgraded to version 2.6.3.

	Made gpc command run gpc-cpp preprosessor by default. (a test version
	of cccp.c). Added option -lang-pascal and (conditional option)
	-nocharescape to the cpp call sequence.

	* Makefile.in:
	Added rules to compile and install gpc version of cpp (gpc-cccp.c).
	The preprosessor is currently installed as: "gpc-cpp" although it
	should function as before if options -nocharescapes and/or
	-lang-pascal are not given.

	* gpc-cccp.c: First implemantation of { comments }.
	Don't complain of '\n'.

	* gpc-cccp.c: Added command line option '-lang-pascal'.
	If used:
		Does not recognize C comments.
		Does recognize (* comments *).

	This version does not recognize { comments }.

	* gpc-cccp.c: Initial revision

Sun Mar 19 17:34:07 1995  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* Makefile.in: Use unidiff (gdiff -u).

Fri Sep 30 00:59:40 1994  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* README.FIRST: 2.6.0 version

	* MOVE: Initial revision

	* stor-layout.c, optabs.c, gpc-typeck.c, gpc-decl.c, gpc-convert.c, gpc-common.c, gcc.c, function.c, fold-const.c:
	Upgraded to 2.6.0


	* expr.c(expand_expr)
	  ABS_EXPR now checks if the type of the argument is a complex
	  type to see if it needs to call expand_complex_abs instead
	  of the result type of the ABS_EXPR. The mode of the operand is
	  passed to expand_complex_abs() instead of the mode of the
	  result.

	* gpc-typeck.c(build_unary_op)
	  the ABS_EXPR does not return a complex value when
	  the argument is of complex type.
	  Now ABS_EXPR is of the type of the component type.
	  (@@ Or should it always be DFmode ???)

	* expr.c(expand_expr)
	  CONJ_EXPR used the complex mode to extract the real
	  and imaginary parts of the complex number instead
	  of the component mode.

	* expr.c: Upgraded to 2.6.0.

	* dbxout.c, convert.c: Upgraded to 2.6.0

	* Makefile.in: gcc.o needs $(version). Initialize it.

	* ChangeLog: *** empty log message ***

	* PROBLEMS: Removed sparc.h patch requests; the change is merged.

	* GPC.GUIDE: Documented more bugs...

Wed Sep 28 23:22:19 1994  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* PROBLEMS: Updated to 2.6.0.
	Documented the ^node problem that is now caught (never worked).

	* INSTALL, ChangeLog: Updated to 2.6.0

Fri Jan 28 11:48:46 1994  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* Makefile.in: Added MY_LIBFLAGS

	* gpc-util.c:
	r_EXPON and r_POW did not check left operand type. r_EXPON now
	converts left int operand to double.

Wed Jan 26 18:41:21 1994  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* gpc-decl.c: Added empty routine resolve_forward_pointers(). @@ FIXME.

	* GPC.GUIDE: *** empty log message ***

	* gpc-parse.y:
	HMM: type node = integer; procedure z; type p = ^node; node = boolean;
	     does not work!!!
	     Some minor changes for this, not completed.

	* INSTALL: *** empty log message ***

	* Makefile.in: Version 1.04.

	* gpc-typeck.c:
	default_conversion: convert CHAR_TYPE and BOOLEAN_TYPE to integer.

	compatible_types_p(), compatible_relop_p() and
	compatible_assignment_p(): new routines.

	convert_arguments: Don't promote prototypes before parameter type
	and value are checked with convert_for_assignment().

	build_binary_op: Use typecodes of the base_types, not types.
			 Use compatible_*_p() routines to check operand
			 compatibility.
			 For short_compare, convert values to boolean if the
			 operator so requires.

	build_unary_op:  Convert subrange array index to integer when arr[i]
			 is converted to &a+i.

	convert_for_assignment: Use base_types, not types.
				Use compatible_assignment_p().

	* gpc-util.c: Removed fold from fold(build_binary_op())

	* gpc-common.c: Cosmetic :-)

	* gpc-defs.h:
	IS_BOOLEAN now accepts only boolean_type code. (@@ get rid of this)

	* Makefile.in: Added function.c to ind-diff rule.

	* expr.c: emit_string_pad: Fixed the fence post error in padding.

Sun Jan 23 05:01:57 1994  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* GPC.GUIDE: *** empty log message ***

	* gpc-parse.y: index_expression_list: support array slice access.

	* gpc-util.c: New (static) routine: build_array_slice_ref
	Support for substring variables (implementation should support
	slice accesses for any arrays...)

	build_pascal_array_ref calls build_array_slice_ref.

Fri Jan 21 23:57:37 1994  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* gpc-util.c:
	init_any: properly initialize string schemas that are part of a
	structured object created dynamically.

Thu Jan 20 18:25:11 1994  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* NEW-PVS-LIST: *** empty log message ***

	* Makefile.in: Version number to 1.03

	* JUKI, GPC.GUIDE: *** empty log message ***

	* gpc-common.c:
	build_binary_op: Accept CHAR_TYPE objects in string operations.
	implemented string catenations.

	* GPC.GUIDE: *** empty log message ***

	* gpc-common.c: byuuild_pascal_op() and build_pascal_unary_op() call
	probably_call_function() in expressions.

	* gpc-decl.c:
	start_pascal_function: don't inform user of possible external &
	forward directive mixing; the warning was also given when a nested
	routine had an "external" definition.

	* expr.c: emit_string_pad: new argument PAD specifies the char value to
	pad with.

	* gpc-typeck.c:
	convert_arguments: string type argument handling rewritten, allows
	different length fixed string matching.

	Use base_type() instead of set_base_type().

	* gpc-defs.h:
	PASCAL_STRING_LENGTH now returns the length of any string object.

	* gpc-util.c:
	Added prototypes for emit_string_{move,pad} in expr.c (-> tree.h?)

	Deleted set_base_type(), modified base_type ()

	assign_string(): allow char_type target.

	Now PASCAL_STRING_LENGTH returns length of any pascal string type
	object -> use it.

	emit_string_pad: new argument, char to pad with.

	string_by_model: call init_any() only for variable string types.

	handle_formal_param_list: Don't crash when type is error mark node
	and this is a var parameter.

	build_rts_call: Direct access file index must be of same base type
	than seek index.

	Added probably_call_function(): when a function id is used in an
	expression in an actual parameter list it should be always evaluated.

Tue Jan 11 09:53:54 1994  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* configure, Makefile.in: Conditionalize making of rts subdir.

	* gpc-typeck.c: Allow IN_EXPR for sets of non-integer subranges.

	* gpc-parse.y: Prevent crash when subrange type defined erroneously.

	Don't give spurious error messages when undefined
	variables are used.

	Export identifier must be followed by an equal sign.
	Give warning if not.

	If import_specification has reported an error, don't call
	import_interface() with a NULL identifier.

Mon Jan 10 22:16:10 1994  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* DOCONF.kampi, DOCONF.example: Use DOCONF\..* in SRC generation.

Sat Jan  1 21:05:06 1994  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* JUKI: *** empty log message ***

	* Makefile.in: Version changed to 1.02.

	* Makefile.in: Deleted rts-util.c, added contrib

	* convert.c:
	Convert the REFERENCE_TYPE to POINTER_TYPE in gpc-convert.c,
	not here.

	* gpc-convert.c:
	Convert the REFERENCE_TYPE to POINTER_TYPE here, not in convert.c.

	* gpc-lex.c:
	Don't complain about underscores starting a predefined word.

	* gpc-typeck.c:
	Removed the 'anything to implicit-void-pointer conversion'-kludge.

	Instead, any pointer value passed to a void pointer is ok.

	A __cstring__ parameter should now work as specified.

	* gpc-defs.h: New prototypes.

	* gpc-parse.y:
	Use maybe_make_static() for non-exported routines in a module.

	Use a proto empty_arglist for function pointer calls without args.

	* gpc-util.c: Added __cstring__.

	Added empty_arglist and PASCAL_PROCEDURE_PARAMETER for procedure
	params && function_pointers and make them work together. Modified
	handle_formal_param* and maybe_call_function to use these.

	Added free_interface list. Check is an implementation already exists.
	Added maybe_make_static().

	* NEW-PVS-LIST: Snapshot closing.

	* GPC.GUIDE: snapshot closing.

Thu Dec 30 23:32:29 1993  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* gpc-typeck.c:
	Allow IN operation for sets of non-integer subrange types.

	Kludge `void *' causes implicit pointer conversions. This will
	be removed.

	* GPC.GUIDE: *** empty log message ***

	* convert.c: Allow more conversions from CHAR_TYPE and BOOLEAN_TYPE.
	This is because real type conversions of ord(char_type_variable)
	strip the conversion to int and try direct conversion to double ->
	char_type must convert to real_type. Similarly the boolean_type
	must work.

	* gpc-common.c: Added pascal_type_extension().

	Changed pascal_type_variant() to use TYPE_QUALIFIER_*.

	* gpc-defs.h: Changed VARIANT_* to TYPE_QUALIFIER_*. Added some more.

	* gpc-util.c: Renamed VARIANT_= to TYPE_QUALIFIER_*

	Predefined structure definitions made simpler by macro DO_FIELD.
	Added filed 'Size' to BindingType.

	File PARAM_DECLs to binding routines allowed always.
	Should check if the actual parameter type is bindable.

	Added type qualifiers to KItable.

	Added name_exported_by_current_module_p ().

	* gpc-parse.y: Added type qualifiers: __unsigned__,__long__ etc.

	Routines that re not exported from a module get the storage class
	static, i.e. they won't be visible outside the file.
	This is still not good enough: the visibility should be limited
	inside the module, and many modules could be in one file.

Tue Dec 28 18:45:59 1993  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* gpc-parse.y: Handling of type qualifiers changed.
	build_unary_op() -> build_pascal_unary_op().
	build_binary_op() -> build_pascal_op().
	Resticted types implemented.

	* GPC.GUIDE: *** empty log message ***

	* gpc-common.c: build_pascal_op(): know restricted types.
	Added build_pascal_unary_op().
	Rewrote pascal_type_variant().

	* gpc-defs.h: Added PASCAL_TYPE_RESTRICTED.
	Added build_pascal_unary_op() proto.

	* gpc-util.c:
	The name of file can't be passed if it has none; e.g. the file
	is allocated with NEW from heap. In this case pass the name
	"<Allocated from heap>". In other cases (?) pass the name
	"<Name unknown>". The name of an internal file is not used
	by the runtime system; it is only passed for debugging purposes.

Mon Dec 27 13:32:25 1993  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* gpc-util.c: build_file_type supports direct access files.

	position and lastposition implemented. Seek* implemented.

	Binding,bind and unbind implemented.
	BindingType implemented.

	Always pass the internal file name for the run time system, not only for
	external files.

	maybe_call_function accepts also arguments. Function always called if
	arguments are present.

	BindingType contains field Error. (Not yet updated)

	Accept __void__ as well as Void.

	* gpc-defs.h:
	maybe_call_function and build_file_type interface changed.

	* GPC.GUIDE: *** empty log message ***

	* gpc-parse.y:
	Implemented function pointers. To get the syntax I wanted required
	combining assignment and procedure calls. (Lots of changes!)

	Added direct access files.

	WITH element may be a function_access.

Sun Dec 19 07:26:11 1993  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* GPC.GUIDE: Documented binding(s).

	* gpc-util.c:
	Use pascal_type_variant(): grok_packed, pascal_conformant_type(tilt)
	Added binding runtime calls.
	Added is_of_string_type(). is_string_type() uses this.
	defined gpc_type_BINDINGTYPE.
	Fixed associate_external_objects().

	* gpc-common.c: Added pascal_type_variant().

	* gpc-parse.y: Added BINDABLE to type_denoter. (@@ Does not work yet)
	Added p_BINDING, p_UNBIND, p_BIND.

	* gpc-defs.h: Define PASCAL_TYPE_BINDABLE. Uses LANG_TYPE_3.
	Define BINDING_NAME_LENGTH.
	Define VARIANT_* values for pascal_type_variant().
	Deleted unused headers.
	Added some protos.

	* Makefile.in: Added rts-bind.c

	* gpc-decl.c: added top_level_p()

Wed Dec 15 21:45:45 1993  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* dbxout.c: Disabled warning in GPC specific code.

	* dbxout.c, function.c, fold-const.c, expr.c: 2.5.7

	* gpc-util.c: Rewrote stdio (many changes).

	Constructor collect (many changes).

	Added storage qualifiers.

	* gpc-parse.y: Rewrote stdio.

	primary used primary, should have been factor.

	storage qualifiers.

	Allow any declaration order also in the main program.
	deleted rules that were thus left over.

	Allow module parameters.

	runid in module initialized (gpc extension).

	* gpc-defs.h: Added some protos for routines for new stdio.

	* gpc-decl.c: Added static_id and extern_id.
	Allowed static and extern variable declarations.
	Added de_capitalize().

	* gpc-lex.c:
	Underscore warnings changed (don't warn is the underscore is
	in a "reserved" word.

Sun Dec 12 02:38:56 1993  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* ChangeLog, GPC.GUIDE: *** empty log message ***

	* gpc-parse.y: Added D_C_LANGUAGE

	* gpc-util.c:
	Run time system calls should now support value parameters that
	are functions returning variable length strings.

	Added D_C_LANGUAGE.

	* gpc-lex.c: Warn of empty string literals only if pedantic.

Sun Dec 12 02:17:19 1993  Jukka Virtanen  (jtv@kampi.hut.fi)

	* Support run time system flag -i ARG so that when ARGs run out
	  rts continues from the original standard input.

	* Implemented pascal module paramstr.p that returns command
	  line arguments to user program.

	* gpc-util.c
	  Convert value parameter string parameters to pointers
	  with build1() not built_unary_op(); this makes it possible
	  to pass arrays or strings that are returned by functions.

	* rts/rts-rt0.c(_p_initialize)
	  Hack run time arg support.

	* rts/rts-misc.c
	  Added _p_paramstr and _p_paramcount functions
	  for command line access.

Sat Dec 11 19:24:05 1993  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* gpc-decl.c: added is_knonw_directive().

	* gpc-defs.h: Added is_known_directive().

	* gpc-parse.y:
	Removed don't call error("improperly formatted..."); the problem
	should be reported anyway. The verbose (repeated) output of these was
	confusing.

	Allow directive names be recognized even if they are redefined.

	* GPC.GUIDE: *** empty log message ***

	* GPC.GUIDE: p660 fixed; evaluation order AB instead of UNKNOWN.

	* gpc-util.c: Indentation changed when I cancelled the change
	I made to reorder string schema fields.

	* Makefile.in:
	The run time system is compiled with the xgcc that matches GPC.
	(Value parameter complex types in the runtime system require this)

	* setop.c:
	Call save_expr() for set elements/ranges to avoid computing their
	values multiple times.

Sat Dec 11 05:30:36 1993  Jukka Virtanen  (jtv@kampi.hut.fi)

	* Makefile.in
	  Always compile the run time system with the $(gccdir)/xgcc

	* setop.c(store_set_constructor)
	  Call save_expr() for the elements/ranges.	

	* rs-6000.c
	  Kenner fixed the constant double loading bug I reported
	  for RS-6000.

	* gpc-parse.y
	  Fixed a bug that crashed gpc1 when using an undefined
	  name as type.

	  Parse directives correctly even if the name has been redeclared
	  by the user.

	  Allow directives in routine definition in module interface.

	* rts complex value parameter passing
	  Use __complex__ double for input values instead of
	  a struct. E.g. sparc uses different techiques to pass
	  record_type and complex_type causing a crash if they are
	  not the same.

Fri Dec 10 23:53:56 1993  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* dbxout.c: SET_TYPE domain is output with stabs, not the type
	(bothner@cygnus.com)

	* gpc-parse.y:
	typename error handling caused an segfault when error_mark_node
	was accessed with DECL_INITIAL.

Thu Dec  8 05:20:45 1993  Jukka Virtanen  (jtv@kampi.hut.fi)

	* Snapshot 2.5.6 made available at kampi.hut.fi

Wed Dec  8 15:56:14 1993  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* GPC.GUIDE: *** empty log message ***

	* gpc-parse.y:
	Allow directives in routine headers in module interfaces.

	* Makefile.in: Argh, added missing rts-zmath.c to RTSFILES.

	* Makefile.in, GPC.GUIDE: *** empty log message ***

	* gpc-gperf.c: Regenerated with object c word symbols.

	* gpc-util.c:
	grok_packed() now packs array_types in sequence of the argument type.
	assign_string() did not check what the other argument was.
	added number_of_schema_discriminants(). @@ Only for strings.
	Made NEW() work for ^string.
	Mark knownid_decls with TREE_USED to avoid -Wall unused info.
	Added object pascal words to known id table.

	* gpc-typeck.c: Changed some message texts in record type warnings.
	(+some code movements)

	* gpc-parse.y: Added object pascal reserved words and defined symbols.
	Handle ^string.
	POW and ** now parsed as standard requires. (a factor)

	* gpc-defs.h: Define PASCAL_OBJECT.
	Altered language id numbers.

	* gpc-lex.c: added last_id_value to handle ^string.
	added routine which_language()
	If -pedantic, warn about identifiers that are reserved words
	on some more advanced pascal gpc knows about.

	* gpc-decl.c: signed vs unsigned char cmdline flag changes.

	don't warn for control reaching end of function.

	* Makefile.in:
	make gpc-parse.{c,h} to $(srcdir) so that bison is not needeed
	everywhere when gpc is built.

Tue Dec  7 15:28:44 1993  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* gpc.gperf:
	Added OBJECT PASCAL reserved words with PASCAL_OBJECT level.

	* Makefile.in: Generate gpc-gperf.c to $(srcdir)

Mon Dec  6 23:55:47 1993  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* NEW-PVS-LIST: *** empty log message ***

	* NEW-PVS-LIST: 2.5.6 version

	* Makefile.in, GPC.GUIDE, NOTES, README.FIRST, PROBLEMS:
	*** empty log message ***

	* INSTALL: 2.5.6

	* README, GPC.GUIDE: *** empty log message ***

	* gpc-parse.y: Allow string (. expression .) for string ( expression )

	Allow case defaults in variant records.

	* expr.c: Added new routine emit_string_pad().

	Added new routine emit_string_move ().
	(BUILT_IN_MEMCPY should perhaps call this).

	* gpc-util.c:
	call emit_string_pad() toblank pad fixed strings in assignment.

	call emit_string_move() to move strings, because they might have
	different machine mode depending on size. Standard requires that
	all strings are compatible.

	* GPC.GUIDE: *** empty log message ***

Sun Dec  5 23:48:34 1993  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* expr.c, function.c, gcc.c, gpc-common.c: 2.5.5

	* optabs.c: 2.5.5.

	* gpc-decl.c: Upgraded to 2.5.5

	* gpc-util.c: Fixed a comment.

	* gpc-typeck.c: upgraded to 2.5.6 (via 2.5.5 first).

Wed Dec  1 19:27:33 1993  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* GPC.GUIDE: *** empty log message ***

Tue Nov 30 15:36:00 1993  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* gpc-decl.c: Allow functions returning array_type.

	In grokdeclarator() don't build new array_type
	for type qualifiers. This breaks assignment
	to array_type function return values.
	(@@@@ maybe this fix is not correct)

	* gpc-parse.y:
	Added variable_or_function_access to support function-access.

	* gpc-util.c:
	Fixed component access of string schema (build_pascal_array_ref).

	* GPC.GUIDE: *** empty log message ***

Sat Nov 27 02:49:20 1993  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* GPC.GUIDE: *** empty log message ***

	* gpc-parse.y:
	Partial implementation of module constructors and destructors.

	* gpc-parse.y: expect 11 shift/reduce conflicts. 8 From error handling
	and 3 from being able to redefine PROTECTED.

	Changed PRIVATE to RESTRICTED.

	Defined tokens for directives.

	Deleted UNIMPLEMENTED.

	Rewrote rules for extended pascal modules.
	Added actions to module support.

	* gpc-util.c: Initialize_world() calls declare_known_ids().

	KItable lists all known directives.
	Removed extra "Sqr" from KItable.

	Added first implementation of extended pascal modules.

	* gpc-gperf.c: *** empty log message ***

	* gpc.gperf: PRIVATE is not a keyword; RESTRICTED is.

	* GPC.GUIDE: *** empty log message ***

Fri Nov 26 21:41:34 1993  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* gpc-defs.h:
	added prototypes for module_export_clause, module_export_range,
	import_interface and export_interface.

	* gpc-decl.c:
	declare_known_ids() is now called from initialize_world().

Wed Nov 24 23:29:00 1993  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* GPC.GUIDE: *** empty log message ***

	* gpc-lang.c: Call initialize_world() from lang_init().

	* gpc-parse.y: Removed variable initialized.

	* gpc-common.c:
	build_pascal_op() now handles comparisons of any string or char type.

	* gpc-util.c: Call runtime system for blank padded string comparisons.

	* gpc-util.c: initialize_world() is now called from lang_init().

	Allow variable length strings as file name
	in reset,rewrite and extend runtime system calls.

Tue Nov 23 02:49:24 1993  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* GPC.GUIDE: *** empty log message ***

Mon Nov 22 19:09:54 1993  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* GPC.GUIDE: *** empty log message ***

	* expr.c, fold-const.c, dbxout.c, function.c, gpc-typeck.c: 2.5.4

Sun Nov 21 22:35:42 1993  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* gpc-parse.y:
	Allow string capacity expression also in brackets. Many compilers
	seem to have it like this.

	* GPC.GUIDE: *** empty log message ***

	* GPC.GUIDE: Inserted the comments by Yucca.

	* optabs.c: Corrected comment.

	* gpc-util.c: Trim and substring passed incorrect argument to the rts.

	* GPC.GUIDE: *** empty log message ***

Sat Nov 20 02:35:15 1993  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* gpc-util.c:
	Added a parameter to new_string_by_model(): copy is 1 if data is
	copied.

	Try to use variable string LENGTH instead of capacity.
	No idea yet if this works.

	handle_formal_conf_array_param_list: new parameter.
	handle_formal_param_list: new parameter.
	Added protected parameter handling.

	Modified p_TRIM, p_SUBSTR: not working yet.

	Added calls to complex funs in rts.
	Added p_ARG, p_POLAR, r_POW, r_EXPON, z_*.
	p_SQRT,p_SQR/p_ABS and trig funs accept complex.

	* gpc-parse.y:
	Added tokens r_POW and r_EXPON z_ARCTAN z_COS z_EXP z_LN z_SIN z_SQRT
	z_POW z_EXPON

	Added optional_protected, optional_sign,
	parameter_form (old typename_or_string).

	Modified parameter parsing to make protected work.

	Added type_inquiry to parameter_form.

	POW and EXPON may be incorrectly parsed: standard requires
	both sides be FACTOR, gpc is more generic (and possibly
	incorrect).

	PROTECTED returns ttype.
	@@@ Note that the redefinition of PROTECTED does not work.

	* gpc-defs.h:
	Added one int parameter (protected) to handle_formal_param_list()
	and handle_formal_conf_array_param_list().

	Added one int parameter (copy) to new_string_by_model().

	* gpc-common.c: Support EXPON_EXPR in build_pascal_op.

	* GPC.GUIDE: *** empty log message ***

	* optabs.c:
	Fixed the 'mode' bug when calculating abs value of complex type
	when we have a handler for SQRT.

	* gpc-typeck.c: Added the new parameter to new_string_by_model().

Fri Nov 19 15:13:44 1993  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* GPC.GUIDE: *** empty log message ***

Thu Nov 18 23:55:29 1993  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* GPC.GUIDE: *** empty log message ***

Wed Nov 17 13:03:23 1993  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* gpc-decl.c: Minor mods in variant tag info lang_decl allocation.

	Changed type_denoter to return a tree list of
	(init, type) instead of type.

	Stored type initializers in TYPE_DECL DECL_INIT field;
	I think that is not otherwise used for these nodes.

	@@@ Some initializers are not perhaps accepted, like
	function foo: type; but I do not know if it should be
	(initializing the return value of function?)

	* gpc-lex.c: Check for EOF while parsing a string.

Tue Nov 16 00:53:56 1993  Jukka Virtanen  <jtv@lerppu.hut.fi>

	* gpc.gperf: Added otherwise. Clarified comments.

	* gpc-defs.h: Deleted EXTERNAL_NAME_PREFIX_FLAG.
	Added some extern definitions.

Wed Nov  3 03:31:56 1993  Jukka Virtanen  (jtv@kampi.hut.fi)

	* Test release gpc-2.5.0a-3nov93.tar.gz in kampi.hut.fi

Thu Sep 30 20:19:57 1993  Jukka Virtanen  (jtv@kampi.hut.fi)

	* Test release gpc-2.4.5-30sep93.tar.gz in kampi.hut.fi

Tue Sep 28 23:27:20 1993  Jukka Virtanen  (jtv@gamma.hut.fi)

	* stor-layout.c(layout_type)

	  SET_TYPE aligned TImode sets in Alpha. I do not
	  support that, at least not yet. Now TYPE_MODE
	  can be either word_mode or BLKmode.
	  (fixes 143 in alpha)

	* setop.c(setop_empty)

	  Used TREE_INT_CST_HI instead of TREE_INT_CST_LO
	  (151 now passes in test hosts)

Mon Sep 27 03:06:45 1993  Jukka Virtanen  (jtv@vipunen.hut.fi)

	* GPC Version changed to 0.95

	* Updated: INSTALL, PROBLEMS, NEW-PVS-LIST

	* Initial port of gpc for hp-pa,alpha,rs-6000 and mips.
	  
	  Run pvs tests, not so bad for a first run on each host :-)
	  HP-PA is compiled with gcc-2.4.5.u5 (Utah version 5,
	  using --with-gnu-gas option for the configure)

	* gpc-util.c(init_util)

	  language_string must be "GNU PASCAL" instead of
	  "GNU Pascal" or rs-6000 backed will abort(). Sigh.

Fri Sep 24 01:52:54 1993  Jukka Virtanen  (jtv@gamma.hut.fi)

	* configure

	  Find out the library directory by running "xgcc -v"
	  @@@ Do it with xgcc --print-library-file-name or something.

	* setop.c (store_set_constructor):

	  When shifting left bit masks on the alpha, do not use
	  integer_type_nodes, use sizetype nodes instead or
	  the upper 32 bits values will be zeroed.

	* gpc-typeck.c (build_component_ref): 

	  Use routine find_field() to locate fields of the referenced
	  record, rather than the binary search algorithm. Necessary
	  for implementing WITH statement.

	* setop.c

	  Added macro GET_MODE_2(a,b) to select the mode that
	  is not VOIDmode of two rtx values. (e.g. if calling
	  emit_cmp_insn() with low and high bound one of which
	  may be a CONST_INT.

Thu Sep 23 21:21:57 1993  Jukka Virtanen  (jtv@gamma.hut.fi)

	* setop.c

	  Used word_mode in places where I should have taken the mode
	  with GET_MODE.

	* setop.c (expand_set_comparison): 
	
	  EQ_EXPR compared BLKmode and DImode incorrectly causing abort.

	* stor-layout.c (layout_type):

	  SET_TYPE is always aligned to GET_MODE_ALIGNMENT(word_mode) 

	  If TYPE_MODE does not require BLKmode it is always
	  set to word_mode.

	* setop.c (setop_copy):
	
	  Passed int value to setop_vector_adjust.

Thu Sep 23 02:25:15 1993  Jukka Virtanen  (jtv@kampi.hut.fi)

	* Upgraded to GCC-2.4.5

Tue Sep 21 20:48:15 1993  Jukka Virtanen  (jtv@kampi.hut.fi)

	* Fixed problems in inline setop operations (setop.c).

	  Now gpc-2.4.3.1 compiles the Pax compiler (25000 lines
	  of Pascal code) so that the produced Pax compiler
	  was able to compile a simple "hello.pas" program.

	  All set operations are now generating inline code.
	  the run time system file rts-set.* is now present only
	  for debugging. See code.

	* Time has passed again...

Sun Dec 13 05:38:36 1992  Jukka Virtanen  (jtv@kampi.hut.fi)

	* Massive hack attack.
	  
	  - Started rewriting set code
	  - added Bill's syntax error handling to parser
	    (with some enhancements)
	  - fixed in_expr
	  - implemented store_constructor() for sets.
	  - added a complex divide optimization (as suggested by rms)
	  - fixed run time system bugs
	    (sets, integer default width)

Sun Mar 15 03:42:28 1992  Jukka Virtanen  (jtv at kampi.hut.fi)

	* expr.c(expand_expr)

	  When copying sets convert source set mode to GET_MODE(target)
	  (Maybe sets should be laid out as the basetype specifies,
	  rather than number of elements. This would simplify inline
	  code when it's implemeted)

	* gpc-util.c
	  Fixed -fsetlimit:NN

	* gpc-lex.c
	  Fixed '(.' symbol to return LBRACKET.
	  Fixed '.)' symbol to return RBRACKET (also after digit).

Fri Mar 13 08:02:28 1992  Jukka Virtanen  (jtv at kampi.hut.fi)

	* dbxout.c(dbx_type_fields)

	  Support variant records.

	* gpc-parse.y,gpc-util.c,gpc-typeck.c

	  Implemented conformant arrays. Still some bugs exist
	  for multi-dimensional arrays.
	  (gcc-2.0 bug: nested routines cannot take variable
	   length array parameters. Notified rms)

	* gpc-lex.c, rts/gpc_read.c

	  Fixed reading of floating point numbers like:
	  0.00000000000000000000000000000000000000123456789
	  since atof() does not read these right.

	* gpc-decl.c(resolve_forward_pointer),dbxout.c

	  Hacked forward pointer stab generation. -g option
	  is no longer known to crash the compiler.

Sat Mar  7 06:04:16 1992  Jukka Virtanen  (jtv at kampi.hut.fi)

	* Nested routine doing non-local goto's crashed
	  gcc-2. Notified rms. (fixed with patch to stmt.c)

	* Changed version to 0.08

	  State: 4 Pascal validation suite conformance tests fail.
	  (In i386 Mach 3.0 (mk70/ux28))

	* Fixed more bugs :-)

	  Boolean layout, array index type, etc.

	* Upgraded to gcc-2.0 public release

Sat Feb  1 21:54:01 1992  Jukka Virtanen  (jtv at kampi.hut.fi)

	* gpc-parse.y
	  Does not contain any calls to momentary_obstack routines
	  (push, pop or clear) since I did not manage to
	  get them right. This is stupid, but works better
	  than previously. (Yes, it will consume some more memory)

Mon Jan 20 07:50:29 1992  Jukka Virtanen  (jtv at kampi.hut.fi)

	* gpc-common.c (combine_strings)

	  Fixed typo in counting string lengths.

Sun Jan 19 18:15:27 1992  Jukka Virtanen  (jtv at kampi.hut.fi)

	* gpc-util.c (construct_set)

	  call runtime routines with varargs arguments.

	* rts/gpc_set.[hc]

	  Made _p_set_single and _p_set_range to accept variable number
	  of elements/ranges.
		
	  All set args are passed as struct pointers. See rts/gpc_set.h

	  Deleted set_headers.

Sat Jan 18 14:40:55 1992  Jukka Virtanen  (jtv at kampi.hut.fi)

	* expr.c

	  Parameter count to emit_cmp_insn() inreased by 2.

	* expr.c (expand_expr)

	  FIX_ROUND_EXPR call to emit_cmp_insn missed GE !!!

	* many *.c files

	  Set library calls parameters are now out of date. FIX!!!
	  (e.g. add the lower & size params for each set type object)

Fri Jan 17 00:54:21 1992  Jukka Virtanen  (jtv at kampi.hut.fi)

	* gpc-decl.c (grok_directive)

	  Fixed forward directives.

	  Extern directives STILL mess around with the
	  external symbol name. (It wants to output the
	  name without uppercasifying the first char.
	  @@@ This needs to be done properly)

	* gpc-decl.c, gpc-parse.y
	  Now parser call pop_label_level() and push_label_level()
	  Fixed clearing of named_labels.
	  (This fixed spurious error messages in some PVS tests)

	* gpc-decl.c (init_decl_processing)

	  Fixed initializing of wchar_type_node
	  (Caused NULL dereferencing).

	  Added routine get_identifier_with_blank() that
	  creates identifiers with leading blank (i.e. they
	  cannot appear as tokens) for adapting for different
	  types of WCHAR_TYPE definitions.

	* Upgraded to gcc-1.96 snapshot 354

Mon May  6 01:13:34 1991  Jukka Virtanen  (jtv at kampi.hut.fi)

	* tree.c is language independent again.

Mon May  3 17:18:55 1991  Jukka Virtanen  (jtv at kampi.hut.fi)

        * gpc-lex.c, gpc-typeck.c, expr.c
	  Implemented complex conjugate as an extension.

	* optabs.c(expand_unop)
	  Implemented complex negation.

Thu May  2 02:13:42 1991  Jukka Virtanen  (jtv at kampi.hut.fi)

	* expr.c(emit_move_insn)
	  The #if 0'd code that moves things in parts is quite ok
	  for moving complex numbers, so I have enabled it for GPC.
	   It has a bug in it, that erroneously uses `x' when
	  it should use `y' when computing `y1' with change_address().
	  @@@ Not reported yet, check that this interpretation is correct.

Wed May  1 17:23:44 1991  Jukka Virtanen  (jtv at kampi.hut.fi)

	* expr.c(expand_expr)
	  Checked COMPLEX_EXPR, REALPART_EXPR, IMAGPART_EXPR and CONJ_EXPR.

	* optabs.c(expand_binop)
	  Fixed the complex type binops. Divide was incorrect.

Tue Apr 16 00:18:45 1991  Jukka Virtanen  (jtv at kampi.hut.fi)

	* gpc-util.c(construct_set)

	  Implemented set bounds of integer set constructors
	  to adjust with the min and max values of the constants
	  in the constructor. (It does not yet handle checking
	  of subrange variable element bounds)

        * Cleaned up language depended files

	* Updated LANG_IND_CHANGES file. It contains information of
	  what has changed in language independent files and why.

Mon Apr 15 01:43:31 1991  Jukka Virtanen  (jtv at kampi.hut.fi)

	* expr.c(expand_expr)
	  Implemented a test version of inline IN_EXPR.
	  If variable in_line is nonzero, use this code,
	  else use the libcall (default).

	  The inline code seems to work if -O is not used. Sigh.
	  Note: It crashed because try_combine used an
	  	uninitialized variable. The bug is propably
		fixed, since newest combine.c(try_combine) looks
		very different from this one.

Sun Apr 14 17:25:02 1991  Jukka Virtanen  (jtv at kampi.hut.fi)

	* gpc-lex.c(yylex) gpc-typeck.c(build_binary_op_nodefault)
	  Changed lex to return RDIV_EXPR when "/" seen.
	  Fixed handling of "/" operator when at least one argument is
	  integer. Standard requires that the result is of real type.

Sat Apr 13 18:05:52 1991  Jukka Virtanen  (jtv at kampi.hut.fi)

	* rts/gpc_set.c rts/gpc_set.h
	  Re-implemented the runtime set library to use
	  word aligned bit vectors.

	* gpc-typeck.c (convert_arguments)
	  Implemented passing of set constructors.

	* gpc-parse.y, gpc-decl.c (build_enumerator)
	  In Pascal we need to know the original type of the
	  enumerated type elements. (For set constructors to
	  build the correct type of set of enumerated elements)

Fri Apr  5 02:49:41 1991  Jukka Virtanen  (jtv at kampi.hut.fi)

	* gpc-util.c (init_simple)
	  Converted the file buffer size to bits when the file
	  is packed. I forgot to do this when I started to
	  flag packed types.

Tue Apr  2 02:17:17 1991  Jukka Virtanen  (jtv at kampi.hut.fi)

	* gpc-util.c (pascal_unpack_and_pack)
	  expr.c (emit_block_move)
	  Implemented pascal PACK/UNPACK routines.

	* tree.c (array_type_nelts)
	  Note: Nobody uses this routine in gcc.
	  However, it assumes that the arrays are of length
	  max-min, although for me they are max-min+1 long.
	  Thus I can't use it either, so created
	  gpc-util.c (pascal_array_type_nelts)

	* gpc-util.c (check_identifier)
	  Fixed the problem with WITH statement that caused
	  core dumps. (check if the identifier is overloaded
	  in the WITH statement)

	* function.c (expand_start_function)
	  Rms responded with a fix for the bug I reported.
	  Now all nested function dependent conformance tests
	  pass.

Sat Mar 30 12:28:19 1991  Jukka Virtanen  (jtv at kampi.hut.fi)

	* Reported a bug to rms: GCC fails to assign values to
	  upper level variables from nested functions.
	  (This causes GPC to fail now on pvs conformance test p029.pas)

	* gpc-parse.y, function.c (containin_function_p)
	  Implemented function return value assignements to upper level
	  functions.

Thu Mar 28 06:20:20 1991  Jukka Virtanen  (jtv at kampi.hut.fi)

	* After some hack attacks:
	  - configure in gpc directory can now compile gpc in a separate
	    object directory.
	  - rewrote string assignments. (The code was missing, so I quess
	    I had screwed up some previous upgrades)
	  - fixed things (except the WITH statement, see below)
	    to the state it was a year(2?) ago. Now the PVS tests
	    pass quite nicely (except the WITH statement :-( )
	  - set operations are starting to do something. However, this is
	    the first version that uses library calls for everything.
	    (One set implementation a day keeps you up at nights)
	  - Converted all suitable build calls to build1.
	  - Fixed most of Jyrki's hack fixes. The worst one
	    still remaining is the only change in tree.c
	    permanent_allocation() that disables one
	    obstack_free(). (Fixed Mon May  6 01:21:40 1991/jtv)

	  Problems: WITH statement does not work anymore!

Mon Mar 11 12:44:08 1991  Jyrki Kuoppala - Hut  (jkp at nic)

	* modified version.c to make it work better with gcc2 dir setup

	* gpc-convert.c (convert_to_char): use build1 instead of build

	* gpc-typeck.c (convert_array_to_pointer): use build1 instead of
	build

	* gpc-convert.c (convert_to_pointer): use build1 instead of build

	* converted also gpc-convert.c to new gcc version, had neglected that

	* gpc-parse.y FOR statement: added 0 as first parameter of
	expand_exit_loop_if_false(), same for REPEAT and WHILE

	* gcc/tree.c: (permanent_allocation): don't free
	maybepermanent_obstack - this is for debugging gpc now, see later
	where the problem is

	* gpc-common.c: (combine_strings) pascal support moved here from
	gpc-util.c

	* gpc-lex.c: (init_lex) call set_identifier_size

	* now it compiles and links

	* stor-layout.c (for COMPLEX_TYPE): don't use TYPE_SIZE_UNIT, use
	TYPE_PRECISION

	* gpc-util.c: make bogus macro TREE_PACKED

	* gpc-util.c: #if 0 function combine_strings, this is in
	gpc-common.c.  Should checker whether it does the same thing.

	* gpc-util.c: TREE_LITERAL -> TREE_CONSTANT

	* gpc-typeck.c: TREE_VOLATILE -> TYPE_VOLATILE

	* gpc-util.c: #if 0 for function build_complex_type, it's already
	in tree.c.  Should check where it's called and change, because
	the parametres are different.

	* gpc-parse.y: expand_end_else -> expand_end_cond (won't work)

	* added some new gcc2 files to Makefile as language-independent
	files

	* now it compiles, but doesn't link because a lot of old macros /
	functions are used.

	* gpc-typeck.c (default_conversion): form -> code, dt -> type,
	TREE_LITERAL -> TREE_CONSTANT, TREE_VOLATILE->TYPE_VOLATILE,
	dt0 -> type0, (build_component_ref): basename -> datum

	* converted gpc-typeck.c

	* created gpc-common.c

	* converted gpc-decl.c to work with gcc2

	* gpc-util.c: TREE_LITERAL -> TREE_CONSTANT, TREE_VOLATILE ->
	TYPE_VOLATILE, TYPE_SIZE_UNIT -> TYPE_PRECISION

	* gpc-parse.y: TREE_LITERAL -> TREE_CONSTANT

	* gpc-lex.c: include <stdio.h> etc. before "input.h" etc.

	* stor-lay.out.c (layout_type): change to use size_binop instead
	of genop

	* stor-layout.c (layout_type): if 0 for gpc COMPLEX_TYPE, it's in
	base gcc now

	* stor-layout.c (layout_type): use new macros for setting sizes
	etc. of types

	* gpc-parse.y: #include <stdio.h> etc. before "input.h"

	* started updating gpc to gcc 1.91 as of March 4 version:
	first I just hunt for the string GPC in the gpc sources and copy
	the code mostly as is, changing only the most obvious things.
	Done dbxout.c, expr.c, fold-const.c (no changes needed),
	function.c, gcc.c, optabs.c, print-tree.c, stor-layout.c.  Now
	only the gpc-specific files need to be done.

vMon Oct 16 20:43:34 1989  Jukka Virtanen  (jtv at kampi.hut.fi)

	* Currently changing the gpc-parse.y to grok non local
	  gotos to the main program. No much luck yet :-)
	  Check gpc-parse.y.ok for a stabile one. function.c
	  has one new routine (to set up context_display).

	* Non-local gotos to routines are ok. (Currently one
	  may NOT jump to the main program level).

Sat Oct 14 15:25:52 1989  Jukka Virtanen  (jtv at kampi.hut.fi)

	* various places.
	  Changes to make gpc use the nested routine support.
	  It appears to almost *work*!

	  Implemented trampoline macros in tm-vax.h should now be ok.

Wed Oct 11 16:08:15 1989  Jukka Virtanen  (jtv at kampi.hut.fi)

	* Upgraded to intermediate level of gcc-1.36 with
	  nested routine and non-local goto support.

	  A couple of nesting bugs found, rms fixed them.

	  Forward directive ceased working?

Wed Oct 8 18:07:47 1989  Jukka Virtanen  (jtv at kampi.hut.fi)

	* Upgraded to 1.36

Fri Aug 25 14:23:19 1989  Jukka Virtanen  (jtv at kampi.hut.fi)

	* Upgraded to 1.35.97

	  Started to implement sets & set operations &
	  set constructors.

Mon Aug 21 01:13:23 1989  Jukka Virtanen  (jtv at kampi.hut.fi)

	* gpc-parse.y

	  GPC can now handle ranges in CASE statements.

Wed Aug 16 00:48:22 1989  Jukka Virtanen  (jtv at kampi.hut.fi)

	* expmed.c
	  fold-const.c

	  Changed Pascal MOD to use FLOOR_MOD_EXPR. It was
	  there all the time, I just did not know what it
	  was. Both the files fold-const.c and expmed.c are now
	  unchanged from the gcc versions, so I removed them
	  from here.

Sat Aug 12 17:05:10 1989  Jukka Virtanen  (jtv at kampi.hut.fi)

	* FRIEND_DECL tree code is flushed. Using an attribute
	  REDEFINABLE_DECL(NODE) ((NODE)->common.lang_flag_2)
	  instead.

	* upgraded to gcc-1.35.96

Sat Aug  5 01:11:11 1989  Jukka Virtanen  (jtv at kampi.hut.fi)

	* rts

	  Run time system should now support lazy i/o. Compiler does not
	  yet do it. Fixed some bugs in terminal i/o.

	* gpc-typeck (build_unary_op, build_array_ref)
	  expr.c (various places)

	  Took my previous changes for non-zero low bound array handling
	  code away from expr.c, and changed the appropriate places in
	  gpc-typeck.c. Now the code is simpler and cleaner, and expr.c
	  does not have so many changes :-)

	* optabs.c
	  emit-rtl.c (gen_lowpart)

	  implemented simple complex type operations for GCC.

	  gen_lowpart() check for validity should use GET_MODE_UNIT_SIZE
	  not GET_MODE_SIZE so that complex types can use it.
	  (Fixed in 1.35.97)

Sun Jul 30 16:38:07 1989  Jukka Virtanen  (jtv at kampi.hut.fi)

	* rts/gpc_rt0.c (_p_fflush)

	  Removed the stupid bug that fflushed stdin.
	  It has no effect in VAX, but Sun-4 and Sun-3 terminal
	  input behaved really strangely.

Sat Jul 29 06:02:02 1989  Jukka Virtanen  (jtv at kampi.hut.fi)

	* stor-layout.c (layout_type)
	  gpc-util.c (init_util)

	  Size of FILE_TYPE object is now included from the run time
	  system header file rts/rts_types.h. layout_type() references to
	  external tree type variable size_of_file_type.

	* gpc-util.c (init_any)

	  Implemeted initialization of FILE_TYPE fields inside
	  Pascal records. Although the initialization of fields
	  inside record variants is likely to be wasted if the
	  overlaying field is written to. Detection of such
	  things is, once again, left open. Don't write bad
	  programs! Or compilers...

	* gpc-typeck.c (build_binary_op_nodefault)

	  Fixed (?) the bug causing *truly* verbose boolean comparisons
	  in the assembler code due to many unnecessary conversions.

	* gpc-util.c (routines that output RTS calls)
	  Run time system gpc_read.c & gpc_write.c

	  Re-implemented the handling of text file read & write routines.
	  Instead of the about 15 different write & read routines for TEXT
	  files there are now only 2 (_p_write & _p_read) that take
	  variable number of varying arguments, making the compiled
	  programs faster and assembly code easier to read.

	* gpc-decl.c (grok_directive)

	  Implemented directive `C' that does not convert
	  the possible first letter of the identifier to upper
	  case. Otherwise equal to `External'.

	  This requires knowledge of the label prefix written
	  to the assembler files. The tm.h macro ASM_OUTPUT_LABEL
	  contains the prefix as part of the string, but it does
	  not help much. There should also be a defined string
	  ASM_OUTPUT_LABEL_PREFIX if such label prefix is needeed
	  for the machine. Currently the symbol is defined in
	  gpc-decl.c, but it should be moved to tm.h (of all machines :-)

Thu Jul 27 17:00:48 1989  Jukka Virtanen  (jtv at kampi.hut.fi)

	* Run time system

	  The run time system can now be compiled without modification
	  for most systems. Ftruncate is still missing for USG systems.

	* gpc-util.c (build_rts_call is_string_type)
	  rts/gpc_file.c

	  Fixed the handling of optional file name parameter to file
	  opening run time calls. Added the length of the optional second
	  parameter as the third parameter to _p_reset, _p_rewrite and
	  _p_extend.

	  Added routine is_string_type to check if the argument is a
	  string in Pascal sense.

Wed Jul 26 00:57:29 1989  Jukka Virtanen  (jtv at kampi.hut.fi)

	* sparc.md

	  The define_expands matching what sbe && sne generate
	  do not clear the bit CC_IN_FCCR, since they do not
	  call macro NOTICE_UPDATE_CC. Fixed by clearing
	  the bits in sparc.md. Notified RMS.

	  Some more changes (by jkp@kampi.hut.fi) to the
	  sparc output routines; made to the gcc-1.35.95
	  and I am not certain what they were, but who cares,
	  we'll see them in gcc-1.36. Sent to gnu.gcc.bugs.

	* fold-constant.c (fold_convert)

	  The following C program produces incorrect results in Gcc-1.35:
	  main() {int j = ((int) -3.7) == -3; }

	  Also affects Pascal TRUNC function. Fixed by calling
	  force_fit_type in fold_convert. Notified RMS.

	* stor-layout.c (layout_type)

	  Tightened the rules of changing ARRAY_TYPE objects
	  from BLKmode to some other if STRICT_ALIGNMENT is
	  in effect. (Sparc dumped core before). Notified RMS.

Sat Jul 22 21:54:44 1989  Jukka Virtanen  (jtv at kampi.hut.fi)

	* Changed version number to 0.05 and placed 0.04 to
	  MIT Suns.

Wed Jul 19 03:57:24 1989  Jukka Virtanen  (jtv at kampi.hut.fi)

	* gpc-parse.y

	  Allowed variable declarations whenever a statement is legal.

	* gpc-parse.y (subrange_type)
	  gpc_util.c (build_range_type, make_signed_range)

	  Allowed the upper subrange bound to be an arbitrary
	  expression. (It's more difficult to allow both bounds
	  to be expressions; it causes a lot of shift/reduce conflicts.
	  This requires some thinking!)
	  (afterthought: It requires MORE thinking than I thought it would!)

	  In any case, this makes it possible to use the variable-sized
	  arrays whose size is determined on entry to the block.

	* gpc-parse.y

	  Changed the parser to give error messages on missing
	  semicolons instead of terminating on the first such event.
	  (Note: I disabled this later to catch other error)

	* expr.c (expand_expr)

	  Implemented Pascal ROUND function in FIX_ROUND_EXPR.
	  Round(x) =
	   if (x >= 0.0) then trunc(x+0.5) else trunc(x-0.5)
	  It is done just like the code above.

	  While implementing it, I found out that the C-code
	  assignment: i = ((int) -3.7 == -3);
	  does not work as the routine fold_convert() in fold-const.c
	  leaves an unsigned value to the datum it returns
	  instead of converting it to the signed value as
	  expected. Notified RMS.	  

Tue Jul 18 20:42:41 1989  Jukka Virtanen  (jtv at kampi.hut.fi)

	* gpc-util.c (build_buffer_ref)

	  Build an
	    indirect_ref (of type file component) through
	    an indirect_ref (of type pointer to file component)
	    through address of file type object
	  instead of
	    indirect_ref (of type file component) through
	    an indirect_ref (of type pointer to file)
	    through address of file type object.

Wed Jul 12 01:10:09 1989  Jukka Virtanen  (jtv at kampi.hut.fi)

	* gpc_parse.y

	  expand_end_case() has a parameter. (It's changed
	  since epoch)

	  It's nice that the Vax unix allows *NULL.
	  (This is a joke, hahahaha)

	* gpc_parse.y

	  Fixed a bug caused by dereferencing a null pointer
	  when parsing something that looks like a function call
	  but the function is undefined. First GPC bug report
	  outside HUT by Doug Schmidt (thanks) :-)

Tue Jul 11 15:30:24 1989  Jukka Virtanen  (jtv at kampi.hut.fi)

	* gpc_defs.h (ASSERT macro)

	  Changed the ASSERT(x, s) to ASSERT(x, str) because cpp
	  expands macro parameters inside strings and I forgot it.

Sun Jul  9 20:19:41 1989  Jukka Virtanen  (jtv at kampi.hut.fi)

	* optabs.c (emit_cmp_insn)
	  gpclib  (rts/gpc_misc.c routine _p_bcmp)

	  Implemented routine _p_bcmp (in the run time system) that
	  compares character strings. bcmp(3) handles only equality,
	  but Pascal needs also LESS and GREATER relations. The
	  routine _p_bcmp is a simple byte-by-byte comparison loop,
	  that can be optimized heavily with machine dependend code
	  (i.e. in vax it could use the bcmp3 machine instruction)

	  Changed optabs.c routine emit_cmp_insn to call _p_bcmp
	  instead of bmcp(3) or memcmp(3)

Sun Jul  2 23:21:45 1989  Jukka Virtanen  (jtv at kampi.hut.fi)

	* gpc-parse.y
	  gpc-decl.c (grokdeclarator)

	  Fixed the bug that caused different result with -O switch.
	  GPC optimized the function return value assignments away
	  since the result was never used in the function. Fixed it by
	  declaring the function retval id volatile.

Sat Jul  1 01:15:04 1989  Jukka Virtanen  (jtv at kampi.hut.fi)

	* Started implementing set type. Sets are represented as
	  arrays of booleans, but the type of the set is still the
	  type of the set elements. Implemented IN_EXPR to see if
	  this method works...

	  It is yet unclear to me if sets starting from nonzero
	  element cause problems.  Normally they don't, but passing
	  sets as parameters can be a problem. So maybe I need to
	  store the low bound and length to the beginning of the
	  set. When this thing is ok, maybe it would be nice to
	  implement some sparse set model (with linked lists) and
	  run time routines that can mix both of them. This might
	  make Pascal sets more useful.

	* gpc-util.c (rts_read) (rts_write)

	  Oops, fixed a bug when reading and writing with
	  Read & Write from non-textfiles.

Fri Jun 30 01:48:12 1989  Jukka Virtanen  (jtv at kampi.hut.fi)

	* gpc-decl.c (start_function) (start_pascal_function) (grok_directive)
	  gpc-lang.h
	  gpc-parse.y
				      
	  Implemented Pascal required `Forward' directive. Also
	  `External' should work (nothing prevents you from
	  declaring an external function in the same file, which
	  I consider somewhat misleading.) If -pedantic is
	  given gpc complains if you give the parameters and
	  function return value when actually defining the forward
	  declared function thus violating THE standard.

	  I started to use the *_LANG_SPECIFIC macros and
	  the struct lang_decl *lang_specifig field in the tree_node,
	  but did not alter make_node in tree.c. So the nodes MIGHT go
	  to different obstacks. And that is bad. Have to look at this.

	* expmed.c (expand_divmod)
	  fold-const.c (div_and_round_double) 

	  Implemented Pascal MOD with TRUNC_MOD_EXPR. It's
	  incorrect, but works until it's done better.
	  This way it's not language independent.

Thu Jun 29 04:13:32 1989  Jukka Virtanen  (jtv at kampi.hut.fi)

	* gpc-util.c, run time system

	  Reduced number of parameters of _p_initfdr to 4.

	* gpc-util.c (build_buffer_ref)

	  Changed file buffer referencing through the FILE_TYPE
	  BLKmode thing to happen like *(*(&file)) instead of
	  *file that used to abort 4 tests and fail on Suns.

Wed Jun 28 02:44:50 1989  Jukka Virtanen  (jtv at kampi.hut.fi)

	* Ran PVS tests first time on Sun-3/60. 18 more tests passing
	  in Vax will not compile or run correctly on a Sun. It's amazing
	  that it does even this much...

	* gpc-util.c (init_any)
	  Avoid wraparound when stepping through indices of arrays
	  we are initializing. array [ maxint .. maxint ] of anything
	  caused virtual memory to exceed :-)

	* gpc-lex.c (yylex)
	  Implemented Extended Pascal numbers that are of the format:
	  radix#value where radix can be in the range 2..36

        * gpc-util.c gpc-parse.y
	  Implemented Extended Pascal file routines to the run time
	  system (SeekRead, SeekWrite, SeekUpdate, Update, Extend,
	  Empty, LastPosition, Position).
	  These are not tested, and likely to be buggy.

	* Implemented also a GPC extension (not in Extended Pascal)
	  DefineSize that can be used to move the file pointer past end of file.
	  File will be truncated to the specified size if you so specify.

	* Implemented Extended Pascal procedure Halt. (with minor
	  extensions :-) Also Date, Time and GetTimeStamp are
	  implemented, but require some work after Extended Pascal
	  string type is implemented and predefined record TimeStamp
	  is defined.

Tue Jun 27 01:42:09 1989  Jukka Virtanen  (jtv at kampi.hut.fi)

	* gpc-util.c (un_initialize_block) (init_any) (init_simple)
	Split the un_initialize_block() routine into three parts:
	init_any() which is a recursive routine that propagates through
	all structured types and calls init_simple () to do the actual
	un-initialization for all basic (simple) types. (Currently only
	FILE_TYPE is un_initialized by generating _p_initfdr() calls to do
	that.) un_initialize_block () now only finds all VAR_DECL nodes in
	the block and calls init_any () for each of them.

Sun Jun 25 02:15:09 1989  Jukka Virtanen  (jtv at kampi.hut.fi)

	* obtabs.c (emit_cmp_insn)
	It seems that the emit_library_call () for "bcmp"
	&& "memcmp" has wrong parameters x & y.
	When changed to XEXP (x, 0) and XEXP (y, 0) the
	compiler does not abort, and seems to generate
	intelligent looking code.
	Now it seems to generate code for block compares.
	Notified RMS.

	* gpc-decl.c (grokdeclarator)
	  gpc-typeck.c (default_conversion) (build_array_ref)
		       (build_unary_op) (convert_array_to_pointer)
	Don't convert arrays to pointers by default anymore.
	Now it seems to be able to pass both VAR and value
	parameter arrays. Moved the array stuff from default_conversion
	to a new routine convert_array_to_pointer that gets called when
	such a thing is required (build_unary_op (ADDR_EXPR from
	ARRAY_REF) and build_array_ref ()) Indexing these arrays
	seems to work now also.

	* Started to implement Pascal arrays properly.

Fri Jun 23 15:15:48 1989  Jukka Virtanen  (jtv at kampi.hut.fi)

	* gpc-parse.y (FOR statement)
	The for statement control variable should not
	be assigned to until BOTH of the bounds expressions
	have been evaluated. Fixed by allocating temp variables
	for both of the expressions.

	* dbxout.c (dbxout_type)
	Implemented CHAR_TYPE, BOOLEAN_TYPE, FILE_TYPE and
	COMPLEX_TYPE .stabs for gdb debugging.

Wed Jun 21 08:21:15 1989  Jukka Virtanen  (jtv at kampi.hut.fi)

	* gpc-util.c (un_initialize_block)
	Altered a NULL_TREE parameter to integer_zero_node
	when constructing the file initialization run time system
	call.

	* gpc-lex.c (yylex)
	  Changed gpc to use tables generated by Doug Schmidt's
	  perfect hash function generator when recognizing reserved
	  words.

	* merged with gcc-1.35. Problems to find time to do GPC.

Mon Apr  3 16:08:12 1989  Jukka Virtanen  (jtv at kampi)

	* Implemented Extended Pascal MAXCHAR, MINREAL, MAXREAL
	and EPSREAL.

Sat Mar 25 12:27:12 1989  Jukka Virtanen  (jtv at kampi)

	* Changed version number to 0.04

	* Updated the COPYRIGHT notice on all files (also
	in the run time system) to FSF Copyright Version 1
	level.

	* gpc-parse.y
	  gpc-decl.c (shadow_record_fields)
	Changed WITH statement record field shadowing to happen
	when the corresponding WITH element is parsed. It was previously
	done after all WITH elements had been placed in a chain;
	but this is far too late, since lookup_name() was then
	called too early. Now the WITH statement should work as
	the standard requires.

	* gpc-parse.y
	Fixed bug in REPEAT UNTIL boolean_expression handling.

Fri Mar 24 18:08:37 1989  Jukka Virtanen  (jtv at kampi)

	* gpc-parse.y
	While parsing FOR loops the lineno variable was assigned
	to $<itype>9 inside the ninth element of the rule. It seems that
	this does not work as I imagined, since when $<itype>9
	was accessed it was always 0 causing an abort() in final()
	if -g was specified. Use $<itype>$ instead.

	* Split the gpc-parse.y to gpc-parse.y and gpc-lex.c
	(We had the *OLD* Bison here that did not output YYSTYPE
	and YYLTYPE to tab.h file before...)

	* Got rid of TREE_IMPLICT_REF. It was ugly...
	VAR parameters are now handled with REFERENCE_TYPE
	nodes. Until they are properly implemented, I convert
	them to POINTER_TYPE nodes as soon as possible to avoid
	too many changes in GCC files. (Let's hope I managed to
	catch all places where conversions are needeed:
	gpc-parse.y, actualparameterlist(), build_indirect_ref(),
	default_conversion().

	This caused also other changes, mainly to gpc-util.c (do_ptype)
	and the way run time system routines get their formal parameter 
	list.

Tue Mar 21 13:59:45 1989  Jukka Virtanen  (jtv at kampi)

	* empty record variables cannot be declared.
	They generate an undefined external reference when
	linking the program. It's also a bug in GCC. Notified RMS.
	(RMS fixed it in gcc-1.34)

	* gpc-util.c (shadow_record_fields & handle_one_level)
	gpc-parse.y
	Handle WITH for variant records. Also, now it should calculate
	a pointer to the WITH element value and store it to
	a temporary variable and construct an indirect_ref through this
	when WITH elements are used. This is done only when WITH element
	is not a VAR_DECL node.

	* gpc-typeck.c (find_field)
	For variant records when proceeding to the variant part through
	the NULL_TREE named FIELD_DECL nodes don't generate
	COMPONENT_REFs for UNION_TYPE decls. I have to look at this
	again someday.

	* gpc-typeck.c (build_unary_op)
	ADDR_EXPR did not allow arrays with non-zero lower bound.

	* Gee. I have to DE-implement the function return values
	to the way I did it in the first place. This is because Pascal
	allows assignment to function return values long before
	the function returns. The function return values (when possible)
	go to the register r0, which is not marked as reserved when
	the DECL_RESULT is stored, and this register is used for other
	purposes thus destroying the assigned function return value.

Fri Mar 17 17:37:53 1989  Jukka Virtanen  (jtv at kampi)

	* gpc-parse.y
	FOR loop bound checking altered to avoid wraparound bug

	* gpc-parse.y
	  gpc-decl.c
	Re-implemented the function return value handling to
	use the GCC supplied standard features.

Thu Mar 16 17:26:24 1989  Jukka Virtanen  (jtv at kampi)

	* gpc-parse.y
	  gpc-decl.c (shadow_record_fields)
	Partially implemented WITH statement.
	Does not work with variant records, other bugs
	are also likely to pop up. But it passes 6 PVS
	conformance tests with WITH!!! WITH elements still
	need to be evaluated only once.

Tue Mar 14 15:06:44 1989  Jukka Virtanen  (jtv at kampi)

	* gpc-util.c (resolve_forward_pointer)
	  gpc-parse.y
	  gpc-decl.c (lookup_tag not static currently)
	Implemented pointers to currently undeclared
	types. A "forward pointer" is placed in the
	list of TAGS where the routine resolve_forward_pointer
	seeks it when a new type is declared. If it finds
	a forward pointer, it alters the type it points to,
	and lays it out (well, maybe the layout is unnecessary)

Wed Mar 8 16:07:23 1989  Jukka Virtanen  (jtv at kampi)

	* Changed the new edition number to 0.03

Tue Mar  7 12:46:59 1989  Jukka Virtanen  (jtv at kampi)

	* gpc-util.c (build_rts_call):
	Allow NEW and DISPOSE to take variable number of args
	but warn if the arg list is longer than 1 (it means
	the user is allocating memory for tag-fielded variant
	records with specified tags)

	* gpc-typeck.c (actualparameterlist)
	  gpc-parse.y
	  gpc-util.c
	Procedural parameters should work.
	(A problem: if formal parameter is a procedural
	parameter, and the actual parameter is a routine
	returning a procedure/function pointer, should
	we evaluate or not? Of course, this is not a problem
	in standard Pascal.

Sun Mar  5 01:57:59 1989  Jukka Virtanen  (jtv at kampi)

	* gpc-parse.y
	  gpc-util.c (convert_type_to_index):
	ordinal typenames used as index specifiers
	for arrays should work. (Should check that
	array [ integer ] of anything is not given;
	it might fill the computer... Well, it's only
	a question of resources :-)

	* gpc-typeck.c (convert_for_assignment)
	  gpc-util.c (build_range)
	subranges should work better now. Even some type
	checking should be implemented for them. Upper
	and lower bounds must be of same type. Enumerated
	type values are still treated as integers.  Needs
	fixing.

	* gpc-parse.y
	Argh. When we need a Pascal CONSTANT that is a
	predefined identifier (like MAXINT) we cannot
	pass the node itself, we have to pass a
	copy_node() of it; I found this out when
	build_range() modified the min value of the
	integer_maxint_node and folding a NEGATE_EXPR of
	this node returned a mysterious number...

	* changed TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR
	to TRUTH_AND_EXPR and TRUTH_OR_EXPR; the short
	circuit boolean operators may still be called
	with AND THEN and OR ELSE or by giving the
	option -fshort_circuit

	* added -fshort_circuit

Sat Mar  4 19:44:10 1989  Jukka Virtanen  (jtv at kampi)

	* gpc-util.c (build_index_type_2):
	a routine similar to build_index_type (), but can
	also define the lower bound of the index (not always 0).
	Hashes to the same hashcode as build_index_type.

	* gpc-util.c (concatenate_strings):
	constant string arrays have a lower subscript 1
	as the standard requires, not 0 as before.
	The terminating NULL is no longer counted to array size.
	String assignment should work.

	* Made array assignment possible

	* Implemented CHAR_TYPE.

Thu Mar  2 06:02:14 1989  Jukka Virtanen  (jtv at kampi.hut.fi)

	* Implemented array indexing to arrays with arbitrary
	lower bound. (Used to work only with zero lower bound;
	as C requires.)

	expr.c (expand_assignment): 
	expr.c (expand_expr): case ARRAY_REF: & case COMPONENT_REF:
	Modified the code to handle arrays with non-zero
	lower bounds.

Wed Mar  1 13:09:44 1989  Jukka Virtanen  (jtv at kampi.hut.fi)

	* gpc-decl.c (start_decl): don't switch to temporary_allocation
	when defining a top level CONST_DECL node.

Tue Feb  28 16:35:56 1989  Jukka Virtanen  (jtv at kampi.hut.fi)

	* upgraded to gcc-1.34
	changed gpc version to 0.02 (gcc-1.34)

Mon Feb  27 17:20:42 1989  Jukka Virtanen  (jtv at kampi.hut.fi)

        * gpc version 0.01 (gcc-1.33) transferred to
	  MIT-Suns (to directory ~jtv/gpc)

Wed Mar 30 12:39:13 1988  Jukka Virtanen  (jtv at santra.hut.fi)

	* Epoch. Started implementing gpc on gcc-1.21.
	  Got bored, and forgot the whole thing until
	  at Feb 1989 I ported the changes to gcc-1.33.
	  (I didn't think you would actually read this!)
