ChangeLog - edit history for GPC, the GNU Pascal Compiler
=========================================================

Sat  7 Oct 2000 27:46 Frank Heckenbach <frank@g-n-u.de>

        * doc/*.texi: unindented all examples (now checked by
          check-doc)

        * doc/reference.texi: made all remaining existing demo
          programs compilable (as now found by check-doc)

        * script/check-doc: added more checks

Thu  5 Oct 2000 23:36 Frank Heckenbach <frank@g-n-u.de>

        * doc/reference.texi: renamed `TestFoo' programs to
          `FooDemo' (because they are demo, not test, programs, and
          to have more freedom WRT "8+3" file names); made some more
          demo programs compilable (as verified by check-doc)

Tue  3 Oct 2000 25:01 Frank Heckenbach <frank@g-n-u.de>

        * test/test_run: flag compiler crashes and internal errors
          as failures even in `WRONG' programs

        * util.c, parse.y: removed long-obsolete `DEFAULT' and
          `OTHERS' tokens

        * doc/reference.texi: fixed sorting errors and added missing
          skeletons found by check-doc

        * doc/reference.texi, doc/programming.texi: fixed errors in
          the demo programs found by check-doc

        * doc/reference.texi: `rewrite' is an English word, so don't
          capitalize the `W'

        * script/*: made scripts more robust WRT quoting and use of
          temp files

Sun 1 Oct 2000 18:22 Peter Gerwinski <peter@gerwinski.de>

        * doc/reference.texi, doc/programming.texi: Patched in
          changes by Dominik Freche.

        * doc/bpqstart.texi: Adapted references.

        * script/cvsupdate: preserve permissions.

        * test/getopt*.run: dummy change to update permissions.

Mon 25 Sep 2000 20:04 Frank Heckenbach <frank@g-n-u.de>

        * test/test_run: added `sh' to run the compile and run
          scripts, so we don't have to worry about executable
          permissions here

        * doc/support.texi: documented the fact that the scripts are
          always run by `sh' now

        * rts/rts.h: don't include both <signal.h> and
          <bsd/signal.h> (would cause duplicate definitions under
          Linux 2.4)

Sun 17 Sep 2000 29:32 Frank Heckenbach <frank@g-n-u.de>

        * util.c, rts/types.h, rts/internal.pas, rts/file.c,
          doc/reference.texi: added the Size field in BindingType
          again

Sat 16 Sep 2000 10:45 Frank Heckenbach <frank@g-n-u.de>

        * rts/rts.c: _p_exit(): on runtime error, exit with a fixed
          status (EXIT_RUNTIME_ERROR, definable in rts/rts.h) rather
          than the error code

Tue 11 Sep 2000 18:42 Peter Gerwinski <peter@gerwinski.de>

        * Make-lang*.in: Since current versions of GCC come with
          makeinfo < 4.0 and we need >= 4.0, s/\$(MAKEINFO)/makeinfo/g.

Mon 11 Sep 2000 22:18 Peter Gerwinski <peter@gerwinski.de>

        * ../gcc.c for gcc-2.8.1: link_command_spec: use
          LINK_COMMAND_SPEC again which had got lost.

Thu  7 Sep 2000 29:40 Frank Heckenbach <frank@g-n-u.de>

        * rts/bind.c, rts/randfile.c, rts/read.c, rts/write.c:
          functions moved to file.c, files removed (this does not
          cause additional linking inefficiencies since all of these
          files were linked into a Pascal program, anyway, and it
          will help later conversion of the routines to Pascal)

Sun 27 Aug 2000 22:43 Peter Gerwinski <peter@gerwinski.de>

        * circle-buf.h, gbe.h, gpc-common.c, gpc-decl.c, gpc-defs.h,
          gpc-lex.c, gpc-tree.h, gpc-typeck.c, gpi-hash.c, gpi-hash.h, 
          lang.c, lang.h, memfiles.c, memfiles.h, module.c, module.h,
          objects.h, parse.y, rts.c, rts.h, setop.c, setop.h,
          types.c, types.h, util.c, util.h: s/PROTO/PARAMS/g,
          and other adaptions of prototypes to egcs-20000821.
          
        * gpc.c: same here, but also for PVPARAMS.

        * gpcpp.c: same here, but without ansidecl.h.

        * gpc.c: my_strerror(): replaced by xstrerror() in egcs-20000821.
        
        * gbe.h: use the new GBE includes in egcs-20000821.

        * ../toplev.c for gcc-2.8.1: main(): drop `-dY' in favour of
          `--debug-source' to minimize changes to the backend.

Sun 27 Aug 2000 11:18 Peter Gerwinski <peter@gerwinski.de>

        * diffs/mkdiff: updated for egcs-20000821.

Fri 25 Aug 2000 16:50 Russ Whitaker <russ@ashlandhome.net>
                      Frank Heckenbach <frank@g-n-u.de>

        * doc/faq.texi: new file

        * FAQ: now generated from doc/faq.texi

Sun 20 Aug 2000 27:12 Peter Gerwinski <peter@gerwinski.de>

        * config-lang.in: don't test symlinks with `-f';
          removed symlinks to patches of meanwhile-old EGCS releases

        * ../fold-const.c: int_const_binop(): unsigned values can
          overflow, too (must examine this more closely ... fjf83).

        * diffs/mkdiff: updated for ../fold-const.c.

        * gbe.h, util.h, util.c: maybe_find_function_data() is now
          always in util.c.

Tue 15 Aug 2000 30:28 Frank Heckenbach <frank@g-n-u.de>

        * script/make-acconfig-h.m4: new scipt

        * Make-lang.in: create rts/acconfig.h automatically from
          rts/configure.in using script/make-acconfig-h.m4

        * demos/crtscreen.c: new file

Mon 14 Aug 2000 23:15:45 Peter Gerwinski <peter@gerwinski.de>

        * config-lang.in: trigger on an explicitly added line, not
          on some particular patch (which might change)

        * ../stor-layout.c, ../tree.c, ../tree.h for gcc-2.8.1:
          set-related stuff changed according to patched gcc-2.95.1

        * ../dwarfout.h, ../toplev.h, ../rtl.h, ../tree.h:
          added prototypes - merged patches by Frank (12 Apr 2000)

        * diffs/mkdiff: include dwarfout.h, toplev.h, rtl.h, tree.h
          for gcc-2.8.1

        * diffs/gcc-egcs-2.91.60.diff, diffs/gcc-egcs-2.93.12.diff,
          and corresponding symlinks: removed

        * util.c: pascal_init(): initialize set-related stuff also
          for gcc-2.8.1

Sun 13 Aug 2000 21:25 Frank Heckenbach <frank@g-n-u.de>

        * gpc-decl.c, gpc-lex.c: undid Peter's changes regarding the
          headers. Peter, you might want to apply my patch of
          2000-04-12 to really fix the problems instead...

Sun 13 Aug 2000 20:02 Peter Gerwinski <peter@gerwinski.de>

        * gpc-decl.c: #include "toplev.h" only with EGCS where it is present.
          size_volatile: variable moved here from `../stor-layout.c'.
          global_bindings_p(): use this hook to `../store_layout.c:
          variable_size()' instead of patching `../stor-layout.c'.

        * gpc-lex.c: #include "dwarfout.h" only with EGCS where it is present.

        * ../stor-layout.c: size_volatile: variable moved into
          frontend (`gpc-decl.c').
          variable_size(): do not use `size_volatile'; instead use
          `global_bindings_p()' as a hook to get the same effect
          without a patch to the backend.

Mon 7 Aug 2000 22:25:05 J. David Bryan <dbryan@bcpl.net>

        * gpc.c: process_command(): give GPC_EXEC_PREFIX precedence
          over GCC_EXEC_PREFIX.

Thu  3 Aug 2000 16:12 Frank Heckenbach <frank@g-n-u.de>

        * doc/install.texi: new paragraph about the libraries

Mon 24 Jul 2000 27:41 Frank Heckenbach <frank@g-n-u.de>

        * rts/configure.in, rts/acconfig.h, rts/rts.h, rts/rts.c:
          massive changes in the autoconf checks, some new autoconf
          functions, a number of new tests for header declarations
          of certain functions and variables

Thu 20 Jul 2000 29:56 Frank Heckenbach <frank@g-n-u.de>

        * doc/*.texi: got rid of overfull boxes in the TeX version

Mon 17 Jul 2000 30:47 Frank Heckenbach <frank@g-n-u.de>

        * units/gmp.pas: made work with GMP 3.x

        * units/gmpc.c: new file

Wed 12 Jul 2000 26:22 Peter Gerwinski <peter@gerwinski.de>

        * doc/gradient.jpg: made it a two-way gradient.

Thu 6 Jul 2000 25:02 Peter Gerwinski <peter@gerwinski.de>

        * Make-lang.in, Make-lang-2.95.in, Make-lang-old.in: new
          variable `man1dir' to install the man page in the `man1'
          subdirectory for all versions of GCC.

Wed 5 Jul 2000 16:18 Peter Gerwinski <peter@gerwinski.de>

        * Alpha release of gpc-20000705.
          Announcement of the public CVS server.

Wed 5 Jul 2000 15:06 Peter Gerwinski <peter@gerwinski.de>

        * doc/install.texi: final corrections.

Wed 5 Jul 2000 14:25 Peter Gerwinski <peter@gerwinski.de>

        * config-lang.in: check and create symlinks for diffs.

Thu 4 Jul 2000 23:17 Peter Gerwinski <peter@gerwinski.de>

        * doc/contributors.texi: @:ified; Phil is a Prof.

        * doc/gpc.texi: moved "Support" section.

        * doc/install.texi: describe use of `sed', building the
          WWW pages, where to get GNU tools.

        * doc/support.texi: @node GPC Support: renamed to
          "Professional Support" and listed all companies we
          know which are specialized on support for GPC.

Thu 29 Jun 2000 26:08 Frank Heckenbach <frank@g-n-u.de>

        * doc/texinfo.tex: replace with version from texinfo-4.0

        * doc/*.texi: made work with texinfo-4.0; in particular, the
          `@unnumberedsubsec' hack in reference.texi breaks down
          completely, but I think we can use `@subheading' instead.

Tue 27 Jun 2000 23:00 Frank Heckenbach <frank@g-n-u.de>

        * rts/internal.pas: RunFinalizers: new procedure; always
          compiled with debug information (rts/Makefile.in), and
          with "<implicit code>" as the file name

Mon 26 Jun 2000 28:08 Peter Gerwinski <peter@gerwinski.de>

        * parse.y: assignment_or_call_statement: emit line number
          information _before_ rest_of_statement.

Mon 26 Jun 2000 25:45 Frank Heckenbach <frank@g-n-u.de>

        * Makefile.in: test targets: moved to Make-lang.in, paths
          adjusted

Sat 24 Jun 2000 19:54 Peter Gerwinski <peter@gerwinski.de>

        * doc/install.texi: capitalized node names, give help in INSTALL
          file, updated notes about CygWin and mingw32.

        * parse.y: main_program_declaration: store the program's name
          in the module; name the program initializers and finalizers
          `init_pascal_main_program' and `fini_pascal_main_program'.
          omit one line note causing crashes with `-g' (fjf401.pas).
          implicit_module_destructor: suppress line number information.

        * util.c: get_main_program_name(): call the program
          `pascal_main_program' rather than `program_Foo'.

        * module.c: import_interface(); demos/gpc_c_c.c; test/gpc_c_c.c;
          units/gpc-in-c.h; util.c: output_real_main_program(),
          start_constructor(): adapted for `init_pascal_main_program'.

Mon 19 Jun 2000 11:13 Peter Gerwinski <peter@gerwinski.de>

        * doc/install.texi: major update to address gcc-2.95.x and CVS.

        * doc/welcome.texi: "GCC" is the "GNU Compiler Collection" now.

        * gpc-lex.c: reinit_parse_for_function(): removed function.

        * parse.y: dot_or_error: bump out in BP mode.
          main_program_declaration: use pushlevel_expand() and
          poplevel_expand(); suppress line number information
          for constructors, destructors, and the main() program.
          implicit_module_constructor: suppress line number
          information; call pushlevel() and poplevel() explicitly.

        * util.c: output_real_main_program(): suppressing line number
          information is now done in parse.y:main_program_declaration.
          finish_program_component(), pushlevel_expand(),
          poplevel_expand(): new functions.

Sun 18 Jun 2000 25:15 Frank Heckenbach <frank@g-n-u.de>

        * doc/gpc.1: removed out of date information about command
          line options; referred to the manual instead

Wed 14 Jun 2000 20:30 Frank Heckenbach <frank@g-n-u.de>

        * lang-specs.h: include version.h to get the version;
          lang-specs.h.in: file removed because it is no more needed
          this way

        * Make-lang.in: pascal.update-release: generate version.h;
          make it possible to invoke this target also from
          Make-lang.in without configuring

        * gpc_release: moved the release date as a define to
          version.h; file removed

        * version.c: changed the variables to defines, moved them to
          version.h; file removed

        * gpc.c, version.c, Make-lang.in: removed gpc_date and
          gpc_time (the release date is more important than the
          compilation date)

        * compile.cmd: removed, because it is hopelessly out of
          date. If someone wants to build GPC for EMX, and bash (or
          whatever) is still missing, they are better off starting
          from scratch...

Mon 12 Jun 2000 22:26 Frank Heckenbach <frank@g-n-u.de>

        * Make-lang.in: pascal.html-dist, pascal.cvsfiles: new
          targets

Sun  4 Jun 2000 25:25 Frank Heckenbach <frank@g-n-u.de>

        * doc/peng-screen.png: new file

Sun  4 Jun 2000 22:07 Frank Heckenbach <frank@g-n-u.de>

        * doc/download.html.in: integrated into install.texi; file
          removed

Sat 3 Jun 2000 Peter Gerwinski <peter@gerwinski.de>

        * doc/download.html.in: added information about CVS.

Fri  2 Jun 2000 30:34 Frank Heckenbach <frank@g-n-u.de>

        * script/find-sed: new script

Fri  2 Jun 2000 25:39 Frank Heckenbach <frank@g-n-u.de>

        * doc/gnu.texi: new file, contains what was in gnu.html.in,
          manifesto.texi and funding.texi before, removed the latter
          three files

        * doc/macros.texi: new file

Fri 2 Jun 2000 24:22:00 Peter Gerwinski <peter@gerwinski.de>

        * script/cvsupdate: improved prompting

Thu  1 Jun 2000 29:59 Frank Heckenbach <frank@g-n-u.de>

        * doc/about.texi: new file

        * script/check-doc: check that all demo programs are
          referenced in about.texi, and their anchors match

Wed 31 May 2000 28:12 Frank Heckenbach <frank@g-n-u.de>

        * script/make-homepage: new script

        * doc/home.html.in, doc/download.html.in, doc/gnu.html.in,
          doc/todo.html.in, doc/misc.html.in: new files

        * doc/texinfo.tex: add support for `@uref' with two
          arguments as well

Tue 30 May 2000 25:58 Frank Heckenbach <frank@g-n-u.de>

        * script/mkgpc, script/cfgpc, script/mg, script/check-doc,
          script/mkdjgppgpczip: call /bin/sh, then check for and
          invoke bash in the scripts, so they will work if bash is
          anywhere in the $PATH, not necessarily in /bin

        * Make-lang.in: avoid any `cd' before $(INSTALL), so it will
          not fail if $(INSTALL) is a relative path

        * script/crtinc2h: new script, contains what the make rule
          for units/crtc.h did before

Mon 29 May 2000 29:35 Frank Heckenbach <frank@g-n-u.de>

        * script/get-href: new script to get a HREF to a given node
          from HTML files generated by texi2html

Mon 29 May 2000 14:41:16 Peter Gerwinski <peter@gerwinski.de>

        * doc/install.texi: added notes about differences
          between gcc-2.8.x and gcc-2.95.x; added notes about
          building from a CVS checkout.

Mon 29 May 2000 11:43:43 Peter Gerwinski <peter@gerwinski.de>

        * script/cvsupdate: security fixes;
          commit from the correct directory.

Sun 28 May 2000 26:56 Frank Heckenbach <frank@g-n-u.de>

        * script/dvi-reorder: new script: move the table of contents
          in a DVI file generated by texi2dvi to the beginning

        * doc/todo.texi: new file: GPC To-Do list integrated into
          the manual.

        * doc/*.texi: removed `@cindex foo' and `@cindex bar'

        * doc/*.texi (except programming.texi): unindented
          `@example's

        * doc/internals.texi: added `internals' to all `@cindex'
          entries

        * doc/gpc-source.texi: renamed to internals.texi

        * doc/gpc.texi: removed the USING and INTERNAL conditionals
          -- the affected internal parts (12 pages of ~ 400 pages
          total) does not seem to justify the separation, in
          contrast to GCC

Sun 28 May 2000 21:38 Peter Gerwinski <peter@gerwinski.de>

        * script/cvsupdate: do not update files to be removed.

Sun 28 May 2000 20:20:20 Peter Gerwinski <peter@gerwinski.de>

        * doc/install.texi: corrected Bison output file names.

        * script/cvsupdate: new script.

Sat 27 May 2000 30:14 Frank Heckenbach <frank@g-n-u.de>

        * doc/reference.texi: the `@unnumberedsubsec' hack doesn't
          work in texi2html. Work around it for now.

        * doc/programming.texi: texi2html doesn't like ``'' in
          section names. Removed them or changed them to Texinfo
          operators.

        * doc/contributors.texi: merged with team.html from the GPC
          home page

        * script/check-reference-doc: added more checks; renamed to
          check-doc. This is meant to become the automatic "test
          suite" for GPC's documentation.

        * Make-lang.in: pascal.install-doc: install the
          demo programs extracted from GPC's documentation in
          <prefix>/doc/gpc/docdemos (by default)

        * script/extract-doc-demos: new script to extract the demo
          programs from GPC's documentation

        * script/pas2texi: new script, contains what the make rule
          for doc/gpcpas.texi did before, but does some nicer
          formatting

Sat 27 May 2000 21:25 Frank Heckenbach <frank@g-n-u.de>

        * doc/file-layout.texi: moved into gpc-source.texi as a
          section; file removed

        * Make-lang.in: avoided `mkdir -p'; new target pascal.dist;
          create doc/version.texi from gpc_release

        * script/mkdir-p: new script to replace `mkdir -p' which is
          not supported on all systems

Sat 27 May 2000 17:38 Frank Heckenbach <frank@g-n-u.de>

        * doc/gpc.texi: put in the equivalent of `\sloppy' in
          `@iftex'

        * doc/copying.texi, doc/manifesto.texi, doc/funding.texi:
          turned to appendices

Fri 26 May 2000 28:31 Frank Heckenbach <frank@g-n-u.de>

        * doc/texinfo.tex: add support for `@uref' and `@email'

        * Make-lang.in: create test/README from doc/support.texi

        * test/README: texified, moved into doc/support.texi

Fri 26 May 2000 27:20 Frank Heckenbach <frank@g-n-u.de>

        * doc/Gnu+Pascal.png, doc/Gnu+Pascal-small.jpg,
          doc/Gnu+Pascal-small-framed.jpg, doc/gradient.jpg,
          doc/crtdemo.png, doc/crtdemo-small.jpg,
          doc/rhide-screen.png, doc/rhide-screen-small.jpg:
          new files

Fri 26 May 2000 26:41 Frank Heckenbach <frank@g-n-u.de>

        * rts/*, units/*: changed the license from LGPL + exception
          to GPL + exception

        * COPYING.LIB: removed

Fri 26 May 2000 23:46 Frank Heckenbach <frank@g-n-u.de>

        * Make-lang.in: create COPYING from doc/copying.texi

        * doc/install.texi, doc/news.texi, doc/contributors.texi:
          added notes to the top of the generated files INSTALL,
          NEWS and AUTHORS, stating that the files were generated
          automatically

        * Make-lang.in: create AUTHORS from doc/contributors.texi

        * AUTHORS: merged with doc/contributors.texi

        * doc/gpc.texi: include news.texi

        * Make-lang.in: create NEWS from doc/news.texi

        * NEWS: texified, now doc/news.texi

        * doc/support.texi, doc/welcome.texi: s/@url/@uref/, so the
          URLs appear as hyperlinks in the HTML version

        * script/lang-options2texi: new file

        * Make-lang.in: create doc/lang-options.texi from
          lang-options.h

        * doc/invoke.texi: removed the GCC options. Instead point to
          the corresponding node in the GCC documentation. Wrote an
          overview about GPC's most commonly used options. Include
          lang-options.texi to get the descriptions in
          lang-options.h into the documentation

Thu 25 May 2000 22:23 Frank Heckenbach <frank@g-n-u.de>

        * doc/extend.texi, doc/borland2ep.texi: contents moved to
          keywords.texi, programming.texi (merged with the existing
          sections where appropriate), reference.texi and
          bpqstart.texi; files removed

        * doc/TODO: removed -- the items described there have either
          been done already or do not appear reasonable anymore
          (like documenting the various dialects themselves -- this
          is not our job in a compiler documentation; instead we
          document the features in programming.texi and
          reference.texi)

        * doc/gnu.texi: renamed to manifesto.texi

        * doc/*.texi (except texinfo.texi, copying.texi and
          install.texi): s/smallexample/example/

Thu 25 May 2000 21:03 Frank Heckenbach <frank@g-n-u.de>

        * demos/endiandemo.pas: new file

Thu 25 May 2000 20:18 Frank Heckenbach <frank@g-n-u.de>

        * doc/reference.texi, doc/programming.texi: made the
          necessary changes to make the cross-references from
          keyword.texi work

        * gpc.gperf: added cross-references (for keyword.texi)

Thu 25 May 2000 17:55 Frank Heckenbach <frank@g-n-u.de>

        * rts/rts.h: define _GNU_SOURCE to tell GNU libc headers to
          make some extensions available

Wed 24 May 2000 26:12 Frank Heckenbach <frank@g-n-u.de>

        * doc/bugs.texi: moved the known bugs to the To-Do list, the
          bug reporting information to support.texi and the
          debugging notes to programming.texi; file removed

        * doc/builtin.texi: removed, since the same information is
          already there in reference.texi

        * doc/notes.texi, doc/sets.texi: information converted to
          source code comments where appropriate (that's where it's
          more likely to be found when relevant); files removed

        * doc/pvs.texi: removed -- the bugs found by the PVS test
          suite have long been integrated into GPC's own test suite
          (and mostly fixed by now)

Wed 24 May 2000 24:02 Frank Heckenbach <frank@g-n-u.de>

        * doc/*.texi: put a comment at the start of each file,
          stating the copyright, authors, date of last modification
          (where known) and a rudimentary status information (under
          construction .. up to date); removed some paragraphs which
          were commented out long time ago and are not relevant
          anymore

Wed 24 May 2000 21:17 Frank Heckenbach <frank@g-n-u.de>

        * rts/rts.c, rts/internal.pas, rts/math.pas, rts.c: replaced
          the `_pp_' prefix in the asmnames of the LongReal
          mathematical functions by `_p_l_'

Wed 24 May 2000 15:47 Frank Heckenbach <frank@g-n-u.de>

        * doc/programming.texi: added a section about endianness

        * doc/bpqstart.texi: updated completely, added a section
          about incompatibilites between GPC and BP

Tue 23 May 2000 26:52 Frank Heckenbach <frank@g-n-u.de>

        * script/gperf2texi: new file

        * gpc.gperf: added the comments from doc/keywords.texi,
          wrote comments for the keywords not yet commented

        * Make-lang.in: create doc/keyword.texi from gpc.gperf

        * doc/keywords.texi: removed the keyword table; include
          keyword.texi instead

Tue 23 May 2000 24:35 Frank Heckenbach <frank@g-n-u.de>

        * rts/configure.in: check for libos-hacks.a

        * rts/gpc.pas: link libos-hacks.a if present

        * Make-lang.in: pascal.install-units: install rts-config.inc

Tue 23 May 2000 24:00 Frank Heckenbach <frank@g-n-u.de>

        * FAQ: replaced by the updated version by Russ Whitaker

        * doc/lookfeel.texi: removed (obsolete AFAIK)

Tue 23 May 2000 20:59 Frank Heckenbach <frank@g-n-u.de>

        * rts/read.c: _p_read_boolean(), _p_read_enum(): new
          functions

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

Tue 23 May 2000 19:48 Frank Heckenbach <frank@g-n-u.de>

        * doc/contributors.texi: synchronized the first part with
          AUTHORS

        * doc/file-layout.texi: texified

        * doc/gpc.texi: include file-layout.texi

Mon 22 May 2000 29:44 Frank Heckenbach <frank@g-n-u.de>

        * doc/*.texi: updated a little

Mon 22 May 2000 17:15 Peter Gerwinski <peter@gerwinski.de>

        * script/gpcdiff.exclude: included (i.e. excluded;-) `configure'.

Sun 21 May 2000 27:00 Peter Gerwinski <peter@gerwinski.de>

        * parse.y: function_declaration: no need to check `result'.

        * types.c: build_pascal_string_schema(): string types
          must be always permanent nodes (strptr4.pas).
          p_grokfields(): complain about IDENTIFIER_NODEs
          (rather than crash).

Sat 20 May 2000 24:17 Frank Heckenbach <frank@g-n-u.de>

        * various places: check the result of fopen() and give
          proper error messages

        * gpcpp.c: Wall-ified; do_include(): really fixed the
          multiple `-I' problem (ian4.pas) by setting fname to "."
          rather than 0 if the current file name does not contain a
          directory. Otherwise, it would cause segfaults with the
          `-remap' option (which is given by default under Cygwin).
          The root of the problem was that the code in do_include()
          comes from GCC-2.7.2.1 or older while remap_include_file()
          comes from GCC-2.8.1 (cf. Jan-Jaap's entry of Jul 20 1998)
          and does not expect 0 as the argument.

        * ChangeLog: corrected function name in Peter's entry of
          25 Feb 1999; put entries of 20 and 21 Jul 1998 in order

Wed 17 May 2000 20:56 Frank Heckenbach <frank@g-n-u.de>

        * types.c: include stdlib.h to declare free()

Tue 16 May 2000 25:50 Peter Gerwinski <peter@gerwinski.de>

        * rts/gpc.pas, rts/heap.pas, rts/internal.pas, rts/sets.pas, 
          rts/string.pas: do not let overflow type declarations.

Tue 16 May 2000 25:25 Frank Heckenbach <frank@g-n-u.de>

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

Mon 15 May 2000 25:37 Peter Gerwinski <peter@gerwinski.de>

        * gpc-decl.c: resolve_forward_pointer(), handle_forward_pointers():
          removed the "very silly" problem by tagging the pointer instead
          of the type pointed to (gp).

        * objects.c: push_self_parameter(): tag the pointer instead of
          the object.
          check_method_parameters(): new function (metparm*.pas)

        * parse.y: typename, optional_par_formal_parameter_list,
          formal_parameter: do not tag unknown types of formal
          parameters; let handle_formal_param_list() tag the
          reference instead.
          new_identifier_1: included `LEX_STATIC' and `LEX_VOLATILE'.
          constant_definition: handle variable directives.

        * types.c: build_pascal_pointer_type(): tag the pointer ...

        * util.c: handle_formal_param_list(): tag the pointer ...

Sun 7 May 2000 Peter Gerwinski <peter@gerwinski.de>

        * gpc-decl.c: lookup_label(): initialize the label only
          once (knuth3.pas)

Fri  5 May 2000 25:06 Frank Heckenbach <frank@g-n-u.de>

        * gpc-typeck.c: build_binary_op(): also handle
          CEIL_DIV_EXPR, FLOOR_DIV_EXPR, ROUND_DIV_EXPR and
          EXACT_DIV_EXPR: they (or some of them) are used internally
          for size computations

Fri 5 May 2000 19:28 Peter Gerwinski <peter@gerwinski.de>

        * gpc-typeck.c: build_binary_op(): handle TRUNC_DIV_EXPR
          the Pascal, not the C way.

        * util.c: init_simple(): type-check the parameters of _p_initfdr.

Sat 29 Apr 2000 13:02:41 Peter Gerwinski <peter@gerwinski.de>

        * gpc-lex.c: yylex(): special treatment of LEX_PROTECTED
          (reactivated), LEX_VALUE, LEX_STATIC, LEX_VIEW, and LEX_INLINE
          (chief34*.pas).

        * module.c: only seek to end_of_header when appropriate.

        * parse.y: record_type: do not try to disable LEX_VALUE etc.
          This only leads to s/r conflicts but does not work.

Sun 23 Apr 2000 19:38 Peter Gerwinski <peter@gerwinski.de>

        * Make-lang-2.95.in, Makefile-2.95.in: merged changes by Frank.

Sun 23 Apr 2000 16:48 Peter Gerwinski <peter@gerwinski.de>

        * objects.c: check_method_parameters(): new function.

        * parse.y: object_type: check formal parameters of methods against
          object fields and methods (metparm*.pas).

Sat 22 Apr 2000 28:00 Peter Gerwinski <peter@gerwinski.de>

        * gpc-decl.c: declare_label(): new parameter syntax for declare_vars().
          init_decl_processing(): initialize asmname_id.

        * gpc.gperf: new reserved words `asmname' and `attribute'.

        * module.c: finalize_module(): no more pending decls.
          handle_pending_decls(): function removed.
          module_must_be_recompiled(): preparing for doing the correct checks.
          load_tree(): (1) preparing for a new handling of variable
          declarations which does not re-use parts of the C _front_end any
          more; (2) use new parameter syntax of declare_vars().
          gpi_open(): only mclose() and re-open the GPI file when necessary.
          import_interface(): store the unit file name in the interface node,
          preparing for doing the correct checks in
          module_must_be_recompiled().

        * objects.c: construct_vmt(): new parameter syntax for declare_vars().

        * parse.y: changed built-in identifiers D_ASMNAME and
          D_ATTRIBUTE to reserved words LEX_ASMNAME and LEX_ATTRIBUTE.
          constant_definition: new parameter syntax for declare_vars().
          record_type: trying to switch off LEX_ASMNAME etc., but this is not
          early enough :-(chief34*.pas).
          variable_declaration_part: moved semi to variable_declaration_list.
          variable_declaration_list: moved semis to variable_declaration.
          variable_declaration: `asmname' and `attribute' are reserved words
          now; handle closing semi here to avoid s/r conflicts; new handling
          of storage qualifiers (flags rather than identifier nodes) and
          variable directives; new parameter syntax for declare_vars().
          optional_qualifier_list: renamed to optional_storage_qualifier_list.
          optional_storage_qualifier_list, storage_qualifier: new handling of
          storage qualifiers.
          optional_variable_directive_list, variable_directive_list,
          variable_directive: new rules.
          enable_directives: new rule to avoid s/r conflicts.
          function_declaration: use enable_directives.
          directive: D_ASMNAME and D_ATTRIBUTES are now LEX_ASMNAME and
          LEX_ATTRIBUTES.
          rest_of_unit, rest_of_module: no more pending decls.
          function_interface_decl: enable/disable new keywords; no more
          pending decls.
          implicit_module_destructor: destructors do not need to be exported.

        * rts/error.pas, rts/filename.pas, rts/getopt.pas, rts/gpc.pas,
          rts/heap.pas, rts/init.pas, rts/internal.pas, rts/numtodec.pas,
          rts/random.pas, rts/string.pas, rts/string2.pas: new syntax for
          `external' and `asmname' variables.

        * rts.c: rts_call(), build_rts_call(), get_builtin_variable(): new
          parameter syntax for declare_vars().

        * script/gpcdiff: new file.

        * test/abso1.pas, test/asmnames.pas, test/fjf140u.pas,
          test/fjf245.pas, test/fjf245a.pas, test/fjf273.pas,
          test/fjf431u.pas, test/gpc_c_p.pas, test/ian3.pas,
          test/orland2.pas, test/orland2u.pas, test/sam5.pas,
          test/sam5m.pas: new syntax for `external' and `asmname'
          variables.

        * util.c: asmname_id: new variable.
          extract_attributes(): preparing to remove this function with new
          handling of variable declarations.
          declare_vars(): (1) changed parameter syntax; (2) preparing to
          get rid of parts of the C _front_end which are still used when
          declaring Pascal variables. `asmname' does not imply `external'
          any more. Pending decls have been removed, too, as there is no
          (more?) reason not to output them to the object file this early
          in the interface part.
          handle_formal_param_list(): do not crash on errorneous read-only
          parameters.
          KItable[]: removed D_ASMNAME and D_ATTRIBUTE.
          start_constructor(): new parameter syntax for declare_vars().

Sat 22 Apr 2000 25:07 Frank Heckenbach <frank@g-n-u.de>

        * rts/rts.c: _p_sigaction(): ported to work with
          sigaction() or signal() besides sigvec()

        * rts/configure.in: `--with-bsdrts' switch removed;
          @@@@disabled the RTS signal handlers completely because
          GPC wastes way too much stack for them to work

Sat 22 Apr 2000 19:25 Frank Heckenbach <frank@g-n-u.de>

        * rts/rts.h, rts/rts.c, rts/file.c: protect all included
          headers with autoconf tests (except "varargs.h" which is
          to be phased out)

        * gpc-decl.c: start_function(): don't warn about the third
          argument to `main'

Sat 22 Apr 2000 14:27 Frank Heckenbach <frank@g-n-u.de>

        * rts/rts.c: _p_pid: turned into a function;
          _p_update_pid(): removed

Fri 21 Apr 2000 28:38 Frank Heckenbach <frank@g-n-u.de>

        * rts/rt0.c: _p_signal, _p_sigcause: removed; remaining code
          moved to rts/file.c, rts/rts.c and rts/error.pas where it
          fits better; file removed; _p_init_signals(): turned into
          the unit constructor of rts/error.pas

Fri 21 Apr 2000 26:10 Frank Heckenbach <frank@g-n-u.de>

        * rts/init.pas: GPC_Initialize: use all other RTS units
          (except gpc.pas which is only ths interface to programs),
          and call this unit's constructor explicitly, so RTS units'
          constructors are now executed

        * rts/heap.pas: HeapInit: turned into the unit constructor
          of rts/heap.pas

Thu 20 Apr 2000 30:34 Frank Heckenbach <frank@g-n-u.de>

        * module.c: do_extra_import(): fixed 2 off-by-one errors
          (fjf101[ab].pas)

Thu 20 Apr 2000 25:57 Frank Heckenbach <frank@g-n-u.de>

        * gpc-lex.c: removed ignore_escape_flag: it seems to have
          been a misfeature. It should accept `\' in file names in
          line directives (e.g. under DJGPP), but the preprocessor
          already doubles them, so ignore_escape_flag caused the
          file names to be wrong

        * module.c: module_must_be_recompiled(): touch dep_filename
          after choosing the name, so it won't be chosen as the name
          for another temp file

        * gpc.c: init_automake_temp_file_name(): check for
          `--amtmpfile' as given by module.c

Sat 15 Apr 2000 24:35 Frank Heckenbach <frank@g-n-u.de>

        * rts/init.pas: GPC_Init_Arguments: the first argument must
          now be `--gpc-rts' instead of `-Grts'

Sat 15 Apr 2000 13:38 Frank Heckenbach <frank@g-n-u.de>

        * util.c: declare_known_ids(): removed `__void__',
          `__cstring__'

Fri 14 Apr 2000 25:33 Frank Heckenbach <frank@g-n-u.de>

        * rts/configure.in, rts/acconfig.h: check whether
          __builtin_return_address supports a non-zero argument

        * rts/Makefile.in: create rts-config.inc from rts-config.h

        * rts/error.pas: don't call ReturnAddress with a non-zero
          argument unless supported

Thu 13 Apr 2000 26:00 Frank Heckenbach <frank@g-n-u.de>

        * rts/init.pas: GPC_Init_Arguments: allow multiple `-Grts'
          arguments and long options; new options `--version',
          `--error-file', `--error-fd'

Thu 13 Apr 2000 24:34 Frank Heckenbach <frank@g-n-u.de>

        * gpc-options.h: add `-fno-macros' in `--borland-pascal' and
          `--delphi' modes and `-fmacros' in `--gnu-pascal' mode
          (dialec[36].pas)

Thu 13 Apr 2000 10:58 Peter Gerwinski <peter@gerwinski.de>

        * gpc-common.c: decl_attributes(): initialize some local
          variables like it is done in ../c-common.c.

        * gpc-decl.c: field_decl_cmp(): `#ifdef'ed out currently
          unused routine.  (When re-organizing tree nodes, this
          one might become interesting again.)

        * gpc-typeck.c: comptypes(): set attrval to zero, thus
          indicating that different type attributes do not matter here.
          re_layout_type(), build_modify_expr():
          removed superfluous local variables.
          constructor_implicit, constructor_result:
          removed superfluous global variables.
          (See also ../c-typeck.c from gcc-2.95.1.)

Wed 12 Apr 2000 29:10 Frank Heckenbach <frank@g-n-u.de>

        * test/README: added a few words about how to report bugs

        * Make-lang.in: pascal.install-doc: install test/README as
          BUGS

Wed 12 Apr 2000 26:32 Frank Heckenbach <frank@g-n-u.de>

        * rts/error.pas: RuntimeError, RuntimeErrorInteger,
          RuntimeErrorCString, InternalError, InternalErrorInteger,
          GPC_RunError: set ErrorAddr to a meaningful value on a
          runtime error; SetReturnAddress, RestoreReturnAddress: new
          procedures; called from vrious places in rts/*, units/*
          where necessary; FinishErrorMessage: print the address of
          a runtime error to help debugging (using addr2line)

Wed 12 Apr 2000 17:44 Frank Heckenbach <frank@g-n-u.de>

        * gpc-common.c, gpc-convert.c, gpc-decl.c, lang.c,
          gpc-lex.c, gpc-typeck.c: Wall-ified (only a few warnings
          remaining, fixed by Peter's patch tomorrow ;-)

Wed 12 Apr 2000 14:48 Frank Heckenbach <frank@g-n-u.de>

        * AUTHORS: updated

        * Make-lang.in: pascal.install-demos: renamed to
          pascal.install-doc, install also README, FAQ, AUTHORS,
          NEWS, COPYING, COPYING.LIB; several rules: removed the
          `case "$(LANGUAGES)" in *[Pp]ascal*)' parts because the
          rules should not be used unless building Pascal, anyway

Tue 11 Apr 2000 22:08 Frank Heckenbach <frank@g-n-u.de>

        * gpcpp.c, gpc-lex.c: implemented `{$local}' and
          `{$endlocal}' (fjf430*.pas)

Mon 10 Apr 2000 25:00 Peter Gerwinski <peter@gerwinski.de>

        * Make*.in: updated copyright notice.
          Make*-2.95.in: copied changes by Frank.

        * doc/gpc.1: moved to . (or better leave it there and
          adapt the Makefiles?)

        * gpc-decl.c: c_decode_option(): corrected typo in
          EGCS-specific code.

        * gpc.c: process_command(): record `-M*' switches, so
          output files do not get EXECUTABLE_SUFFIX with it.

        * module.c: module_must_be_recompiled(): it is an
          internal error when a dependency file could not be
          opened.

        * parse.y: most rules: fixed indentation and some comments.
          gpc_RETURNADDRESS, gpc_FRAMEADDRESS: new tokens.
          new_identifier_1: updated.
          variant_selector: disabled error checking rule that caused 
          four reduce/reduce conflicts with Borland-style initializers.
          variable_or_function_access_no_id: implemented
          gpc_RETURNADDRESS and gpc_FRAMEADDRESS in analogy to
          type casts and other almost-functions.  (Another place
          would be rts.c:build_rts_call().  This should be unified.
          Maybe gpc-decl.c:init_decl_processing() allows for even
          simpler introduction of magic functions.)
          iso_initializer_expression: use new_identifier instead of
          directive_or_initializer which is too weak (fjf423.pas);
          use LEX_INTCST instead of number to avoid reduce/reduce
          conflicts.  (The clean way to implement this will be an 
          implicit `with' and allowing for arbitrary expressions.)

        * util.c: KItable[]: Returnaddress, Frameaddress.

Sun  9 Apr 2000 23:20 Frank Heckenbach <frank@g-n-u.de>

        * script: new directory, containing some scripts used during
          the GPC installation and some scripts used by the GPC
          maintainers

Sun  9 Apr 2000 22:42 Frank Heckenbach <frank@g-n-u.de>

        * gpc-lang.c: renamed to lang.c

        * gpc-lang.h: renamed to lang.h

        * gpc-nodes.def: renamed to nodes.def

        * gpc-cccp.c: renamed to gpcpp.c

        * Makefile.in, Make-lang.in: adjusted accordingly,
          executable gpc-cpp renamed to gpcpp

        * gpc-defs.c: GNU_PASCAL_HACK, B_D_GH_PASCAL: removed
          (obsolete)

Sun  9 Apr 2000 15:44 Frank Heckenbach <frank@g-n-u.de>

        * gpc-cccp.c: check_negative_option(): new function;
          do_ifopt(): handle `ifopt' really (fjf426*.pas)

Sat  8 Apr 2000 17:21 Frank Heckenbach <frank@g-n-u.de>

        * util.c.: pascal_init_options(): moved to gpc-decl.c, call
          c_decode_option() for all default options stored in
          gpc-options.h

Fri  7 Apr 2000 25:24 Frank Heckenbach <frank@g-n-u.de>

        * Make-lang.in: build gpcpas.texi in $(srcdir)/p/doc rather
          than p/doc; fixed rule for gpc.dvi; new target gpc.ps

Fri  7 Apr 2000 23:58 Frank Heckenbach <frank@g-n-u.de>

        * parse.y: moved the sign from any_term to primary to allow
          expressions like `-2 * +3' like BP does (but in `-2 ** 3'
          the sign still applies to the result of the power
          operator, not the left operand, and a sign after `**' is
          still not allowed, like the standard requires);
          signed_factor: new symbol to allow signs after `not';
          multiplying_operator: replace FLOOR_MOD_EXPR by
          TRUNC_MOD_EXPR (consistent with TRUNC_DIV_EXPR and with
          BP's behaviour)

Fri  7 Apr 2000 17:39 Frank Heckenbach <frank@g-n-u.de>

        * Makefile.in: removed obsolete GCC diff and dejagnu stuff

        * gpc-options.h: new file, commonly used by gpc-lex.c and
          gpc-cccp.c

        * gpc-lex.c, gpc-cccp.c: made single-letter compiler
          directives BP compatible

Thu  6 Apr 2000 14:44 Frank Heckenbach <frank@g-n-u.de>

        * gpc-cccp.c: eval_if_expression: accept `not', `and', `or',
          `=', `<>', etc. for `!', `&&', `||', `==', `!=', etc. in
          Pascal mode (fjf428.pas)

Wed  5 Apr 2000 19:40 Frank Heckenbach <frank@g-n-u.de>

        * gpc-cccp.c: renamed options like `-no-nested-comments' to
          `-fno-nested-comments' etc.

        * lang-specs.h.in: pass all -f* options to gpc-cccp.c

        * gpc-cccp.c, lang-options.h: new option `-f[no-]macros'

        * Makefile.in: added another missing dependency

Tue  4 Apr 2000 23:13 Frank Heckenbach <frank@g-n-u.de>

        * test/test_summary: renamed to test_sum so it can be found
          on limited file systems

Sun 2 Apr 2000 25:14 Frank Heckenbach <frank@g-n-u.de>

        * gpc-cccp.c: renamed options like `-nonestedcomments' to
          `-no-nested-comments' etc. to make them easier to process
          as directives

Sun 2 Apr 2000 18:18 Peter Gerwinski <peter@gerwinski.de>

        * gpc-decl.c: c_decode_option(): handle -W[no-]field-name-problem.

        * gpc-typeck.c: check_pascal_initializer(): make the warning about
          ignored field names optional.

        * lang-options.h: new options -W[no-]field-name-problem

        * util.c: warn_field_name_problem: new variable.

Sat 1 Apr 2000 25:31 Peter Gerwinski <peter@gerwinski.de>

        * doc/gpc.1, doc/texinfo.tex: removed RCS magic.

Sat 1 Apr 2000 16:28 Peter Gerwinski <peter@gerwinski.de>

        * gpc-typeck.c: build_modify_expr(): don't crash on
          CONST_DECLs as lvalues: gcc-2.8.x-ified.

Sat 1 Apr 2000 13:58 Peter Gerwinski <peter@gerwinski.de>

        * module.c: new_interface_table(): scan whether the
          interface is already registered.  Without this, some
          entries get lost, others get duplicated, etc.

        * util.c: start_constructor(): better cooperation with
          itab_get_module_name().

Fri 31 Mar 2000 23:17 Frank Heckenbach <frank@g-n-u.de>

        * gpc-cccp.c:-(way too many places)-: handle mixed and
          nested comments; handle_pascal_directive(): allow comments
          in a Pascal directive if nested comments are enabled;
          gpc-lex.c: handle mixed and nested comments (mixcom*.pas,
          nest*.pas)

Thu 30 Mar 2000 26:27 Frank Heckenbach <frank@g-n-u.de>

        * rts/file.c: _p_fdrchain(): simplified; removed
          _p_last_fdr; made _p_first_fdr an external list (i.e., not
          using fields of struct Fdr) so problems with Fdrs will not
          lead to crashes when the RTS accesses the list

Thu 30 Mar 2000 18:46 Peter Gerwinski <peter@gerwinski.de>

        * gpc-decl.c: c_decode_option(): check the argument of
          `--gpc-main' for invalid characters.

Wed 29 Mar 2000 21:25 Frank Heckenbach <frank@g-n-u.de>

        * rts/file.c: _p_internal_blockwrite(): don't abort writing
          on EINTR

Wed 29 Mar 2000 21.18 Frank Heckenbach <frank@g-n-u.de>

        * gpc-cccp.c: handle_pascal_directive(): fixed some static
          buffer problems (fjf141.pas)

        * gpc-lex.c: skip_white_space(), process_directive():
          likewise (fjf141.pas -- now really)

        * objects.c: call_method(): likewise (fjf89.pas)

        * module.c: load_gpm_file(): likewise (could not write a
          test program since a GPI file name > 255 chars would also
          overflow most file systems' limits)

        * module.c: module_must_be_recompiled(): likewise

        * module.c: various other places: likewise, changed the
          parameters and return type of load_string()

        * util.c: get_unique_identifier(): no buffer overflow
          problem here, but added some comments to prevent future
          changes from introducing one

Tue 28 Mar 2000 28:14 Frank Heckenbach <frank@g-n-u.de>

        * gpc-cccp.c: fixed some logic errors concerning
          no_charescape; IS_COMMENT_START: new macro to handle `//'
          comments correctly in Pascal (Delphi); no_nested_comments:
          renamed to mixed_comments

Mon 27 Mar 2000 31:09 Frank Heckenbach <frank@g-n-u.de>

        * units/gpc-in-c.h, demos/gpc_c_c.c, demos/gpc_c_pas.pas,
          demos/gpc_c_unit.pas: new files

Mon 27 Mar 2000 29:29 Frank Heckenbach <frank@g-n-u.de>

        * gpc-typeck.c: build_modify_expr(): undid Peter's patch
          because it doesn't compile (was this for gcc-2.95 only?)

Mon 27 Mar 2000 25:54 Peter Gerwinski <peter@gerwinski.de>

        * Make-lang-2.95.in, Makefile-2.95.in: handle gpc.gperf.

        * gpc-decl.c: grokdeclarator(): don't build CONST_DECLs here.
          We'll do that manually from now on.

        * gpc-typeck.c: build_modify_expr(): don't crash on
          CONST_DECLs as lvalues.

        * lang-specs.h: give `-nomacros' to gpc-cpp for
          --borland-pascal and --delphi.

        * module.c: struct interface_table_t: new field `module_name'.
          new_interface_table(): store the name of the module with
          the interface.
          itab_get_module_name(): new function.
          create_gpi_files(): on an internal error, just abort().
          gpi_open(): store the name of the module in the interface table.

        * objects.c: call_method(), construct_vmt(): on internal
          errors, just abort().

        * parse.y: bp_NAME: new token.
          main_program_declaration: call the constructor
          "init_Program" and the destructor "fini_Program".
          new_identifier_1: added bp_NAME.
          constant_definition: build a CONST_DECL manually rather
          than calling grokdeclarator() (through start_decl()).
          new_pointer_type: allow for an optional CONST.
          optional_const: new rule.

        * types.c: construct_set(), assign_string(),
          declared_string_capacity(): on internal errors, just abort().
          build_pascal_pointer_type(): optionally make a `const' pointer
          (callers changed).

        * util.c: output_real_main_program(): the main program's
          constructor and destructor are named `init_Program'
          and `fini_Program' now.
          KItable[]: bp_NAME.
          start_constructor(): when calling constructors and
          destructors, look up the name of the module from the
          interface table.  @@@ This does not yet cover all cases!

Mon 27 Mar 2000 24:24 Frank Heckenbach <frank@g-n-u.de>

        * gpc-lex.c: moved the isalnum() check to gpc-cccp.c because
          a flex based lexer will not use isalnum(), anyway. Do the
          test before redefining isalnum().

Sun 26 Mar 2000 24:47 Frank Heckenbach <frank@g-n-u.de>

        * util.c:KItable: removed __asmname__, __const__,
          __external__, __inline__, __static__, __volatile__,
          __byte__, __short__, __long__, __longlong__, __unsigned__

Sun 26 Mar 2000 12:45 Peter Gerwinski <peter@gerwinski.de>

        * gpc-typeck.c: comptypes(): kludge: do not check type
          attributes.  When forward-declared, they will be
          overridden by the definition anyway.  Can be
          re-activated when attributes are legal in combination
          with a function body.

        * module.c: module_repair_exported_ranges(): in case of
          an internal error, just abort().

        * parse.y: copyright notice: updated.
          re-ordered reserved words and built-in identifiers a little.
          main_program_declaration: fixed wrong comment.

        * test/cstpar1.pas: `protected' is "more reserved" now.

Thu 23 Mar 2000 31:24 Frank Heckenbach <frank@g-n-u.de>

        * parse.y, rts.c: removed r_COLLECT which is now obsolete

        * rts/misc.c: removed the whole file (_p_collect(),
          _p_run_constructors(), _p_c_list, _p_collect_flag) which
          is now obsolete

Thu 23 Mar 2000 28:50 Frank Heckenbach <frank@g-n-u.de>

        * gpc.c: init_automake_temp_file_name(): don't add `-Wl'
          options to the automake temp file

Thu 23 Mar 2000 27:21 Peter Gerwinski <peter@gerwinski.de>

        * ChangeLog: added a "title" line to make context diffs
          more robust.

        * parse.y:
          type_denoter: be more specific in "Integer (42)" warnings.
          main_program_declaration, module_constructor,
          implicit_module_constructor, optional_unit_constructor,
          module_destructor: do not assemble *structors specially.
          implicit_module_destructor: new rule.
          optional_unit_constructor, optional_init_and_final_part:
          consider implicit_module_destructor.

        * util.c: output_real_main_program(): call the program's
          constructor explicitly.
          start_constructor(): call other constructors and register
          our destructor.

Thu 23 Mar 2000 26:28 Frank Heckenbach <frank@g-n-u.de>

        * parse.y, gpc.gperf, gpc-lex, rts.c and a few other files:
          renamed all keywords and other lexical tokens with a
          `LEX_' prefix

Thu 23 Mar 2000 20:55 Peter Gerwinski <peter@gerwinski.de>

        * parse.y: main_program_declaration, module_constructor,
          implicit_module_constructor, optional_unit_constructor:
          instead of init_constructor() call start_constructor()
          and finish_constructor() - both within pushlevel1 and poplevel1.
          module_constructor: removed optional initialization order.
          optional_initialization_order: rule removed.

        * rts/acconfig.h, rts/configure.in, rts/rts-config.in:
          do an AutoConf test for presence of an external
          `char **environ' variable.

        * test/test_run: look for .in and .out files in $SRCDIR.

        * util.c: output_real_main_program(): removed WINE
          workaround; we are going to use `char **environ' in
          the future.
          init_constructor(): removed.
          start_constructor(), finish_constructor(): new functions.

Thu 23 Mar 2000 17:14 Frank Heckenbach <frank@g-n-u.de>

        * rts.c: phased out the last occurences of `ASSERT'

        * assert_.h: removed `ASSERT', moved last remaining macro
          into gpc-defs.h, the only place where it's included,
          removed assert_.h

Wed 22 Mar 2000 25:00 Frank Heckenbach <frank@g-n-u.de>

        * test/Makefile: made `summary' the default. The old target
          is available as `test'.

Sun 19 Mar 2000 28:06 Frank Heckenbach <frank@g-n-u.de>

        * gpc-cccp.c: Pascalified some more warnings; rescan(),
          collect_expansion(): don't give warnings or errors about
          Borland style character constants (`#42' or `#$f0') when
          they look like an unknown preprocessor directive or macro
          argument stringification (fjf205.pas)

Wed 8 Mar 2000 20:37 Peter Gerwinski <peter@gerwinski.de>

        * parse.y: storage_qualifier_list: enable/disable "Const"
          keyword for `attribute (const)'.
          directive: dropped `attribute' without parentheses;
          enable/disable "Const" keyword for `attribute (const)'.

        * rts.c: rts_call(): p_HALT, bp_RUNERROR, and gpc_RUNTIME_ERROR
          are `attribute (noreturn)'.

Tue 7 Mar 2000 23:47 Frank Heckenbach <frank@g-n-u.de>

        * rts/error.pas, rts/gpc.pas, rts/internal.pas, rts/rts.h:
          added `attribute noreturn' for `Halt' and the various
          runtime error routines

Mon 6 Mar 2000 26:12 Frank Heckenbach <frank@g-n-u.de>

        * rts/*: changed from K&R to ANSI C declarations (except
          rts-va.c), removed the PROTO macro because the RTS is
          always compiled with GCC

        * rts/file.c, rts/randfile.c, rts/types.h, rts/rts.h,
          rts/gpc.pas: new type FileSizeType (equivalent to
          LongInt), used for file sizes and positions; supported via
          lseek64() or llseek() where available

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

Mon 6 Mar 2000 25:02 Peter Gerwinski <peter@gerwinski.de>

        * rts/aclocal.m4: new file.  Macro GPC_CHECK_TYPE to check
          for types (AC_CHECK_TYPE seems broken).

        * rts/configure.in: as an example for GPC_CHECK_TYPE, check
          for ssize_t.

        * rts/configure: rebuilt.

        * rts/rts-config.h: required template for HAVE_SSIZE_T.

Mon 6 Mar 2000 23:57 Peter Gerwinski <peter@gerwinski.de>

        * rts.c: build_rts_call(): case p_POSITION, p_LASTPOSITION,
          bp_FILESIZE, bp_FILEPOS: return `LongInt'; case ucsd_SEEK,
          p_SEEKUPDATE, p_SEEKREAD, p_SEEKWRITE, p_DEFINESIZE: the
          second parameter is `LongInt'.

Sat 4 Mar 2000 27:48:37 Peter Gerwinski <peter@gerwinski.de>

        * parse.y: main_program_declaration, module_constructor,
          implicit_module_constructor, optional_unit_constructor,
          module_destructor: do no longer try to make DEC Alpha happy. ;-)

Mon 21 Feb 2000 26:37 Peter Gerwinski <peter@gerwinski.de>

        * gpc-decl.c: create_boolean_type_node(): made it extern.

        * parse.y: type_denoter: allow for `Boolean (42)' (fjf395.pas).

        * util.c: declare_known_ids(): LongestBool.

Mon 21 Feb 2000 10:34 Peter Gerwinski <peter@gerwinski.de>

        * gpc-decl.c: declare_label(): create jmp_buf variables for
          labels in the main program (goto4.pas).
          lookup_label(): the context of the label is the main program;
          no need to kludge it to think otherwise.
          store_parm_decls(): we don't need any more most of the special
          treatment of labels in the main program.

        * parse.y: main_program_declaration: "main program RTX" has
          vanished, but call do_setjmp().

        * util.c: do_setjmp(): new function.
          output_real_main_program(): removed duplicate pushlevel().
          (Did it have some special reason???)
          generate_main_program_rtx(), init_main_program_rtx(): removed.
          expand_goto_main_program(): rewritten to use longjmp() instead
          of "main program RTX" (goto4.pas).

Sat 19 Feb 2000 10:34 Peter Gerwinski <peter@gerwinski.de>

        * rts.c: build_rts_call(): string parameters to `Include' and
          `Exclude' are chars (sets13.pas).
          case bp_INCLUDE, bp_EXCLUDE: no inverse typechecking, please!
          (-#sets14[ab].pas)

Tue 15 Feb 2000 24:02 Peter Gerwinski <peter@gerwinski.de>

        * rts/string2.pas: don't barf on `envp = Nil'.

        * util.c: output_real_main_program(): @@@@ work around a bug
          in WINE(?) by passing `envp = Nil' to the RTS instead of the
          random bytes we got at main(). 8-(

Sun 13 Feb 2000 27:06 Peter Gerwinski <peter@gerwinski.de>

        * gpc.c: add_automake_file(): don't barf on systems without
          a math library.

Sun 13 Feb 2000 26:08 Peter Gerwinski <peter@gerwinski.de>

        * lang-specs.h.in: trying to make `-x pascal' work again.
          (As long, use `-x Pascal'.)

        * parse.y: bp_INCLUDE, bp_EXCLUDE: new tokens, handled
          in rts_proc_parlist.

        * rts.c: rts[]: included bp_INCLUDE, bp_EXCLUDE.
          build_rts_call(): case bp_INCLUDE, bp_EXCLUDE: new cases.

        * util.c: KItable[]: included bp_INCLUDE, bp_EXCLUDE.

Sun 13 Feb 2000 11:25 Peter Gerwinski <peter@gerwinski.de>

        * parse.y:
          structured_iso_initializer, structured_borland_initializer:
          use TREE_CHAIN() directly to avoid overhead of chainon().

Sun 13 Feb 2000 11:07 Peter Gerwinski <peter@gerwinski.de>

        * gpc-typeck.c: convert_arguments(): allow for `Nil' being passed
           to formal parameters of procedural type (fjf258[de].pas).

Sat 12 Feb 2000 27:46 Peter Gerwinski <peter@gerwinski.de>

        * gpc-typeck.c: build_binary_op(): allow for comparison between
          procedural variables and `Nil' (fjf258c.pas), but do not allow for
          comparison between pointers and integers (nonil2.pas).
          convert_for_assignment(): allow for assignments of `Nil' to
          procedural variables (fjf258[a-c].pas).

        * parse.y:
          structured_iso_initializer, structured_borland_initializer:
          record the components in reverse order (O(1)) and nreverse() them
          afterwards (O(n)) instead of recording them in order (O(n^2)).
          factor: do not try to call procedures.

        * util.c: function_return_type(): new function.

Fri 11 Feb 2000 29:00 Frank Heckenbach <frank@g-n-u.de>

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

        * rts/files.pas, rts/gpc.pas: new procedure AssignBinary

        * rts/file.c, rts/gpc.pas: removed variable TextFilesBinary

Wed 9 Feb 2000 26:51 Peter Gerwinski <peter@gerwinski.de>

        * memfiles.c: xmalloc() prototype for gcc-2.8.

Mon 7 Feb 2000 26:51 Peter Gerwinski <peter@gerwinski.de>

        * memfiles.c: get xmalloc() prototype from "system.h"
          (gcc-2.9 only).

        * parse.y: gpc_RUNTIME_ERROR: new token.
          optional_semicolon_or_else_branch: implicitly handle
          unhandled cases when no `else' was given.

        * rts.c: rts[]: call `_p_error()' on gpc_RUNTIME_ERROR.

        * rts.h: export `ptype_foo's.

Sun 6 Feb 2000 25:41 Peter Gerwinski <peter@gerwinski.de>

        * types.c: grok_packed(): do not re-calculate (and align) the
          size of packed arrays whose components can be accessed without
          bit shifts and masking (fjf397.pas).

Thu 3 Feb 2000 26:39 Frank Heckenbach <frank@g-n-u.de>

        * test_summary: moved to test/

        * test/test_run: new script

        * test/Makefile: cleaned up, using test_run; new rule
          `summary'

Mon 31 Jan 2000 25:41 Peter Gerwinski <peter@gerwinski.de>

        * rts.c: build_rts_call(): case bp_PARAMCOUNT, bp_PARAMSTR:
          removed redundant calls to emit_line_note().

        * test/Makefile: cleaned up `clean' rules.

Mon 31 Jan 2000 18:35 Peter Gerwinski <peter@gerwinski.de>

        * gpc-decl.c: init_decl_processing(): use set_sizetype()
          only with GCC >= 2.9x.

        * gpc-lex.c: progress_message_alarm, progress_bar_alarm: new variables.
          alarm_handler(): new function.
          handle_progress_messages(), handle_progress_bar():
          output the messages periodically, triggered by alarm_handler().
          init_lex(): let a timer call alarm_handler() periodically.

        * util.c: pascal_init(): initialize set alignment only with
          GCC >= 2.95.x.

Mon 31 Jan 2000 16:51 Peter Gerwinski <peter@gerwinski.de>

        * Make-lang-2.95.in, Make-lang-old.in: lang-specs.h: create
          it from lang-specs.h.in by inserting version numbers.

        * parse.y: case_statement, optional_semicolon_or_else_branch,
          case_element: even in the main program, use _local_ `goto'.

        * rts/acconfig.h, rts/configure.in, rts/rts-config.in, rts/rts.c:
          removed changes from 26 Jan 2000; use `os-hacks.h' instead.

Sun 30 Jan 2000 25:33 Peter Gerwinski <peter@gerwinski.de>

        * gpc-lex.c: flag_progress_messages, flag_progress_bar,
          preprocessed_lineno, ungetc_stack, ungetc_stack_position:
          new variables.
          handle_progress_messages(), handle_progress_bar(), gpc_getc(),
          gpc_ungetc(): new functions.
          Callers of getc()/ungetc(): changed to use gpc_getc()/gpc_ungetc()
          instead.
          process_directive(): forbid $uses as a directive.
          nextchar: variable removed (obsoleted by gpc_ungetc()).
          yylex(): case '^': do not call yylex() recursively, but look for
          `..' manually.  Otherwise, we would have to un-yylex() a token.
          yylex(): digits: use gpc_ungetc() instead of a static nextchar
          variable; done: --debug-source is handled in gpc_getc() now.

        * gpc.c: init_automake_temp_file(): do not pass `--uses' to automake
          command line.

        * lang-options.h: new options `--progress-messages' and
          `--progress-bar'.

        * gpc-decl.c: handle new options `--progress-messages' and
          `--progress-bar'.

Fri 28 Jan 2000 18:42 Peter Gerwinski <peter@gerwinski.de>

        * module.c: do_extra_import(): parse the given string correctly.

Thu 27 Jan 2000 23:26 Peter Gerwinski <peter@gerwinski.de>

        * parse.y: unit_interface, module_interface: call do_extra_import().

Wed 26 Jan 2000 25:43 Peter Gerwinski <peter@gerwinski.de>

        * Make-lang-2.95.in: rts/configure: indentation only; no real change.

        * rts/acconfig.h, rts/configure.in, rts/rts-config.in:
          check the type of sleep() and whether ssize_t is present.

        * rts/rts.c: _p_sleep(): also work with a sleep() returning void.

Tue 25 Jan 2000 27:16 Peter Gerwinski <peter@gerwinski.de>

        * gpc-lex.c: process_directive(): search object files in
          unit_path, if not found in object_path; ignore $L+-
          directives; complain about $Lfoo.
          skip_white_space(): do not skip space after a $ in a
          directive; let process_directive() see it.

Mon 24 Jan 2000 27:16 Peter Gerwinski <peter@gerwinski.de>

        * gpc.c: translate_options(): do not add `-lm -lgpc' here.
          add_automake_files(): add `-lm -lgpc' here.
          process_command(): also try GPC_EXEC_PREFIX if
          GCC_EXEC_PREFIX was not set.

Thu 20 Jan 2000 27:47 Peter Gerwinski <peter@gerwinski.de>

        * gpcspec.c: new file, which produces a (new) `gpc'
          driver program when linked with `../gcc.c'.

        * lang-specs.h.in: call the Pascal spec "Pascal" (like
          in `../gcc.c') rather than "pascal";
          get GPC version numbers from Makefile;
          do not pass C++ and a separate GPC spec;
          do not require `--amtmpfile' - AutoMake is not
          supported by the "new `gpc'" and will be replaced by
          `gp' in the future.

        * version.h: new file.

Mon 17 Jan 2000 25:21 Peter Gerwinski <peter@gerwinski.de>

        * gpc-typeck.c: comp_object_or_schema_pointer_types():
          finish type recursion if a type is its own base.
          convert_arguments(): trying to solve a problem with
          `const' string parameters which are in fact `var'.
          convert_arguments(): an untyped pointer RHS is
          compatible with any pointer-type LHS.

Wed 12 Jan 2000 11:17 Peter Gerwinski <peter@gerwinski.de>

        * util.c: KItable[]: `Close' is a UCSD extension and not
          present in ISO Pascal.

Mon 6 Jan 2000 10:37 Peter Gerwinski <peter@gerwinski.de>

        * rts.c: build_rts_call(): case p_NEW: the parameter is
          of `SizeType'; case p_EXPON: handle long reals correctly.
          build_buffer_ref(): init_any() the file pointer variable
          (roland1.pas).

        * parse.y: factor: accept `SizeOf' of an undiscriminated
          string _variable_ (in contrast a type declaration).
          This is in preparation of new string types that will
          use PLACEHOLDER_EXPRs.

        * types.c: build_pascal_string_schema(),
          declared_string_capacity(): trying to re-implement
          strings using PLACEHOLDER_EXPR.

Tue 21 Dec 1999 23:00 Peter Gerwinski <peter@gerwinski.de>

        * parse.y: procedural_type_formal_parameter: copy the string
          schema type node before attaching the VAL_REF_PARM flag
          (fontana1.pas).

Thu 16 Dec 1999 23:16 Peter Gerwinski <peter@gerwinski.de>

        * gpc-cccp.c: create_definition(), skip_if_group(), do_endif():
          report errors with "$foo" rather than "#foo".

Sun 5 Dec 1999 13:22 Peter Gerwinski <peter@gerwinski.de>

        * rts.c: build_rts_call(): case p_EXPON: convert all parameters
          and the result to the same type which is either `Double' or
          `LongReal' (expon.pas).

Mon 8 Nov 1999  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

        * gpc-decl.c (init_decl_processing): Use set_sizetype instead of
          assigning to sizetype.

Thu 4 Nov 1999 17:34 Peter Gerwinski <peter@gerwinski.de>

        * rts.c: build_rts_call(): case p_NEW: The parameter is of
          `SizeType', not `Integer'.

Mon 1 Nov 1999 21:18 Peter Gerwinski <peter@gerwinski.de>

        * gpc_release: updated to 19991030

Sat 30 Oct 1999 21:29:29 Peter Gerwinski <peter@gerwinski.de>

        * ../expr.c: store_constructor(): documented that `__setbits()'
          must be provided by the RTS.

        * ../stor-layout.c: set_words_big_endian: documented that this
          needn't be a constant, so this problem must be solved somehow
          else.

        * ../tree.def: improved the documentation of PLACEHOLDER_EXPR
          and WITH_RECORD_EXPR.

        * diffs/mkdiff: included `tree.def'.

        * gpc-decl.c:{byte,short,word,long,long_long}_boolean_type_node:
          new variables.
          create_boolean_type_node(): new function.
          init_decl_processing: initialize various Boolean type nodes.

        * gpc-typeck.c: build_modify_expr(): get the address of the
          lower and higher half of a packed array access from the
          BIT_IOR_EXPR, so this works without modification on big-endian
          machines.

        * test/Makefile: clean: be less aggressive.
          extraclean: new target.

        * test/m: new script (for machines whose `make' does not survive
          our Makefile).

        * types.c: grok_packed(): when calculating the size of packed
          arrays, don't forget alignment; also initialize TYPE_SIZE_UNIT
          for EGCS.
          build_pascal_array_ref(): use size_int() rather than build_int_2();
          flip the mask for big-endian machines (pack12.pas).

        * util.c: declare_known_ids(): declare {Byte,Word,Long,Short,Med}bool.

Sat 23 Oct 1999 23:47 Peter Gerwinski <peter@gerwinski.de>

        * ../expr.c: expand_expr(): removed the bug fix; let the
          C folks keep their buggy abs(complex).  We are using a
          library function now.

        * diffs/gcc-2.95.1.diff: rebuilt.

        * parse.y: z_ABS: new token.

        * rts.c: rts[]: included z_ABS.
          build_rts_call(): call a library function for complex `abs'
          (instead of generating an ABS_EXPR which is then messed up by
          the backend)-:.

Tue 11 Jan 2000 24:50 Frank Heckenbach <frank@g-n-u.de>

        * rts/file.c, rts/randfile.c, rts/files.pas, rts/bind.c,
          rts/write.c, rts/rt0.c, rts/rts.h, rts/types.h, rts/fdr.h,
          rts/gpc.pas, rts/internal.pas: changed the whole file
          handling from using `FILE *' to integer file handles, to
          make it more efficient and avoid problems with fread(),
          fwrite(), etc.. Replaced the `CFile' field in BindingType
          by a `Handle' field. Replaced the `AssignCFile' procedure
          by an `AssignHandle' procedure. Removed the `GetFile'
          function.

        * units/pipe.pas, units/gmp.pas: modified accordingly

Sat 23 Oct 1999 21:47 Peter Gerwinski <peter@gerwinski.de>

        * gpc-decl.c: pascal_shadow_record_fields(): if the record
          is a function, call it; do error checking here rather than
          in the parser and return the number of `pushlevel()'s.

        * parse.y: structured_variable: leave error checking to
          pascal_shadow_record_fields().

Sat 23 Oct 1999 21:17 Peter Gerwinski <peter@gerwinski.de>

        * gpc-typeck.c: build_component_ref(): if the record is a function,
          call it.

Mon 18 Oct 1999 24:30 Peter Gerwinski <peter@gerwinski.de>

        * ../expr.c: store_constructor(): actually use the global
          `set_word_size' variable instead of a local one carrying
          BITS_PER_UNIT. @-(

        * ../tree.c: get_set_constructor_bytes(): store the words of the
          set in the bytes of the buffer - with the correct order even
          on bigendian systems.

Mon 18 Oct 1999 13:08 Peter Gerwinski <peter@gerwinski.de>

        * config-lang.in: un`bash'ified.

        * ../expr.c: store_constructor(): use set_alignment and
          set_words_big_endian instead of BITS_PER_UNIT and
          BYTES_BIG_ENDIAN making this language-independent.

        * ../stor-layout.c: set_alignment: initialize it from the frontend.
          set_word_size, set_words_big_endian: new variables.
          layout_type(): calculate set size and alignment from
          `set_alignment' and `set_word_size'.

        * ../tree.c: get_set_constructor_bits(): use set_alignment
          instead of BITS_PER_UNIT making this language-independent.
          get_set_constructor_bytes(): use set_words_big_endian instead
          of BYTES_BIG_ENDIAN making this language-independent.

        * diffs/mkdiff: include `tree.h'.

        * diffs/gcc-2.95.1.diff: rebuilt.

        * rts/sets.pas: TSetElement: use bigger units again. :)

        * rts.c: build_rts_call(): case p_CARD: use an RTS call instead
          of a CARD_EXPR (sets12.pas).

        * test/Makefile: un`bash'ified.

        * test/chris[45].pas: adapted to new set format.
          Note:  Do not refer to this in programs!  This is for testing
          only and can change without any notice!

        * test/dialec[356].pas: un`x86'ified.

        * util.c: pascal_init(): initialize set alignment specifications.

Tue 5 Oct 1999 18:30 Peter Gerwinski <peter@gerwinski.de>

        * lang-options.h: new option `--debug-source' replaces `-dY'.

        * gpc-decl.c: c_decode_option(): implement `--debug-source'.
          finish_function(): do not assemble con- and destructors with
          `--syntax-only'.

        * rts.c: rts_call(): do not assemble rts calls with `--syntax-only'.

Sun 3 Oct 1999 29:30 Peter Gerwinski <peter@gerwinski.de>

        * ../expr.c: store_constructor(), expand_expr(): adapted
          the Chill set code to work for Pascal.  Integration into
          EGCS is planned.

        * diffs/gcc-2.8.1.diff, diffs/gcc-2.95.1.diff: rebuilt.

        * rts.c: build_rts_call(): case p_ROUND: evaluate `val'
          only once (knuth1.pas, knuth1a.pas).

        * types.c: count_bits(): recognize, if a type is
          explicitly denoted `unsigned' (fjf24.pas).

Wed 29 Sep 1999 24:28 Peter Gerwinski <peter@gerwinski.de>

        * Make-lang-old.in, Make-lang-2.95.in: gpc.dvi: call
          `tex' directly, giving it the include path in TEXINPUTS.

        * config-lang.in: VPATH warning put back in place.
          It's still needed.
          Check für version "2.8.*" in parallel to "gcc-2.8.*".
          Don't copy `Makefile-*.in' to `Makefile.in' if the
          files already have the same contents.  This preserves
          existing symlinks.

        * ../expr.c: expand_expr(): case FIX_ROUND_EXPR: patch removed.
          We are using a ":?" now instead.

        * ../tree.c: get_set_constructor_bits(): patch put back.

        * diffs/mkdiff: handle versions 2.95.*.

        * diffs/2.95.*: rebuilt.

        * gpc-common.c: build_pascal_binary_op(): for IN_EXPR,
          build an RTS call rather than passing it to the backend.

        * gpc-decl.c: flag_transparanet_file_names: new variable.
          c_decode_option(): handle new options
          `--[no-]transparent-file-names'.
          init_decl_processing(): initialize `real_half_node'.

        * gpc.c: default_compilers[]: this is different between
          gcc-2.8.x and gcc-2.95.x.

        * lang-options.h: new options `--[no-]transparent-file-names'.

        * parse.y: factor: bitwise `not' must not allow conversion of
          the operand; Boolean `not' may (fjf376.pas).
          for_statement: to increment/decrement, generate
          PLUS_EXPR/MINUS_EXPR, and do not generate "++"/"--"
          which does not work correctly with all types.

        * rts/error.pas: ErrorMessages: new error 309.

        * rts/sets.pas: TSetElement: use Bytes instead of Words :-/
          SetBits: new procedure.
          SetIncludeRange: handle the case when both range
          bounds lie in the same word.

        * rts.c: build_rts_call(): case p_ROUND: generate a
          COMPOUND_EXPR (":?") instead of passing it to the backend.

        * units/ports.pas: corrected wrong clobbers
          (see http://egcs.cygnus.com/faq.html#asmclobber).

        * util.c: init_simple(): pass the flag for transparent
          file names to InitFDR.
          expand_goto_main_program(): use gen_rtx_LABEL_REF().

1999-08-16  Matthias Klose  <doko@cs.tu-berlin.de>

        * Make-lang-2.95.in (pascal.rts, p/rts/Makefile): for CC and PC
          prefix all relative pathes with ../../
          Use man1dir for installation of manpages.

1999-08-15  Matthias Klose  <doko@cs.tu-berlin.de>

        * config-lang.in: make version test work with gcc-2.95 as well.

Mon 2 Aug 1999 12:58 Peter Gerwinski <peter@gerwinski.de>

        * module.c: create_gpm_file(), load_gpm_file(): store
          and retrieve GPM files in/from the gpi_destination_path.

Sun 1 Aug 1999 26:34 Peter Gerwinski <peter@gerwinski.de>

        * Make-lang-2.95.in, Make-lang-old.in: new files.
          config-lang.in chooses one of them for Make-lang.in.

        * Makefile-2.95.in, Makefile-old.in: new files.
          config-lang.in chooses one of them for Make-lang.in.

        * config-lang.in: VPATH warning: removed.
          Detect gcc-2.95.  Allow for patching from a separate
          object directory.

        * diffs/gcc-gcc-2.95.diff: new file.

        * diffs/mkdiff: adapted for gcc-2.95.

        * gpc-cccp.c: prototypes, verror(), fatal():
          adapted for gcc-2.95.

        * gpc-decl.c: init_decl_processing(): initialize
          TYPE_SIZE_UNIT (text_type_node).
          finish_decl(): Output global variables at once.
          resolve_forward_pointer(): reduce the damage of
          copying *to_type to *ref further by taking care
          of the size of the object.
          handle_forward_pointers(): removed Pascal-specific
          dbxout_* calls.

        * gpc-defs.h: added declarations for gpc-lex.c.

        * gpc-lex.c: gpc_options[]: new variable.
          process_directive(): use gpc_options[].

        * gpc-tree.h: C_TYPE_*_P(): copied macros from ../c-tree.h.
          Adapted prototypes to gcc-2.95.

        * gpc.c: fatal(), error(): adapted to gcc-2.95.

        * lang-options.h: allow for inclusion from other places
          than toplev.c.  Used by gpc-lex.c for creating gpc_options[].

        * module.c: flag_verbose: new variable.
          @@@@@@@@@@ currently always zero!
          execute(), module_must_be_recompiled(), compile_module():
          use flag_verbose instead of flag_version.
          add_automake_switches(): use gpc_options[].

        * types.c: build_pascal_pointer_type(): removed
          Pascal-specific dbxout_* calls.

        * util.c: maybe_find_function_data(): for gcc-2.95, move
          this function here from toplev.c.

Sun 1 Aug 1999 26:15  Frank Heckenbach <frank@fjf.gnu.de>

        * units/crt.pas: GetActivePanel, PanelNew, PanelDelete,
          PanelBindToBackground, PanelIsBoundToBackground,
          PanelActivate, PanelHide, PanelShow, PanelHidden,
          PanelTop, PanelBottom, PanelMoveAbove, PanelMoveBelow,
          PanelAbove, PanelBelow, IgnoreCursor: new routines

Sun 25 Jul 1999 28:20  Frank Heckenbach <frank@fjf.gnu.de>

        * gpc.pas: turned from a unit into a module with several
          interfaces for the various dialects (mostly empty yet)

Sun 25 Jul 1999 22:38  Frank Heckenbach <frank@fjf.gnu.de>

        * rts/file.c: _p_unlink(): new function
          _p_erase(): permit erasing opened files
          _p_open(), _p_erase(): under Dos, do the unlink() (also
          for internal files) after the fclose() if necessary

Sat 24 Jul 1999 24:15 Peter Gerwinski <peter@gerwinski.de>

        * gpc-lex.c: init_language_specification(): do not
          change a normal disabled keyword to "disabled due
          to dialect specification" (dialec4.pas).

Sat 24 Jul 1999 20:58 Peter Gerwinski <peter@gerwinski.de>

        * gpc-lex.c: init_language_specification(): enable
          everything when flag_what_pascal is zero (dialec3.pas).

        * parse.y: type_denoter: undo changes from yesterday.

        * util.c: declare_known_id(): don't mix up our local
          variables; make the new (local) type declarations
          declare global types.

        * test/Makefile: include `units' directory in unit path.

Sat 24 Jul 1999 15:49 Peter Gerwinski <peter@gerwinski.de>

        * util.c: KItable[]: removed duplication of `Null' and `Copy'
          (fjf365.pas).

Fri 23 Jul 1999 26:38 Peter Gerwinski <peter@gerwinski.de>

        * parse.y: type_denoter: identify valid integer pseudo-schemata
          as built-in identifiers whose TYPE_MAIN_VARIANT is
          integer_type_node or unsigned_type_node.  We check for
          TYPE_MAIN_VARIANT instead of the type itself because built-in
          identifiers are in a local scope when introduced later through
          a directive like `(*$gnu-pascal *)'.

        * util.c: declare_known_id(): preserve previous user declarations.

Fri 23 Jul 1999 22:31 Peter Gerwinski <peter@gerwinski.de>

        * gpc-decl.c: c_decode_option(): call
          init_language_specification() and declare_known_ids()
          after dialect options have been encountered; process
          new options `-W[no-]typed-const' and `-W[no-]near-far'.

        * gpc-lex.c: process_directive(): allow for `-W..' options as
          directives.
          init_language_specification(): make re-enabling of
          dialect-specific keywords possible.

        * lang-options.h: new options `-W[no-]typed-const' and
          `-W[no-]near-far'.

        * parse.y: optional_borland_directive(): make warnings optional.

        * util.c: warn_typed_const, warn_near_far: new variables.
          KItable[]: new field `declared'.
          declare_known_ids(): make it possible to call this function
          more than once.
          typed_const_warning(): make it optional.

Tue 20 Jul 1999 12:02:00 Peter Gerwinski <peter@gerwinski.de>

        * gpc-lex.c: yylex(): Take into account that adjust_exp
          may alter the sign of the exponent of real-type
          constants (rick1.pas).

Wed 14 Jul 1999 19:06:45 Peter Gerwinski <peter@gerwinski.de>

        New toy: stabilize_reference(). ;-)

        * gpc-typeck.c: build_function_call(): use save_expr()
          for string return values instead of building a SAVE_EXPR
          manually.  (stabilize_reference() is not a cure for
          everything (fjf295b.pas, srb2.pas).;-)

        * types.c: append_null_character(): dig out the real string
          to make the job of stabilize_reference() easier (fjf359.pas).

        * util.c: alloca_string(), use stabilize_reference().

Tue 13 Jul 1999 18:15:45 Peter Gerwinski <peter@gerwinski.de>

        * types.c: append_null_character(): if possible, store the
          address of the string in a SAVE_EXPR rather than its value.
          For variable-size strings this is a must (cstrpar1.pas).

Mon 12 Jul 1999 26:57  Peter Gerwinski <peter@gerwinski.de>

        * gpc-common.c: build_pascal_binary_op(): do not create
          empty set variables of negative size (pfep1.pas).

        * module.c: store_tree(), load_tree(): store TYPE_LANG_INFO
          under this name instead of TYPE_LANG_NAME (no real change).

        * types.c: append_null_character(): store the COMPOUND_EXPR
          in a SAVE_EXPR, so it is only evaluated once (fjf302.pas).

Sat 10 Jul 1999 20:04  Peter Gerwinski <peter@gerwinski.de>

        * gpc-decl.c: c_decode_option(): handle `--implementation-only'.

        * lang-options.h: new option `--implementation-only'.

        * module.c: create_gpm_file(): suppress GPM files with
          `--implementation-only'.
          create_gpi_files(), extend_gpi_files(): suppress GPI
          files with `--implementation-only'.

        * util.c: flag_implementation_only: new variable.

Sat 10 Jul 1999 19:04  Peter Gerwinski <peter@gerwinski.de>

        * gpc-common.c: build_pascal_binary_op(): re-wrote "set"
          part to use RTS functions instead of inline (setop.c).

        * gpc-typeck.c: build_unary_op(): handle non-constant
          constructors.

        * parse.y: set_*: new tokens.
          assignment_or_call_statement: call assign_set().

        * rts.c: rts[]: added set operations.

        * types.c: assign_set(): new function.

Fri 9 Jul 1999  1:50  Frank Heckenbach <frank@fjf.gnu.de>

        * demos/bigmemdemo.pas, demos/arrayslicedemo.pas: new files

Fri 25 Jun 1999 10:45  Peter Gerwinski <peter@gerwinski.de>

        * gpc-convert.c: convert(): mark integer constants of
          unsigned TREE_TYPE as TREE_UNSIGNED.

        * parse.y: object_method_heading, function_heading:
          added missing parameter to `error()'.

Wed 23 Jun 1999 16:17  Peter Gerwinski <peter@gerwinski.de>

        * gpc-defs.h: TYPE_LANG_DECLARED_CAPACITY(): new macro.

        * gpc-lang.h: struct lang_type: renamed `name' to `info'
          and documented its new use.  gpc-defs.h updated.

        * gpc-typeck.c: re_layout_type(): distinguish between
          strings and other records, and handle discriminants in
          the string capacity (fjf189.pas).

        * rts/internal.pas: VarAnyString: a pointer to the
          capacity is of type `^Cardinal'.

        * types.c: build_pascal_string_schema(): store the
          declared string capacity in TYPE_LANG_SPECIFIC (fjf189.pas).
          build_pascal_range_type(): check for ranges that are
          too big for GPC (fjf355a.pas); make the range unsigned
          if both bounds are unsigned (fjf355.pas).

Tue 22 Jun 1999 21:11  Peter Gerwinski <peter@gerwinski.de>

        * Make-lang.in: pascal.install-units, pascal.install-demos,
          pascal.install-info: do not `cd' to the target directory.
          pascal.install-compiler: do not specify the $$file in
          the $(libsubdir).  (Why did this make trouble??)

Tue 22 Jun 1999 18:08  Peter Gerwinski <peter@gerwinski.de>

        * gpc-lex.c: yylex(): removed obsolete code fragments.

        * types.c: int_cst_lt_always(): to determine the sign of
          a constant, also check its TREE_TYPE (fjf41.pas,
          fjf84[ab].pas, fjf88.pas).

Sat 19 Jun 1999 24:43  Peter Gerwinski <peter@gerwinski.de>

        * gpc-decl.c: grokdeclarator(): do not destroy
          constantness or volatility information in the type
          node (chief26.pas).  (Why is this done for C??)

Sat 19 Jun 1999 17:18  Frank Heckenbach <frank@fjf.gnu.de>

        * rts/rts.c: new file

        * rts/maths.c, rts/times.c: removed

Fri 18 Jun 1999 27:09  Peter Gerwinski <peter@gerwinski.de>

        * gpc-common.c: build_pascal_pointer_reference():
          explicitly allow function calls in expressions with `^'
          (fjf354.pas).

        * memfiles.c: mopen(): use xmalloc() instead of malloc().

        * module.c: current_gpi_file_name: new variable.
          gpi_error(): new function.
          load_string(), load_flags(), load_type_flags(),
          load_decl_flags(), load_tree(), gpi_open():
          check the result of mread().
          store_tree(), load_tree(): call abort() instead of assert(0).
          create_gpi_files(): free the storage for gpi_file_name.
          extend_gpi_files(), gpi_open(), load_gpi_file():
          use current_gpi_file_name.

Fri 18 Jun 1999 13:42  Peter Gerwinski <peter@gerwinski.de>

        * ../Makefile.in: set "*cross_compile: 0" or "*cross_compile: 1"
          according to the difference between host and target.

        * Makefile.in, gbe.h, gpc-common.c, gpc-decl.c, gpc-typeck.c:
          use `gpc-tree.h' instead of `c-tree.h'.

        * Make-lang.in: removed how-to-contrib.texi.

        * doc/how-to-contrib.texi: removed.

        * doc/contributors.texi: updated.

        * gbe.h: new external variables `errorcount' and `sorrycount'.

        * gpc-decl.c: c_decode_option(): handle new option `--interface-only'.
          print_lang_decl(), print_lang_type(): output interface and UID.
          allocate_decl_lang_specific(): new function.
          store_variant_tag_info(): use accessor macro for TYPE_LANG_SPECIFIC.
          grok_directive(): call allocate_decl_lang_specific().
          start_pascal_function(): compensate for different order of
          non-parameters in parameter lists.

        * gpc-defs.h: new accessor macros for DECL_LANG_SPECIFIC
          and TYPE_LANG_SPECIFIC.  Callers changed.
          PASCAL_TYPE_UNDISCRIMINATED_SCHEMA(),
          PASCAL_TYPE_PREDISCRIMINATED_SCHEMA(): undiscrimniated
          schemata can be their own base type.

        * gpc-lang.h: new definitions for `struct lang_type' and
          `struct lang_decl'.

        * gpc-lex.c: init_lex(): check for a known bug in some
          libc distributions.
          yylex(): do not barf on "^F_OO".

        * gpc-tree.h: new file; derived from `../c-tree.h', but
          does not define `struct lang_type'.

        * gpc-typeck.c: comptypes(): enumerated types are identical
          when they have the same values; the nodes do not need to
          be identical (pd1.pas).
          compatible_assignment_p(): call comptypes() instead of
          doing the comparison manually.
          build_indirect_ref(): prediscriminate schemata.
          convert_arguments(): determine the type of conformant
          array indices (pd2.pas).
          build_discriminated_schema_type(): allocate
          TYPE_LANG_SPECIFIC only if not already allocated.

        * gpc.gperf: Segment: disabled by default.

        * lang-options.h: new option `--interface-only'.

        * lang-specs.h.in: `--interface-only' implies
          `--syntax-only' and does not produce an output file.

        * module.c: we_are_loading_a_gpi_file: changed type to
          `tree' to hold the interface name.
          interface_table: new variable.
          finalize_module: dispose interface_table.
          store_tree(): allocate TYPE_LANG_SPECIFIC and store
          the interface name and a UID in the GPI file
          (baby2.pas, maur6.pas, sam12.pas); do not fear
          recursions with pointers, references and records;
          case FIELD_DECL: store DECL_FIELD_BITPOS.
          new_interface_table(), resize_itab_entries(),
          record_interface_specifications(): new functions.
          load_tree(): retrieve interface names and UIDs; avoid
          loading the same node multiple times (baby2.pas,
          maur6.pas, sam12.pas); do not fear recursions with
          pointers, references and records specially; case
          FIELD_DECL: retrieve DECL_FIELD_BITPOS; case VAR_DECL:
          save a possible previous global meaning of the
          identifier.
          load_gpi_file(): save and restore the name of the
          interface we are loading to allow for recursions
          (not used currently).

        * module.h: struct module: `interface' and `implementation'
          are `int's now; there is no reason for them to be `tree's.

        * objects.c: inherit(): avoid inheriting interface names
          and UIDs.

        * parse.y: for_statement: convert set bounds to the
          element type in set member iteration.
          rest_of_unit: with `--interface-only', stop after the
          interface has been created.
          rest_of_module: allow for an optional_init_and_final_part
          in GPC-specific modules (ian3.pas).

        * rts.c: rts_val(): allow for parameters of char type.
          build_rts_call(): case p_NEW: do not prediscriminate
          new pointers to schemata here, but when they are
          dereferenced.

        * util.c: flag_interface_only: new variable.
          handle_formal_param_list(): when building a read-only
          variant of a type, remove its interface name and UID.
          exit_compilation(): new function.

Thu 17 Jun 1999 27:37  Frank Heckenbach <frank@fjf.gnu.de>

        * rts/pexecute.h, units/pexecute.pas: removed

Sat 12 Jun 1999 22:28:31  Peter Gerwinski <peter@gerwinski.de>

        * parse.y: D_REGISTER: new token.
          new_identifier_1: updated.
          storage_qualifier, directive: handle D_REGISTER.

        * util.c: KItable[]: new identifier "Register".

Thu 10 Jun 1999 20:19  Frank Heckenbach <frank@fjf.gnu.de>

        * rts/*.pas: rearranged the RTS units so that they use the
          ones they really need rather than the GPC unit

        * rts/string.pas: split into rts/string.pas and
          rts/string2.pas to avoid cyclic dependency with
          rts/error.pas

Thu 10 Jun 1999 14:55:28  Peter Gerwinski <peter@gerwinski.de>

        * parse.y: return_statement: allow character constants
          for char and for string return values.

Thu 9 Jun 1999  26:44  Frank Heckenbach <frank@fjf.gnu.de>

        * rts/getopt.[ch], units/getoptc.c, units/getopt.pas:
          removed

        * rts/getopt.pas, rts/init.pas: new files

Tue 1 Jun 1999 17:08  Frank Heckenbach <frank@fjf.gnu.de>

        * units/gpc-bp.pas: new file

Sun 9 May 1999 28:34  Frank Heckenbach <frank@fjf.gnu.de>

        * Make-lang.in, rts/Makefile.in: replaced `==' by `='
          (reported by Russ Whitaker <russ@ashlandhome.net>)

        * Make-lang.in, rts/Makefile.in: added missing direct and
          indirect dependencies on the RTS headers

        * INSTALL, doc/install.texi: removed now (hopefully)
          obsolete comment about RTS building problems on Alpha
          OSF/1

        * rts/write.c, rts/rt0.c: removed usage of INT_MIN (instead
          use `Low (Integer)' in rts/numtodec.pas)

        * rts.h: removed now unnecessary inclusion of limits.h

        * gpc_release: new file: contains just the release date of
          GPC

        * lang-specs.h: moved to lang-specs.h.in

        * Make-lang.in: rule to "remake" (i.e., copy) lang-specs.h
          from lang-specs.h.in whenever gpc_release changes

          gpc.o, version.o: depend on gpc_release

          New target pascal.update-release to set the release date
          to the current date.

        * rts/string.c: renamed to rts/rts-va.c

        * rts/read.c: _p_read(), _p_readstr(), _p_val_foo();
          rts/write.c: _p_write(), _p_writestr(): moved to
          rts/rts-va.c

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

Mon 26 Apr 1999 19:26  Frank Heckenbach <frank@fjf.gnu.de>

        * rts/configure.in: check for vfork

        * rts/pexecute.c: test HAVE_VFORK

Fri 23 Apr 1999 27:36  Frank Heckenbach <frank@fjf.gnu.de>

        * rts/write.c: MAX_LONG_WIDTH: use an upper bound instead of
          BITS_PER_UNIT

        * rts/rts.h: removed (now unnecessary) inclusion of
          tconfig.h and float.h

Wed 21 Apr 1999 28:00:00  Peter Gerwinski <peter@gerwinski.de>

        * doc/programming.texi: additional hints for interfacing
          with C, partly copied from `rts/gpc.pas'.

        * parse.y: repeat_statement, while_statement, for_statement:
          put the statement sequence into an implicit `begin'/`end'
          pair to avoid temporary variables to accumulate (fjf345[a-c].pas).

Mon 12 Apr 1999 20:40  Frank Heckenbach <frank@fjf.gnu.de>

        * demos/fibonacci.pas: new file

Sun 11 Apr 1999 25:23  Peter Gerwinski <peter@gerwinski.de>

        * gpc-common.c: build_pascal_binary_op(): allocate the
          temporary variable for string catenations with
          alloca_string() (-:berend3:-).

Sun 11 Apr 1999 25:08  Peter Gerwinski <peter@gerwinski.de>

        * util.c: alloca_string(): new function.

        * rts.c: build_rts_call(): case gpc_CSTRING2STRING: use
          alloca_string(); case bp_PARAMSTR: use alloca_string()
          and do not expand statements (fjf226d).

Sun Apr 11 22:17:29 1999 J.J. van der Heijden <J.J.vanderHeijden@student.utwente.nl>

        * gpc.c (add_automake_files): outfiles, explicit_link_files: free
          before overwriting. new_explicit_link_files: use

Sun 11 Apr 1999 18:35  Peter Gerwinski <peter@gerwinski.de>

        * types.c: build_file_type(): initialize TYPE_SIZE_UNIT
          of FILE_TYPEs (chief30).

        * util.c: size_unit_of_file_type: new variable.
          init_util(): initialize size_unit_of_file_type.

Sat 10 Apr 1999 26:47  Peter Gerwinski <peter@gerwinski.de>

        * gpc-lex.c: yylex(): range-check `#42' char constants (fjf332).

Sat 10 Apr 1999 15:19  Peter Gerwinski <peter@gerwinski.de>

        * Make-lang.in: GPC_SRCS: added memfiles.

        * memfiles.c: removed superfluous `#include's.
          mopen(), mclose(), mread(), mseek(): handle errors.

Fri 9 Apr 1999 23:06:45  Peter Gerwinski <peter@gerwinski.de>

        * demos/parserdemo.pas: EPified.

        * diffs/gcc-egcs-1.1.1.diff, gcc-egcs-1.1.2.diff: new symlink.

        * doc/programming.texi: document that `private' etc. are ignored.

        * doc/welcome.texi: updated.

        * parse.y: case_statement: stack enabling/disabling of
          "Otherwise".

        Applied fixes by Morten S. Jensen <msj@dat.dtu.dk>:

        * gpc-cccp.c: `#else' must start in column 1.

        * gpc-typeck.c: grok_discriminant(): default case needs `;'.

        * types.c: maybe_schema_discriminant(): default case needs `;'.

Mon 29 Mar 1999 27:03  Peter Gerwinski <peter@gerwinski.de>

        * Make-lang.in: xgpc, gpc1: re-added choose-temp.o and pexecute.o.

        * Makefile.in: GPC_OBJS: re-added choose-temp.o and pexecute.o;
          added memfiles.o.
          gpi-hash.o, module.o: added memfiles.h.
          memfiles.o: new rule.

          We must find a solution to supply egcs-2.92+ as well
          as gcc-2.8.1, perhaps by adding patches to our own
          `Makefoo.in's to the GCC patches.

        * gpi-hash.c: load_module_header(), hashed_load(), checked_fread():
          use memory files instead of ordinary files.
          checked_fread(): renamed to checked_mread().

        * memfiles.c: new file.
          mopen(), mclose(), mread(), mtell(), mseek(): new functions.

        * module.c: load_string(), load_flags(), load_type_flags(),
          load_decl_flags(), load_tree(), gpi_open(), load_gpi_file():
          use memory files instead of ordinary files.
          load_gpm_file(): do not use load_string() but do the stuff
          manually.

Wed 31 Mar 1999 29:07  Frank Heckenbach <frank@fjf.gnu.de>

        * demos/dosunixdemo.pas: new file

Sat 27 Mar 1999 19:11  Frank Heckenbach <frank@fjf.gnu.de>

        * demos/absdemo.pas, demos/conformantdemo.pas,
          demos/initvardemo.pas, demos/iteratordemo.pas,
          demos/mandelbrot.pas, demos/parserdemo.pas,
          demos/readdirdemo.pas, demos/returnvardemo.pas,
          demos/schemademo.pas, demos/stringschemademo.pas:
          new files

        * units/crtx.c: new file

Thu 25 Mar 1999 28:00  Frank Heckenbach <frank@fjf.gnu.de>

        * demos/bigsetsdemo.pas, demos/datetimedemo.pas,
          demos/filebuf1demo.pas, demos/filebuf2demo.pas,
          demos/intfiledemo.pas, demos/packdemo.pas,
          demos/rwstringdemo.pas, demos/variantdemo.pas: new files

Wed 24 Mar 1999 21:30  Frank Heckenbach <frank@fjf.gnu.de>

        * rts/gstrings.pas: renamed CString routines so they get a
          `CString' prefix. Moved the BP compatibility identifiers
          into units/strings.pas.

Fri 19 Mar 1999 18:28  Peter Gerwinski <peter@gerwinski.de>

        * FAQ: added a notice saying that this file is outdated.

        * README: updated for gpc-19990118 and changes in the
          source structure.

        * diffs/mkdiff: applied changes by Matthias; create an
          empty `mbchar.c.orig' where necessary.

        * diffs/gcc-*: rebuilt.

        * gpc.c: process_command(): dump `link_command_spec'.

        * ../gcc.c: process_command(): dump `link_command_spec'.

1999-03-10  Matthias Klose  <doko@cs.tu-berlin.de>

        * config-lang.in: define EGCS92 symbol for 2.93.x versions as well.

        * gpc-lex.c: yyerror:
          change prototype from char * to const char * for EGCS92.

        * gpc-typeck.c: build_indirect_ref lvalue_or_else readonly_warning:
          change prototype from char * to const char * for EGCS92.

        * gpc-typeck.c: for EGCS92, change prototype for pedwarn_init
          and error_init.

        * gbe.h: EGCS92: include toplev.h and don't use extern function
          references.

        * Make-lang.in (xgpc, gpc1): remove choose-temp.o and pexecute.o.
          (GPC_FLAGS_TO_PASS): pass LIBS.

        * Makefile.in (GPC_OBJS): remove choose-temp.o and pexecute.o.

        * gpc-decl.c: declare flag_no_ident as external for EGCS92.

        * gpc-decl.c: builtin_function grokfield: change prototype from
          char * to const char * for EGCS92.

Tue 9 Mar 1999 26:02  Peter Gerwinski <peter@gerwinski.de>

        * ../config/i386/go32.h: CPP_PREDEFINES: added DJGPP
          version numbers.  LINK_COMMAND_SPEC: new define.

        * diffs/*.diff: removed.
          diffs/gcc-2.8.1.diff, diffs/gcc-egcs-2.91.60.diff: rebuilt.

Mon 8 Mar 1999 27:30  Peter Gerwinski <peter@gerwinski.de>

        * gpc.c: from EGCS:gcc.c: allow to override link_command_spec.

Mon 8 Mar 1999 27:07  Frank Heckenbach <frank@fjf.gnu.de>

        * rts/Makefile.in: prevent the warnings about missing
          prototypes for the varargs functions, since nobody seems
          to know how to prototype varargs functions in a portable
          way

Mon 8 Mar 1999 27:05  Peter Gerwinski <peter@gerwinski.de>

        * gpc-decl.c: c_decode_option(): handle `--no-default-paths'.

        * gpc-lex.c: process_directive(): do not allow a
          (*$no-default-paths*) directive.

        * lang-options.h: --no-default-paths: new option.

        * util.c: flag_no_default_paths: new variable.
          pascal_init_options(): moved initialization of *_path
          to pascal_init().

Mon 8 Mar 1999 25:05  Peter Gerwinski <peter@gerwinski.de>

        * doc/reference.texi: @node asm, asmname, assigned,
          break, continue: wrote something.
          Also filled in "Standards" information for some nodes.

        * gpc-lex.c: process_directive(): do not allow
          (*$no-foo-path*) directives; when compiling, fall back
          to `unit_destination_path' if `object_destination_path'
          is not given.

Mon 8 Mar 1999 22:27  Frank Heckenbach <frank@fjf.gnu.de>

        * ../Makefile.in, Make-lang.in, Makefile.in: added some
          variables to make cross-building for DJGPP hosts easier,
          without the need to patch the Makefiles.

          Automatically call autoconf and autoheader in rts/ when
          configure.in has changed.

Mon 8 Mar 1999 13:59  Peter Gerwinski <peter@gerwinski.de>

        * doc/reference.texi: @node and_then, or_else:
          --no-short-circuit does _not_ guarantee complete evaluation.

        * gpc-lang.c: Pascalified.
          lang_init_options(): call pascal_init_options().

        * module.c: module_must_be_recompiled(), compile_module(),
          gpi_open(): search for units in unit_destination_path.

        * util.c: removed redundant prototypes for external functions.
          init_util(): moved initialization of {unit,object}_path
          to pascal_init_options().
          pascal_init_options(): new function.
          initialize_world(): renamed to pascal_init(); caller changed.

Sun 7 Mar 1999 24:57  Peter Gerwinski <peter@gerwinski.de>

        * doc/bpqstart.texi: updated; added portability hints.

        * doc/gpc.texi: re-organised a little.

        * doc/reference.texi: created skeletons for `public',
          `published', `private', and `SetFileTime';
          re-formulated standard compliance warnings;
          wrote something about `AnsiChar', `append', and `Double';
          document the return type of `SizeOf' etc. as `SizeType'.

        * gpc-decl.c: explicit_object_destination_path: variable removed.
          c_decode_option(): do not add the unit/object destination path
          to the unit/object path.

        * module.c: module_must_be_recompiled(), compile_module():
          besides the unit/object path, also search the unit/object
          destination path for units/objects.
          locate_interface_source(): append the unit destination
          path to the unit path before searching.

        * types.c: build_array_slice_ref(): preserve indices
          outside of EP mode (fjf340*).

Sat 6 Mar 1999 17:49  Frank Heckenbach <frank@fjf.gnu.de>

        * Make-lang.in, rts/Makefile.in: enable building of a shared
          libgpc when --with-shared is given to configure --
          however, it would have to be given to rts/configure which
          is not invoked manually. :-( As a workaround, one can give
          `WITH_SHARED=yes' to the (main) make.

Thu 25 Feb 1999 24:26  Peter Gerwinski <peter@gerwinski.de>

        * gpc-cccp.c: do_include(): Initialize searchptr->fname
          using strncpy() rather than strcpy() (crt.pas).

        * gpc-decl.c: handle `--[no-]io-checking', `--no-unit-path',
          `--no-object-path'.

        * lang-options.h: new options `--[no-]io-checking',
          `--no-unit-path', `--no-object-path'.

        * rts.c: rts_string(): check the number of arguments for
          `Pos', `Index', `SubStr', `Copy', and `Trim' (fjf333).

Wed 24 Feb 1999 16:25  Peter Gerwinski <peter@gerwinski.de>

        * config-lang.in: make the patch to the GCC source work
          when compiling in a separate object directory.

        * doc/reference.texi: @node ParamStr: add a pointer to
          the DJGPP FAQ list to explain command-line clobbering
          under DJGPP and mingw32.

Tue Feb 23 21:55:09 1999 J.J. van der Heijden <J.J.vanderHeijden@student.utwente.nl>

        * gpc-cccp.c (do_include): Initialize searchptr->fname

Mon 22 Feb 1999 21:06:00  Peter Gerwinski <peter@gerwinski.de>

        * gpc-lex.c: keyword_enabled(): new function.

        * parse.y: object_fixed_part: allow object_section at
          the very beginning.
          optional_par_formal_parameter_list: restore the state
          of the keyword `protected' since this can be stacked
          with other contexts that enable/disable this keyword.

Mon 22 Feb 1999 16:03  Peter Gerwinski <peter@gerwinski.de>

        * parse.y: optional_object_directive: issue the same warning
          for all directives (and only once).

        * util.c: object_directive_warning(): new function.

Mon 22 Feb 1999 14:23/14:56  Peter Gerwinski <peter@gerwinski.de>

        * gpc-typeck.c: convert_arguments(): accept `null' as a
          conformant or open array.

Mon 22 Feb 1999 14:00:00  Peter Gerwinski <peter@gerwinski.de>

        * gpc-decl.c: c_decode_option(): allow (*$debug-tree="0x12345678"*).

        * gpc-typeck.c: common_type(): when merging function
          types, don't merge the argument types.

        * util.c: declare_known_ids(): declare "Cardinal" as the last
          unsigned integer type.

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

        * gpc-typeck.c: default_conversion(): convert
          sub-`Integer' integers to `Integer' (chief29).

        * parse.y: case_statement: push a label level around it.
          Otherwise, `case' produces crashes hard to reproduce.
          (Not sure, why.)-:

Fri 19 Feb 1999 25:44  Peter Gerwinski <peter@gerwinski.de>

        * gpc-typeck.c: current_case_exit_label: new variable.
          c_expand_start_case(): make `case' transparent for
          `break' (fjf287).

        * parse.y: case_statement(): define a label to exit the
          `case' statement.
          optional_semicolon_or_else_branch, case_element: use
          `goto' instead of `break' to exit a case branch.
          goto_statement: use pascal_expand_goto().

        * util.c: pascal_expand_goto(): new function.

Fri 19 Feb 1999 20:55  Peter Gerwinski <peter@gerwinski.de>

        * Makefile.in: hash.h: it needs a more sophisticated key
          to distinguish `Published' and `Protected'.

        * gpc.gperf: Published: new keyword.  (`hash.h' rebuilt.)

        * parse.y: BP_PUBLISHED: new token.
          BP_PRIVATE, BP_PUBLIC: these are reserved words and
          only enabled in certain context.  No %type necessary.
          new_identifier_1: took out BP_PRIVATE, BP_PUBLIC.
          type_definition_part: enable/disable "Published".
          object_fixed_part: allow for object directives like
          `private', but ignore them with a warning.
          optional_object_directive: new rule.

Fri 19 Feb 1999 19:55  Peter Gerwinski <peter@gerwinski.de>

        * gpc.c: translate_options(), process_command(),
          safe_exit(), init_automake_temp_file(): use the
          `-f...' form for the internal option `-famtmpfile'
          to avoid confusion in translate_options().

Fri 19 Feb 1999 19:22  Peter Gerwinski <peter@gerwinski.de>

        * gpc-decl.c: explicit_object_destination_path: new variable.
          c_decode_option(): in --unit-destination-path, only
          preserve object_destination_path if that one was
          specified _explicitly_.

Wed 17 Feb 1999 17:22  Peter Gerwinski <peter@gerwinski.de>

        * rts.c: build_rts_call(): case bp_INC, bp_DEC, AND_,
          OR, NOT_, BP_XOR: warn about misused typed constants.

Tue 17 Feb 1999 24:17  Frank Heckenbach <frank@pascal.gnu.de>

        * types.c: cstring_inform(): new function
          cstring_informed: made variable local

        * types.c: assign_string(), build_pascal_array_ref(); rts.c:
          rts_read(), rts_write (); gpc-typeck.c:
          check_pascal_initializer(): call cstring_inform() *after*
          giving the error message

        * rts/fassign.pas: renamed to files.pas

Mon 15 Feb 1999 8:41  Niels Kristian Bech Jensen <nkbj@image.dk>

        * Make-lang.in: added checks for LANGUAGES=[Pp]ascal.

Sat 13 Feb 1999 27:22  Peter Gerwinski <peter@gerwinski.de>

        * parse.y, gpc-common.c, gpc-decl.c, gpc-lex.c, rts.c, types.c:
          changed all dialect pedwarns from "ISO Pascal does not allow ..."
          to "... is a FooBar Pascal extension".

Sat 13 Feb 1999 22:54  Frank Heckenbach <frank@pascal.gnu.de>

        * gpc-cccp.c, gpc-common.c, gpc-decl.c, gpc-lex.c,
          gpc-typeck.c, gpc.c, parse.y, rts.c, types.c, util.c:
          added spaces in front of all but the first line of
          multi-line errors and warnings, so they can be recognized
          by tools that parse them automatically

Sat 13 Feb 1999 22:12  Peter Gerwinski <peter@gerwinski.de>

        * gpc.c: translate_options(): avoid warning about unused
          link files with `--syntax-only'.

        * util.c: init_simple(): do not initialize file buffers
          to a size of 128 bytes by default.

Fri 12 Feb 1999 18:40  Peter Gerwinski <peter@gerwinski.de>

        * gpc-typeck.c: check_pascal_initializer(): give the
          "ignoring fields" warning also with structured components.
          build_modify_expr(): re-check the type sizes of casts used
          as lvalues.

        * rts.c: pascal_unpack_and_pack(): choose an integer
          type of the correct size for array indices.
          build_rts_call(): case bp_INC, bp_DEC: cast the
          argument to an integer type of the correct size.

        * util.c: init_any(): choose an integer type of the
          correct size for the array index.

Thu 4 Feb 1999 11:13  Peter Gerwinski <peter@gerwinski.de>

        * parse.y: pointer_domain_type: allow for FILE_.

Wed 3 Feb 1999 24:35  Peter Gerwinski <peter@gerwinski.de>

        * gpc-common.c: build_pascal_unary_op(): convert unsigned
          integers to signed ones before applying the operator (fjf324).

        * module.c: add_to_link_file_list(): add items in order.

        * rts.c: build_rts_call(): case p_LENGTH: return an Integer.

        * types.c: select_signed_integer_type(): new function.
          select_integer_type(): take care of sums of and
          differences between signed and unsigned integers.

Tue 2 Feb 1999 29:07  Peter Gerwinski <peter@gerwinski.de>

        * lang-options.h: implemented short help texts.

        * rts.c: build_rts_call(): case ucsd_INSERT: allow for
          char types in first parameter (fjf254).

        * types.c: build_pascal_string_schema(): make the
          capacity and length field unsigned (fjf322).

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

        * rts/configure.in, rts/rts-config.in: added tests for
          headers used by various systems to stat a file system
          (sys/statvfs.h, sys/vfs.h, sys/mount.h)

        * rts/file.c: include those headers when present

Wed 27 Jan 1999 18:28  Peter Gerwinski <peter@gerwinski.de>

        * gpc.c: added prototypes for GPC specific static functions.
          translate_options(), process_command(), main(): when exit()ing,
          delete the AutoMake temp file.
          hack_predefines(): removed obsolete code.
          safe_exit(): new function.
          init_automake_temp_file_name(): removed unused variable.

        * module.c: gpi_open(): do not force compilation when
          there is no source; @-] free storage after use.

Mon, 25 Jan 1999 22:35:07 -0500 (EST)  Kevin A. Foss <kfoss@mint.net>

        * compile.cmd: adapted to work with GCC 2.8.1.

        * install.texi: updated EMX installation instructions.

        * gpc-typeck.c: bounds_disable_field_check, pipes_supported:
          solve a small incompatibility between gpc's gpc-typeck.c
          and EMX's c-typeck.c with bounds checking enabled.

        * gpc.c: getname(), omf, pipes_supported, first_infile,
          link_command_spec, translate_options(), execute(),
          process_command(), do_spec_1(), main(): integrated the
          EMX changes for GCC 2.8.1.

        * rts/file.c: S_ISFIFO(): removed for EMX with GCC 2.8.1.

Mon 25 Jan 1999 27:30  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 User,
          Group, Mode and INode in BindingType

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

        * units/dos.pas: SetFAttr: use ChMod

        * units/dosc.c: file removed

Sat Jan 23 16:03:01 1999 J.J. van der Heijden <J.J.vanderHeijden@student.utwente.nl>

        * gpc.c (hack_predefines): Don't free cpp_predefines, it was never
          malloc-ed.

Fri 22 Jan 1999 22:30  Frank Heckenbach <frank@pascal.gnu.de>

        * gpc-lex.c: yylex (): don't warn about underscores at the
          beginning or end of an identifier or about adjacent
          underscores in --borland-pascal mode

        * rts.c: rts_read(), rts_write(): don't warn about
          reading/writing CStrings from/to text files in
          --borland-pascal mode

        * parse.y: don't warn about typed constants in
          --borland-pascal mode

        * rts/file.c: _p_f_read_tty(): handle #0 characters
          correctly (fjf318[ab].pas)

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,
          demos/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: new file, copied from ..

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

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

        * units/pexecute.pas, 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); 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); 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, rts/set.h: most routines: translated into
          Pascal (sets.pas), thereby simplifying them a lot; 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); file removed

        * rts/error.pas: new file

        * rts/error.c: all routines: translated into Pascal
          (error.pas); 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()

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 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

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.

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; 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; contents 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 CopyCString
          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 arithmetic, 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', `CStringCopyString',
          `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_CSTRINGCOPYSTRING,
          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 `CStringCopyString'.

        * 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_CSTRINGCOPYSTRING,
          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', `CStringCopyString',
          `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: new file

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

        * 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/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, CStringCopyString,
          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 like empty strings 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 arithmetic.

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 pointers

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 one 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 rather than 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 function;
          _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 whose type is fixed 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 arithmetic.

        * 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
          documentation, 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().

        * 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!)
