[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
ooc-960620
Hi.
This update fixes some small bugs in the front-end and contains an
almost complete ANSI-C back-end. The `almost' refers to the fact,
that recursion in connection with nested procedures aren't handled
properly yet. This problem appears since the C back-end implements
accesses to nonlocal (but not global) variables by adding additional
parameters to nonlocal procedures, instead of maintaining static links
of its own (like an assembler back-end would do it). Otherwise legal
C code is generated.
I hope that I'll have an oo2c executable build through oo2c by the end
of next week. Your guess is as good as mine, whether this executable
will do what it's supposed to do or not.
As soon as the `stupid' C back-end manages to build correct code, I'll
fix the generated run-time checks and start working on a smarter
allocator (i.e., hierarchical graph coloring).
-- mva
I forgot to add the ChangeLog to the last update anouncement, so here
is a full month's worth of changes (May 20 to June 20):
Wed Jun 19 17:12:46 1996 Michael van Acken <acken@informatik.uni-kl.de>
* frontend/SymbolFile.Mod (ReadStruct):
Restore `objIsParameter' flag when reading the formal
parameter of a procedure type.
* frontend/SymbolFile.Mod (ReadObject):
Set `moduleId' for every object read from symbol file.
* frontend/Attributes.Mod (TypeTag): Fixed type tag for pointer types.
* frontend/ParseExpr.Mod (Designator): Fixed type tag for super call.
Mon Jun 17 14:42:32 1996 Michael van Acken <acken@informatik.uni-kl.de>
* frontend/ParseStatm.Mod (PredefCodeGen):
When parsing a call of SYSTEM.VAL, then set the
result's address to the one of the operand.
Sat Jun 15 08:33:46 1996 Michael van Acken <acken@informatik.uni-kl.de>
* frontend/SymbolFile.Mod (ReadStruct):
Restore `Struct.len' (extension level) when reading a
record type.
* frontend/Data.Mod:
Clarification: `Struct.len' holds the extension level of a record
type.
Wed Jun 12 06:10:45 1996 Michael van Acken <acken@informatik.uni-kl.de>
* frontend/Data.Mod (FindGlobalRegion):
Extendend domain to include operands, results,
instructions, and regions.
Tue Jun 11 16:13:49 1996 Juergen Zimmermann <jnzimmer@informatik.uni-kl.de>
* optimizers/ConstPropagation.Mod:
Fixed bug with `BitTest' being in the wrong case block.
Fixed wrong evaluation of SYSTEM.LSH and SYSTEM.ROT on constants with
data types different from LONGINT.
Sun Jun 9 17:33:44 1996 Michael van Acken <acken@informatik.uni-kl.de>
* backend/ansi-c/doc/Errors.ext, backend/ansi-c/WriteGSAvC.Mod, backend/ansi-c/GenStatm.Mod, backend/ansi-c/Classify.Mod, backend/ansi-c/Allocate.Mod:
Initial revision
Thu Jun 6 03:52:03 1996 Michael van Acken <acken@informatik.uni-kl.de>
* doc/Literature:
Added two papers on graph coloring, [Bri92] and [BCT94].
Sun Jun 2 15:07:27 1996 Michael van Acken <acken@informatik.uni-kl.de>
* frontend/ParseStatm.Mod (RegisterSideEffects):
Changed location attributes of results of a
call instruction that signal a modified variable parameter. The
location was the formal parameter. Now it's the variable that was
passed to the parameter, or NIL if it was a complex designator (like a
record field or array element).
(RemoveCollectOperands): Discarded. All local variables appear as
operands of a collect instruction.
* frontend/SymbolFile.Mod (ReadObjList):
Fixed module ids of record elements and formal
parameters read from symbol file.
Sat Jun 1 12:40:38 1996 Michael van Acken <acken@informatik.uni-kl.de>
* frontend/Attributes.Mod, frontend/ParseStatm.Mod, frontend/ParseExpr.Mod, frontend/Opcode.Mod:
Inserted variable address as second parameter into access-local,
access-nonlocal, and their update counterparts. This way all access
resp. update instructions take their variable's address as argument.
Instruction `zero' got an address parameter, too.
Fri May 31 12:19:39 1996 Michael van Acken <acken@informatik.uni-kl.de>
* backend/ansi-c/doc/ExternalC:
Added module flag INIT_FCT. Minor adjustments to syntax of module
flags.
* backend/demo/ood.Mod: Adjusted call of `Error.EmitErrors'.
* frontend/Error.Mod (EmitErrors):
Added parameter to suppress all warnings. This is used
by `Make' to avoid generation of warnings while scanning just the
import list of a module.
Thu May 30 14:00:34 1996 Michael van Acken <acken@informatik.uni-kl.de>
* frontend/ParseStatm.Mod, frontend/Opcode.Mod:
Added value of $mem as last argument to trap instructions. It's only
present if $mem is defined at the place of the trap.
Sat May 25 16:53:01 1996 Michael van Acken <acken@informatik.uni-kl.de>
* frontend/Check.Mod:
Added procedure to check restrictions of update instructions for
structured variables.
* frontend/ParseStatm.Mod (AssignToVar):
Don't create update-local instruction if the new value
is result of a call, reclaim, or gate instruction.
Fri May 24 18:49:35 1996 Michael van Acken <acken@informatik.uni-kl.de>
* frontend/ParseStatm.Mod:
Fixed result types of update and reclaim instructions. Don't insert
update-local for results of reclaim.
Thu May 23 15:37:43 1996 Michael van Acken <acken@informatik.uni-kl.de>
* frontend/Data.Mod:
New constant `minInstrFlag'. Holds the index of the smallest set
element in `Instruction.flags' that isn't used by the front-end.
Tue May 21 19:54:07 1996 Michael van Acken <acken@informatik.uni-kl.de>
* backend/demo/CodeGen.Mod (CreateModule):
Extended spec to distinguish between actual
translation of a module and integration of the module into the make
data structure (without translation, since its generated files are up to
date).
Mon May 20 20:12:50 1996 Michael van Acken <acken@informatik.uni-kl.de>
* frontend/WriteGSA.Mod, frontend/ParseStatm.Mod, frontend/ParseExpr.Mod, frontend/Opcode.Mod:
Added instructions access-local and update-local. They are inserted
when refering to structured (i.e. record, array, or complex) local
variables or value parameters. See file frontend/doc/AccessLocal for
details.