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

Update for `ooc' available



Hello,
an update for the `ooc' sources is available at
"ftp://cognac.informatik.uni-kl.de/pub/ooc/".

Lots of bugs are fixes, tons of them are certainly left ;-)


  Juergen


Here's part of the ChangeLog since Mon, Nov. 27th

Mon Dec 18 15:02:23 1995  Juergen Zimmermann  <jnzimmer@informatik.uni-kl.de>

	* optimizers/Worklist.Mod:
	New procedures `AddUsingInstrUnique' and `AddInstrUnique'.

	Changed parameter type of `UsingHook' to reflect the fact that all
	Uses could be used by instructions, not only other instructions.

	* optimizers/ConstPropagation.Mod:
	Forgot to initialize all results of predefined & SYSTEM procedures as
	`bottom'.

	Only the first result was set to `bottom', all other results were not
	classified at all. Now, all instructions with more than one result are
	classified as `bottom', and all using instructions - for all results -
	are added to the worklist.

	Regions classified as `FALSE' are now stripped off the corresponding
	merges.

	If only one region is left at the merge, this region will always be
	executed, so the corresponding instructions are moved up one region.

Sun Dec 17 12:20:44 1995  Michael van Acken  <acken@informatik.uni-kl.de>

	* frontend/doc/Differences: Initial revision

	* frontend/UndefVar.Mod (CheckVars):
	Ignore structured (ie, record or array) variables when
	searching for undefined vars.

	* frontend/ParseDecl.Mod (Module, ProcDecl):
	Don't look for unresolved forward references or unused
	objects if an error was found beforehand.

Fri Dec 15 14:34:25 1995  Michael van Acken  <acken@informatik.uni-kl.de>

	* frontend/Opcode.Mod (Commutative):
	New.  Predicate to test opcode for "a op b = b op a".
	I hope I got the name right :).

	* frontend/Opcode.Mod:
	Fixed typo in div/mod spec: x div y = ENTIER (x / y).

	Changed names of set operators to inter(section),
	sym(mmetrical)diff(erence), and union (was and, xor, or).

Fri Dec 15 13:04:11 1995  Juergen Zimmermann  <jnzimmer@informatik.uni-kl.de>

	* optimizers/AlgebraicTransformation.Mod: First version

Thu Dec 14 11:56:28 1995  Michael van Acken  <acken@informatik.uni-kl.de>

	* frontend/ParseDecl.Mod (ProcDecl, Module):
	Copy propagation and dead code elimintation are
	done right after a global region is completed.  The idea is to make
	the bulk of the dead code collectable by the gc as soon as possible.
	Setting `removeDeadCode' to FALSE will suppress cp and dce.

	* backend/ansi-c/oo2c.Mod (PreSymbolFile):
	Moved copy propagation and dead code elimination into
	the front-end (ie, into ParseDecl).

	(DeleteGRegList): New.  Called after the completion of every module to
	get rid of references to GSA code, allowing the gc to collect the
	intermediate code data structure.

Thu Dec 14 10:01:53 1995  Juergen Zimmermann  <jnzimmer@informatik.uni-kl.de>

	* optimizers/AlgebraicTransformation.Mod: Initial revision

Thu Dec 14 09:39:59 1995  Michael van Acken  <acken@informatik.uni-kl.de>

	* frontend/Data.Mod (Delete):
	Modified procedure to allow global region as input.

Wed Dec 13 10:04:42 1995  Michael van Acken  <acken@informatik.uni-kl.de>

	* frontend/GuardCond.Mod (CopyGuardInfo):
	Oops, forgot to copy `negate` field.

	(BuildPreConditions): Added case guards to pre-conditions.

	* frontend/Data.Mod (ReplaceUses):
	Assert that operand `of' isn't an Object or a Struct.

Tue Dec 12 19:53:42 1995  Michael van Acken  <acken@informatik.uni-kl.de>

	* frontend/Data.Mod:
	New flag `objIsTwisted' for detection of formal parameters types that
	were changed by WITH.

	* frontend/ParseStatm.Mod (WithStatement, ProcedureCall):
	Warning 411 is only printed if a
	formal parameter is modified by WITH and the procedure is called
	recursively.

	* frontend/GateReduction.Mod (TraverseGates):
	Replace boolean gates with constant input by the
	corresponding--possibly negated--guard.

	* frontend/GuardCond.Mod (TraceValue):
	Extended procedure to recognize boolean gates with
	constants as operands and trace them to the original guards.

Tue Dec 12 14:19:05 1995  Juergen Zimmermann  <jnzimmer@informatik.uni-kl.de>

	* optimizers/ConstPropagation.Mod:
	It seems this is a stable version of the `constant propagation'.
	I found no problem yet, `ooc' is able to compile itself with
	optimization on.

