gm2
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]