[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

ooc-960108



The files are on cognac as usual.  What has changed?

* Archive of mailing list available at
ftp://cognac.informatik.uni-kl.de/pub/ooc/mailing-list/
Each file is in the Emacs BABYL format, compressed with gzip.  Each
covers the mails of one month.  To read it, gunzip the file and simply
load the file into Emacs.  You'll end up in RMAIL mode, pressing h
gives you a list of file headers.  If you want to access all files at
once, simply concatenate the files into a single file and read it into
Emacs.  
  Juergen will add the traffic of the current month at the beginning
of following month.  I don't now if he will/can automate the process
to append new mails to the archive as soon as they arrive...

* Merged in Frank's code from ooc-m68k-951221.tar.gz.
Frank: Do you mind if I rename the *.mod/*.mod,v files to
the suffix *.Mod/*.Mod,v? 

* Added make.  Integrated into the compiler itself, activated (for
oo2c) by options -M (make) resp. -MA (make all).  Simpler, faster and
smarter than the o2c version; has also better error reporting.  Works
with symbol files if possible; can cope with missing source files as
long as symbol and object file are present; only needs sources of main
module.  A short description how it works is in frontend/doc/Make.
The file resp. time stamp interface is collected in TimeStamp.Mod to
make porting to Oberon-A easier.

* All oo2c options are described in the file backend/ansi-c/doc/oo2c.
The file also covers options and pragmas contributed by other modules
(like Error.Mod and Attributes.Mod).

* New optimization phase `guard propagation'.  Uses truth values
asserted by guards to replace the guard operand with a constant for the
range of the guard.  Example: `a & ~a' is transformed into FALSE.
This code transformation isn't very effective, but it is very cheap
since it uses data that is collected for undef var analysis and gate
reduction anyway.

* Bugs squashed:
 - propagation of gates out of loops was broken
 - side-effects of boolean shortcut expressions were not registered
   properly, and the data flow wasn't modeled correctly
 - reclaim instructions appeared out of nowhere at strange places
 - accesses to $mem were never recorded in the result list of the
   enter instruction, accesses to nonlocal variables just sometimes 
 - calling of procedure variables broke when generating the argument
   list 
 - in symbol files too many modules were marked as providing a type
   for the symbol file, even modules that weren't imported at all
 - dead code elimination removed enter instructions that are needed
   later on
 - bugs in reading of symbol file and accessing fields of type guarded
   record (thanks, Frank!)
 - constant propagation is still broken, I hope Juergen will fix it
   soon 

-- mva



ChangeLog 951221 upto 960108:

Mon Jan  8 19:13:35 1996  Michael van Acken  <acken@informatik.uni-kl.de>

	* frontend/SymbolTable.Mod (ReadStruct):
	Size and alignment of structured types was not
	calculated properly whenever the imported type was recursive,
	i.e. whenever it contained a pointer entry referencing itself.  The
	pointer type's size and alignment was used before it was calculated.

	* frontend/ParseExpr.Mod (Designator):
	Type guard on record variables broke the calculation of
	the variable's address.

Sun Jan  7 13:28:27 1996  Michael van Acken  <acken@informatik.uni-kl.de>

	* frontend/UndefVar.Mod (TracesToEmptyStore):
	Don't stop search at `reclaim' instruction,
	rather get the $store operand of the corresponding `collect' and
	continue search.
	Adapted to changed `GuardCond'.

Fri Jan  5 13:18:35 1996  Michael van Acken  <acken@informatik.uni-kl.de>

	* frontend/WriteGSA.Mod:
	New options to include addional information when writing GSA code to
	stdout.  See backend/ansi-c/doc/oo2c for the option list.

	* backend/ansi-c/oo2c.Mod:
	Added options --opt, --checks, --no-rtc.  See doc/oo2c for
	description.

	* frontend/Check.Mod: Initial revision

	* frontend/GuardCond.Mod:
	Extended module to include merge regions in its calculations.

	* optimizers/DeadCodeElimination.Mod (Eliminate):
	Never delete an "enter" instruction.

	* frontend/ParseStatm.Mod (PassNonlocalReferences, RegisterSideEffects):
	Fixed bug in paramter
	passing when calling procedure variables or type-bound procedures.

	Some bugfixes in connection with reclaim, reading from $mem, and
	writing to $mem.

	(Dominates): Moved to ParseExpr.

	(AssignToVar): Fixed assignment of loop gates.

	(CommitRepeatMerge): If the loop guard is a shortcut expression, then
	change the back-edge operand to the value that holds in the exit edge
	before passing the gate to `AssignToVar', afterwards change the
	operand to the value that holds for the back edge.

	* frontend/Opcode.Mod (RegionMerge):
	New.  Takes a region, gives the merge that contains
	gates associated with the region.

Thu Jan  4 21:47:20 1996  Michael van Acken  <acken@informatik.uni-kl.de>

	* frontend/ParseExpr.Mod (AccessVar):
	First access of $mem puts it in the enter instruction's
	result list.

	(CorrectCondGate): Turn gate from a merge-cond: into the valid gate
	operand if region is inside the TRUE/TRUE (for &) resp. FALSE/FALSE
	(for OR) path.

	(CondAnd, CondOr): Fixed propagation of gates out of the merge-cond:.

	Name cleanup: xyzGReg turned into xyzGreg.

	* frontend/GuardCond.Mod (RemoveDeadReferences):
	New.  Updates region implication
	resp. contradiction information after a dead code elimination, to
	avoid calling `Init' again.
	(Init): Makes use of gates with constant operands.

	* frontend/Data.Mod:
	New procedure ClearInfo, ClearInstrInfo, and ClearRegionInfo to clear
	`info' & `marker' fields.
	New functions ArgumentIndex, OperandIndex, NthOperand, NthArgument to
	access operands.
	(FindOperand, FindResult): Location attributes may be NIL.

Tue Jan  2 14:57:18 1996  Michael van Acken  <acken@informatik.uni-kl.de>

	* frontend/ParseDecl.Mod (Module):
	Returns now with valid region implication
	resp. contradiction info as provided by `GuardCond'.

Sun Dec 31 17:13:45 1995  Michael van Acken  <acken@informatik.uni-kl.de>

	* frontend/WriteGSA.Mod:
	Added code to mark instructions or operands in the printed GSA code.
	Set `opnd. pos' or `instr. pos' to `mark' and it will appear as
	position "[XXX]" in the written code.

Thu Dec 28 18:22:02 1995  Michael van Acken  <acken@informatik.uni-kl.de>

	* backend/ansi-c/oo2c.Mod: Added `make' code.

	* frontend/doc/SymbolFile.ebnf:
	Changed `ImportList' to include the magic number of all imported
	modules.

	* frontend/WriteGSA.Mod:
	Added code to write guarding conditions and implications
	resp. contradictions of regions.

	* frontend/TimeStamp.Mod: Initial revision

	* frontend/SymbolTable.Mod (WriteSymbolFile):
	Put the magic numbers of all imported modules into
	the symbol file.  Fixed bug in detection of modules that provide types
	for the symbol file.  `symbolFileChanged' is FALSE if there was no
	symbol file beforehand.

	* frontend/Scanner.Mod (Init, GetSym):
	Added incremental file reading to allow `Make' to read
	just the start of the file instead of reading the whole file.

	* frontend/RCS.Mod (Exists): Removed.  Replaced by `TimeStamp.Exists'.

	* frontend/Make.Mod, frontend/GuardPropagation.Mod: Initial revision

	* frontend/GuardCond.Mod:
	Completely rewrote module to gather more information.  Interface
	changed slightly.

	* frontend/doc/Make: Initial revision