2025-05-23  Release Manager

	* GCC 14.3.0 released.

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

	Backported from master:
	2025-02-11  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/118761
	* gm2spec.cc (lang_specific_driver): Add case clauses for
	OPT__help, OPT__help_ set in_added_libraries to 0 and early
	return.

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

	Backported from master:
	2025-02-04  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/115112
	* gm2-compiler/M2Quads.mod (BuildPseudoProcedureCall): Pass
	tokno to each build procedure.
	(BuildThrowProcedure): New parameter functok.
	(BuildIncProcedure): New parameter proctok.
	Pass proctok on the quad stack during every push.
	(BuildDecProcedure): Ditto.
	(BuildInclProcedure): New parameter proctok.
	(BuildExclProcedure): New parameter proctok.

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

	Backported from master:
	2025-02-01  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/118703
	* gm2-gcc/m2builtins.cc (define_builtin_gcc): New function.
	(m2builtins_init): Call define_builtin_gcc.
	* gm2-libs/Builtins.def (clz): New procedure function.
	(clzll): Ditto.
	(ctz): Ditto.
	(ctzll): Ditto.
	* gm2-libs/Builtins.mod (clz): New procedure function.
	(clzll): Ditto.
	(ctz): Ditto.
	(ctzll): Ditto.
	* gm2-libs/cbuiltin.def (clz): New procedure function.
	(clzll): Ditto.
	(ctz): Ditto.
	(ctzll): Ditto.

2025-01-09  Jakub Jelinek  <jakub@redhat.com>

	Backported from master:
	2024-11-09  Jakub Jelinek  <jakub@redhat.com>

	* Make-lang.in (m2_OBJS): Add $(BUILD-LIBS-BOOT),
	$(BUILD-COMPILER-BOOT) and $(MC_LIBS).

2024-12-14  Gaius Mulley  <gaiusmod2@gmail.com>

	Backported from master:
	2024-12-10  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/117120
	* gm2-compiler/M2CaseList.mod (CaseBoundsResolved): Rewrite.
	(ConvertNulStr2NulChar): New procedure function.
	(NulStr2NulChar): Ditto.
	(GetCaseExpression): Ditto.
	(OverlappingCaseBound): Rewrite.
	* gm2-compiler/M2GCCDeclare.mod (CheckResolveSubrange): Allow
	'' to be used as the subrange low limit.
	* gm2-compiler/M2GenGCC.mod (FoldConvert): Rewrite.
	(PopKindTree): Ditto.
	(BuildHighFromString): Reformat.
	* gm2-compiler/SymbolTable.mod (PushConstString): Add test for
	length 0 and PushChar (nul).

2024-12-13  Gaius Mulley  <gaiusmod2@gmail.com>

	Backported from master:
	2024-12-09  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/115328
	* gm2-compiler/M2Options.def (GetEnableForward): New procedure
	function.
	(SetEnableForward): New procedure.
	* gm2-compiler/M2Options.mod (GetEnableForward): New procedure
	function.
	(SetEnableForward): New procedure.
	(EnableForward): New boolean.
	* gm2-compiler/P1SymBuild.mod (EndBuildForward): Check
	GetEnableForward and generate an error message if false.

2024-12-07  Gaius Mulley  <gaiusmod2@gmail.com>

	Backported from master:
	2024-12-07  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/117948
	* gm2-compiler/P1Build.bnf (ForwardDeclaration): Pass token
	position of the FORWARD keyword to EndBuildForward.
	* gm2-compiler/P1SymBuild.def (EndBuildForward): New parameter
	forwardPos.
	* gm2-compiler/P1SymBuild.mod (EndBuildForward): Issue an error at
	forwardPos if the Iso boolean is false.

2024-12-06  Gaius Mulley  <gaiusmod2@gmail.com>

	Backported from master:
	2024-12-05  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/117904
	* gm2-compiler/M2GenGCC.mod (PerformLastForIterator): Add call to
	BuildConvert when increment is > 0.

2024-12-04  Gaius Mulley  <gaiusmod2@gmail.com>

	Backported from master:
	2024-11-18  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/117660
	* gm2-compiler/P2Build.bnf (ArrayType): Update tok with the
	composite token produced during array type declaration.
	* gm2-compiler/P2SymBuild.mod (EndBuildArray): Create the
	combinedtok and store it into the symbol table.
	Also ensure combinedtok is pushed to the quad stack.
	(BuildFieldArray): Preserve typetok.
	* gm2-compiler/SymbolTable.def (PutArray): Rename parameters.
	* gm2-compiler/SymbolTable.mod (PutArray): Rename parameters.

2024-12-04  Gaius Mulley  <gaiusmod2@gmail.com>

	Backported from master:
	2024-11-18  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/117371
	* gm2-compiler/M2GenGCC.mod (PerformLastForIterator):
	Add check for zero step value and issue an error message.

