2026-08-07  Release Manager

	* GCC 16.2.0 released.

2026-05-20  Jakub Jelinek  <jakub@redhat.com>

	Backported from master:
	2026-05-19  Jakub Jelinek  <jakub@redhat.com>

	PR other/125348
	* gm2-compiler/M2GenGCC.mod (PerformLastForIterator): Fix diagnostic
	typo, intemediate -> intermediate.

2026-04-30  Release Manager

	* GCC 16.1.0 released.

2026-04-21  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/120189
	* gm2-compiler/M2Options.mod (DefaultRuntimeModuleOverride): Add
	reference comment to libgm2/libm2iso/m2rts.h.

2026-04-15  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/124081
	* gm2-compiler/M2Quads.mod (SafeCheckWithField): New procedure.
	(BuildInclRange): Reimplement.
	(AddFieldTo): Ditto.
	(BuildComponentValue): Ditto.

2026-04-14  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/105408
	* Make-lang.in (GM2-COMP-BOOT-MODS): Remove duplicate NameKey.mod.
	* gm2-compiler/M2GenGCC.mod (import): Remove BuildAssignmentTree.
	Add CopyMemcpy.
	(IsSystemTypeBecomes): New procedure function.
	(CodeAssignment): Rewrite using CopyMemcpy and IsSystemTypeBecomes.
	* gm2-gcc/m2convert.cc (const_to_ISO_aggregate_type): Reverse
	array elements if BYTES_BIG_ENDIAN.
	* gm2-gcc/m2pp.cc (ps): New function.
	* gm2-gcc/m2pp.h (pf): Added comment.
	(pe): Ditto.
	(pt): Ditto.
	(ptl): Ditto.
	(pv): Ditto.
	(ptcl): Ditto.
	* gm2-gcc/m2statement.cc (copy_memcpy): Replace with ...
	(m2statement_CopyMemcpy): ... this.
	(CopyByField_Lower): Call m2statement_CopyMemcpy instead of copy_memcpy.
	(m2statement_BuildAssignmentTree): Tidied up comment.
	Add test for ARRAY_TYPE CONSTRUCTOR expr and use
	m2statement_CopyMemcpy.
	Return type changed to void.
	* gm2-gcc/m2statement.def (BuildAssignmentTree): Rewrite declaration.
	(CopyMemcpy): New procedure declaration.
	* gm2-gcc/m2statement.h (m2statement_BuildAssignmentTree): Replace
	return type with void.
	(m2statement_CopyMemcpy): New function declaration.
	* gm2-gcc/m2type.cc (m2type_ReverseArrayConstructorElements): New
	function.
	* gm2-gcc/m2type.def (ReverseArrayConstructorElements): New
	procedure function declaration.
	* gm2-gcc/m2type.h (m2type_ReverseArrayConstructorElements): New
	function declaration.

2026-04-10  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/124840
	* gm2-libs/BinDict.mod (Key): Return field key.

2026-04-07  Sandra Loosemore  <sloosemore@baylibre.com>

	PR other/124784
	* lang.opt.urls: Regenerated.

2026-01-25  Sandra Loosemore  <sloosemore@baylibre.com>

	* lang.opt.urls: Regenerated.

2026-01-21  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/123739
	* lang.opt: All option descriptions are now capitalized.
	(Wcase-enum): Warning tag added.
	(Wpedantic-param-names): Ditto.
	(Wpedantic-cast): Ditto.
	(Wverbose-unbounded): Ditto.
	(Wstyle): Ditto.
	(Wuninit-variable-checking): Ditto.
	(Wuninit-variable-checking=): Ditto.

2026-01-20  Jakub Jelinek  <jakub@redhat.com>

	* lang.opt (Wpedantic-param-names, Wpedantic-cast, Wverbose-unbounded,
	Wstyle, fauto-init, fbounds, fcase, fcpp, fcpp-end, fcpp-begin,
	fdebug-builtins, fd, fdebug-function-line-numbers, fdef=,
	fdump-system-exports, fextended-opaque, ffloatvalue,
	fgen-module-list=, findex, fiso, flocation=, fm2-debug-trace=,
	fm2-dump=, fm2-dump-decl=, fm2-dump-gimple=, fm2-dump-quad=,
	fm2-dump-filter=, fm2-file-offset-bits=, fm2-g, fm2-lower-case,
	fm2-pathname=, fm2-pathname-root=, fm2-pathname-rootI=, fm2-plugin,
	fm2-prefix=, fm2-statistics, fm2-strict-type, fm2-strict-type-reason,
	fm2-whole-program, fmod=, fnil, fpim, fpim2, fpim3, fpim4,
	fpositive-mod-floor-div, fpthread, fq, frange, freturn,
	fruntime-modules=, fscaffold-dynamic, fscaffold-c, fscaffold-c++,
	fscaffold-main, fscaffold-static, fshared, fsoft-check-all, fsources,
	fswig, fuse-list=, fwideset, fwholediv, fwholevalue, save-temps,
	save-temps=): Add dot at the end of the description.

2025-12-19  Jakub Jelinek  <jakub@redhat.com>

	* gm2-compiler/FilterError.mod: Fix comment typo, refering
	-> referring.
	* gm2-compiler/M2Batch.mod (LookupOuterModule): Likewise.

2025-12-17  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/23178
	* gm2-compiler/P3SymBuild.mod (CheckCanBeImported): Reimplement to
	use MetaError2 and provide spell hints if possible for unknown symbols.

2025-12-17  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/123151
	* gm2-libs/FIO.def (IsError): New procedure function.
	(IsActive): Rewrite the comment.
	(Exists): Ditto.
	(OpenToRead): Ditto.
	(OpenToWrite): Ditto.
	(Close): Add an optional BOOLEAN return result.
	* gm2-libs/FIO.mod (Close): Reimplement with an
	optional BOOLEAN return result.

2025-12-12  Pietro Monteiro  <pietro@sociotechnical.xyz>

	* lang.opt.urls: Regenerate.

