gm2
[Top][All Lists]
Advanced

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

[Gm2] first cut of multidimensional dynamic arrays


From: Gaius Mulley
Subject: [Gm2] first cut of multidimensional dynamic arrays
Date: Tue, 14 Jul 2009 22:50:43 +0100
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.2 (gnu/linux)

Hi,

I've just finished the implementation of multidimensional dynamic
arrays.  There are new regression tests in
gm2/iso/run/pass/unbounded*.mod.  Also modified are the pervasive
procedure functions HIGH and SIZE.  I assume that it is legal to pass
an ARRAY OF ARRAY OF CARDINAL actual parameter into an ARRAY OF BYTE
formal parameter and that it is legal to take SIZE(a) where, a, is
an unbounded parameter.

Anyhow here are the changelog entries:


    * gm2/gm2-compiler/M2Quads.mod:  AssignHighField
      modified so that ARRAY OF ARRAY OF type can be
      passed to ARRAY OF BYTE.
    * gm2/gm2-compiler/SymbolTable.mod:  modified so
      that GetDimension will skip over type and variable
      symbols.

    * gm2/Make-lang.in:  create O2, SO, SO_O2 directories
      for ISO libraries.  Use -ffunction-sections
      -fdata-sections when building libraries to aid
      building smaller binaries.
    * gm2/gccgm2.c:  New function (StringLength).
    * gm2/bnf/m2-2.bnf:  formal type altered so that
      multidimensional dynamic arrays are legal.
    * gm2/bnf/m2-3.bnf:  formal type altered so that
      multidimensional dynamic arrays are legal.
    * gm2/bnf/m2-h.bnf:  formal type altered so that
      multidimensional dynamic arrays are legal.
    * gm2/bnf/m2.bnf:  formal type altered so that
      multidimensional dynamic arrays are legal.
    * gm2/examples/hello/Makefile:  modified test
      build rules to build smaller binaries.
    * gm2/gm2-compiler/Indexing.def:  corrected dates.
    * gm2/gm2-compiler/Indexing.mod:  corrected dates.
    * gm2/gm2-compiler/M2Base.mod:  corrected spelling
      typo.  Modified parameter checking to allow
      multidimensional dynamic arrays.
    * gm2/gm2-compiler/M2GCCDeclare.mod:  walk
      multidimensional unbounded records.
    * gm2/gm2-compiler/M2GenGCC.def:  GetHighFromUnbounded
      now takes two parameters.
    * gm2/gm2-compiler/M2GenGCC.mod:  Added dimension parameter
      to FoldHigh, ResolveHigh, GetHighFromUnbounded.
      New procedures (BuildHighFromChar), (SkipToArray),
      (BuildHighFromArray), (BuildHighFromString).
    * gm2/gm2-compiler/M2MetaError.mod:  fixed number
      description to handle 11th, 12th and 13th.
    * gm2/gm2-compiler/M2Quads.def:  export PushTFA.
    * gm2/gm2-compiler/M2Quads.mod:  New procedures (PushTFAD),
      (LegalUnboundedParam), (calculateMultipicand),
      (AssignHighField),
      (AssignHighFields), (OperandD), (IncOperandD).
      Ensure that HIGH, SIZE do not generate quadruples unless
      they are accessing unbounded arrays.  Alter parameter
      passing rules to allow multidimensional dynamic arrays.
      Move BuildHighFromString, BuildHighFromChar into
      M2GenGCC.mod.
    * gm2/gm2-compiler/M2Range.def:  add dimension to array
      bounds testing.
    * gm2/gm2-compiler/M2Range.mod:  incorporate the dimension
      into the runtime error message.
    * gm2/gm2-compiler/P2SymBuild.mod:  add dimension to
      unbounded parameter declaration.
    * gm2/gm2-compiler/SymbolTable.def:  New procedures
      (IsOAFamily), (GetDimension), (MakeOAFamily), (GetOAFamily),
      (ForeachOAFamily).  Add dimension parameter to
      GetUnbounded, GetUnboundedHighOffset, MakeUnbounded.
    * gm2/gm2-compiler/SymbolTable.mod:  implement above.
      Introduce OAFamily entity so that only one unbounded type
      is created for each subtype.  Too many changes to
      fully document here.
    * gm2/gm2-compiler/gccgm2.def:  define procedure
      (StringLength).
    * gm2/gm2-libs/MathLib0.def:  removed long and short
      declarations of intrinsic functions.
    * gm2/gm2-libs/LegacyReal.def:  new file.
    * gm2/gm2-libs/LMathLib0.def:  new file.
    * gm2/gm2-libs/SMathLib0.def:  new file.

regards,
Gaius




reply via email to

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