2024-12-04  Gaius Mulley  <gaiusmod2@gmail.com>

	Backported from master:
	2024-11-15  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/117371
	* gm2-compiler/M2Base.mod (MixMetaTypes): Add parameter TRUE to
	MetaErrorDecl.
	(IsUserType): Test against ZType.
	(MixTypesDecl): Test for ZType.
	* gm2-compiler/M2GenGCC.mod (ErrorMessageDecl): Add parameter TRUE to
	MetaErrorDecl.
	(CodeLastForIterator): New procedure.
	(FoldLastForIterator): Ditto.
	(PerformLastForIterator): Ditto.
	(CodeStatement): Add case clause for LastForIteratorOp.
	(ErrorMessageDecl): Add iserror parameter.
	Call MetaErrorDecl with iserror parameter.
	(checkIncorrectMeta): Call MetaErrorDecl with TRUE parameter.
	(CheckBinaryExpressionTypes): Ditto.
	(CheckElementSetTypes): Ditto.
	* gm2-compiler/M2LexBuf.def (MakeVirtualTok): Update comment
	detailing the fall back when UnknownTokenNo is encountered.
	(MakeVirtual2Tok): Ditto.
	* gm2-compiler/M2LexBuf.mod (MakeVirtualTok): Check against
	UnknownTokenNo.
	(MakeVirtual2Tok): Ditto.
	* gm2-compiler/M2MetaError.def (MetaErrorDecl): Add error parameter.
	* gm2-compiler/M2MetaError.mod (MetaErrorDecl): Add error
	parameter.
	Issue warning if error is FALSE.
	* gm2-compiler/M2Quads.def (QuadOperator): Add LastForIteratorOp.
	* gm2-compiler/M2Quads.mod (AddQuadInformation): New case clause
	LastForIteratorOp.
	(CheckAddTuple2Read): New procedure.
	(BuildForLoopToRangeCheck): Remove.
	(ForLoopLastIteratorVariable): Ditto.
	(ForLoopLastIteratorConstant): Ditto.
	(ForLoopLastIterator): Reimplement.
	(BuildForToByDo): Remove ByType from call to ForLoopLastIterator.
	(WriteQuad): New case clause LastForIteratorOp.
	(WriteOperator): Ditto.
	* gm2-compiler/M2Students.def
	(CheckForVariableThatLooksLikeKeyword): Replace with ...
	(CheckVariableAgainstKeyword): ... this.
	* gm2-compiler/M2Students.mod
	(CheckForVariableThatLooksLikeKeyword): Replace with ...
	(CheckVariableAgainstKeyword): ... this.
	* gm2-compiler/M2SymInit.mod (CheckLastForIterator): New
	procedure.
	(CheckReadBeforeInitQuad): New case clause to call
	CheckLastForIterator.
	* gm2-compiler/P2SymBuild.mod: Replace
	CheckForVariableThatLooksLikeKeyword with CheckVariableAgainstKeyword.

2024-12-03  Gaius Mulley  <gaiusmod2@gmail.com>

	Backported from master:
	2024-11-15  Gaius Mulley  <gaiusmod2@gmail.com>

	* Make-lang.in (m2/gm2-compiler-boot/P0SyntaxCheck.c):
	New rule.
	(m2/gm2-compiler-boot/P0SyntaxCheck.o): Ditto.
	(m2/gm2-compiler-boot/P1Build.c): Ditto.
	(m2/gm2-compiler-boot/P1Build.o): Ditto.
	(m2/gm2-compiler-boot/P2Build.c): Ditto.
	(m2/gm2-compiler-boot/P2Build.o): Ditto.
	(m2/gm2-compiler-boot/P3Build.c): Ditto.
	(m2/gm2-compiler-boot/P3Build.o): Ditto.
	(m2/gm2-compiler-boot/PCBuild.c): Ditto.
	(m2/gm2-compiler-boot/PCBuild.o): Ditto.
	(m2/gm2-compiler-boot/PHBuild.c): Ditto.
	(m2/gm2-compiler-boot/PHBuild.o): Ditto.

