[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Gm2] bit field access and other bug fixes
From: |
Fischlin Andreas |
Subject: |
Re: [Gm2] bit field access and other bug fixes |
Date: |
Sun, 29 Apr 2012 19:57:39 +0000 |
Dear Gaius,
Sounds all very good. Thanks Gaius!
Regards,
Andreas
ETH Zurich
Prof. Dr. Andreas Fischlin
Systems Ecology - Institute of Integrative Biology
CHN E 21.1
Universitaetstrasse 16
8092 Zurich
SWITZERLAND
address@hidden<mailto:address@hidden>
www.sysecol.ethz.ch<http://www.sysecol.ethz.ch>
+41 44 633-6090 phone
+41 44 633-1136 fax
+41 79 595-4050 mobile
Make it as simple as possible, but distrust it!
________________________________________________________________________
On 29/04/2012, at 14:16 , Gaius Mulley wrote:
Hello,
finally the bit field access code is complete and also I've fixed
the multiple error messages bug. The bit field access was more
complex than I originally thought and required more changes to
front, middle and back end of the gm2 (front end). However
what is really fun is that gm2 will produce better code when
accessing record fields. This in turn means that unbounded
string parameter passing should be more efficient. I've yet to
run performance tests, it could be quite interesting. For certain
gm2 passes better quality trees to the gcc back end - which should
bode well when we migrate to newer gcc releases - and can exploit
back end optimization.
I plan to formally release gm2 soon (ish) gm2-1.1 based on 4.1.2.
Thereafter (aside from bug fixes) I'll concentrate all efforts onto
forward porting gm2 onto 4.6.x (partially complete).
I'd welcome any testing reports about the current cvs of gm2, before
releasing 1.1. Also I'd like to migrate from the __ATTRIBUTE__
alignment syntax to the newer Modula-2 ISO syntax <* bytealignment(expr)
*>. Maybe this should be deprecated gracefully,
So in summary: bitfield access is implemented, packed records (packed
sets) are implemented and multiple identical errors have been removed.
An example of its use can be found here:
http://www.nongnu.org/gm2/packed.html
regards,
Gaius
I see:
# of expected passes 9776
# of unexpected failures 12
on x86_64 Debian. The 12 failures are intrange.mod and rangesupport.mod
which test a feature which has not been implemented yet.
Anyhow here is the changelog:
* gm2/gm2-compiler/M2Range.mod: (firstmention) New field
in Range. (FirstMention) New procedure function.
FoldTypeAssign, FoldTypeParam, FoldTypeExpr, CodeTypeAssign,
CodeTypeParam, CodeTypeExpr call FirstMention before
emitting an error message. Multiple related messages have
been chained. This fixes a bug report by Scott Iverson
(duplicate error messages).
* gm2/Make-lang.in: tidied up formatting and added a commented
out short cut used during development.
* gm2/gccgm2.c: tidied up formatting of gccgm2_GetSizeOf.
gccgm2_GetSizeOf now detects COMPONENT_REF.
gccgm2_GetSizeOfInBits now detects COMPONENT_REF.
* gm2/gm2.texi: added new example of how bit field packing
can be achieved.
* gm2/bnf/m2-3.bnf: removed call to dummy
CheckOuterScopeProcedureVariable procedure.
* gm2/bnf/m2-h.bnf: removed import
CheckOuterScopeProcedureVariable.
* gm2/gm2-compiler/M2GCCDeclare.mod:
(WalkComponentDependants)
New procedure. (IsValueDeendants) New procedure function.
* gm2/gm2-compiler/M2GenGCC.mod: (FoldRecordField,
CodeRecordField)
New procedures. CodeUnbounded simplified.
* gm2/gm2-compiler/M2Quads.def: Removed
CheckOuterScopeProcedureVariable.
* gm2/gm2-compiler/M2Quads.mod: many changes to allow
record accesses to be achieved via the GCC Tree
COMPONENT_REF. To this end we use a front end symbol
component which mirrors the eventual GCC Tree.
BuildAdrFunction altered to obtain the address of
Components and the WITH statement has been rewritten.
(CheckOuterScopeProcedureVariable) removed.
New quadruple operator RecordFieldOp introduced to
generate components. All unbounded accesses use the
new component record mechanism.
* gm2/gm2-compiler/SymbolTable.def: (MakeComponentRecord),
(MakeComponentRef), (IsComponent) New procedure functions.
* gm2/gm2-compiler/SymbolTable.mod: (MakeComponentRecord),
(MakeComponentRef), (IsComponent), (GetNthFromComponent),
(buildTemporary). MakeTemporary use buildTemporary.
New procedure functions.
_______________________________________________
gm2 mailing list
address@hidden<mailto:address@hidden>
https://lists.nongnu.org/mailman/listinfo/gm2