Sun Dec 10 14:33:48 1995  Michael van Acken  <acken@informatik.uni-kl.de>

	* backend/ansi-c/oo2c.Mod:
	Added `experimental' option -E, for now wired to `GateReduction.Reduce'.

Sat Dec  9 19:12:15 1995  Michael van Acken  <acken@informatik.uni-kl.de>

	* frontend/GuardCond.Mod (OperandCondition):
	New.  Takes an operand, returns the conditions
	that hold at the point where the operand is used.

	* frontend/UndefVar.Mod (CheckVars):
	Don't create (and erase afterward) a guard against $trap
	around the exit instruction, since it is already guarded this way by
	Attr.GuardExit.

	* frontend/ParseStatm.Mod (FunctionTrap):
	Removed, its job is now done by Attributes.GuardExit.

	* frontend/Data.Mod:
	Added serperate data type `GlobalRegion' for greg regions.  It holds
	references to the greg's exit and enter instructions.

	* frontend/GateReduction.Mod: Initial revision

	* frontend/Attributes.Mod (GuardExit):
	New.  Creates guards against $trap and ~$return that are
	put around a greg's exit instruction.

	* frontend/ParseExpr.Mod (EvalInstr):
	Remove `mayTrap' flag from instruction that was
	successfully folded into a constant.  This allows dead code elmination
	to discard the original instruction.

	(StringConvertible): Removed obsolete region parameter.

Fri Dec  8 21:34:29 1995  Michael van Acken  <acken@informatik.uni-kl.de>

	* backend/ansi-c/oo2c.Mod:
	Added flags to enable output of intermediate code (--gsa), output of
	instruction statistics (--stats), and to enable additional
	optimization (-O).  Right now the latter only runs a constant
	propagation.

	* frontend/Statistics.Mod: Initial revision

	* frontend/ParseStatm.Mod (AddUpdate):
	Oops.  Forgot to add last operand of `update-heap'
	instruction.

	* frontend/ParseExpr.Mod (Designator):
	Defer creation of `adr' instructions for variables until
	the address is requested.  Access item's address via `Item.Adr()'.

	(EvalDyadicOp): Comparison between array of char and empty string
	constant was sometimes assigned a wrong subclass.

	* frontend/Data.Mod (GetXXXConst):
	Split list of constants in multiple lists indexed by
	the constant's type.  Should speed up constant creation somewhat.

	* frontend/Attributes.Mod (Item.Adr):
	New type-bound procedure to access an item's address.
	Used to defer creation of `adr' instruction until they are truly
	needed.

Tue Dec  5 16:42:41 1995  Juergen Zimmermann  <jnzimmer@informatik.uni-kl.de>

	* optimizers/ConstPropagation.Mod:
	Regions (marked with `bottom' or so) were only inspected, if their
	new lattice value has changed from the initial value.
	This caused some problems when a lattice value became `bottom'. The
	instructions were not inspected during constant propagation, but
	`ReplaceByConstants' would inspect them and discover not initialized
	lattice fields.

Mon Dec  4 17:34:18 1995  Michael van Acken  <acken@informatik.uni-kl.de>

	* frontend/Attributes.Mod (CleanupGReg):
	Also clear the current value field of nonlocal objects
	that appear as results in the greg's enter instruction.

Fri Dec  1 12:09:38 1995  Juergen Zimmermann  <jnzimmer@informatik.uni-kl.de>

	* optimizers/ValueNumbering.Mod: Initial revision

	* optimizers/ConstPropagation.Mod:
	Fixed bug with constant folding of `classBit(Set|Range|Clear)', type of
	instruction was falsely determined from first operand instead of the
	instruction itself.

Thu Nov 30 21:13:22 1995  Michael van Acken  <acken@informatik.uni-kl.de>

	* frontend/doc/SymbolFile.ebnf:
	The list of contributing imported modules may contain modules that do
	not appear in the IMPORT list.  This happens whenever a type alias is
	used from an actually imported module that refers to another, not
	imported, module.

	* frontend/UndefVar.Mod (ReadsEmptyStore):
	Assume that all references to variables appearing
	beyond the formal parameters in a procedure's enter instruction
	correspond to existing read instructions.

	* frontend/SymbolTable.Mod (WarnUnused):
	Disabled warnings of unused formal parameters.

	(WriteTree): Don't write the objects representing imported modules
	into the symbol file.

	(WriteUsedImports): Don't forget to write modules into the sym file
	that provide types for it due to type aliasing, but don't appear in
	the current module's import list.