2024-12-03  Gaius Mulley  <gaiusmod2@gmail.com>

	Backported from master:
	2024-11-11  Gaius Mulley  <gaiusmod2@gmail.com>

	* gm2-compiler/M2Base.def (MixTypes): Rename parameters.
	(MixTypesDecl): New procedure function.
	* gm2-compiler/M2Base.mod (BuildOrdFunctions): Add
	DefProcedure parameter to PutFunction.
	(BuildTruncFunctions): Ditto.
	(BuildFloatFunctions): Ditto.
	(BuildIntFunctions): Ditto.
	(InitBaseFunctions): Ditto.
	(MixTypesDecl): New procedure function.
	(MixTypes): Reimplement.
	* gm2-compiler/M2Check.mod (checkProcType): Replace
	NoOfParam with NoOfParamAny.
	Replace IsVarParam with IsVarParamAny.
	(checkProcedureProcType): Ditto.
	* gm2-compiler/M2Error.def: Remove unnecessary export qualified list.
	* gm2-compiler/M2GCCDeclare.mod: Replace NoOfParam with NoOfParamAny.
	Replace IsVarParam with IsVarParamAny.
	(DeclareProcedureToGccWholeProgram): Rename son to
	Variable.
	(DeclareProcedureToGccSeparateProgram): Ditto.
	(PrintKind): New procedure.
	(PrintProcedureParameters): Ditto.
	(PrintProcedureReturnType): Ditto.
	(PrintProcedure): Reimplement.
	(PrintProcTypeParameters): New procedure.
	(PrintProcType): Ditto.
	(DeclareProcType): Rename Son to Parameter.
	* gm2-compiler/M2GenGCC.mod: Replace NoOfParam with NoOfParamAny.
	Replace IsVarParam with IsVarParamAny.
	(ErrorMessageDecl): New procedure.
	(checkIncorrectMeta): Replace call to MetaErrorT2 with
	ErrorMessageDecl.
	(ComparisonMixTypes): Add varleft and varright parameters.
	Adjust all callers of ComparisonMixTypes.
	* gm2-compiler/M2MetaError.def (MetaErrorDecl): New procedure.
	* gm2-compiler/M2MetaError.mod (MetaErrorDecl): New procedure.
	* gm2-compiler/M2Options.def (SetXCode): Add -fd flag description
	to comment.
	* gm2-compiler/M2Options.mod (SetXCode): Add -fd flag description
	to comment.
	* gm2-compiler/M2Quads.mod (CheckBreak): New procedure.
	Replace NoOfParam with NoOfParamAny.
	Replace IsVarParam with IsVarParamAny.
	(FailParameter): Reimplement using GetVarDeclFullTok.
	Generate message for formal parameter, actual parameter and
	declaration of actual parameter.
	(WarnParameter): Ditto.
	(CheckBuildFunction): Reimplement error message using MetaErrorT1.
	* gm2-compiler/M2Range.mod: Replace NoOfParam with NoOfParamAny.
	Replace IsVarParam with IsVarParamAny.
	* gm2-compiler/M2Scaffold.mod (DeclareScaffoldFunctions): Call
	PutProcedureDefined after every procedure declaration.
	(DeclareArgEnvParams): Add ProperProcedure parameter to PutParam.
	* gm2-compiler/M2Size.mod (MakeSize): Add DefProcedure parameter
	to PutFunction.
	* gm2-compiler/M2Swig.mod: Replace NoOfParam with NoOfParamAny.
	Replace IsVarParam with IsVarParamAny.
	* gm2-compiler/M2SymInit.mod: Ditto.
	* gm2-compiler/M2System.mod (InitSystem): Add DefProcedure
	parameter to PutFunction.
	* gm2-compiler/P1SymBuild.mod (StartBuildProcedure): Reimplement.
	(EndBuildProcedure): Ditto.
	(EndBuildForward): Ditto.
	* gm2-compiler/P2Build.bnf (BuildProcedureDefinedByForward):
	Remove.
	(BuildProcedureDefinedByProper): Ditto.
	(ForwardDeclaration): Remove BuildProcedureDefinedByForward.
	(BuildNoReturnAttribute): Remove parameter.
	* gm2-compiler/P2SymBuild.def (BuildNoReturnAttribute): Remove
	parameter.
	(BuildProcedureDefinedByForward): Remove.
	(BuildProcedureDefinedByProper): Ditto.
	* gm2-compiler/P2SymBuild.mod (Import): Remove
	AreParametersDefinedInDefinition,
	AreParametersDefinedInImplementation,
	AreProcedureParametersDefined,
	ParametersDefinedInDefinition,
	ParametersDefinedInImplementation,
	GetProcedureDeclaredDefinition,
	GetProcedureDeclaredForward,
	GetProcedureDeclaredProper,
	GetParametersDefinedByForward,
	GetParametersDefinedByProper and
	PutProcedureNoReturn.
	Add PutProcedureParametersDefined,
	GetProcedureParametersDefined,
	GetProcedureKindDesc,
	GetProcedureDeclaredTok,
	GetProcedureKind,
	GetReturnTypeTok,
	SetReturnOptional,
	IsReturnOptional,
	PutProcedureNoReturn and
	PutProcedureDefined.
	(Debug): New procedure.
	(P2StartBuildDefModule): Space formatting.
	(BuildVariable): Reimplement to record full declaration.
	(StartBuildProcedure): Reimplement using token to determine
	the kind of procedure.
	(BuildProcedureHeading): Ditto.
	(BuildFPSection): Ditto.
	(BuildVarArgs): Ditto.
	(BuildOptArg): Ditto.
	(BuildProcedureDefinedByForward): Remove.
	(BuildProcedureDefinedByProper): Ditto.
	(BuildFormalParameterSection): Reimplement so that the
	quad stack is unchanged.
	(CheckFormalParameterSection): Ditto.
	(RemoveFPParameters): New procedure.
	(ParameterError): Reimplement.
	(StartBuildFormalParameters): Add annotation.
	(ParameterMismatch): Reimplement.
	(EndBuildFormalParameters): Reimplement to check against
	all procedure kinds.
	(GetSourceDesc): Remove.
	(GetCurSrcDesc): Ditto.
	(GetDeclared): Ditto.
	(ReturnTypeMismatch): Reimplement.
	(BuildFunction): Ditto.
	(BuildOptFunction): Ditto.
	(CheckOptFunction): New procedure.
	(BuildNoReturnAttribute): Remove parameter and obtain
	procedure symbol from quad stack.
	(CheckProcedureReturn): New procedure.
	* gm2-compiler/P3SymBuild.mod (BuildOptArgInitializer):
	Preserve ProcSym tok on the quad stack.
	Add Assert.
	* gm2-compiler/PCSymBuild.mod (fixupProcedureType): Replace
	NoOfParam with NoOfParamAny.
	* gm2-compiler/SymbolTable.def (GetNthParam): Add ProcedureKind
	parameter.
	(PutFunction): Ditto.
	(PutOptFunction): Ditto.
	(IsReturnOptional): Ditto.
	(PutParam): Ditto.
	(PutVarParam): Ditto.
	(PutParamName): Ditto.
	(PutProcedureNoReturn): Ditto.
	(IsProcedureNoReturn): Ditto.
	(IsVarParam): Ditto.
	(IsUnboundedParam): Ditto.
	(NoOfParam): Ditto.
	(ForeachLocalSymDo): Ditto.
	(GetProcedureKind): Ditto.
	(GetProcedureDeclaredTok): Ditto.
	(PutProcedureDeclaredTok): Ditto.
	(GetReturnTypeTok): Ditto.
	(PutReturnTypeTok): Ditto.
	(PutParametersDefinedByForward): New procedure.
	(PutProcedureParametersDefined): Ditto.
	(PutProcedureDefined): Ditto.
	(GetParametersDefinedByProper): Ditto.
	(GetProcedureDeclaredForward): Ditto.
	(GetProcedureDeclaredProper): Ditto.
	(PutProcedureDeclaredProper): Ditto.
	(GetProcedureDeclaredDefinition): Ditto.
	(PutProcedureDeclaredDefinition): Ditto.
	(GetProcedureDefined): Ditto.
	(PutUseOptArg): Ditto.
	(UsesOptArg): Ditto.
	(PutOptArgInit): Ditto.
	(SetReturnOptional): Ditto.
	(UsesOptArgAny): Ditto.
	(GetProcedureKindDesc): Ditto.
	(IsReturnOptionalAny): New procedure function.
	(GetNthParamAny): Ditto.
	(NoOfParamAny): Ditto.
	(IsProcedureAnyNoReturn): Ditto.
	(AreParametersDefinedInImplementation): Remove.
	(ParametersDefinedInImplementation): Ditto.
	(AreParametersDefinedInDefinition): Ditto.
	(AreProcedureParametersDefined): Ditto.
	(ParametersDefinedInDefinition): Ditto.
	(ProcedureParametersDefined): Ditto.
	(PutParametersDefinedByProper): Ditto.
	(PutProcedureDeclaredForward): Ditto.
	(GetParametersDefinedByForward): Ditto.
	(GetProcedureParametersDefined): Ditto.
	(PushOffset): Ditto.
	(PopSize): Ditto.
	(PushParamSize): Ditto.
	(PushSumOfLocalVarSize): Ditto.
	(PushSumOfParamSize): Ditto.
	(PopOffset): Ditto.
	(PopSumOfParamSize): Ditto.
	* gm2-compiler/SymbolTable.mod (MakeProcedure): Reimplement.
	(PutProcedureNoReturn): Add ProcedureKind parameter.
	(GetNthParam): Ditto.
	(PutFunction): Ditto.
	(PutOptFunction): Ditto.
	(IsReturnOptional): Ditto.
	(MakeVariableForParam): Ditto.
	(PutParam): Ditto.
	(PutVarParam): Ditto.
	(PutParamName): Ditto.
	(AddParameter): Ditto.
	(IsVarParam): Ditto.
	(IsVarParamAny): Ditto.
	(NoOfParam): Ditto.
	(HasVarParameters): Ditto.
	(IsUnboundedParam): Ditto.
	(PutUseVarArgs): Ditto.
	(UsesVarArgs): Ditto.
	(PutUseOptArg): Ditto.
	(UsesOptArg): Ditto.
	(UsesOptArgAny): Ditto.
	(PutOptArgInit): Ditto.
	(IsProcedure): Ditto.
	(IsPointer): Ditto.
	(IsRecord): Ditto.
	(IsArray): Ditto.
	(IsEnumeration): Ditto.
	(IsUnbounded): Ditto.
	(IsSet): Ditto.
	(IsSetPacked): Ditto.
	(CheckUnbounded): Ditto.
	(IsOAFamily): Ditto.
	(IsModuleWithinProcedure): Ditto.
	(GetDeclaredDef): Ditto.
	(GetDeclaredMod): Ditto.
	(GetDeclaredFor): Ditto.
	(GetProcedureDeclaredForward): Ditto.
	(GetProcedureKind): Ditto.
	(PutProcedureDeclaredForward): Ditto.
	(GetProcedureDeclaredTok): Ditto.
	(GetProcedureDeclaredProper): Ditto.
	(PutProcedureDeclaredTok): Ditto.
	(PutProcedureDeclaredProper): Ditto.
	(GetReturnTypeTok): Ditto.
	(GetProcedureDeclaredDefinition): Ditto.
	(PutReturnTypeTok): Ditto.
	(PutProcedureDeclaredDefinition): Ditto.
	(GetProcedureKindDesc): Ditto.
	(IsProcedureVariable): Ditto.
	(IsAModula2Type): Ditto.
	(GetParam): Ditto.
	(ProcedureParametersDefined): Ditto.
	(AreParametersDefinedInImplementation): Remove.
	(AreParametersDefinedInDefinition): Ditto.
	(AreProcedureParametersDefined): Ditto.
	(IsSizeSolved): Ditto.
	(IsOffsetSolved): Ditto.
	(IsValueSolved): Ditto.
	(IsSumOfParamSizeSolved): Ditto.
	(PushSize): Ditto.
	(PushOffset): Ditto.
	(PopSize): Ditto.
	(PushValue): Ditto.
	(PushParamSize): Ditto.
	(PushSumOfLocalVarSize): Ditto.
	(PushSumOfParamSize): Ditto.
	(PushVarSize): Ditto.
	(PopValue): Ditto.
	(PopSize): Ditto.
	(PopOffset): Ditto.
	(PopSumOfParamSize): Ditto.
	(PutParametersDefinedByForward): New procedure.
	(PutProcedureParametersDefined): Ditto.
	(PutProcedureDefined): Ditto.
	(GetParametersDefinedByProper): Ditto.
	(GetProcedureDeclaredForward): Ditto.
	(GetProcedureDeclaredProper): Ditto.
	(PutProcedureDeclaredProper): Ditto.
	(GetProcedureDeclaredDefinition): Ditto.
	(PutProcedureDeclaredDefinition): Ditto.
	(GetProcedureDefined): Ditto.
	(PutUseOptArg): Ditto.
	(UsesOptArg): Ditto.
	(PutOptArgInit): Ditto.
	(SetReturnOptional): Ditto.
	(UsesOptArgAny): Ditto.
	(GetProcedureKindDesc): Ditto.
	(PutParametersDefinedByProper): Ditto.
	(GetParametersDefinedByProper): Ditto.
	(IsReturnOptionalAny): New procedure function.
	(IsProcedureAnyDefaultBoolean): Ditto.
	(IsProcedureAnyBoolean): Ditto.
	(IsProcedureAnyNoReturn): Ditto.
	(GetNthParamAny): Ditto.
	(NoOfParamAny): Ditto.
	(IsProcedureAnyNoReturn): Ditto.
	(GetProcedureKind): Ditto.
	(IsVarParamAny): Ditto.
	(IsUnboundedParamAny): Ditto.
	(ForeachParamSymDo): New comment.
	* gm2-libs-coroutines/SYSTEM.mod: Reformat.