2025-12-11  Jakub Jelinek  <jakub@redhat.com>

	* gm2-compiler/M2Check.mod (buildError4): Fix comment typo,
	paramters -> parameters.

2025-11-30  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>

	* lang.opt.urls: Regenerate.

2025-11-02  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/122499
	* gm2-compiler/M2StackSpell.mod (PushName): Add comment.
	(GetSpellHint): Rewrite.
	(GetExportedSpellHint): New procedure function.
	(GetScopeSpellHint): New procedure function.
	* gm2-compiler/P1Build.bnf (IdentScope): Rewrite.
	(PossiblyExportIdent): Ditto.
	* gm2-compiler/P1SymBuild.mod (BuildImportInnerModule): Add
	parameter to AddNameToImportList.
	* gm2-compiler/SymbolTable.def (GetUnknownOnImport): New
	procedure function.
	(GetUnknownDeclScope): Ditto.
	(AddNameToScope): Add tok parameter.
	(AddNameToImportList): Ditto.
	* gm2-compiler/SymbolTable.mod (SymUndefined): New field
	declScope.
	New field onImport.
	(MakeObject): Add tok parameter.
	(FillInUnknownFields): Initialize declScope.
	Initialize onImport.
	(GetUnknownOnImport): New procedure function.
	(GetUnknownDeclScope): Ditto.
	(AddNameToScope): Pass tok to MakeObject.
	(AddNameToImportList): Add tok parameter.
	Pass tok to MakeObject.
	(GetDeclaredSym): Add parameters to FillInUnknownFields.
	(RequestSym): Ditto.
	(FetchUnknownFromModule): Ditto.
	(FetchUnknownFromDefImp): Ditto.
	(FetchUnknownFrom): Ditto.

2025-10-30  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/122485
	* gm2-compiler/M2Comp.mod (Pass0CheckDef): Add spell check
	format specifier filtering on module names.
	* gm2-compiler/M2MetaError.mod (errorBlock): New field
	filterDef.
	(initErrorBlock): Initialize filterDef.
	(continuation): Add 'D' filter on definition module specifier.
	(SpellHint): Rewrite to check for filterDef and defimp symbols.
	(FilterOnDefinitionModule): New procedure.
	* gm2-compiler/M2Quads.mod (BuildSizeFunction): Rewrite to
	ensure variables are initialized.
	* gm2-compiler/M2StackSpell.def (GetDefModuleSpellHint): New
	procedure function.
	* gm2-compiler/M2StackSpell.mod (GetDefModuleSpellHint): New
	procedure function.
	(CandidatePushName): New procedure.
	(BuildHintStr): New procedure.
	(CheckForHintStr): Rewrite.

2025-10-24  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/122407
	* gm2-compiler/FilterError.def (Copyright): Use correct
	licence.
	* gm2-compiler/FilterError.mod (Copyright): Ditto.
	* gm2-compiler/M2Quads.mod (BuildNewProcedure): Rewrite.
	(BuildIncProcedure): Ditto.
	(BuildDecProcedure): Ditto.
	(BuildInclProcedure): Ditto.
	(BuildExclProcedure): Ditto.
	(BuildAbsFunction): Ditto.
	(BuildCapFunction): Ditto.
	(BuildChrFunction): Ditto.
	(BuildOrdFunction): Ditto.
	(BuildIntFunction): Ditto.
	(BuildMinFunction): Ditto.
	(BuildMaxFunction): Ditto.
	(BuildTruncFunction): Ditto.
	(BuildTBitSizeFunction): Ditto.
	(BuildTSizeFunction): Ditto.
	(BuildSizeFunction): Ditto.

2025-10-24  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/122407
	* Make-lang.in (GM2-LIBS-BOOT-DEFS): Add BinDict.def.
	(GM2-LIBS-BOOT-MODS): Add BinDict.mod.
	(GM2-COMP-BOOT-DEFS): Add FilterError.def.
	(GM2-COMP-BOOT-MODS): Add FilterError.mod.
	(GM2-LIBS-DEFS): Add BinDict.def.
	(GM2-LIBS-MODS): Add BinDict.mod.
	* gm2-compiler/M2Error.def (KillError): New procedure.
	* gm2-compiler/M2Error.mod (WriteFormat3): Reformat.
	(NewError): Rewrite and call AddToList.
	(AddToList): New procedure.
	(SubFromList): Ditto.
	(WipeReferences): Ditto.
	(KillError): Ditto.
	* gm2-compiler/M2LexBuf.mod (MakeVirtualTok): Return
	caret if all token positions are identical.
	* gm2-compiler/M2MetaError.mod (KillError): Import.
	(FilterError): Import.
	(FilterUnknown): New global.
	(initErrorBlock): Initialize symcause and token.
	(push): Capitalize comments.
	(pop): Copy symcause to toblock if discovered.
	(doError): Add parameter sym.
	(defaultError): Assign token if discovered.
	Pass NulSym to doError.
	(updateTokSym): New procedure.
	(chooseError): Call updateTokSym.
	(doErrorScopeModule): Pass sym to doError.
	(doErrorScopeForward): Ditto.
	(doErrorScopeMod): Ditto.
	(doErrorScopeFor): Ditto.
	(doErrorScopeDefinition): Ditto.
	(doErrorScopeDef): Ditto.
	(doErrorScopeProc): Ditto.
	(used): Pass sym[bol] to doError.
	(op): Assign symcause when encountering
	an error, warning or note.
	(MetaErrorStringT1): Rewrite.
	(MetaErrorStringT2): Ditto.
	(MetaErrorStringT3): Ditto.
	(MetaErrorStringT4): Ditto.
	(isUniqueError): New procedure function.
	(wrapErrors): Rewrite.
	(FilterUnknown): Initialize.
	* gm2-compiler/M2Quads.mod (BuildTSizeFunction): Add spell check
	hint specifier.
	* gm2-compiler/FilterError.def: New file.
	* gm2-compiler/FilterError.mod: New file.
	* gm2-libs/BinDict.def: New file.
	* gm2-libs/BinDict.mod: New file.

