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 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.

Thu Dec  8 05:20:45 1993  Jukka Virtanen  (jtv@kampi.hut.fi)

	* Snapshot 2.5.6 made available at kampi.hut.fi

	  ****** Lots of ChangeLog info missing; it is in RCS

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

	  I don't write ChangeLog entries currently, I use RCS.

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 can not 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
	  can not 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 can not 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 can not
	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!)