2024-12-03  Gaius Mulley  <gaiusmod2@gmail.com>

	Backported from master:
	2024-10-20  Gaius Mulley  <gaiusmod2@gmail.com>

	* gm2-compiler/M2MetaError.mod (op): Corrected ordering.
	* gm2-compiler/P2SymBuild.def: Remove comment.
	* gm2-compiler/P2SymBuild.mod (GetComparison): Replace
	the word less with fewer.

2024-12-03  Gaius Mulley  <gaiusmod2@gmail.com>

	Backported from master:
	2024-10-19  Gaius Mulley  <gaiusmod2@gmail.com>

	* gm2-compiler/M2MetaError.mod (op): Alphabetically order
	each case label and comment.

2024-12-03  Gaius Mulley  <gaiusmod2@gmail.com>

	Backported from master:
	2024-10-19  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/115328
	* gm2-compiler/M2MetaError.def: Extend comment documentating
	new format specifiers.
	* gm2-compiler/M2MetaError.mod (GetTokProcedure): New declaration.
	(doErrorScopeModule): New procedure.
	(doErrorScopeForward): Ditto.
	(doErrorScopeMod): Reimplement.
	(doErrorScopeFor): New procedure.
	(declarationMod): Ditto.
	(doErrorScopeDefinition): Ditto.
	(doErrorScopeDef): Reimplement.
	(declaredDef): New procedure.
	(declaredFor): Ditto.
	(doErrorScopeProc): Ditto.
	(declaredVar): Ditto.
	(declaredType): Ditto.
	(declaredFull): Ditto.
	* gm2-compiler/M2Options.mod (SetAutoInit): Add missing
	return type.
	(GetDumpGimple): Remove duplicate implementation.
	* gm2-compiler/M2Quads.def (DupFrame): New procedure.
	* gm2-compiler/M2Quads.mod (DupFrame): New procedure.
	* gm2-compiler/M2Reserved.def (ForwardTok): New variable.
	* gm2-compiler/M2Reserved.mod (ForwardTok): Initialize variable.
	* gm2-compiler/M2Scaffold.mod (DeclareArgEnvParams): Add
	tokno parameter for call to PutParam.
	* gm2-compiler/P0SymBuild.def (EndForward): New procedure.
	* gm2-compiler/P0SymBuild.mod (EndForward): New procedure.
	* gm2-compiler/P0SyntaxCheck.bnf (BlockAssert): New procedure.
	(ProcedureDeclaration): Reimplement rule.
	(PostProcedureHeading): New rule.
	(ForwardDeclaration): Ditto.
	(ProperProcedure): Ditto.
	* gm2-compiler/P1Build.bnf (ProcedureDeclaration): Reimplement rule.
	(PostProcedureHeading): New rule.
	(ForwardDeclaration): Ditto.
	(ProperProcedure): Ditto.
	* gm2-compiler/P1SymBuild.def (Export): Removed unnecessary
	export.
	(EndBuildForward): New procedure.
	* gm2-compiler/P1SymBuild.mod (StartBuildProcedure): Reimplement.
	(EndBuildProcedure): Ditto.
	(EndBuildForward): Ditto.
	* gm2-compiler/P2Build.bnf (ProcedureDeclaration): Reimplement rule.
	(PostProcedureHeading): New rule.
	(ForwardDeclaration): Ditto.
	(ProperProcedure): Ditto.
	* gm2-compiler/P2SymBuild.def (BuildProcedureDefinedByForward):
	New procedure.
	(BuildProcedureDefinedByProper): Ditto.
	(CheckProcedure): Ditto.
	(EndBuildForward): Ditto.
	* gm2-compiler/P2SymBuild.mod (EndBuildProcedure): Reimplement.
	(EndBuildForward): New procedure.
	(BuildFPSection): Reimplement to allow forward declaration or
	checking of parameters.
	(BuildProcedureDefinedByProper): New procedure.
	(BuildProcedureDefinedByForward): Ditto
	(FailParameter): Remove.
	(ParameterError): New procedure.
	(ParameterMismatch): Ditto.
	(EndBuildFormalParameters): Add parameter number check.
	(GetComparison): New procedure function.
	(GetSourceDesc): Ditto.
	(GetCurSrcDesc): Ditto.
	(GetDeclared): New procedure.
	(ReturnTypeMismatch): Ditto.
	(BuildFunction): Reimplement.
	(CheckProcedure): New procedure.
	(CheckFormalParameterSection): Reimplement using ParameterError.
	* gm2-compiler/P3Build.bnf (ProcedureDeclaration): Reimplement rule.
	(PostProcedureHeading): New rule.
	(ForwardDeclaration): Ditto.
	(ProperProcedure): Ditto.
	* gm2-compiler/P3SymBuild.def (Export): Remove unnecessary export.
	(EndBuildForward): New procedure.
	* gm2-compiler/P3SymBuild.mod (EndBuildForward): New procedure.
	* gm2-compiler/PCBuild.bnf (ProcedureDeclaration): Reimplement rule.
	(PostProcedureHeading): New rule.
	(ForwardDeclaration): Ditto.
	(ProperProcedure): Ditto.
	* gm2-compiler/PCSymBuild.def (EndBuildForward): New procedure.
	* gm2-compiler/PCSymBuild.mod (EndBuildForward): Ditto.
	* gm2-compiler/PHBuild.bnf (ProcedureDeclaration): Reimplement rule.
	(PostProcedureHeading): New rule.
	(ForwardDeclaration): Ditto.
	(ProperProcedure): Ditto.
	* gm2-compiler/SymbolTable.def (PutVarTok): New procedure.
	(PutParam): Add typetok parameter.
	(PutVarParam): Ditto.
	(PutParamName): Ditto.
	(GetDeclaredFor): New procedure function.
	(AreParametersDefinedInDefinition): Ditto.
	(PutParametersDefinedByForward): New procedure.
	(GetParametersDefinedByForward): New procedure function.
	(PutParametersDefinedByProper): New procedure.
	(GetParametersDefinedByProper): New procedure function.
	(GetProcedureDeclaredForward): Ditto.
	(PutProcedureDeclaredForward): New procedure.
	(GetProcedureDeclaredProper): New procedure function.
	(PutProcedureDeclaredProper): New procedure.
	(GetProcedureDeclaredDefinition): New procedure function.
	(PutProcedureDeclaredDefinition): New procedure.
	(GetVarDeclTypeTok): Ditto.
	(PutVarDeclTypeTok): New procedure.
	(GetVarDeclTok): Ditto.
	(PutVarDeclTok): New procedure.
	(GetVarDeclFullTok): Ditto.
	* gm2-compiler/SymbolTable.mod (ProcedureDecl): New record type.
	(VarDecl): Ditto.
	(SymProcedure): Add new field Declared.
	(SymVar): Add new field Declared.
	(PutVarTok): New procedure.
	(PutParam): Add typetok parameter.
	(PutVarParam): Ditto.
	(PutParamName): Ditto.
	(GetDeclaredFor): New procedure function.
	(AreParametersDefinedInDefinition): Ditto.
	(PutParametersDefinedByForward): New procedure.
	(GetParametersDefinedByForward): New procedure function.
	(PutParametersDefinedByProper): New procedure.
	(GetParametersDefinedByProper): New procedure function.
	(GetProcedureDeclaredForward): Ditto.
	(PutProcedureDeclaredForward): New procedure.
	(GetProcedureDeclaredProper): New procedure function.
	(PutProcedureDeclaredProper): New procedure.
	(GetProcedureDeclaredDefinition): New procedure function.
	(PutProcedureDeclaredDefinition): New procedure.
	(GetVarDeclTypeTok): Ditto.
	(PutVarDeclTypeTok): New procedure.
	(GetVarDeclTok): Ditto.
	(PutVarDeclTok): New procedure.
	(GetVarDeclFullTok): Ditto.
	(MakeProcedure): Initialize Declared field.
	(MakeVar): Initialize Declared field.
	* gm2-libs-log/FileSystem.def (FileNameChar): Add
	missing return type.
	* m2.flex: Add FORWARD keyword.