2025-10-19  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/122333
	* gm2-compiler/M2MetaError.mod (JoinSentances): Remove
	unused variable.
	* gm2-gcc/m2spellcheck.cc (m2spellcheck_InitCandidates): Rewrite.
	(KillCandidates): Deallocate auto_vec candidates_array.
	(candidates_array_vec_t): New declaration.

2025-10-13  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/122241
	* gm2-compiler/M2Quads.mod (BuildSizeFunction): Improve
	error message.
	(BuildTSizeFunction): Improve error message.
	* gm2-compiler/P3Build.bnf (ProgramModule): New variable
	namet.
	Pass namet to P3EndBuildProgModule.
	(ImplementationModule): New variable namet.
	Pass namet to P3EndBuildImpModule.
	(ModuleDeclaration): New variable namet.
	Pass namet to P3EndBuildInnerModule.
	(DefinitionModule): New variable namet.
	Pass namet to P3EndBuildDefModule.
	* gm2-compiler/P3SymBuild.def (P3EndBuildDefModule): New
	parameter tokno.
	(P3EndBuildImpModule): Ditto.
	(P3EndBuildProgModule): Ditto.
	(EndBuildInnerModule): Ditto.
	* gm2-compiler/P3SymBuild.mod (P3EndBuildDefModule): New
	parameter tokno.
	Pass tokno to CheckForUnknownInModule.
	(P3EndBuildImpModule): Ditto.
	(P3EndBuildProgModule): Ditto.
	(EndBuildInnerModule): Ditto.
	* gm2-compiler/PCBuild.bnf (ProgramModule): New variable
	namet.
	Pass namet to PCEndBuildProgModule.
	(ImplementationModule): New variable namet.
	Pass namet to PCEndBuildImpModule.
	(ModuleDeclaration): New variable namet.
	Pass namet to PCEndBuildInnerModule.
	(DefinitionModule): New variable namet.
	Pass namet to PCEndBuildDefModule.
	* gm2-compiler/PCSymBuild.def (PCEndBuildDefModule): New
	parameter tokno.
	(PCEndBuildImpModule): Ditto.
	(PCEndBuildProgModule):	Ditto.
	(PCEndBuildInnerModule): Ditto.
	* gm2-compiler/PCSymBuild.mod (PCEndBuildDefModule): New
	parameter tokno.
	Pass tokno to CheckForUnknownInModule.
	(PCEndBuildImpModule): Ditto.
	(PCEndBuildProgModule): Ditto.
	(PCEndBuildInnerModule): Ditto.
	* gm2-compiler/PHBuild.bnf (DefinitionModule): New variable
	namet.
	Pass namet to PHEndBuildDefModule.
	(ModuleDeclaration): New variable namet.
	Pass namet to PHEndBuildProgModule.
	(ImplementationModule): New variable namet.
	Pass namet to PHEndBuildImpModule.
	(ModuleDeclaration): New variable namet.
	Pass namet to PHEndBuildInnerModule.
	(DefinitionModule): New variable namet.
	Pass namet to PHEndBuildDefModule.
	* gm2-compiler/SymbolTable.def (CheckForUnknownInModule): Add
	tokno parameter.
	* gm2-compiler/SymbolTable.mod (CheckForUnknownInModule): Add
	tokno parameter.
	Pass tokno to CheckForUnknowns.
	(CheckForUnknowns): Reimplement.

2025-10-11  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/122241
	* Make-lang.in (GM2_C_OBJS): Add m2/gm2-gcc/m2spellcheck.o.
	(GM2-COMP-BOOT-DEFS): Add M2StackSpell.def.
	(GM2-COMP-BOOT-MODS): Add M2StackSpell.mod.
	(GM2-GCC-DEFS): Add m2spellcheck.def.
	(GM2-COMP-DEFS): Add M2StackSpell.def.
	(GM2-COMP-MODS): Add M2StackSpell.mod.
	* gm2-compiler/M2Base.mod (CheckCompatible): Add comments.
	* gm2-compiler/M2MetaError.mod (importHint): New field.
	(exportHint): Ditto.
	(withStackHint): Ditto.
	* gm2-compiler/M2Quads.mod (M2StackSpell): Import.
	(BuildProcedureCall): Add spell check specifier when
	encountering an unknown symbol.
	(CheckProcedureParameters): Ditto.
	(CheckParameter): Ditto.
	(DescribeType): Ditto.
	(GetQualidentImport): Ditto.
	(BuildValFunction): Ditto.
	(BuildCastFunction): Ditto.
	(BuildConvertFunction): Ditto.
	(ExpectingParameterType): Ditto.
	(ExpectingVariableType): Ditto.
	(BuildDesignatorPointer): Ditto.
	(BuildEmptySet): Ditto.
	(CheckVariableOrConstantOrProcedure): Ditto.
	* gm2-compiler/P2SymBuild.mod (BuildType): Add comment.
	* gm2-compiler/P3Build.bnf (SubDesignator): Reimplement.
	* gm2-compiler/P3SymBuild.mod (P3StartBuildDefModule): Add
	M2StackSpell.Push.
	(P3StartBuildProgModule): Ditto.
	(P3StartBuildImpModule): Ditto.
	(StartBuildInnerModule): Ditto.
	(StartBuildProcedure): Ditto.
	(P3EndBuildDefModule): Add M2StackSpell.Pop.
	(P3EndBuildImpModule): Ditto.
	(P3EndBuildProgModule): Ditto.
	(EndBuildInnerModule): Ditto.
	(EndBuildProcedure): Ditto.
	(BuildProcedureHeading): Ditto.
	(EndBuildForward): Ditto.
	* gm2-compiler/SymbolTable.mod (RequestSym): Reformat.
	* gm2-gcc/init.cc (_M2_M2StackSpell_init): New prototype.
	(init_PerCompilationInit): Call _M2_M2StackSpell_init.
	* gm2-libs/DynamicStrings.def (RemoveWhitePrefix): Correct
	comment.
	* gm2-libs/DynamicStrings.mod (RemoveWhitePrefix): Ditto.
	* gm2-compiler/M2StackSpell.def: New file.
	* gm2-compiler/M2StackSpell.mod: New file.
	* gm2-gcc/m2spellcheck.cc: New file.
	* gm2-gcc/m2spellcheck.def: New file.
	* gm2-gcc/m2spellcheck.h: New file.

