[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gm2] latest CVS changes
From: |
Gaius Mulley |
Subject: |
[Gm2] latest CVS changes |
Date: |
Thu, 30 Jul 2009 10:21:35 +0100 |
User-agent: |
Gnus/5.11 (Gnus v5.11) Emacs/22.2 (gnu/linux) |
Hi,
here are the latest changes:
* gm2/bnf/m2-3.bnf: place the actions in the Variant rule
rather than in the FieldList rule.
* gm2/gm2/gm2-compiler/M2CaseList.def: ElseCase now has a
single parameter.
* gm2/gm2-compiler/M2CaseList.mod: add new elseField to
CaseDesc, record ElseCase parameter in elseField.
* gm2/gm2-compiler/M2GenGCC.mod: check that, s, is resolved
and known to the GCC backend before attempting to find
the size of, s. Fixed bugs in FoldSize, CodeSize.
* gm2/gm2-compiler/M2Quads.def: New procedure function
(ElseVariant).
* gm2/gm2-compiler/M2Quads.mod: fixed BuildTSizeFunction
so that it now works out the maximum size necessary to
contain the object. Implemented (ElseVariant).
* gm2/gm2/gm2-compiler/ppg.mod: fixed pretty printing of
'END ;' during the production of a recovery based parser.
* gm2/bnf/m2-2.bnf: place the actions in the Variant rule
rather than in the FieldList rule. Also introduce
VariantCaseLabelList and VariantCaseLabels rules.
* gm2/bnf/m2-3.bnf: place the actions in the Variant rule
rather than in the FieldList rule.
* gm2/gm2-compiler/M2Debug.mod: removed space.
* gm2/gm2-compiler/P2SymBuild.mod: introduced Assert.
* gm2/gm2-compiler/ppg.mod: fixed dates. Altered so that
code actions immediately inside {} or [] are emitted when
the next token is consumed. Thus allowing the Variant
rules in m2-2.bnf and m2-3.bnf to compile correctly.
* gm2/Make-lang.in: added Sets.mod and M2CaseList.mod
to the list of modules to be tested under gm2.paranoid.
* gm2/bnf/m2-2.bnf: corrected dates and added ability to
record record and variant fields into a list held in
M2Quads.mod.
* gm2/bnf/m2-3.bnf: now collects variant fields from the
the list held in M2Quads and associates the case labels
with each field to allow checking. Altered SilentCaseLabel
et al to VariantCaseLabel variety.
* gm2/bnf/m2-h.bnf: match m2-3.bnf.
* gm2/gm2-compiler/M2BasicBlock.mod: removed references to
M2Quads.Head.
* gm2/gm2-compiler/M2CaseList.def: PushCase altered to
take a single parameter. BeginCaseList also altered to
take a single parameter. New procedure function
(FindVariant)
and procedure (ElseCase).
* gm2/gm2-compiler/M2CaseList.mod: implement above changes
and new procedures.
* gm2/gm2-compiler/M2Code.mod: remove usage of M2Quads.Head.
Removed InitGM2M2. Alterations reflecting removal of
M2Quads.Head.
* gm2/gm2-compiler/M2GenGCC.def: removed InitGM2M2.
* gm2/gm2-compiler/M2GenGCC.mod: reimplemented SizeOp
to comply with ISO TSIZE.
* gm2/gm2-compiler/M2Optimize.mod: remove usage of
M2Quads.Head.
* gm2/gm2-compiler/M2Quads.def: no longer export Head.
New procedures (GetFirstQuad), (BeginVariant), (EndVariant),
(BeginVariantList), (EndVariantList), (AddRecordToList),
(AddVariantFieldToList), (AddVariantRange),
(AddVariantEquality).
Removed NoOfDynamicQuads, IncDynamicQuads.
BackPatchSubrangesAndOptParam no longer uses a parameter.
* gm2/gm2-compiler/M2Quads.mod: implement above changes.
CountQuads returns a variable rather than computes the
value.
This modification speeds up the compiler by 30% for large
source files. M2Quads is altered to support maintaining a
count
of quadruples in the variable. Fixed Assert bugs.
* gm2/gm2-compiler/M2Scope.mod: removed import of
M2Quads.Head
and use GetFirstQuad instead.
* gm2/gm2-compiler/P2SymBuild.mod:
StartBuildVariantFieldRecord
calls AddVariantFieldToList to record FieldSym necessary for
pass 3.
* gm2/gm2-compiler/M2CaseList.def: new file.
* gm2/gm2-compiler/M2CaseList.mod: new file.
* gm2/Make-lang.in: added M2CaseList to be built.
* gm2/bnf/m2-3.bnf: corrected dates and build case list
in M2CaseList.
* gm2/bnf/m2.bnf: tidied up formatting.
* gm2/gm2-compiler/M2MetaError.def: new procedures
(MetaError4), (MetaErrorT4), (MetaErrorsT4),
(MetaErrorString4), (MetaErrorStringT4).
* gm2/gm2-compiler/M2MetaError.mod: implement new
procedures.
* gm2/gm2-compiler/M2Quads.mod: build case lists.
* gm2/gm2-compiler/M2Range.def: new procedures
(InitCaseBounds), (OverlapsRange).
* gm2/gm2-compiler/M2Range.mod: implement new procedures.
* gm2/gm2-compiler/P2SymBuild.mod: removed space.
* gm2/init/gm2-gccinit: added M2CaseList.
* gm2/tools-src/gensum.py: corrected bug which allowed
error descriptions to be marked up as not tested
on different platforms.
in summary, CASE range checking at compile time has been implemented
(overlapping ranges and duplicate labels) both for variant records and
CASE statements. I've still to implement checking for all case ranges
in variant records with no ELSE clause. This should not be too
difficult to finish as all the sub components are in place. Also
ISO TSIZE is now finished,
regards,
Gaius
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gm2] latest CVS changes,
Gaius Mulley <=