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

ooc-960726



Hi.

It's been 5 weeks since the last update, but no update doesn't mean no
progress, too.  

The ANSI-C back-end is getting better all the time.  The latest module
addition `frontend/SideEffects.Mod' attacks the problem of oo2c's
translation of recursive nested procedures, and at the same time
improves the code quality of recursive procedures in GSA code.

I've managed to build an oo2c executable using oo2c (and gcc, of
course).  Running the exec file fails somewhere after parsing the
config file and the command line, which means that type-bound
procedures work :-).  My current task is to get the `oo2c generated'
oo2c to behave just like the `o2c generated' one does.

-- mva

------------------------------------------------------------------------

ChangeLog Jun 20 to Jul 26:

Fri Jul 26 14:01:37 1996  Michael van Acken  <acken@informatik.uni-kl.de>

	* frontend/SymbolFile.Mod, frontend/doc/SymbolFile.ebnf:
	Add index of type-bound procedure to symbol file.

Fri Jul 26 10:06:42 1996  Michael van Acken  <acken@informatik.uni-kl.de>

	* frontend/Opcode.Mod:
	Don't mark delete-store instruction as disabled, but as potenial trap.
	This way it's never considered to be dead code.

	(GetFormalParam): Completely rewritten.  Did the previous
	implementation ever work?

	* frontend/Attributes.Mod (TypeTag):
	Fixed dynamic tag for variables that have only a static
	type.

	(CleanupGreg): Don't mark delete-store instruction as disabled, but as
	potenial trap.  This way it's never considered to be dead code.

	* frontend/ParseStatm.Mod (PassParameter): Fixed location variable.

	(ProcedureCall): Fixed address of called procedure.  The previous code
	didn't work for procedure variables and type-bound procedures.

	* frontend/ParseExpr.Mod (Designator):
	Fixed type tag used for a type-bound procedure call.

Thu Jul 25 12:24:39 1996  Michael van Acken  <acken@informatik.uni-kl.de>

	* frontend/ParseDecl.Mod (ReplaceLocations):
	Don't forget to replace the formal parameter
	operand, too.

	* frontend/Opcode.Mod (opcode call):
	Added description of operand locations.

	* frontend/ParseStatm.Mod (PassParameter):
	If actual parameter is local variable, and formal
	parameter is VAR, then put the local variable in the value operand's
	location attribute.

	* frontend/SideEffects.Mod (PropagateSideEffects):
	Fixed reconstruction of designator if it is a
	local variable that has been assigned a constant value.

	* frontend/SymbolFile.Mod:
	Added code to free unused constant objects.  Saves a lot of memory for
	long make runs (approx. 135K for a `make all' on the current ood
	sources).

Tue Jul 23 18:59:22 1996  Michael van Acken  <acken@informatik.uni-kl.de>

	* frontend/ParseDecl.Mod, backend/demo/CodeGen.Mod, frontend/SymbolTable.Mod, frontend/Data.Mod:
	Added code to free unused constant objects.  Saves a lot of memory for
	long make runs (approx. 135K for a `make all' on the current ood
	sources).

	* backend/demo/CodeGen.Mod: Integrated module SideEffects.

	* frontend/Attributes.Mod (GetNonParamOpnd):
	New.  Takes a call instruction and retrieves the
	first operand that doesn't correspond to one of the formal parameters
	of the called procedure (but rather to a nonlocal variable access).

	(TracesToEmptyStore): Now handles procedure calls setting $store.

	* frontend/SideEffects.Mod: Initial revision

	* frontend/ParseExpr.Mod (TypeTest):
	Use the type given in the guard for the type field of the
	created type-guard instruction, instead of the variable's type.

	* frontend/WriteGSA.Mod (MW):
	New debug proc.  Mark operand or instruction `n' and write the
	global region it belongs to.

	* frontend/ParseStatm.Mod (RegisterSideEffects):
	Make sure that the $mem result of a procedure
	call appears at the same position as the operand of the exit
	instruction (if exit exists).

Mon Jul 22 08:42:12 1996  Michael van Acken  <acken@informatik.uni-kl.de>

	* frontend/ParseDecl.Mod (ProcDecl):
	Remove all references to formal parameters of forward
	declaration as soon as the parameters of the procedure definition are
	known.

Sat Jul 20 15:18:46 1996  Michael van Acken  <acken@informatik.uni-kl.de>

	* frontend/Opcode.Mod:
	Extension of call instruction: If the called procedure accesses
	(updates) a heap object without reading from (writing to) $mem, then
	the current (new) value is added as final argument (result).

Thu Jul 18 21:45:07 1996  Michael van Acken  <acken@informatik.uni-kl.de>

	* frontend/ParseStatm.Mod (CheckVariableParam):
	Variable of type SYSTEM.SET8 is compatible to
	variable parameter of type SYSTEM.BYTE

	* backend/ansi-c/StdTypes.Mod, backend/demo/StdTypes.Mod (LegalReal):
	Take rounding into account when deciding if a given
	LONGREAL number represents a valid REAL value.

Sat Jun 29 20:34:34 1996  Michael van Acken  <acken@informatik.uni-kl.de>

	* frontend/Data.Mod:
	Correction: field `ObjectDesc.greg' is of type `GlobalRegion'

Thu Jun 27 12:45:23 1996  Michael van Acken  <acken@informatik.uni-kl.de>

	* frontend/Data.Mod (MoveInFront):
	New.  Moves a instructions in front of another in a
	region's instruction list.

Fri Jun 21 21:14:17 1996  Michael van Acken  <acken@informatik.uni-kl.de>

	* frontend/ParseExpr.Mod (TypeTest):
	Fixed 4th operand (extension level) of type-test and
	type-guard instructions.

	* frontend/Data.Mod, frontend/Opcode.Mod, frontend/Attributes.Mod:
	Fixed comments regarding pragma variables controlling runtime checks.
	Fixed placement of runtime checks.

	* frontend/Scanner.Mod, backend/demo/Config.Mod, backend/demo/StdTypes.Mod:
	Moved procedure `NotifyPragmaAssign' from Config into StdTypes to
	avoid a cyclic import if this procedures calls module `Error' (the
	ANSI-C back-end does this).