2025-10-02  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/122009
	* gm2-compiler/M2GCCDeclare.mod (PrintKnown): Remove.
	* gm2-gcc/m2type.cc (m2type_BuildEnumerator): Add const modifier.
	* gm2-gcc/m2type.def (BuildEnumerator): Use ConstCharStar type.
	* gm2-gcc/m2type.h (m2type_BuildEnumerator): Add const modifier.
	* gm2-libs/M2WIDESET.mod (ShiftLeftByteBit): Rename variable to
	as toIdx.
	Rename variable from as fromIdx.
	(ShiftRightByteBit): Rename variable to as toIdx.
	Rename variable from as fromIdx.
	(RotateLeft): Rename variable to as toIdx.
	Rename variable from as fromIdx.
	(ArithShiftLeftBit): Rename set to setb.
	(ArithShiftRightBit): Rename set to setb.

2025-10-01  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/122009
	* pge-boot/Gldtoa.cc (ldtoa_ldtoa): Change int to bool for
	parameter sign.

2025-09-21  Mark Wielaard  <mark@klomp.org>

	* lang.opt.urls: Regenerate.

2025-09-20  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/122009
	* gm2-compiler/M2GenGCC.mod (FromM2WIDESETImport): Assign
	sym to NulSym.
	(CodeMakeAdr): Remove fourth parameter to BuildLogicalOrAddress.
	(FoldMakeAdr): Ditto.
	* gm2-compiler/M2Quads.mod (BuildAssignmentBoolean): Remove
	unused parameter checkTypes.
	(doBuildAssignment): Remove checkTypes parameter when calling
	BuildAssignmentBoolean.
	* gm2-gcc/m2expr.def (BuildLogicalOrAddress): Remove
	needconvert parameter.
	* gm2-gcc/m2statement.def (IfExprJump): Change label type
	to CharStar.
	* gm2-gcc/m2type.cc (m2type_BuildEnumerator): Remove const.
	* gm2-gcc/m2type.h (m2type_BuildEnumerator): Ditto.