2024-12-02  Gaius Mulley  <gaiusmod2@gmail.com>

	Backported from master:
	2024-10-04  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/116918
	* gm2-compiler/M2Swig.mod (DoCheckUnbounded): Escape
	the % character used in array_functions with %%.

2024-12-02  Gaius Mulley  <gaiusmod2@gmail.com>

	Backported from master:
	2024-10-01  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/116918
	* gm2-compiler/M2Swig.mod (AnnotateProcedure): Capitalize
	the generated comment, split comment into multiple lines and
	terminate the comment with ".  */".
	(DoCheckUnbounded): Escape the % character with %%.
	(DoWriteFile): Ditto.

2024-12-02  Gaius Mulley  <gaiusmod2@gmail.com>

	Backported from master:
	2024-09-23  Gaius Mulley  <gaiusmod2@gmail.com>

	* Make-lang.in (m2/gm2-libs-boot/M2RTS.o): Remove
	--suppress-noreturn.
	* gm2-libs/M2RTS.mod (HaltC): Add noreturn attribute.
	* gm2-libs-min/M2RTS.mod (HALT): Add LOOP END.

2024-12-02  Gaius Mulley  <gaiusmod2@gmail.com>

	Backported from master:
	2024-11-16  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/117555
	* gm2-libs-iso/EXCEPTIONS.mod (CurrentNumber): Add return
	statement.
	* gm2-libs-iso/IOChan.mod (ReadResult): Ditto.
	(CurrentFlags): Ditto.
	(DeviceError): Ditto.
	* gm2-libs-iso/IOLink.mod (DeviceTablePtrValue): Ditto.
	* gm2-libs-iso/LongConv.mod (ValueReal): Ditto.
	* gm2-libs/M2RTS.mod (Halt): Add noreturn attribute.
	Add exit (1).
	(HaltC): Add exit (1).
	* pge-boot/GM2RTS.cc (M2RTS_Halt): Add exit (1).
	(M2RTS_HaltC): Ditto.

