

		GPC -- Gnu Pascal Random Notes
		==============================

	See also the files GPC.GUIDE, README and PROBLEMS.

	- a bison parser for GPC
	  (the parser is a ISO 7185 standard pascal parser
	   with extensions (like casts, type of, address of vars,
	   inline, return, break, continue, otherwise and so on...)

        - code (glue) that can be used to convert the Pascal way of
	  defining things to use routines in a modified c-decl.c.
	  This mainly does re-ordering of the data structures. The glue
	  lives in gpc-parser.y or in gpc-util.c.

	- VAR parameters for Pascal routines
	  Now done with REFERENCE_TYPE. Until the REFERENCE_TYPE is
	  implemented as in C++, I just get rid of this type as soon
	  as possible by converting it to POINTER_TYPE in as few places
	  as possible. Currently affects gpc-parse.y, actualparameterlist()
	  and default_conversion().

	- redeclaration of standard identifiers (NOT reserved words)
	  This requires a change in tree.def sometime in the future;
	  currently I am mis-using Tiemann's FRIEND_DECL TREECODE
	  which looks exactly like my KNOWNID_DECL would look like.
	  So maybe there is no need to add it at all for Pascal.

	- run time system & routines that generate calls to the rts.
	  The old one Antti Louko & I originally wrote back in -85
	  when I ported another Pascal compiler (Pax) to BSD Vax.
	  Pax compiler is written in Pascal, and it runs on Twenex
	  and Unix. (Very good error reporting capabilities.)
	  More info on request.

	- WITH statement should work properly. No information of
	  WITH is currently given to the debugger.

	- variant records
	  These should work. Added routine find_field() that returns a
	  chain of TREE_LIST nodes and modified build_component_ref() to
	  work as follows: When gpc-parse.y builds a variant record, it
	  constructs an unnamed RECORD_TYPE containing the possible variant
	  selector field and an unnamed UNION_TYPE node. When find_field()
	  sees unnamed RECORD_TYPE or UNION_TYPE nodes implicitely
	  propagates to the inner layer of the definition. It then returns
	  the TREE_LIST chain of this propagation and this is modified to a
	  series of build(COMPONENT_REF,...) for all propagated RECORD_TYPE
	  nodes, which the rest of gcc will handle. This does NOT YET check
	  variant access errors...  When thinking about it, it does not
	  check very many other things either, so maybe no one will notice
	  this :-)

	- Arrays with non-zero lower bound
	  Required some changes to expr.c.

	See the file PROBLEMS first for additional bugs.