2025-09-19  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/121856
	* Make-lang.in (GM2-LIBS-BOOT-DEFS): Add M2Diagnostic.def.
	Add Selective.def.
	(GM2-LIBS-BOOT-MODS): Add M2Diagnostic.mod.
	(GM2-LIBS-BOOT-C): Add Selective.c.
	(GM2-LIBS-DEFS): Add Selective.def.
	(GM2-LIBS-MODS): Add M2Diagnostic.mod.
	(MC-LIB-MODS): Add M2Diagnostic.mod.
	(m2/gm2-libs-boot/Selective.o): New rule.
	(BUILD-PGE-O): Add m2/pge-boot/GM2Diagnostic.o.
	Add m2/pge-boot/GM2Diagnostic.o.
	Add m2/pge-boot/GStringConvert.o.
	Add m2/pge-boot/Gdtoa.o.
	Add m2/pge-boot/Gldtoa.o.
	* Make-maintainer.in (PPG-LIB-DEFS): Add M2Diagnostic.def.
	Add StringConvert.def.
	(PPG-LIB-MODS): Add M2Diagnostic.mod.
	Add StringConvert.mod.
	(PGE-DEF): Add M2Diagnostic.def.
	(PGE-DEPS): Add GM2Diagnostic.cc.
	Add GM2Diagnostic.h.
	* gm2-compiler/FifoQueue.def (PutSetIntoFifoQueue): New
	procedure.
	(GetSetFromFifoQueue): New procedure function.
	* gm2-compiler/FifoQueue.mod (PutSetIntoFifoQueue): New
	procedure.
	(GetSetFromFifoQueue): New procedure function.
	* gm2-compiler/M2ALU.def (KillValue): New procedure.
	(PushSetTree): Rename parameter t to value.
	(ConstructSetConstant): Rewrite comment.
	* gm2-compiler/M2ALU.mod: Rewrite to use the new set type
	and introduce memory diagnostics.
	* gm2-compiler/M2Base.mod (InitBaseProcedures): Lookup M2WIDESET.
	* gm2-compiler/M2CaseList.mod (CheckCaseBoundsResolved): Change
	format specifier to allow the preceeding indefinite article to
	have a n concatenated providing the following string substitute
	begins with a vowel.
	(checkTypes): Ditto.
	* gm2-compiler/M2Check.mod (checkGenericUnboundedTyped): New
	procedure function.
	* gm2-compiler/M2Code.mod (OptimizationAnalysis): Replace with ...
	(ResourceAnalysis): ... this.
	* gm2-compiler/M2Comp.mod (PopulateResource): New procedure.
	(compile): Call PopulateResource.
	Call M2Diagnostic.Generate.
	* gm2-compiler/M2GCCDeclare.mod: Rewrite for new set type.
	* gm2-compiler/M2GenGCC.mod: Rewrite implementation for
	becomes, incl, excl, and, or, not, xor for the new set type.
	* gm2-compiler/M2MetaError.def: Extend comment documenting
	the v format specifier.
	* gm2-compiler/M2MetaError.mod (errorBlock): New field vowel.
	(initErrorBlock): Initialize field vowel.
	Reformat comments.
	(pop): Call checkVowel.
	(checkVowel): New procedure.
	(isVowel): New procedure function.
	(symDesc): Remove indefinite article.
	(op): Set vowel field in case clause.
	* gm2-compiler/M2Options.def (OptimizeSets): New global.
	(TimeReport): Ditto.
	(MemReport): Ditto.
	(SetMemReport): New procedure.
	(SetTimeReport): Ditto.
	(SetWideset): Ditto.
	(GetWideset): New procedure function.
	* gm2-compiler/M2Options.mod (SetOptimizing): Assign
	OptimizeSets depending upon the optimization level.
	(SetMemReport): New procedure.
	(SetTimeReport): Ditto.
	(SetWideset): Ditto.
	(GetWideset): New procedure function.
	(OptimizeSets): Initialize to FALSE.
	(TimeReport): Ditto.
	(MemReport): Ditto.
	* gm2-compiler/M2Quads.mod (M2Diagnostic): Import.
	(QuadsMemDiag): New global variable.
	(NewQuad): Bump QuadsMemDiag whenever a quad is allocated.
	(BuildAssignmentBoolean): New procedure.
	(doBuildAssignment): Ditto.
	Add v to the format specifier.
	(CheckCompatibleWithBecomes): Add v to the format specifier.
	(CheckProcTypeAndProcedure): Ditto.
	(BuildAddAdrFunction): Ditto.
	(BuildSubAdrFunction): Ditto.
	(BuildDifAdrFunction): Ditto.
	(BuildDesignatorArrayStaticDynamic): Ditto.
	(BuildDesignatorPointer): Ditto.
	(CheckVariableOrConstantOrProcedure): Ditto.
	(Init): Initialize QuadsMemDiag.
	* gm2-compiler/M2Range.mod (CodeTypeAssign): Add v to the
	format specifier.
	* gm2-compiler/M2Scaffold.mod (DeclareScaffoldFunctions):
	Generate more precise warning note.
	* gm2-compiler/M2SymInit.mod (PrintSymInit): Add record
	field warning.
	* gm2-compiler/M2System.mod
	(IsPseudoSystemFunctionConstExpression): Add TBitSize.
	* gm2-compiler/NameKey.mod: Add MemDiagnostic code
	commented out.
	* gm2-compiler/P1SymBuild.mod (StartBuildProcedure):
	Add v format specifier.
	* gm2-compiler/P2SymBuild.mod (BuildFieldRecord): Ditto.
	* gm2-compiler/P3Build.bnf (SetType): Reformat.
	* gm2-compiler/PathName.def (Copyright): Added.
	* gm2-compiler/PathName.mod: Remove blank line.
	* gm2-compiler/SymbolConversion.mod (gdbhook): New procedure.
	(BreakWhenSymBooked): Ditto.
	(CheckBook): Ditto.
	(Init): Rewrite.
	* gm2-compiler/SymbolTable.def (GetSetArray): New procedure.
	(PutSetArray): Ditto.
	(MakeSetArray): New procedure function.
	(PutSetInWord): New procedure.
	(GetSetInWord): New procedure function.
	(IsConstVar): Ditto.
	* gm2-compiler/SymbolTable.mod (SymSet): SetInWord new field.
	SetArray new field.
	Align new field.
	(SymMemDiag): New global variable.
	(Init): Initialize SymMemDiag.
	(IsConstVar): New procedure function.
	(IsVariableSSA): Replace InternalError with Return FALSE.
	(GetNthParamOrdered): Reimplement.
	(GetNthParamAnyClosest): Ditto.
	(GetOuterModuleScope): Ditto.
	(MakeSet): Ditto.
	(PutSetArray): New procedure.
	(GetSetArray): New procedure function.
	(MakeSetArray): Ditto.
	(PutSetInWord): New procedure.
	(GetSetInWord): New procedure function.
	* gm2-gcc/init.cc (_M2_M2Diagnostic_init): Define
	prototype.
	(init_FrontEndInit):Call _M2_M2Diagnostic_init.
	* gm2-gcc/m2block.cc (m2block_GetTotalConstants): New function.
	(m2block_GetGlobalTypes): Ditto.
	* gm2-gcc/m2block.def (GetTotalConstants): New procedure function.
	(GetGlobalTypes): New procedure function.
	* gm2-gcc/m2block.h (m2block_GetTotalConstants): New function
	prototype.
	(m2block_GetGlobalTypes): Ditto.
	* gm2-gcc/m2convert.cc (converting_ISO_generic): Reimplement.
	(m2convert_ToPIMByte): New function.
	* gm2-gcc/m2convert.def (ToLoc): New procedure function.
	(ToPIMByte): Ditto.
	* gm2-gcc/m2convert.h (m2convert_ToPIMByte): Ditto.
	* gm2-gcc/m2decl.h (m2decl_RememberVariables): Ditto.
	* gm2-gcc/m2expr.cc (m2expr_BuildLogicalShift): Reimplement.
	(m2expr_BuildLRotate): Ditto.
	(m2expr_BuildLRLn): Ditto.
	(m2expr_BuildLRRn): Ditto.
	(m2expr_BuildLogicalRotate): Ditto.
	(buildUnboundedArrayOf): Ditto.
	(BuildIfBitInSetLower): New function.
	(m2expr_BuildBinarySetDo): Reimplement.
	(m2expr_BuildIfInSet): Ditto.
	(m2expr_BuildIfNotInSet): New function.
	(m2expr_Build4LogicalOr): Reimplement.
	(m2expr_BuildSetNegate): Ditto.
	(m2expr_BuildLogicalOrAddress): Ditto.
	(m2expr_BuildLogicalOr): Ditto.
	(m2expr_BuildLogicalAnd): Ditto.
	(m2expr_BuildSymmetricDifference): Ditto.
	(m2expr_BuildLogicalDifference): Ditto.
	(boolean_enum_to_unsigned): Ditto.
	(m2expr_BuildIsSuperset): Ditto.
	(m2expr_BuildIsNotSuperset): Ditto.
	(m2expr_BuildIsSubset): Ditto.
	(m2expr_BuildIfBitInSetJump): Ditto.
	(m2expr_BuildIfNotConstInVar): Ditto.
	(m2expr_BuildIfVarInVar): Ditto.
	(m2expr_BuildIfNotVarInVar): Remove.
	(m2expr_BuildIfConstInVar): Remove.
	(m2expr_BuildForeachWordInSetDoIfExpr): Ditto.
	(m2expr_BuildBinaryForeachWordDo): Ditto.
	(m2expr_BuildIfInRangeGoto): Reimplement.
	(m2expr_BuildIfNotInRangeGoto): Ditto.
	(m2expr_SetAndNarrow): Ditto.
	(m2expr_GetBitsetZero): New function.
	(m2expr_GetRValue): Ditto.
	* gm2-gcc/m2expr.def (GetBitsetZero): New function.
	(BuildSetNegate): Ditto.
	(BuildLogicalOr): Reimplement.
	(BuildLogicalAnd): Ditto.
	(BuildSymmetricDifference): Ditto.
	(BuildLogicalDifference): Ditto.
	(BuildIfInSet): New procedure function.
	(BuildIfNotInSet): Ditto.
	(BuildEqualTo): Reimplement.
	(BuildNotEqualTo): Ditto.
	(BuildBinaryForeachWordDo): Remove.
	(BuildBinarySetDo): Ditto.
	(GetRValue): New procedure function.
	* gm2-gcc/m2expr.h (m2expr_BuildBinaryForeachWordDo): Remove.
	(m2expr_BuildForeachWordInSetDoIfExpr): Ditto.
	(m2expr_BuildIfNotVarInVar): Ditto.
	(m2expr_BuildIfVarInVar): Ditto.
	(m2expr_BuildIfNotConstInVar): Ditto.
	(m2expr_BuildIfConstInVar): Ditto.
	(m2expr_BuildLogicalDifference): Reimplement.
	(m2expr_BuildSymmetricDifference): Ditto.
	(m2expr_BuildLogicalAnd): Ditto.
	(m2expr_BuildLogicalOr): Ditto.
	(m2expr_BuildLogicalOrAddress): Ditto.
	(m2expr_BuildSetNegate): Ditto.
	(m2expr_GetBitsetZero): New function.
	(m2expr_GetRValue): Ditto.
	(m2expr_BuildIfInSet): Ditto.
	(m2expr_BuildIfNotInSet): Ditto.
	* gm2-gcc/m2options.h (M2Options_SetTimeReport): New function.
	(M2Options_SetMemReport): Ditto.
	(M2Options_SetWideset): Ditto.
	(M2Options_GetWideset): Ditto.
	* gm2-gcc/m2pp.cc (m2pp_shiftrotate_expr): New function.
	(m2pp_simple_expression): Ditto.
	* gm2-gcc/m2statement.cc (m2statement_BuildStartFunctionCode):
	Tidyup comments.
	(m2statement_BuildEndFunctionCode): Ditto.
	(m2statement_BuildPushFunctionContext): Ditto.
	(copy_array): Ditto.
	(CopyByField_Lower): Ditto.
	(m2statement_BuildGoto): Ditto.
	(m2statement_DeclareLabel): Ditto.
	(m2statement_BuildParam): Ditto.
	(nCount): Ditto.
	(m2statement_BuildProcedureCallTree): Ditto.
	(m2statement_BuildBuiltinCallTree): Ditto.
	(m2statement_BuildFunctValue): Ditto.
	(m2statement_BuildCall2): Ditto.
	(m2statement_BuildCall3): Ditto.
	(m2statement_BuildFunctionCallTree): Ditto.
	(m2statement_SetLastFunction): Ditto.
	(m2statement_SetParamList): Ditto.
	(m2statement_GetLastFunction): Ditto.
	(m2statement_GetParamList): Ditto.
	(m2statement_GetCurrentFunction): Ditto.
	(m2statement_GetParamTree): Ditto.
	(m2statement_BuildTryFinally): Ditto.
	(m2statement_BuildCleanUp): Ditto.
	(m2statement_BuildUnaryForeachWordDo): Remove.
	(m2statement_BuildExcludeVarConst): Ditto.
	(m2statement_BuildExcludeVarVar): Ditto.
	(m2statement_BuildIncludeVarConst): Ditto.
	(m2statement_BuildIncludeVarVar): Ditto.
	(m2statement_DoJump): Remove.
	(m2statement_IfExprJump): New function.
	(m2statement_IfBitInSetJump): Ditto.
	* gm2-gcc/m2statement.def (DoJump): Remove.
	(IfExprJump): New procedure function.
	(BuildUnaryForeachWordDo): Remove.
	(IfBitInSetJump): New procedure function.
	* gm2-gcc/m2statement.h (m2statement_BuildForeachWordDo): Remove.
	(m2statement_DoJump): Ditto.
	(m2statement_IfExprJump): New function.
	(m2statement_IfBitInSetJump): Ditto.
	* gm2-gcc/m2treelib.cc (m2treelib_do_jump_if_bit): Reimplement.
	(nCount): Replace with ...
	(m2treelib_nCount): ... this.
	(m2treelib_DoCall): Reimplement.
	(m2treelib_get_rvalue): Remove.
	* gm2-gcc/m2treelib.def (get_rvalue): Remove.
	(nCount): New procedure function.
	* gm2-gcc/m2treelib.h (m2treelib_get_rvalue): Remove.
	(m2treelib_nCount): New function.
	* gm2-gcc/m2type.cc (constructor_elements): Change type to vec.
	(m2type_BuildEndArrayType): Reformat.
	(build_m2_type_node_by_array): Ditto.
	(m2type_GetBooleanEnumList): New procedure function.
	(m2type_BuildEnumerator): Add const to char *.
	(m2type_BuildSetConstructorElement): Reimplement.
	(m2type_BuildEndSetConstructor): Ditto.
	(build_record_constructor): New function.
	(m2type_BuildEndRecordConstructor): Reimplement.
	(m2type_BuildRecordConstructorElement): Ditto.
	(m2type_BuildStartArrayConstructor): Reimplement.
	(m2type_BuildEndArrayConstructor): Remove blank lines.
	* gm2-gcc/m2type.def (BuildSetConstructorElement): Reimplement.
	(BuildEndArrayType): Reformat.
	(GetBooleanEnumList): New function.
	* gm2-gcc/m2type.h (m2type_BuildEnumerator): Add const to char *.
	(m2type_BuildSetConstructorElement): Reimplement.
	(m2type_GetBooleanEnumList): New procedure function.
	* gm2-lang.cc (OPT_fmem_report): New option.
	(OPT_ftime_report): Ditto.
	(OPT_fwideset): Ditto.
	* gm2-libs-coroutines/SYSTEM.def (ShiftVal): Remove.
	(ShiftLeft): Ditto.
	(ShiftRight): Ditto.
	(RotateVal): Ditto.
	(RotateLeft): Ditto.
	(RotateRight): Ditto.
	* gm2-libs-coroutines/SYSTEM.mod: Reimplement.
	* gm2-libs-iso/SYSTEM.def (ShiftVal): Remove.
	(ShiftLeft): Ditto.
	(ShiftRight): Ditto.
	(RotateVal): Ditto.
	(RotateLeft): Ditto.
	(RotateRight): Ditto.
	* gm2-libs-iso/SYSTEM.mod: Reimplement.
	* gm2-libs/SYSTEM.def (ShiftVal): Remove.
	(ShiftLeft): Ditto.
	(ShiftRight): Ditto.
	(RotateVal): Ditto.
	(RotateLeft): Ditto.
	(RotateRight): Ditto.
	* gm2-libs/SYSTEM.mod: Reimplement.
	* gm2-libs/SysStorage.def (DEALLOCATE): Improve comment.
	* gm2-libs/SysStorage.mod: Improve comment.
	* init/ppginit (M2Diagnostic): Add.
	(StringConvert): Add.
	* lang.opt (fmem-report): Add access to c.opt.
	(ftime-report): Ditto.
	(fwideset): New option.
	* pge-boot/main.cc (_M2_M2Diagnostic_init): New function.
	(_M2_M2Diagnostic_fini): Ditto.
	(_M2_StringConvert_init): Ditto.
	(_M2_StringConvert_fini): Ditto.
	(main): Call _M2_M2Diagnostic_init.
	Call _M2_StringConvert_init.
	Call _M2_M2Diagnostic_fini.
	Call _M2_StringConvert_fini.
	* tools-src/makeSystem: Add -gdb option.
	* gm2-libs/M2Diagnostic.def: New file.
	* gm2-libs/M2Diagnostic.mod: New file.
	* gm2-libs/M2WIDESET.def: New file.
	* gm2-libs/M2WIDESET.mod: New file.
	* mc-boot/GM2Diagnostic.cc: New file.
	* mc-boot/GM2Diagnostic.h: New file.
	* pge-boot/GM2Diagnostic.cc: New file.
	* pge-boot/GM2Diagnostic.h: New file.
	* pge-boot/GSelective.h: New file.
	* pge-boot/GStringConvert.cc: New file.