2024-12-02  Gaius Mulley  <gaiusmod2@gmail.com>

	Backported from master:
	2024-11-18  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/117555
	* gm2-libs-iso/M2EXCEPTION.mod (M2Exception): Add missing
	return statement.
	* gm2-libs-iso/RealConv.mod (ValueReal): Ditto.
	* gm2-libs-iso/RndFile.mod (StartPos): Ditto.
	(EndPos): Ditto.
	(NewPos): Ditto.
	* gm2-libs-iso/ShortConv.mod (ValueReal): Ditto.
	* gm2-libs-iso/WholeConv.mod (ValueInt): Ditto.
	(ValueCard): Ditto.

2024-12-01  Gaius Mulley  <gaiusmod2@gmail.com>

	Backported from master:
	2024-09-21  Gaius Mulley  <gaiusmod2@gmail.com>

	* gm2-compiler/M2Comp.mod (GenerateDependencies): Remove
	unused parameter.
	(WriteDep): Remove parameter dep.
	(WritePhoneDep): Ditto.

2024-12-01  Gaius Mulley  <gaiusmod2@gmail.com>

	Backported from master:
	2024-09-20  Gaius Mulley  <gaiusmod2@gmail.com>

	* gm2-compiler/M2Check.mod (checkUnboundedArray): New
	procedure function.
	(checkUnboundedUnbounded): Ditto.
	(checkUnbounded): Rewrite to check the unbounded data
	type.
	(checkPair): Add comment.
	(doCheckPair): Add comment.
	Remove tinfo parameter from the call to checkTypeKindViolation.
	(checkTypeKindViolation): Remove ununsed parameter tinfo.
	* gm2-libs-ch/UnixArgs.cc (GM2RTS.h): Remove include.
	* gm2-libs-ch/m2rts.h (M2RTS_INIT): New define.
	(M2RTS_DEP): Ditto.
	(M2RTS_RegisterModule): New prototype.
	(GM2RTS.h): Add include to the MC_M2 block.

2024-11-30  Gaius Mulley  <gaiusmod2@gmail.com>

	Backported from master:
	2024-09-16  Gaius Mulley  <gaiusmod2@gmail.com>

	* Make-lang.in (GM2_BOOT_INCLUDES): New variable.
	(m2/gm2-compiler-boot/M2GCCDeclare.o): Rewrite to use
	GM2_BOOT_INCLUDES.
	(m2/gm2-compiler-boot/M2Error.o): Ditto.
	(m2/gm2-compiler-boot/%.o): Ditto.

