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