2025-08-29  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/121709
	* gm2-lang.cc (concat_component): New function.
	(find_cpp_entry): Ditto.
	(lookup_cpp_default): Ditto.
	(add_default_include_paths): Rewrite.
	(m2_pathname_root): Remove.

2025-08-28  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/121629
	* gm2-compiler/PathName.mod: Add copyright notice.
	* gm2-lang.cc (named_path): Add field lib_root.
	(push_back_Ipath): Set lib_root false.
	(push_back_lib_root): New function.
	(get_dir_sep_size): Ditto.
	(add_path_component): Ditto.
	(add_one_import_path): Ditto.
	(add_non_dialect_specific_path): Ditto.
	(foreach_lib_gen_import_path): Ditto.
	(get_module_source_dir): Ditto.
	(add_default_include_paths): Ditto.
	(assign_flibs): Ditto.
	(m2_pathname_root): Ditto.
	(add_m2_import_paths): Remove function.
	(gm2_langhook_post_options): Call assign_flibs.
	Check np.lib_root and call foreach_lib_gen_import_path.
	Replace call to add_m2_import_paths with a call to
	add_default_include_paths.
	(gm2_langhook_handle_option): Add case OPT_fm2_pathname_rootI_.
	* gm2spec.cc (named_path): Add field lib_root.
	(push_back_Ipath): Set lib_root false.
	(push_back_lib_root): New function.
	(add_m2_I_path): Add OPT_fm2_pathname_rootI_ option
	if np.lib_root.
	(lang_specific_driver): Add case OPT_fm2_pathname_root_.
	* lang.opt (fm2-pathname-root=): New option.
	(fm2-pathname-rootI=): Ditto.