2024-11-29  Gaius Mulley  <gaiusmod2@gmail.com>

	Backported from master:
	2024-09-16  Gaius Mulley  <gaiusmod2@gmail.com>

	PR modula2/116181
	* Make-lang.in (GM2-GCC-DEFS): Add gcctypes.def and
	CDataTypes.def.
	(MC-LIB-DEFS): Add CDataTypes.def.
	* Make-maintainer.in (m2/gm2-pge-boot/$(SRC_PREFIX)M2RTS.o):
	Change include path to pge-boot.
	(m2/gm2-pge-boot/$(SRC_PREFIX)SymbolKey.o): Ditto.
	(m2/gm2-pge-boot/$(SRC_PREFIX)NameKey.o): Ditto.
	(m2/gm2-pge-boot/$(SRC_PREFIX)Lists.o): Ditto.
	(m2/gm2-pge-boot/$(SRC_PREFIX)Output.o): Ditto.
	(m2/gm2-pge-boot/$(SRC_PREFIX)bnflex.o): Ditto.
	(m2/gm2-pge-boot/$(SRC_PREFIX)RTentity.h): Ditto.
	(m2/gm2-pge-boot/$(SRC_PREFIX)RTentity.o): Ditto.
	(m2/gm2-pge-boot/$(SRC_PREFIX)%.o): Ditto.
	(GM2PATH): Add -I$(srcdir)/m2/gm2-gcc.
	(m2/mc-boot-gen/$(SRC_PREFIX)%.h): Add -I$(srcdir)/m2/gm2-gcc.
	(m2/mc-boot-gen/$(SRC_PREFIX)%.cc): Ditto.
	* gm2-compiler/M2ALU.def (PushIntegerTree): Replace Tree with tree.
	(PopIntegerTree): Ditto.
	(PushRealTree): Ditto.
	(PopRealTree): Ditto.
	(PushComplexTree): Ditto.
	(PopComplexTree): Ditto.
	(PushSetTree): Ditto.
	(PopSetTree): Ditto.
	(PopConstructorTree): Ditto.
	(ConstructSetConstant): Ditto.
	(BuildRange): Ditto.
	(CheckOrResetOverflow): Ditto.
	(PushTypeOfTree): Ditto.
	* gm2-compiler/M2ALU.mod (Tree): Replace with ...
	(tree): ... this.
	(gcctypes): Import location_t and tree.
	(m2linemap): Remove import of location_t.
	* gm2-compiler/M2Base.def (m2linemap): Replace with ...
	(gcctypes): ... this.
	* gm2-compiler/M2Base.mod (gcctypes): Import of location_t.
	(m2linemap): Remove import of location_t.
	* gm2-compiler/M2Bitset.mod (m2tree): Remove import of Tree.
	* gm2-compiler/M2CaseList.mod (gcctypes): Import tree.
	(m2tree): Remove import of Tree.
	(Tree): Replace with ...
	(tree): ... this.
	* gm2-compiler/M2Emit.def (gcctypes): Import location_t.
	* gm2-compiler/M2GCCDeclare.def (gcctypes): Import tree.
	(PromoteToString): Replace Tree with tree.
	(PromoteToCString): Ditto.
	(ConstantKnownAndUsed): Ditto.
	* gm2-compiler/M2GCCDeclare.mod (gcctypes): Import tree.
	(m2tree): Remove import of Tree.
	(Tree): Replace with ...
	(tree): ... this.
	* gm2-compiler/M2GenGCC.def (gcctypes): Import tree.
	(m2tree): Remove import of Tree.
	(Tree): Replace with ...
	(tree): ... this.
	(GetHighFromUnbounded): Replace Tree with tree.
	(StringToChar): Ditto.
	(LValueToGenericPtr): Ditto.
	(ZConstToTypedConst): Ditto.
	(PrepareCopyString): Ditto.
	* gm2-compiler/M2GenGCC.mod (gcctypes): Import tree.
	(m2tree): Remove import of Tree.
	(Tree): Replace with ...
	(tree): ... this.
	* gm2-compiler/M2LangDump.def (gcctypes): Import tree.
	(m2tree): Remove import of Tree.
	(Tree): Replace with ...
	(tree): ... this.
	* gm2-compiler/M2LangDump.mod (Tree): Replace with ...
	(tree): ... this.
	* gm2-compiler/M2LexBuf.def (m2linemap): Replace with ...
	(gcctypes): ... this.
	* gm2-compiler/M2LexBuf.mod (m2linemap): Replace with ...
	(gcctypes): ... this.
	* gm2-compiler/M2Options.def (m2linemap): Replace with ...
	(gcctypes): ... this.
	* gm2-compiler/M2Options.mod (m2linemap): Replace with ...
	(gcctypes): ... this.
	* gm2-compiler/M2Range.def (m2linemap): Replace with ...
	(gcctypes): ... this.
	(CDataTypes): Import ConstCharStar.
	(CodeErrorCheck): Replace Tree with tree.
	(OverlapsRange): Ditto.
	(IsEqual): Ditto.
	(IsGreaterOrEqual): Ditto.
	(IsGreater): Ditto.
	(BuildIfCallWholeHandlerLoc): Replace Tree with tree.
	Replace ADDRESS with ConstCharStar.
	(BuildIfCallRealHandlerLoc): Ditto.
	(GetMinMax): Ditto.
	* gm2-compiler/M2Range.mod (m2tree): Remove Tree.
	(CodeErrorCheck): Replace Tree with tree.
	(OverlapsRange): Ditto.
	(IsEqual): Ditto.
	(IsGreaterOrEqual): Ditto.
	(IsGreater): Ditto.
	(GetMinMax): Ditto.
	(BuildIfCallWholeHandlerLoc): Replace Tree with tree.
	Replace ADDRESS with ConstCharStar.
	(BuildIfCallRealHandlerLoc): Ditto.
	* gm2-compiler/M2System.def (m2linemap): Replace with ...
	(gcctypes): ... this.
	* gm2-compiler/M2System.mod (m2linemap): Replace with ...
	(gcctypes): ... this.
	(CreateMinMaxFor): Replace Tree with tree.
	(CreateType): Ditto.
	(AttemptToCreateType): Ditto.
	(CreateSetType): Ditto.
	(AttemptToCreateSetType): Ditto.
	* gm2-compiler/P2SymBuild.mod (m2linemap): Replace with ...
	(gcctypes): ... this.
	* gm2-compiler/SymbolConversion.def (m2tree): Replace with ...
	(gcctypes): ... this.
	(Mod2Gcc): Replace Tree with tree.
	(Gcc2Mod): Ditto.
	(AddModGcc): Ditto.
	* gm2-compiler/SymbolConversion.mod (m2tree): Replace with ...
	(gcctypes): ... this.
	(Mod2Gcc): Replace Tree with tree.
	(Gcc2Mod): Ditto.
	(AddModGcc): Ditto.
	(Mod2GccWithoutGCCPoison): Ditto.
	* gm2-compiler/SymbolTable.def (m2tree): Replace with ...
	(gcctypes): ... this.
	(PutModuleFinallyFunction): Replace Tree with tree.
	(GetModuleFinallyFunction): Ditto.
	* gm2-compiler/SymbolTable.mod (m2tree): Replace with ...
	(gcctypes): ... this.
	(PutModuleFinallyFunction): Replace Tree with tree.
	(GetModuleFinallyFunction): Ditto.
	* gm2-compiler/m2flex.def (m2linemap): Replace with ...
	(gcctypes): ... this.
	* gm2-gcc/init.def (PerCompilationInit): Replace ADDRESS with ConstCharStar.
	(CDataTypes): Import ConstCharStar.
	* gm2-gcc/m2block.def (SYSTEM): Remove import.
	(CDataTypes): Import ConstCharStar.
	(m2linemap): Remove import.
	(m2tree): Remove import.
	(gcctypes): Import tree.
	(global_constant): Replace Tree with tree.
	(RememberInitModuleFunction): Ditto.
	(DumpGlobalConstants): Ditto.
	(RememberConstant): Ditto.
	(RememberType): Ditto.
	(pushDecl): Ditto.
	(popFunctionScope): Ditto.
	(pushFunctionScope): Ditto.
	(finishFunctionCode): Ditto.
	(finishFunctionDecl): Ditto.
	(GetErrorNode): Ditto.
	(includeDecl): Ditto.
	(GetGlobals): Ditto.
	(GetGlobalContext): Ditto.
	(begin_statement_list): Ditto.
	(push_statement_list): Ditto.
	(pop_statement_list): Ditto.
	(getLabel): Replace Tree with tree.
	Replace ADDRESS with ConstCharStar.
	* gm2-gcc/m2builtins.def (CDataTypes): Import ConstCharStar.
	(GetBuiltinConst): Replace Tree with tree.
	(GetBuiltinConstType): Ditto.
	(GetBuiltinTypeInfoType): Ditto.
	(GetBuiltinTypeInfo): Ditto.
	(BuiltinExists): Ditto.
	(BuildBuiltinTree): Ditto.
	(BuiltinMemCopy): Ditto.
	(BuiltinMemSet): Ditto.
	(BuiltInAlloca): Ditto.
	(BuiltInIsfinite): Ditto.
	* gm2-gcc/m2convert.def (CDataTypes): Import ConstCharStar.
	(ToWord): Ditto.
	(ToCardinal): Ditto.
	(ToInteger): Ditto.
	(ToBitset): Ditto.
	(ConvertToPtr): Ditto.
	(BuildConvert): Ditto.
	(ConvertConstantAndCheck): Ditto.
	(ConvertString): Ditto.
	(GenericToType): Ditto.
	* gm2-gcc/m2decl.cc (m2decl_BuildParameterDeclaration): Add
	const attribute.
	* gm2-gcc/m2decl.def (CDataTypes): Import ConstCharStar.
	(BuildModuleCtor): Ditto.
	(DeclareModuleCtor): Ditto.
	(DeclareM2linkForcedModuleInitOrder): Ditto.
	(DeclareM2linkStaticInitialization): Ditto.
	(BuildPtrToTypeString): Ditto.
	(BuildIntegerConstant): Ditto.
	(BuildStringConstantType): Ditto.
	(DeclareKnownVariable): Ditto.
	(DeclareKnownConstant): Ditto.
	(BuildParameterDeclaration): Ditto.
	(BuildEndFunctionDeclaration): Ditto.
	(RememberVariables): Ditto.
	(BuildConstLiteralNumber): Ditto.
	(BuildStringConstant): Ditto.
	(BuildCStringConstant): Ditto.
	(GetDeclContext): Ditto.
	* gm2-gcc/m2decl.h (m2decl_BuildParameterDeclaration): Add
	const attribute.
	* gm2-gcc/m2except.def (CDataTypes): Import ConstCharStar.
	(BuildThrow): Ditto.
	(BuildTryBegin): Ditto.
	(BuildTryEnd): Ditto.
	(BuildCatchBegin): Ditto.
	(BuildCatchEnd): Ditto.
	* gm2-gcc/m2expr.def (CDataTypes): Import ConstCharStar.
	(CSTIntToString): Ditto.
	(CSTIntToChar): Ditto.
	(CheckConstStrZtypeRange): Ditto.
	(CompareTrees): Ditto.
	(GetPointerOne): Ditto.
	(GetPointerZero): Ditto.
	(GetWordOne): Ditto.
	(GetWordZero): Ditto.
	(GetIntegerOne): Ditto.
	(GetIntegerZero): Ditto.
	(GetCardinalOne): Ditto.
	(GetCardinalZero): Ditto.
	(GetSizeOfInBits): Ditto.
