HEAD bcf5d8a. Tags v3-step8.1, v3-step8.2 (+ v3-step8-summary).
Suite 104/104, build warning-free, tree clean, no remote
(git.txt untracked). SymTab compiles clean under V3; QbeGen is
close (two gaps below).
&→AND, ~→NOT, <>→#, octal NNC→CHR(n)); V3 accepts
FROM SYSTEM IMPORT TSIZE (built-ins win). docs/summary_step8.1.md.docs/blaise-phases-map.md.docs/summary_step8.2.md:
SetSymVal/GetSymVal,
QbeGen.Fold2; new test t_constfold).TYPE block (ForwardType +
Begin/EndTypeBlock; reuses the opaque-alias SetTarget path).; before a record END.Module.Type via QualType).MaxTypes 256→4096, MaxPend 64→256,
MaxMods 32→64 (256 descriptors was the biggest false wall).{ l n, z bytes } in ArrData
(per-element emission of the 1 MB sessBuf/nestBufs was the
apparent hang).Resolve moved before PushClassScope (ISO declaration order).SymTab.def + SymTab.mod: clean (verified with a stub
program; no .ssa expected — no module body).QbeGen.def + QbeGen.mod: 124 errors, down from 465:
85 invalid call, 38 undeclared, 1 invalid Statement.QbeGen.mod: Revive, LocAdd, ResClass, HApp,
LocFindUp, UpAddrOf, AllocLocal, FlushStrings, HeapSize,
ArrData. gm2 hoists; ISO needs declaration-before-use. Choice:
(a) add FORWARD decls / reorder the source, or (b) make V3
resolve later-declared module procedures."0"/"$"/"-" are typed
CHAR, so passing them to ARRAY OF CHAR formals
(Cpy(d, "0")) reports "invalid call". Needs a CHAR ↔ length-1
string coercion model.Then: cross-stage FileIO selection and bootstrap/fixpoint.sh
(Stage1 gm2 → Stage2 V3 → Stage3 V3, byte-identical .ssa, suite
green on all stages; rolling-bootstrap design per the Blaise map).
cd /home/eric/Projets/Projets-Modula2/MyWork/m2compiler-V3/compiler
./build.sh && ./run_tests.sh # expect 104/104, no gm2 warnings
# gap check:
./M2 ../stdlib/storage.def ../stdlib/storage.mod \
../runtime/syslib/SysShim.def ../runtime/syslib/SysShim.mod \
../runtime/syslib/FileIO.def ../runtime/syslib/FileIO.mod \
src/SymTab.def src/SymTab.mod src/QbeGen.def src/QbeGen.mod \
/tmp/gap.mod # /tmp/gap.mod: MODULE Gap; IMPORT SymTab; VAR ExitCode:INTEGER; BEGIN ExitCode:=0 END Gap.