2025-08-01  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/121354
	* gm2-compiler/M2GenGCC.mod (FoldHigh): Rewrite.
	(IsUnboundedArray): New procedure function.

2025-07-31  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/121314
	* mc-boot/GFormatStrings.cc (PerformFormatString): Rebuilt.
	* mc-boot/GM2EXCEPTION.cc (M2EXCEPTION_M2Exception): Rebuilt.
	* mc-boot/GSFIO.cc (SFIO_GetFileName): Rebuilt.
	* mc-boot/GSFIO.h (SFIO_GetFileName): Rebuilt.
	* mc-boot/Gdecl.cc: Rebuilt.
	* mc-boot/GmcFileName.h: Rebuilt.
	* mc/decl.mod (getStringChar): New procedure function.
	(getStringContents): Call getStringChar.
	(addQuotes): New procedure function.
	(foldBinary): Call addQuotes to add delimiting quotes
	to the new string.

2025-07-29  Gaius Mulley  <gaiusmod2@gmail.com>

	* gm2-compiler/M2GenGCC.mod (FoldBecomes): Remove all
	local variables.
	(CodeIndrX): Remove length.
	Remove newstr.
	* gm2-compiler/M2Range.mod (FoldTypeIndrX): Remove desType.

2025-07-29  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/121289
	* gm2-compiler/M2Students.def (CheckVariableAgainstKeyword): New
	parameter tok.
	* gm2-compiler/M2Students.mod (CheckVariableAgainstKeyword): New
	parameter tok.
	Pass tok to PerformVariableKeywordCheck.
	(PerformVariableKeywordCheck): New parameter tok.
	Pass tok to MetaErrorStringT0.
	* gm2-compiler/P2SymBuild.mod (BuildVariable): Pass tok to
	CheckVariableAgainstKeyword.
	* gm2-libs-iso/LowLong.mod (except): Replace with ...
	(exceptSrc): ... this.
	* gm2-libs-iso/LowReal.mod (except): Replace with ...
	(exceptSrc): ... this.
	* gm2-libs-iso/LowShort.mod (except): Replace with ...
	(exceptSrc): ... this.
	* gm2-libs-iso/Processes.mod (Wait): Replace from with fromCor.
	* gm2-libs-iso/RndFile.mod (EndPos): Replace end with endP.
	* gm2-libs/SCmdArgs.mod (GetArg): Replace start with startPos.
	Replace end with endPos.
	(NArg): Replace start with startPos.
	Replace end with endPos.

2025-07-25  David Malcolm  <dmalcolm@redhat.com>

	* gm2-gcc/m2linemap.cc: Update usage of "diagnostic_info" to
	explicitly refer to "diagnostics::diagnostic_info".
	* gm2-gcc/rtegraph.cc: Likewise.

2025-07-25  David Malcolm  <dmalcolm@redhat.com>

	* gm2-gcc/m2linemap.cc: Update for diagnostic_t becoming
	enum class diagnostics::kind.
	* gm2-gcc/rtegraph.cc: Likewise.

2025-07-25  David Malcolm  <dmalcolm@redhat.com>

	* gm2-gcc/m2color.cc: Update for move of diagnostic-color.h to
	diagnostics/color.h.

2025-07-23  Gaius Mulley  <gaiusmod2@gmail.com>

	* gm2-libs/M2EXCEPTION.mod (M2Exception): Add return
	exException in case Raise completes.

2025-07-23  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/121164
	* gm2-compiler/P1SymBuild.mod: Remove PutProcTypeParam.
	Remove PutProcTypeParam.
	(CheckFileName): Remove.
	(P1EndBuildDefinitionModule): Correct spelling.
	(P1EndBuildImplementationModule): Ditto.
	(P1EndBuildProgramModule): Ditto.
	(EndBuildInnerModule): Ditto.
	* gm2-compiler/P2SymBuild.mod (P2EndBuildDefModule): Correct
	spelling.
	(P2EndBuildImplementationModule): Ditto.
	(P2EndBuildProgramModule): Ditto.
	(EndBuildInnerModule): Ditto.
	(CheckFormalParameterSection): Ditto.
	* gm2-compiler/P3SymBuild.mod (P3EndBuildDefModule): Ditto.
	* gm2-compiler/PCSymBuild.mod (PCEndBuildDefModule): Ditto.
	(fixupProcedureType): Pass tok to PutProcTypeVarParam.
	Pass tok to PutProcTypeParam.
	* gm2-compiler/SymbolTable.def (PutProcTypeParam): Add tok
	parameter.
	(PutProcTypeVarParam): Ditto.
	* gm2-compiler/SymbolTable.mod (SymParam): At change type to
	CARDINAL.
	New field FullTok.
	New field Scope.
	(SymVarParam): At change type to CARDINAL.
	New field FullTok.
	New field Scope.
	(GetVarDeclTok): Check ShadowVar for NulSym and return At.
	(PutParam): Initialize FullTok.
	Initialize At.
	Initialize Scope.
	(PutVarParam): Initialize FullTok.
	Assign At.
	Initialize Scope.
	(AddProcedureProcTypeParam): Add tok parameter.
	(GetScope): Add ParamSym and VarParamSym clause.
	(PutProcTypeVarParam): Add tok parameter.
	Initialize At.
	Initialize FullTok.
	(GetDeclaredDefinition): Clause ParamSym return At.
	Clause VarParamSym return At.
	(GetDeclaredModule): Ditto.
	(PutDeclaredDefinition): Remove clause ParamSym.
	Remove clause VarParamSym.
	(PutDeclaredModule): Remove clause ParamSym.
	Remove clause VarParamSym.

2025-07-18  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/121164
	* gm2-libs/ARRAYOFCHAR.mod (Write): Rename 2nd parameter
	name a to str.

2025-07-01  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/120912
	* gm2-libs-iso/IOChanUtils.def (GetFile): New procedure function.
	* gm2-libs-iso/IOChanUtils.mod (GetFile): New procedure function.

2025-06-29  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/117203
	* gm2-libs-log/FileSystem.def (GetFileName): New
	procedure function.
	(WriteString): New procedure.
	* gm2-libs-log/FileSystem.mod (GetFileName): New
	procedure function.
	(WriteString): New procedure.
	* gm2-libs/SFIO.def (GetFileName): New procedure function.
	* gm2-libs/SFIO.mod (GetFileName): New procedure function.
	* gm2-libs-iso/IOChanUtils.def: New file.
	* gm2-libs-iso/IOChanUtils.mod: New file.

2025-06-22  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/120731
	* gm2-libs-log/Strings.def (Delete): Rewrite comment.
	* gm2-libs-log/Strings.mod (Pos): Rewrite.
	(PosLower): New procedure function.

2025-06-21  Gaius Mulley  <gaiusmod2@gmail.com>

	* gm2-compiler/M2GCCDeclare.mod (StartDeclareModuleScopeSeparate):
	Reformat statement comments.
	(StartDeclareModuleScopeWholeProgram): Ditto.

2025-06-17  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/120673
	* gm2-compiler/M2GCCDeclare.mod (ErrorDepList): New
	global variable set containing every errant dependency symbol.
	(mystop): Remove.
	(EmitCircularDependancyError): Replace with ...
	(EmitCircularDependencyError): ... this.
	(AssertAllTypesDeclared): Rewrite.
