testsuite: i386: adapt to -std=gnu23 default change
[official-gcc.git] / gcc / m2 / ChangeLog
blob422898d239d790f8a410b2def28dd86d4b955397
1 2024-11-15  Gaius Mulley  <gaiusmod2@gmail.com>
3         PR modula2/117371
4         * gm2-compiler/M2Base.mod (MixMetaTypes): Add parameter TRUE to
5         MetaErrorDecl.
6         (IsUserType): Test against ZType.
7         (MixTypesDecl): Test for ZType.
8         * gm2-compiler/M2GenGCC.mod (ErrorMessageDecl): Add parameter TRUE to
9         MetaErrorDecl.
10         (CodeLastForIterator): New procedure.
11         (FoldLastForIterator): Ditto.
12         (PerformLastForIterator): Ditto.
13         (CodeStatement): Add case clause for LastForIteratorOp.
14         (ErrorMessageDecl): Add iserror parameter.
15         Call MetaErrorDecl with iserror parameter.
16         (checkIncorrectMeta): Call MetaErrorDecl with TRUE parameter.
17         (CheckBinaryExpressionTypes): Ditto.
18         (CheckElementSetTypes): Ditto.
19         * gm2-compiler/M2LexBuf.def (MakeVirtualTok): Update comment
20         detailing the fall back when UnknownTokenNo is encountered.
21         (MakeVirtual2Tok): Ditto.
22         * gm2-compiler/M2LexBuf.mod (MakeVirtualTok): Check against
23         UnknownTokenNo.
24         (MakeVirtual2Tok): Ditto.
25         * gm2-compiler/M2MetaError.def (MetaErrorDecl): Add error parameter.
26         * gm2-compiler/M2MetaError.mod (MetaErrorDecl): Add error
27         parameter.
28         Issue warning if error is FALSE.
29         * gm2-compiler/M2Quads.def (QuadOperator): Add LastForIteratorOp.
30         * gm2-compiler/M2Quads.mod (AddQuadInformation): New case clause
31         LastForIteratorOp.
32         (CheckAddTuple2Read): New procedure.
33         (BuildForLoopToRangeCheck): Remove.
34         (ForLoopLastIteratorVariable): Ditto.
35         (ForLoopLastIteratorConstant): Ditto.
36         (ForLoopLastIterator): Reimplement.
37         (BuildForToByDo): Remove ByType from call to ForLoopLastIterator.
38         (WriteQuad): New case clause LastForIteratorOp.
39         (WriteOperator): Ditto.
40         * gm2-compiler/M2Students.def
41         (CheckForVariableThatLooksLikeKeyword): Replace with ...
42         (CheckVariableAgainstKeyword): ... this.
43         * gm2-compiler/M2Students.mod
44         (CheckForVariableThatLooksLikeKeyword): Replace with ...
45         (CheckVariableAgainstKeyword): ... this.
46         * gm2-compiler/M2SymInit.mod (CheckLastForIterator): New
47         procedure.
48         (CheckReadBeforeInitQuad): New case clause to call
49         CheckLastForIterator.
50         * gm2-compiler/P2SymBuild.mod: Replace
51         CheckForVariableThatLooksLikeKeyword with CheckVariableAgainstKeyword.
53 2024-11-15  Gaius Mulley  <gaiusmod2@gmail.com>
55         * Make-lang.in (m2/gm2-compiler-boot/P0SyntaxCheck.c):
56         New rule.
57         (m2/gm2-compiler-boot/P0SyntaxCheck.o): Ditto.
58         (m2/gm2-compiler-boot/P1Build.c): Ditto.
59         (m2/gm2-compiler-boot/P1Build.o): Ditto.
60         (m2/gm2-compiler-boot/P2Build.c): Ditto.
61         (m2/gm2-compiler-boot/P2Build.o): Ditto.
62         (m2/gm2-compiler-boot/P3Build.c): Ditto.
63         (m2/gm2-compiler-boot/P3Build.o): Ditto.
64         (m2/gm2-compiler-boot/PCBuild.c): Ditto.
65         (m2/gm2-compiler-boot/PCBuild.o): Ditto.
66         (m2/gm2-compiler-boot/PHBuild.c): Ditto.
67         (m2/gm2-compiler-boot/PHBuild.o): Ditto.
69 2024-11-11  Gaius Mulley  <gaiusmod2@gmail.com>
71         * gm2-compiler/M2Base.def (MixTypes): Rename parameters.
72         (MixTypesDecl): New procedure function.
73         * gm2-compiler/M2Base.mod (BuildOrdFunctions): Add
74         DefProcedure parameter to PutFunction.
75         (BuildTruncFunctions): Ditto.
76         (BuildFloatFunctions): Ditto.
77         (BuildIntFunctions): Ditto.
78         (InitBaseFunctions): Ditto.
79         (MixTypesDecl): New procedure function.
80         (MixTypes): Reimplement.
81         * gm2-compiler/M2Check.mod (checkProcType): Replace
82         NoOfParam with NoOfParamAny.
83         Replace IsVarParam with IsVarParamAny.
84         (checkProcedureProcType): Ditto.
85         * gm2-compiler/M2Error.def: Remove unnecessary export qualified list.
86         * gm2-compiler/M2GCCDeclare.mod: Replace NoOfParam with NoOfParamAny.
87         Replace IsVarParam with IsVarParamAny.
88         (DeclareProcedureToGccWholeProgram): Rename son to
89         Variable.
90         (DeclareProcedureToGccSeparateProgram): Ditto.
91         (PrintKind): New procedure.
92         (PrintProcedureParameters): Ditto.
93         (PrintProcedureReturnType): Ditto.
94         (PrintProcedure): Reimplement.
95         (PrintProcTypeParameters): New procedure.
96         (PrintProcType): Ditto.
97         (DeclareProcType): Rename Son to Parameter.
98         * gm2-compiler/M2GenGCC.mod: Replace NoOfParam with NoOfParamAny.
99         Replace IsVarParam with IsVarParamAny.
100         (ErrorMessageDecl): New procedure.
101         (checkIncorrectMeta): Replace call to MetaErrorT2 with
102         ErrorMessageDecl.
103         (ComparisonMixTypes): Add varleft and varright parameters.
104         Adjust all callers of ComparisonMixTypes.
105         * gm2-compiler/M2MetaError.def (MetaErrorDecl): New procedure.
106         * gm2-compiler/M2MetaError.mod (MetaErrorDecl): New procedure.
107         * gm2-compiler/M2Options.def (SetXCode): Add -fd flag description
108         to comment.
109         * gm2-compiler/M2Options.mod (SetXCode): Add -fd flag description
110         to comment.
111         * gm2-compiler/M2Quads.mod (CheckBreak): New procedure.
112         Replace NoOfParam with NoOfParamAny.
113         Replace IsVarParam with IsVarParamAny.
114         (FailParameter): Reimplement using GetVarDeclFullTok.
115         Generate message for formal parameter, actual parameter and
116         declaration of actual parameter.
117         (WarnParameter): Ditto.
118         (CheckBuildFunction): Reimplement error message using MetaErrorT1.
119         * gm2-compiler/M2Range.mod: Replace NoOfParam with NoOfParamAny.
120         Replace IsVarParam with IsVarParamAny.
121         * gm2-compiler/M2Scaffold.mod (DeclareScaffoldFunctions): Call
122         PutProcedureDefined after every procedure declaration.
123         (DeclareArgEnvParams): Add ProperProcedure parameter to PutParam.
124         * gm2-compiler/M2Size.mod (MakeSize): Add DefProcedure parameter
125         to PutFunction.
126         * gm2-compiler/M2Swig.mod: Replace NoOfParam with NoOfParamAny.
127         Replace IsVarParam with IsVarParamAny.
128         * gm2-compiler/M2SymInit.mod: Ditto.
129         * gm2-compiler/M2System.mod (InitSystem): Add DefProcedure
130         parameter to PutFunction.
131         * gm2-compiler/P1SymBuild.mod (StartBuildProcedure): Reimplement.
132         (EndBuildProcedure): Ditto.
133         (EndBuildForward): Ditto.
134         * gm2-compiler/P2Build.bnf (BuildProcedureDefinedByForward):
135         Remove.
136         (BuildProcedureDefinedByProper): Ditto.
137         (ForwardDeclaration): Remove BuildProcedureDefinedByForward.
138         (BuildNoReturnAttribute): Remove parameter.
139         * gm2-compiler/P2SymBuild.def (BuildNoReturnAttribute): Remove
140         parameter.
141         (BuildProcedureDefinedByForward): Remove.
142         (BuildProcedureDefinedByProper): Ditto.
143         * gm2-compiler/P2SymBuild.mod (Import): Remove
144         AreParametersDefinedInDefinition,
145         AreParametersDefinedInImplementation,
146         AreProcedureParametersDefined,
147         ParametersDefinedInDefinition,
148         ParametersDefinedInImplementation,
149         GetProcedureDeclaredDefinition,
150         GetProcedureDeclaredForward,
151         GetProcedureDeclaredProper,
152         GetParametersDefinedByForward,
153         GetParametersDefinedByProper and
154         PutProcedureNoReturn.
155         Add PutProcedureParametersDefined,
156         GetProcedureParametersDefined,
157         GetProcedureKindDesc,
158         GetProcedureDeclaredTok,
159         GetProcedureKind,
160         GetReturnTypeTok,
161         SetReturnOptional,
162         IsReturnOptional,
163         PutProcedureNoReturn and
164         PutProcedureDefined.
165         (Debug): New procedure.
166         (P2StartBuildDefModule): Space formatting.
167         (BuildVariable): Reimplement to record full declaration.
168         (StartBuildProcedure): Reimplement using token to determine
169         the kind of procedure.
170         (BuildProcedureHeading): Ditto.
171         (BuildFPSection): Ditto.
172         (BuildVarArgs): Ditto.
173         (BuildOptArg): Ditto.
174         (BuildProcedureDefinedByForward): Remove.
175         (BuildProcedureDefinedByProper): Ditto.
176         (BuildFormalParameterSection): Reimplement so that the
177         quad stack is unchanged.
178         (CheckFormalParameterSection): Ditto.
179         (RemoveFPParameters): New procedure.
180         (ParameterError): Reimplement.
181         (StartBuildFormalParameters): Add annotation.
182         (ParameterMismatch): Reimplement.
183         (EndBuildFormalParameters): Reimplement to check against
184         all procedure kinds.
185         (GetSourceDesc): Remove.
186         (GetCurSrcDesc): Ditto.
187         (GetDeclared): Ditto.
188         (ReturnTypeMismatch): Reimplement.
189         (BuildFunction): Ditto.
190         (BuildOptFunction): Ditto.
191         (CheckOptFunction): New procedure.
192         (BuildNoReturnAttribute): Remove parameter and obtain
193         procedure symbol from quad stack.
194         (CheckProcedureReturn): New procedure.
195         * gm2-compiler/P3SymBuild.mod (BuildOptArgInitializer):
196         Preserve ProcSym tok on the quad stack.
197         Add Assert.
198         * gm2-compiler/PCSymBuild.mod (fixupProcedureType): Replace
199         NoOfParam with NoOfParamAny.
200         * gm2-compiler/SymbolTable.def (GetNthParam): Add ProcedureKind
201         parameter.
202         (PutFunction): Ditto.
203         (PutOptFunction): Ditto.
204         (IsReturnOptional): Ditto.
205         (PutParam): Ditto.
206         (PutVarParam): Ditto.
207         (PutParamName): Ditto.
208         (PutProcedureNoReturn): Ditto.
209         (IsProcedureNoReturn): Ditto.
210         (IsVarParam): Ditto.
211         (IsUnboundedParam): Ditto.
212         (NoOfParam): Ditto.
213         (ForeachLocalSymDo): Ditto.
214         (GetProcedureKind): Ditto.
215         (GetProcedureDeclaredTok): Ditto.
216         (PutProcedureDeclaredTok): Ditto.
217         (GetReturnTypeTok): Ditto.
218         (PutReturnTypeTok): Ditto.
219         (PutParametersDefinedByForward): New procedure.
220         (PutProcedureParametersDefined): Ditto.
221         (PutProcedureDefined): Ditto.
222         (GetParametersDefinedByProper): Ditto.
223         (GetProcedureDeclaredForward): Ditto.
224         (GetProcedureDeclaredProper): Ditto.
225         (PutProcedureDeclaredProper): Ditto.
226         (GetProcedureDeclaredDefinition): Ditto.
227         (PutProcedureDeclaredDefinition): Ditto.
228         (GetProcedureDefined): Ditto.
229         (PutUseOptArg): Ditto.
230         (UsesOptArg): Ditto.
231         (PutOptArgInit): Ditto.
232         (SetReturnOptional): Ditto.
233         (UsesOptArgAny): Ditto.
234         (GetProcedureKindDesc): Ditto.
235         (IsReturnOptionalAny): New procedure function.
236         (GetNthParamAny): Ditto.
237         (NoOfParamAny): Ditto.
238         (IsProcedureAnyNoReturn): Ditto.
239         (AreParametersDefinedInImplementation): Remove.
240         (ParametersDefinedInImplementation): Ditto.
241         (AreParametersDefinedInDefinition): Ditto.
242         (AreProcedureParametersDefined): Ditto.
243         (ParametersDefinedInDefinition): Ditto.
244         (ProcedureParametersDefined): Ditto.
245         (PutParametersDefinedByProper): Ditto.
246         (PutProcedureDeclaredForward): Ditto.
247         (GetParametersDefinedByForward): Ditto.
248         (GetProcedureParametersDefined): Ditto.
249         (PushOffset): Ditto.
250         (PopSize): Ditto.
251         (PushParamSize): Ditto.
252         (PushSumOfLocalVarSize): Ditto.
253         (PushSumOfParamSize): Ditto.
254         (PopOffset): Ditto.
255         (PopSumOfParamSize): Ditto.
256         * gm2-compiler/SymbolTable.mod (MakeProcedure): Reimplement.
257         (PutProcedureNoReturn): Add ProcedureKind parameter.
258         (GetNthParam): Ditto.
259         (PutFunction): Ditto.
260         (PutOptFunction): Ditto.
261         (IsReturnOptional): Ditto.
262         (MakeVariableForParam): Ditto.
263         (PutParam): Ditto.
264         (PutVarParam): Ditto.
265         (PutParamName): Ditto.
266         (AddParameter): Ditto.
267         (IsVarParam): Ditto.
268         (IsVarParamAny): Ditto.
269         (NoOfParam): Ditto.
270         (HasVarParameters): Ditto.
271         (IsUnboundedParam): Ditto.
272         (PutUseVarArgs): Ditto.
273         (UsesVarArgs): Ditto.
274         (PutUseOptArg): Ditto.
275         (UsesOptArg): Ditto.
276         (UsesOptArgAny): Ditto.
277         (PutOptArgInit): Ditto.
278         (IsProcedure): Ditto.
279         (IsPointer): Ditto.
280         (IsRecord): Ditto.
281         (IsArray): Ditto.
282         (IsEnumeration): Ditto.
283         (IsUnbounded): Ditto.
284         (IsSet): Ditto.
285         (IsSetPacked): Ditto.
286         (CheckUnbounded): Ditto.
287         (IsOAFamily): Ditto.
288         (IsModuleWithinProcedure): Ditto.
289         (GetDeclaredDef): Ditto.
290         (GetDeclaredMod): Ditto.
291         (GetDeclaredFor): Ditto.
292         (GetProcedureDeclaredForward): Ditto.
293         (GetProcedureKind): Ditto.
294         (PutProcedureDeclaredForward): Ditto.
295         (GetProcedureDeclaredTok): Ditto.
296         (GetProcedureDeclaredProper): Ditto.
297         (PutProcedureDeclaredTok): Ditto.
298         (PutProcedureDeclaredProper): Ditto.
299         (GetReturnTypeTok): Ditto.
300         (GetProcedureDeclaredDefinition): Ditto.
301         (PutReturnTypeTok): Ditto.
302         (PutProcedureDeclaredDefinition): Ditto.
303         (GetProcedureKindDesc): Ditto.
304         (IsProcedureVariable): Ditto.
305         (IsAModula2Type): Ditto.
306         (GetParam): Ditto.
307         (ProcedureParametersDefined): Ditto.
308         (AreParametersDefinedInImplementation): Remove.
309         (AreParametersDefinedInDefinition): Ditto.
310         (AreProcedureParametersDefined): Ditto.
311         (IsSizeSolved): Ditto.
312         (IsOffsetSolved): Ditto.
313         (IsValueSolved): Ditto.
314         (IsSumOfParamSizeSolved): Ditto.
315         (PushSize): Ditto.
316         (PushOffset): Ditto.
317         (PopSize): Ditto.
318         (PushValue): Ditto.
319         (PushParamSize): Ditto.
320         (PushSumOfLocalVarSize): Ditto.
321         (PushSumOfParamSize): Ditto.
322         (PushVarSize): Ditto.
323         (PopValue): Ditto.
324         (PopSize): Ditto.
325         (PopOffset): Ditto.
326         (PopSumOfParamSize): Ditto.
327         (PutParametersDefinedByForward): New procedure.
328         (PutProcedureParametersDefined): Ditto.
329         (PutProcedureDefined): Ditto.
330         (GetParametersDefinedByProper): Ditto.
331         (GetProcedureDeclaredForward): Ditto.
332         (GetProcedureDeclaredProper): Ditto.
333         (PutProcedureDeclaredProper): Ditto.
334         (GetProcedureDeclaredDefinition): Ditto.
335         (PutProcedureDeclaredDefinition): Ditto.
336         (GetProcedureDefined): Ditto.
337         (PutUseOptArg): Ditto.
338         (UsesOptArg): Ditto.
339         (PutOptArgInit): Ditto.
340         (SetReturnOptional): Ditto.
341         (UsesOptArgAny): Ditto.
342         (GetProcedureKindDesc): Ditto.
343         (PutParametersDefinedByProper): Ditto.
344         (GetParametersDefinedByProper): Ditto.
345         (IsReturnOptionalAny): New procedure function.
346         (IsProcedureAnyDefaultBoolean): Ditto.
347         (IsProcedureAnyBoolean): Ditto.
348         (IsProcedureAnyNoReturn): Ditto.
349         (GetNthParamAny): Ditto.
350         (NoOfParamAny): Ditto.
351         (IsProcedureAnyNoReturn): Ditto.
352         (GetProcedureKind): Ditto.
353         (IsVarParamAny): Ditto.
354         (IsUnboundedParamAny): Ditto.
355         (ForeachParamSymDo): New comment.
356         * gm2-libs-coroutines/SYSTEM.mod: Reformat.
358 2024-11-09  Jakub Jelinek  <jakub@redhat.com>
360         * Make-lang.in (m2_OBJS): Add $(BUILD-LIBS-BOOT),
361         $(BUILD-COMPILER-BOOT) and $(MC_LIBS).
363 2024-10-25  Jakub Jelinek  <jakub@redhat.com>
365         * mc-boot/GFpuIO.cc: Remove trailing whitespace.
366         * mc-boot/GFIO.cc: Likewise.
367         * mc-boot/GFormatStrings.cc: Likewise.
368         * mc-boot/GCmdArgs.cc: Likewise.
369         * mc-boot/GDebug.h: Likewise.
370         * mc-boot/GM2Dependent.cc: Likewise.
371         * mc-boot/GRTint.cc: Likewise.
372         * mc-boot/GDebug.cc: Likewise.
373         * mc-boot/GmcError.cc: Likewise.
374         * mc-boot/Gmcp4.cc: Likewise.
375         * mc-boot/GM2RTS.cc: Likewise.
376         * mc-boot/GIO.cc: Likewise.
377         * mc-boot/Gmcp5.cc: Likewise.
378         * mc-boot/GDynamicStrings.cc: Likewise.
379         * mc-boot/Gmcp1.cc: Likewise.
380         * mc-boot/GFormatStrings.h: Likewise.
381         * mc-boot/Gmcp2.cc: Likewise.
382         * mc-boot/Gmcp3.cc: Likewise.
383         * pge-boot/GFIO.cc: Likewise.
384         * pge-boot/GDebug.h: Likewise.
385         * pge-boot/GM2Dependent.cc: Likewise.
386         * pge-boot/GDebug.cc: Likewise.
387         * pge-boot/GM2RTS.cc: Likewise.
388         * pge-boot/GSymbolKey.cc: Likewise.
389         * pge-boot/GIO.cc: Likewise.
390         * pge-boot/GIndexing.cc: Likewise.
391         * pge-boot/GDynamicStrings.cc: Likewise.
392         * pge-boot/GFormatStrings.h: Likewise.
394 2024-10-24  David Malcolm  <dmalcolm@redhat.com>
395             Gaius Mulley  <gaiusmod2@gmail.com>
397         PR other/116613
398         * gm2-gcc/gcc-consolidation.h: Add #define INCLUDE_MEMORY.
399         * gm2-gcc/m2configure.cc: Likewise.
400         * mc-boot/GASCII.cc: Regenerate.
401         * mc-boot/GASCII.h: Ditto.
402         * mc-boot/GArgs.cc: Ditto.
403         * mc-boot/GArgs.h: Ditto.
404         * mc-boot/GAssertion.cc: Ditto.
405         * mc-boot/GAssertion.h: Ditto.
406         * mc-boot/GBreak.cc: Ditto.
407         * mc-boot/GBreak.h: Ditto.
408         * mc-boot/GCOROUTINES.h: Ditto.
409         * mc-boot/GCmdArgs.cc: Ditto.
410         * mc-boot/GCmdArgs.h: Ditto.
411         * mc-boot/GDebug.cc: Ditto.
412         * mc-boot/GDebug.h: Ditto.
413         * mc-boot/GDynamicStrings.cc: Ditto.
414         * mc-boot/GDynamicStrings.h: Ditto.
415         * mc-boot/GEnvironment.cc: Ditto.
416         * mc-boot/GEnvironment.h: Ditto.
417         * mc-boot/GFIO.cc: Ditto.
418         * mc-boot/GFIO.h: Ditto.
419         * mc-boot/GFormatStrings.cc: Ditto.
420         * mc-boot/GFormatStrings.h: Ditto.
421         * mc-boot/GFpuIO.cc: Ditto.
422         * mc-boot/GFpuIO.h: Ditto.
423         * mc-boot/GIO.cc: Ditto.
424         * mc-boot/GIO.h: Ditto.
425         * mc-boot/GIndexing.cc: Ditto.
426         * mc-boot/GIndexing.h: Ditto.
427         * mc-boot/GM2Dependent.cc: Ditto.
428         * mc-boot/GM2Dependent.h: Ditto.
429         * mc-boot/GM2EXCEPTION.cc: Ditto.
430         * mc-boot/GM2EXCEPTION.h: Ditto.
431         * mc-boot/GM2RTS.cc: Ditto.
432         * mc-boot/GM2RTS.h: Ditto.
433         * mc-boot/GMemUtils.cc: Ditto.
434         * mc-boot/GMemUtils.h: Ditto.
435         * mc-boot/GNumberIO.cc: Ditto.
436         * mc-boot/GNumberIO.h: Ditto.
437         * mc-boot/GPushBackInput.cc: Ditto.
438         * mc-boot/GPushBackInput.h: Ditto.
439         * mc-boot/GRTExceptions.cc: Ditto.
440         * mc-boot/GRTExceptions.h: Ditto.
441         * mc-boot/GRTco.h: Ditto.
442         * mc-boot/GRTentity.h: Ditto.
443         * mc-boot/GRTint.cc: Ditto.
444         * mc-boot/GRTint.h: Ditto.
445         * mc-boot/GSArgs.cc: Ditto.
446         * mc-boot/GSArgs.h: Ditto.
447         * mc-boot/GSFIO.cc: Ditto.
448         * mc-boot/GSFIO.h: Ditto.
449         * mc-boot/GSYSTEM.h: Ditto.
450         * mc-boot/GSelective.h: Ditto.
451         * mc-boot/GStdIO.cc: Ditto.
452         * mc-boot/GStdIO.h: Ditto.
453         * mc-boot/GStorage.cc: Ditto.
454         * mc-boot/GStorage.h: Ditto.
455         * mc-boot/GStrCase.cc: Ditto.
456         * mc-boot/GStrCase.h: Ditto.
457         * mc-boot/GStrIO.cc: Ditto.
458         * mc-boot/GStrIO.h: Ditto.
459         * mc-boot/GStrLib.cc: Ditto.
460         * mc-boot/GStrLib.h: Ditto.
461         * mc-boot/GStringConvert.cc: Ditto.
462         * mc-boot/GStringConvert.h: Ditto.
463         * mc-boot/GSysExceptions.h: Ditto.
464         * mc-boot/GSysStorage.cc: Ditto.
465         * mc-boot/GSysStorage.h: Ditto.
466         * mc-boot/GTimeString.cc: Ditto.
467         * mc-boot/GTimeString.h: Ditto.
468         * mc-boot/GUnixArgs.h: Ditto.
469         * mc-boot/Galists.cc: Ditto.
470         * mc-boot/Galists.h: Ditto.
471         * mc-boot/Gdecl.cc: Ditto.
472         * mc-boot/Gdecl.h: Ditto.
473         * mc-boot/Gdtoa.h: Ditto.
474         * mc-boot/Gerrno.h: Ditto.
475         * mc-boot/Gkeyc.cc: Ditto.
476         * mc-boot/Gkeyc.h: Ditto.
477         * mc-boot/Gldtoa.h: Ditto.
478         * mc-boot/Glibc.h: Ditto.
479         * mc-boot/Glibm.h: Ditto.
480         * mc-boot/Glists.cc: Ditto.
481         * mc-boot/Glists.h: Ditto.
482         * mc-boot/GmcComment.cc: Ditto.
483         * mc-boot/GmcComment.h: Ditto.
484         * mc-boot/GmcComp.cc: Ditto.
485         * mc-boot/GmcComp.h: Ditto.
486         * mc-boot/GmcDebug.cc: Ditto.
487         * mc-boot/GmcDebug.h: Ditto.
488         * mc-boot/GmcError.cc: Ditto.
489         * mc-boot/GmcError.h: Ditto.
490         * mc-boot/GmcFileName.cc: Ditto.
491         * mc-boot/GmcFileName.h: Ditto.
492         * mc-boot/GmcLexBuf.cc: Ditto.
493         * mc-boot/GmcLexBuf.h: Ditto.
494         * mc-boot/GmcMetaError.cc: Ditto.
495         * mc-boot/GmcMetaError.h: Ditto.
496         * mc-boot/GmcOptions.cc: Ditto.
497         * mc-boot/GmcOptions.h: Ditto.
498         * mc-boot/GmcPreprocess.cc: Ditto.
499         * mc-boot/GmcPreprocess.h: Ditto.
500         * mc-boot/GmcPretty.cc: Ditto.
501         * mc-boot/GmcPretty.h: Ditto.
502         * mc-boot/GmcPrintf.cc: Ditto.
503         * mc-boot/GmcPrintf.h: Ditto.
504         * mc-boot/GmcQuiet.cc: Ditto.
505         * mc-boot/GmcQuiet.h: Ditto.
506         * mc-boot/GmcReserved.cc: Ditto.
507         * mc-boot/GmcReserved.h: Ditto.
508         * mc-boot/GmcSearch.cc: Ditto.
509         * mc-boot/GmcSearch.h: Ditto.
510         * mc-boot/GmcStack.cc: Ditto.
511         * mc-boot/GmcStack.h: Ditto.
512         * mc-boot/GmcStream.cc: Ditto.
513         * mc-boot/GmcStream.h: Ditto.
514         * mc-boot/Gmcflex.h: Ditto.
515         * mc-boot/Gmcp1.cc: Ditto.
516         * mc-boot/Gmcp1.h: Ditto.
517         * mc-boot/Gmcp2.cc: Ditto.
518         * mc-boot/Gmcp2.h: Ditto.
519         * mc-boot/Gmcp3.cc: Ditto.
520         * mc-boot/Gmcp3.h: Ditto.
521         * mc-boot/Gmcp4.cc: Ditto.
522         * mc-boot/Gmcp4.h: Ditto.
523         * mc-boot/Gmcp5.cc: Ditto.
524         * mc-boot/Gmcp5.h: Ditto.
525         * mc-boot/GnameKey.cc: Ditto.
526         * mc-boot/GnameKey.h: Ditto.
527         * mc-boot/GsymbolKey.cc: Ditto.
528         * mc-boot/GsymbolKey.h: Ditto.
529         * mc-boot/Gtermios.h: Ditto.
530         * mc-boot/Gtop.cc: Ditto.
531         * mc-boot/Gvarargs.cc: Ditto.
532         * mc-boot/Gvarargs.h: Ditto.
533         * mc-boot/Gwlists.cc: Ditto.
534         * mc-boot/Gwlists.h: Ditto.
535         * mc-boot/Gwrapc.h: Ditto.
536         * mc/keyc.mod (checkGccConfigSystem): Add
537         #define INCLUDE_MEMORY.
538         * pge-boot/GASCII.cc: Regenerate.
539         * pge-boot/GASCII.h: Ditto.
540         * pge-boot/GArgs.cc: Ditto.
541         * pge-boot/GArgs.h: Ditto.
542         * pge-boot/GAssertion.cc: Ditto.
543         * pge-boot/GAssertion.h: Ditto.
544         * pge-boot/GBreak.h: Ditto.
545         * pge-boot/GCmdArgs.h: Ditto.
546         * pge-boot/GDebug.cc: Ditto.
547         * pge-boot/GDebug.h: Ditto.
548         * pge-boot/GDynamicStrings.cc: Ditto.
549         * pge-boot/GDynamicStrings.h: Ditto.
550         * pge-boot/GEnvironment.h: Ditto.
551         * pge-boot/GFIO.cc: Ditto.
552         * pge-boot/GFIO.h: Ditto.
553         * pge-boot/GFormatStrings.h: Ditto.
554         * pge-boot/GFpuIO.h: Ditto.
555         * pge-boot/GIO.cc: Ditto.
556         * pge-boot/GIO.h: Ditto.
557         * pge-boot/GIndexing.cc: Ditto.
558         * pge-boot/GIndexing.h: Ditto.
559         * pge-boot/GLists.cc: Ditto.
560         * pge-boot/GLists.h: Ditto.
561         * pge-boot/GM2Dependent.cc: Ditto.
562         * pge-boot/GM2Dependent.h: Ditto.
563         * pge-boot/GM2EXCEPTION.cc: Ditto.
564         * pge-boot/GM2EXCEPTION.h: Ditto.
565         * pge-boot/GM2RTS.cc: Ditto.
566         * pge-boot/GM2RTS.h: Ditto.
567         * pge-boot/GNameKey.cc: Ditto.
568         * pge-boot/GNameKey.h: Ditto.
569         * pge-boot/GNumberIO.cc: Ditto.
570         * pge-boot/GNumberIO.h: Ditto.
571         * pge-boot/GOutput.cc: Ditto.
572         * pge-boot/GOutput.h: Ditto.
573         * pge-boot/GPushBackInput.cc: Ditto.
574         * pge-boot/GPushBackInput.h: Ditto.
575         * pge-boot/GRTExceptions.cc: Ditto.
576         * pge-boot/GRTExceptions.h: Ditto.
577         * pge-boot/GSArgs.h: Ditto.
578         * pge-boot/GSEnvironment.h: Ditto.
579         * pge-boot/GSFIO.cc: Ditto.
580         * pge-boot/GSFIO.h: Ditto.
581         * pge-boot/GSYSTEM.h: Ditto.
582         * pge-boot/GScan.h: Ditto.
583         * pge-boot/GStdIO.cc: Ditto.
584         * pge-boot/GStdIO.h: Ditto.
585         * pge-boot/GStorage.cc: Ditto.
586         * pge-boot/GStorage.h: Ditto.
587         * pge-boot/GStrCase.cc: Ditto.
588         * pge-boot/GStrCase.h: Ditto.
589         * pge-boot/GStrIO.cc: Ditto.
590         * pge-boot/GStrIO.h: Ditto.
591         * pge-boot/GStrLib.cc: Ditto.
592         * pge-boot/GStrLib.h: Ditto.
593         * pge-boot/GStringConvert.h: Ditto.
594         * pge-boot/GSymbolKey.cc: Ditto.
595         * pge-boot/GSymbolKey.h: Ditto.
596         * pge-boot/GSysExceptions.h: Ditto.
597         * pge-boot/GSysStorage.cc: Ditto.
598         * pge-boot/GSysStorage.h: Ditto.
599         * pge-boot/GTimeString.h: Ditto.
600         * pge-boot/GUnixArgs.h: Ditto.
601         * pge-boot/Gbnflex.cc: Ditto.
602         * pge-boot/Gbnflex.h: Ditto.
603         * pge-boot/Gdtoa.h: Ditto.
604         * pge-boot/Gerrno.h: Ditto.
605         * pge-boot/Gldtoa.h: Ditto.
606         * pge-boot/Glibc.h: Ditto.
607         * pge-boot/Glibm.h: Ditto.
608         * pge-boot/Gpge.cc: Ditto.
609         * pge-boot/Gtermios.h: Ditto.
610         * pge-boot/Gwrapc.h: Ditto.
612 2024-10-20  Gaius Mulley  <gaiusmod2@gmail.com>
614         * gm2-compiler/M2MetaError.mod (op): Corrected ordering.
615         * gm2-compiler/P2SymBuild.def: Remove comment.
616         * gm2-compiler/P2SymBuild.mod (GetComparison): Replace
617         the word less with fewer.
619 2024-10-19  Gaius Mulley  <gaiusmod2@gmail.com>
621         * gm2-compiler/M2MetaError.mod (op): Alphabetically order
622         each case label and comment.
624 2024-10-19  Gaius Mulley  <gaiusmod2@gmail.com>
626         PR modula2/115328
627         * gm2-compiler/M2MetaError.def: Extend comment documentating
628         new format specifiers.
629         * gm2-compiler/M2MetaError.mod (GetTokProcedure): New declaration.
630         (doErrorScopeModule): New procedure.
631         (doErrorScopeForward): Ditto.
632         (doErrorScopeMod): Reimplement.
633         (doErrorScopeFor): New procedure.
634         (declarationMod): Ditto.
635         (doErrorScopeDefinition): Ditto.
636         (doErrorScopeDef): Reimplement.
637         (declaredDef): New procedure.
638         (declaredFor): Ditto.
639         (doErrorScopeProc): Ditto.
640         (declaredVar): Ditto.
641         (declaredType): Ditto.
642         (declaredFull): Ditto.
643         * gm2-compiler/M2Options.mod (SetAutoInit): Add missing
644         return type.
645         (GetDumpGimple): Remove duplicate implementation.
646         * gm2-compiler/M2Quads.def (DupFrame): New procedure.
647         * gm2-compiler/M2Quads.mod (DupFrame): New procedure.
648         * gm2-compiler/M2Reserved.def (ForwardTok): New variable.
649         * gm2-compiler/M2Reserved.mod (ForwardTok): Initialize variable.
650         * gm2-compiler/M2Scaffold.mod (DeclareArgEnvParams): Add
651         tokno parameter for call to PutParam.
652         * gm2-compiler/P0SymBuild.def (EndForward): New procedure.
653         * gm2-compiler/P0SymBuild.mod (EndForward): New procedure.
654         * gm2-compiler/P0SyntaxCheck.bnf (BlockAssert): New procedure.
655         (ProcedureDeclaration): Reimplement rule.
656         (PostProcedureHeading): New rule.
657         (ForwardDeclaration): Ditto.
658         (ProperProcedure): Ditto.
659         * gm2-compiler/P1Build.bnf (ProcedureDeclaration): Reimplement rule.
660         (PostProcedureHeading): New rule.
661         (ForwardDeclaration): Ditto.
662         (ProperProcedure): Ditto.
663         * gm2-compiler/P1SymBuild.def (Export): Removed unnecessary
664         export.
665         (EndBuildForward): New procedure.
666         * gm2-compiler/P1SymBuild.mod (StartBuildProcedure): Reimplement.
667         (EndBuildProcedure): Ditto.
668         (EndBuildForward): Ditto.
669         * gm2-compiler/P2Build.bnf (ProcedureDeclaration): Reimplement rule.
670         (PostProcedureHeading): New rule.
671         (ForwardDeclaration): Ditto.
672         (ProperProcedure): Ditto.
673         * gm2-compiler/P2SymBuild.def (BuildProcedureDefinedByForward):
674         New procedure.
675         (BuildProcedureDefinedByProper): Ditto.
676         (CheckProcedure): Ditto.
677         (EndBuildForward): Ditto.
678         * gm2-compiler/P2SymBuild.mod (EndBuildProcedure): Reimplement.
679         (EndBuildForward): New procedure.
680         (BuildFPSection): Reimplement to allow forward declaration or
681         checking of parameters.
682         (BuildProcedureDefinedByProper): New procedure.
683         (BuildProcedureDefinedByForward): Ditto
684         (FailParameter): Remove.
685         (ParameterError): New procedure.
686         (ParameterMismatch): Ditto.
687         (EndBuildFormalParameters): Add parameter number check.
688         (GetComparison): New procedure function.
689         (GetSourceDesc): Ditto.
690         (GetCurSrcDesc): Ditto.
691         (GetDeclared): New procedure.
692         (ReturnTypeMismatch): Ditto.
693         (BuildFunction): Reimplement.
694         (CheckProcedure): New procedure.
695         (CheckFormalParameterSection): Reimplement using ParameterError.
696         * gm2-compiler/P3Build.bnf (ProcedureDeclaration): Reimplement rule.
697         (PostProcedureHeading): New rule.
698         (ForwardDeclaration): Ditto.
699         (ProperProcedure): Ditto.
700         * gm2-compiler/P3SymBuild.def (Export): Remove unnecessary export.
701         (EndBuildForward): New procedure.
702         * gm2-compiler/P3SymBuild.mod (EndBuildForward): New procedure.
703         * gm2-compiler/PCBuild.bnf (ProcedureDeclaration): Reimplement rule.
704         (PostProcedureHeading): New rule.
705         (ForwardDeclaration): Ditto.
706         (ProperProcedure): Ditto.
707         * gm2-compiler/PCSymBuild.def (EndBuildForward): New procedure.
708         * gm2-compiler/PCSymBuild.mod (EndBuildForward): Ditto.
709         * gm2-compiler/PHBuild.bnf (ProcedureDeclaration): Reimplement rule.
710         (PostProcedureHeading): New rule.
711         (ForwardDeclaration): Ditto.
712         (ProperProcedure): Ditto.
713         * gm2-compiler/SymbolTable.def (PutVarTok): New procedure.
714         (PutParam): Add typetok parameter.
715         (PutVarParam): Ditto.
716         (PutParamName): Ditto.
717         (GetDeclaredFor): New procedure function.
718         (AreParametersDefinedInDefinition): Ditto.
719         (PutParametersDefinedByForward): New procedure.
720         (GetParametersDefinedByForward): New procedure function.
721         (PutParametersDefinedByProper): New procedure.
722         (GetParametersDefinedByProper): New procedure function.
723         (GetProcedureDeclaredForward): Ditto.
724         (PutProcedureDeclaredForward): New procedure.
725         (GetProcedureDeclaredProper): New procedure function.
726         (PutProcedureDeclaredProper): New procedure.
727         (GetProcedureDeclaredDefinition): New procedure function.
728         (PutProcedureDeclaredDefinition): New procedure.
729         (GetVarDeclTypeTok): Ditto.
730         (PutVarDeclTypeTok): New procedure.
731         (GetVarDeclTok): Ditto.
732         (PutVarDeclTok): New procedure.
733         (GetVarDeclFullTok): Ditto.
734         * gm2-compiler/SymbolTable.mod (ProcedureDecl): New record type.
735         (VarDecl): Ditto.
736         (SymProcedure): Add new field Declared.
737         (SymVar): Add new field Declared.
738         (PutVarTok): New procedure.
739         (PutParam): Add typetok parameter.
740         (PutVarParam): Ditto.
741         (PutParamName): Ditto.
742         (GetDeclaredFor): New procedure function.
743         (AreParametersDefinedInDefinition): Ditto.
744         (PutParametersDefinedByForward): New procedure.
745         (GetParametersDefinedByForward): New procedure function.
746         (PutParametersDefinedByProper): New procedure.
747         (GetParametersDefinedByProper): New procedure function.
748         (GetProcedureDeclaredForward): Ditto.
749         (PutProcedureDeclaredForward): New procedure.
750         (GetProcedureDeclaredProper): New procedure function.
751         (PutProcedureDeclaredProper): New procedure.
752         (GetProcedureDeclaredDefinition): New procedure function.
753         (PutProcedureDeclaredDefinition): New procedure.
754         (GetVarDeclTypeTok): Ditto.
755         (PutVarDeclTypeTok): New procedure.
756         (GetVarDeclTok): Ditto.
757         (PutVarDeclTok): New procedure.
758         (GetVarDeclFullTok): Ditto.
759         (MakeProcedure): Initialize Declared field.
760         (MakeVar): Initialize Declared field.
761         * gm2-libs-log/FileSystem.def (FileNameChar): Add
762         missing return type.
763         * m2.flex: Add FORWARD keyword.
765 2024-10-04  Gaius Mulley  <gaiusmod2@gmail.com>
767         PR modula2/116918
768         * gm2-compiler/M2Swig.mod (DoCheckUnbounded): Escape
769         the % character used in array_functions with %%.
771 2024-10-01  Gaius Mulley  <gaiusmod2@gmail.com>
773         * gm2-libs/Indexing.def (FindIndice): New procedure
774         function.
775         * gm2-libs/Indexing.mod (FindIndice): Implement new
776         procedure function.
778 2024-10-01  Gaius Mulley  <gaiusmod2@gmail.com>
780         PR modula2/116918
781         * gm2-compiler/M2Swig.mod (AnnotateProcedure): Capitalize
782         the generated comment, split comment into multiple lines and
783         terminate the comment with ".  */".
784         (DoCheckUnbounded): Escape the % character with %%.
785         (DoWriteFile): Ditto.
787 2024-09-25  Mikael Morin  <mikael@gcc.gnu.org>
789         PR other/116801
790         * lang.opt.urls: Regenerate.
792 2024-09-23  Gaius Mulley  <gaiusmod2@gmail.com>
794         * Make-lang.in (m2/gm2-libs-boot/M2RTS.o): Remove
795         --suppress-noreturn.
796         * gm2-libs/M2RTS.mod (HaltC): Add noreturn attribute.
797         * gm2-libs-min/M2RTS.mod (HALT): Add LOOP END.
799 2024-09-21  Gaius Mulley  <gaiusmod2@gmail.com>
801         * gm2-compiler/M2Comp.mod (GenerateDependencies): Remove
802         unused parameter.
803         (WriteDep): Remove parameter dep.
804         (WritePhoneDep): Ditto.
806 2024-09-20  Gaius Mulley  <gaiusmod2@gmail.com>
808         * gm2-compiler/M2Check.mod (checkUnboundedArray): New
809         procedure function.
810         (checkUnboundedUnbounded): Ditto.
811         (checkUnbounded): Rewrite to check the unbounded data
812         type.
813         (checkPair): Add comment.
814         (doCheckPair): Add comment.
815         Remove tinfo parameter from the call to checkTypeKindViolation.
816         (checkTypeKindViolation): Remove ununsed parameter tinfo.
817         * gm2-libs-ch/UnixArgs.cc (GM2RTS.h): Remove include.
818         * gm2-libs-ch/m2rts.h (M2RTS_INIT): New define.
819         (M2RTS_DEP): Ditto.
820         (M2RTS_RegisterModule): New prototype.
821         (GM2RTS.h): Add include to the MC_M2 block.
823 2024-09-16  Gaius Mulley  <gaiusmod2@gmail.com>
825         * Make-lang.in (GM2_BOOT_INCLUDES): New variable.
826         (m2/gm2-compiler-boot/M2GCCDeclare.o): Rewrite to use
827         GM2_BOOT_INCLUDES.
828         (m2/gm2-compiler-boot/M2Error.o): Ditto.
829         (m2/gm2-compiler-boot/%.o): Ditto.
831 2024-09-16  Gaius Mulley  <gaiusmod2@gmail.com>
833         PR modula2/116181
834         * Make-lang.in (GM2-GCC-DEFS): Add gcctypes.def and
835         CDataTypes.def.
836         (MC-LIB-DEFS): Add CDataTypes.def.
837         * Make-maintainer.in (m2/gm2-pge-boot/$(SRC_PREFIX)M2RTS.o):
838         Change include path to pge-boot.
839         (m2/gm2-pge-boot/$(SRC_PREFIX)SymbolKey.o): Ditto.
840         (m2/gm2-pge-boot/$(SRC_PREFIX)NameKey.o): Ditto.
841         (m2/gm2-pge-boot/$(SRC_PREFIX)Lists.o): Ditto.
842         (m2/gm2-pge-boot/$(SRC_PREFIX)Output.o): Ditto.
843         (m2/gm2-pge-boot/$(SRC_PREFIX)bnflex.o): Ditto.
844         (m2/gm2-pge-boot/$(SRC_PREFIX)RTentity.h): Ditto.
845         (m2/gm2-pge-boot/$(SRC_PREFIX)RTentity.o): Ditto.
846         (m2/gm2-pge-boot/$(SRC_PREFIX)%.o): Ditto.
847         (GM2PATH): Add -I$(srcdir)/m2/gm2-gcc.
848         (m2/mc-boot-gen/$(SRC_PREFIX)%.h): Add -I$(srcdir)/m2/gm2-gcc.
849         (m2/mc-boot-gen/$(SRC_PREFIX)%.cc): Ditto.
850         * gm2-compiler/M2ALU.def (PushIntegerTree): Replace Tree with tree.
851         (PopIntegerTree): Ditto.
852         (PushRealTree): Ditto.
853         (PopRealTree): Ditto.
854         (PushComplexTree): Ditto.
855         (PopComplexTree): Ditto.
856         (PushSetTree): Ditto.
857         (PopSetTree): Ditto.
858         (PopConstructorTree): Ditto.
859         (ConstructSetConstant): Ditto.
860         (BuildRange): Ditto.
861         (CheckOrResetOverflow): Ditto.
862         (PushTypeOfTree): Ditto.
863         * gm2-compiler/M2ALU.mod (Tree): Replace with ...
864         (tree): ... this.
865         (gcctypes): Import location_t and tree.
866         (m2linemap): Remove import of location_t.
867         * gm2-compiler/M2Base.def (m2linemap): Replace with ...
868         (gcctypes): ... this.
869         * gm2-compiler/M2Base.mod (gcctypes): Import of location_t.
870         (m2linemap): Remove import of location_t.
871         * gm2-compiler/M2Bitset.mod (m2tree): Remove import of Tree.
872         * gm2-compiler/M2CaseList.mod (gcctypes): Import tree.
873         (m2tree): Remove import of Tree.
874         (Tree): Replace with ...
875         (tree): ... this.
876         * gm2-compiler/M2Emit.def (gcctypes): Import location_t.
877         * gm2-compiler/M2GCCDeclare.def (gcctypes): Import tree.
878         (PromoteToString): Replace Tree with tree.
879         (PromoteToCString): Ditto.
880         (ConstantKnownAndUsed): Ditto.
881         * gm2-compiler/M2GCCDeclare.mod (gcctypes): Import tree.
882         (m2tree): Remove import of Tree.
883         (Tree): Replace with ...
884         (tree): ... this.
885         * gm2-compiler/M2GenGCC.def (gcctypes): Import tree.
886         (m2tree): Remove import of Tree.
887         (Tree): Replace with ...
888         (tree): ... this.
889         (GetHighFromUnbounded): Replace Tree with tree.
890         (StringToChar): Ditto.
891         (LValueToGenericPtr): Ditto.
892         (ZConstToTypedConst): Ditto.
893         (PrepareCopyString): Ditto.
894         * gm2-compiler/M2GenGCC.mod (gcctypes): Import tree.
895         (m2tree): Remove import of Tree.
896         (Tree): Replace with ...
897         (tree): ... this.
898         * gm2-compiler/M2LangDump.def (gcctypes): Import tree.
899         (m2tree): Remove import of Tree.
900         (Tree): Replace with ...
901         (tree): ... this.
902         * gm2-compiler/M2LangDump.mod (Tree): Replace with ...
903         (tree): ... this.
904         * gm2-compiler/M2LexBuf.def (m2linemap): Replace with ...
905         (gcctypes): ... this.
906         * gm2-compiler/M2LexBuf.mod (m2linemap): Replace with ...
907         (gcctypes): ... this.
908         * gm2-compiler/M2Options.def (m2linemap): Replace with ...
909         (gcctypes): ... this.
910         * gm2-compiler/M2Options.mod (m2linemap): Replace with ...
911         (gcctypes): ... this.
912         * gm2-compiler/M2Range.def (m2linemap): Replace with ...
913         (gcctypes): ... this.
914         (CDataTypes): Import ConstCharStar.
915         (CodeErrorCheck): Replace Tree with tree.
916         (OverlapsRange): Ditto.
917         (IsEqual): Ditto.
918         (IsGreaterOrEqual): Ditto.
919         (IsGreater): Ditto.
920         (BuildIfCallWholeHandlerLoc): Replace Tree with tree.
921         Replace ADDRESS with ConstCharStar.
922         (BuildIfCallRealHandlerLoc): Ditto.
923         (GetMinMax): Ditto.
924         * gm2-compiler/M2Range.mod (m2tree): Remove Tree.
925         (CodeErrorCheck): Replace Tree with tree.
926         (OverlapsRange): Ditto.
927         (IsEqual): Ditto.
928         (IsGreaterOrEqual): Ditto.
929         (IsGreater): Ditto.
930         (GetMinMax): Ditto.
931         (BuildIfCallWholeHandlerLoc): Replace Tree with tree.
932         Replace ADDRESS with ConstCharStar.
933         (BuildIfCallRealHandlerLoc): Ditto.
934         * gm2-compiler/M2System.def (m2linemap): Replace with ...
935         (gcctypes): ... this.
936         * gm2-compiler/M2System.mod (m2linemap): Replace with ...
937         (gcctypes): ... this.
938         (CreateMinMaxFor): Replace Tree with tree.
939         (CreateType): Ditto.
940         (AttemptToCreateType): Ditto.
941         (CreateSetType): Ditto.
942         (AttemptToCreateSetType): Ditto.
943         * gm2-compiler/P2SymBuild.mod (m2linemap): Replace with ...
944         (gcctypes): ... this.
945         * gm2-compiler/SymbolConversion.def (m2tree): Replace with ...
946         (gcctypes): ... this.
947         (Mod2Gcc): Replace Tree with tree.
948         (Gcc2Mod): Ditto.
949         (AddModGcc): Ditto.
950         * gm2-compiler/SymbolConversion.mod (m2tree): Replace with ...
951         (gcctypes): ... this.
952         (Mod2Gcc): Replace Tree with tree.
953         (Gcc2Mod): Ditto.
954         (AddModGcc): Ditto.
955         (Mod2GccWithoutGCCPoison): Ditto.
956         * gm2-compiler/SymbolTable.def (m2tree): Replace with ...
957         (gcctypes): ... this.
958         (PutModuleFinallyFunction): Replace Tree with tree.
959         (GetModuleFinallyFunction): Ditto.
960         * gm2-compiler/SymbolTable.mod (m2tree): Replace with ...
961         (gcctypes): ... this.
962         (PutModuleFinallyFunction): Replace Tree with tree.
963         (GetModuleFinallyFunction): Ditto.
964         * gm2-compiler/m2flex.def (m2linemap): Replace with ...
965         (gcctypes): ... this.
966         * gm2-gcc/init.def (PerCompilationInit): Replace ADDRESS with ConstCharStar.
967         (CDataTypes): Import ConstCharStar.
968         * gm2-gcc/m2block.def (SYSTEM): Remove import.
969         (CDataTypes): Import ConstCharStar.
970         (m2linemap): Remove import.
971         (m2tree): Remove import.
972         (gcctypes): Import tree.
973         (global_constant): Replace Tree with tree.
974         (RememberInitModuleFunction): Ditto.
975         (DumpGlobalConstants): Ditto.
976         (RememberConstant): Ditto.
977         (RememberType): Ditto.
978         (pushDecl): Ditto.
979         (popFunctionScope): Ditto.
980         (pushFunctionScope): Ditto.
981         (finishFunctionCode): Ditto.
982         (finishFunctionDecl): Ditto.
983         (GetErrorNode): Ditto.
984         (includeDecl): Ditto.
985         (GetGlobals): Ditto.
986         (GetGlobalContext): Ditto.
987         (begin_statement_list): Ditto.
988         (push_statement_list): Ditto.
989         (pop_statement_list): Ditto.
990         (getLabel): Replace Tree with tree.
991         Replace ADDRESS with ConstCharStar.
992         * gm2-gcc/m2builtins.def (CDataTypes): Import ConstCharStar.
993         (GetBuiltinConst): Replace Tree with tree.
994         (GetBuiltinConstType): Ditto.
995         (GetBuiltinTypeInfoType): Ditto.
996         (GetBuiltinTypeInfo): Ditto.
997         (BuiltinExists): Ditto.
998         (BuildBuiltinTree): Ditto.
999         (BuiltinMemCopy): Ditto.
1000         (BuiltinMemSet): Ditto.
1001         (BuiltInAlloca): Ditto.
1002         (BuiltInIsfinite): Ditto.
1003         * gm2-gcc/m2convert.def (CDataTypes): Import ConstCharStar.
1004         (ToWord): Ditto.
1005         (ToCardinal): Ditto.
1006         (ToInteger): Ditto.
1007         (ToBitset): Ditto.
1008         (ConvertToPtr): Ditto.
1009         (BuildConvert): Ditto.
1010         (ConvertConstantAndCheck): Ditto.
1011         (ConvertString): Ditto.
1012         (GenericToType): Ditto.
1013         * gm2-gcc/m2decl.cc (m2decl_BuildParameterDeclaration): Add
1014         const attribute.
1015         * gm2-gcc/m2decl.def (CDataTypes): Import ConstCharStar.
1016         (BuildModuleCtor): Ditto.
1017         (DeclareModuleCtor): Ditto.
1018         (DeclareM2linkForcedModuleInitOrder): Ditto.
1019         (DeclareM2linkStaticInitialization): Ditto.
1020         (BuildPtrToTypeString): Ditto.
1021         (BuildIntegerConstant): Ditto.
1022         (BuildStringConstantType): Ditto.
1023         (DeclareKnownVariable): Ditto.
1024         (DeclareKnownConstant): Ditto.
1025         (BuildParameterDeclaration): Ditto.
1026         (BuildEndFunctionDeclaration): Ditto.
1027         (RememberVariables): Ditto.
1028         (BuildConstLiteralNumber): Ditto.
1029         (BuildStringConstant): Ditto.
1030         (BuildCStringConstant): Ditto.
1031         (GetDeclContext): Ditto.
1032         * gm2-gcc/m2decl.h (m2decl_BuildParameterDeclaration): Add
1033         const attribute.
1034         * gm2-gcc/m2except.def (CDataTypes): Import ConstCharStar.
1035         (BuildThrow): Ditto.
1036         (BuildTryBegin): Ditto.
1037         (BuildTryEnd): Ditto.
1038         (BuildCatchBegin): Ditto.
1039         (BuildCatchEnd): Ditto.
1040         * gm2-gcc/m2expr.def (CDataTypes): Import ConstCharStar.
1041         (CSTIntToString): Ditto.
1042         (CSTIntToChar): Ditto.
1043         (CheckConstStrZtypeRange): Ditto.
1044         (CompareTrees): Ditto.
1045         (GetPointerOne): Ditto.
1046         (GetPointerZero): Ditto.
1047         (GetWordOne): Ditto.
1048         (GetWordZero): Ditto.
1049         (GetIntegerOne): Ditto.
1050         (GetIntegerZero): Ditto.
1051         (GetCardinalOne): Ditto.
1052         (GetCardinalZero): Ditto.
1053         (GetSizeOfInBits): Ditto.
1054         (GetSizeOf): Ditto.
1055         (BuildLogicalRotate): Ditto.
1056         (BuildLRRn): Ditto.
1057         (BuildLRLn): Ditto.
1058         (BuildMask): Ditto.
1059         (BuildMult): Ditto.
1060         (BuildMultCheck): Ditto.
1061         (BuildLRR): Ditto.
1062         (BuildLRL): Ditto.
1063         (BuildLogicalShift): Ditto.
1064         (BuildLSR): Ditto.
1065         (BuildLSL): Ditto.
1066         (BuildDivM2): Ditto.
1067         (BuildDivM2Check): Ditto.
1068         (BuildModM2): Ditto.
1069         (BuildModM2Check): Ditto.
1070         (BuildModFloor): Ditto.
1071         (BuildDivCeil): Ditto.
1072         (BuildModCeil): Ditto.
1073         (BuildDivFloor): Ditto.
1074         (BuildModTrunc): Ditto.
1075         (BuildDivTrunc): Ditto.
1076         (BuildDivTruncCheck): Ditto.
1077         (BuildRDiv): Ditto.
1078         (BuildSubCheck): Ditto.
1079         (BuildAddCheck): Ditto.
1080         (BuildSub): Ditto.
1081         (BuildAdd): Ditto.
1082         (FoldAndStrip): Ditto.
1083         (StringLength): Ditto.
1084         (TreeOverflow): Ditto.
1085         (RemoveOverflow): Ditto.
1086         (BuildCoerce): Ditto.
1087         (BuildTrunc): Ditto.
1088         (BuildNegate): Ditto.
1089         (BuildNegateCheck): Ditto.
1090         (BuildSetNegate): Ditto.
1091         (BuildTBitSize): Ditto.
1092         (BuildSize): Ditto.
1093         (BuildAddr): Ditto.
1094         (BuildOffset1): Ditto.
1095         (BuildOffset): Ditto.
1096         (BuildLogicalOrAddress): Ditto.
1097         (BuildLogicalOr): Ditto.
1098         (BuildLogicalAnd): Ditto.
1099         (BuildSymmetricDifference): Ditto.
1100         (BuildLogicalDifference): Ditto.
1101         (BuildLessThan): Ditto.
1102         (BuildGreaterThan): Ditto.
1103         (BuildLessThanOrEqual): Ditto.
1104         (BuildGreaterThanOrEqual): Ditto.
1105         (BuildEqualTo): Ditto.
1106         (BuildNotEqualTo): Ditto.
1107         (BuildIsSuperset): Ditto.
1108         (BuildIsNotSuperset): Ditto.
1109         (BuildIsSubset): Ditto.
1110         (BuildIsNotSubset): Ditto.
1111         (BuildIfConstInVar): Ditto.
1112         (BuildIfNotConstInVar): Ditto.
1113         (BuildIfVarInVar): Ditto.
1114         (BuildIfNotVarInVar): Ditto.
1115         (BuildForeachWordInSetDoIfExpr): Ditto.
1116         (BuildIfInRangeGoto): Ditto.
1117         (BuildIfNotInRangeGoto): Ditto.
1118         (BuildArray): Ditto.
1119         (BuildComponentRef): Ditto.
1120         (BuildIndirect): Ditto.
1121         (IsTrue): Ditto.
1122         (IsFalse): Ditto.
1123         (GetCstInteger): Ditto.
1124         (AreConstantsEqual): Ditto.
1125         (AreRealOrComplexConstantsEqual): Ditto.
1126         (DetermineSign): Ditto.
1127         (BuildCap): Ditto.
1128         (BuildAbs): Ditto.
1129         (BuildRe): Ditto.
1130         (BuildIm): Ditto.
1131         (BuildCmplx): Ditto.
1132         (BuildBinaryForeachWordDo): Ditto.
1133         (BuildBinarySetDo): Ditto.
1134         (ConstantExpressionWarning): Ditto.
1135         (BuildAddAddress): Ditto.
1136         (calcNbits): Ditto.
1137         (OverflowZType): Ditto.
1138         (BuildCondIfExpression): Ditto.
1139         * gm2-gcc/m2linemap.def (CDataTypes): Import ConstCharStar.
1140         * gm2-gcc/m2misc.def (m2tree): Replace with ...
1141         (gcctypes): ... this.
1142         (DebugTree): Replace Tree with tree.
1143         * gm2-gcc/m2pp.def (m2tree): Replace with ...
1144         (gcctypes): ... this.
1145         (DumpGimpleFd): Replace Tree with tree.
1146         * gm2-gcc/m2statement.cc (m2statement_BuildBuiltinCallTree):
1147         Remove unused location parameter.
1148         * gm2-gcc/m2statement.def (m2linemap): Replace with ...
1149         (gcctypes): ... this.
1150         (CDataTypes): Import CharStar.
1151         (DoJump): Replace Tree with tree.
1152         Replace ADDRESS with CharStar.
1153         (BuildStartFunctionCode): Replace Tree with tree.
1154         (BuildEndFunctionCode): Ditto.
1155         (BuildReturnValueCode): Ditto.
1156         (BuildAssignmentTree): Ditto.
1157         (BuildAssignmentStatement): Ditto.
1158         (BuildGoto): Ditto.
1159         (DeclareLabel): Ditto.
1160         (BuildIfThenDoEnd): Ditto.
1161         (BuildIfThenElseEnd): Ditto.
1162         (BuildParam): Ditto.
1163         (BuildFunctionCallTree): Ditto.
1164         (BuildProcedureCallTree): Ditto.
1165         (BuildIndirectProcedureCallTree): Ditto.
1166         (BuildFunctValue): Ditto.
1167         (BuildCall2): Ditto.
1168         (BuildCall3): Ditto.
1169         (SetLastFunction): Ditto.
1170         (GetLastFunction): Ditto.
1171         (GetParamTree): Ditto.
1172         (BuildTryFinally): Ditto.
1173         (BuildCleanUp): Ditto.
1174         (BuildAsm): Ditto.
1175         (BuildUnaryForeachWordDo): Ditto.
1176         (BuildExcludeVarConst): Ditto.
1177         (BuildExcludeVarVar): Ditto.
1178         (BuildIncludeVarConst): Ditto.
1179         (BuildIncludeVarVar): Ditto.
1180         (BuildStart): Ditto.
1181         (BuildEnd): Ditto.
1182         (BuildCallInner): Ditto.
1183         (BuildBuiltinCallTree):  Remove unused location parameter.
1184         * gm2-gcc/m2statement.h (m2statement_BuildBuiltinCallTree): Remove
1185         unused location parameter.
1186         * gm2-gcc/m2tree.def (gcctypes): Import tree.
1187         (IsAConstant): Replace Tree with tree.
1188         (IsOrdinal): Ditto.
1189         (IsTreeOverflow): Ditto.
1190         (skip_const_decl): Ditto.
1191         (skip_type_decl): Ditto.
1192         (is_type): Ditto.
1193         (is_array): Ditto.
1194         (is_var): Ditto.
1195         (debug_tree): Ditto.
1196         (IstreeOverflow): Ditto.
1197         * gm2-gcc/m2treelib.def (m2linemap): Replace with ...
1198         (gcctypes): ... this.
1199         (get_set_address_if_var): Ditto.
1200         (get_set_field_rhs): Ditto.
1201         (get_set_field_lhs): Ditto.
1202         (get_set_address): Ditto.
1203         (get_set_value): Ditto.
1204         (get_field_no): Ditto.
1205         (get_rvalue): Ditto.
1206         (DoCall): Ditto.
1207         (build_modify_expr): Ditto.
1208         (do_jump_if_bit): Ditto.
1209         * gm2-gcc/m2type.def (m2linemap): Replace with ...
1210         (gcctypes): ... this.
1211         (m2tree): Remove.
1212         (CDataTypes): Import ConstCharStar and charStar.
1213         (ValueInTypeRange): Replace Tree with tree.
1214         (ValueOutOfTypeRange): Ditto.
1215         (ExceedsTypeRange): Ditto.
1216         (WithinTypeRange): Ditto.
1217         (BuildSubrangeType): Ditto.
1218         (BuildCharConstant): Ditto.
1219         (BuildCharConstantChar): Ditto.
1220         (BuildArrayConstructorElement): Ditto.
1221         (BuildEndArrayConstructor): Ditto.
1222         (BuildStartArrayConstructor): Ditto.
1223         (BuildRecordConstructorElement): Ditto.
1224         (BuildEndRecordConstructor): Ditto.
1225         (BuildStartRecordConstructor): Ditto.
1226         (BuildEndSetConstructor): Ditto.
1227         (BuildSetConstructorElement): Ditto.
1228         (BuildStartSetConstructor): Ditto.
1229         (BuildSetType): Ditto.
1230         (BuildConstPointerType): Ditto.
1231         (BuildPointerType): Ditto.
1232         (BuildEnumerator): Ditto.
1233         (BuildEndEnumeration): Ditto.
1234         (BuildStartEnumeration): Ditto.
1235         (BuildTypeDeclaration): Ditto.
1236         (GetMaxFrom): Ditto.
1237         (GetMinFrom): Ditto.
1238         (GetDefaultType): Ditto.
1239         (BuildEndType): Ditto.
1240         (BuildStartType): Ditto.
1241         (BuildVariableArrayAndDeclare): Ditto.
1242         (BuildProcTypeParameterDeclaration): Ditto.
1243         (BuildStartFunctionType): Ditto.
1244         (BuildEndFunctionType): Ditto.
1245         (GetTreeType): Ditto.
1246         (DeclareKnownType): Ditto.
1247         (GetM2ZType): Ditto.
1248         (GetM2RType): Ditto.
1249         (BuildSetTypeFromSubrange): Ditto.
1250         (BuildSmallestTypeRange): Ditto.
1251         (GetBooleanType): Ditto.
1252         (GetBooleanFalse): Ditto.
1253         (GetBooleanTrue): Ditto.
1254         (GetPackedBooleanType): Ditto.
1255         (GetCharType): Ditto.
1256         (GetByteType): Ditto.
1257         (GetVoidType): Ditto.
1258         (GetBitnumType): Ditto.
1259         (GetRealType): Ditto.
1260         (GetLongRealType): Ditto.
1261         (GetShortRealType): Ditto.
1262         (GetLongIntType): Ditto.
1263         (GetPointerType): Ditto.
1264         (GetCardinalType): Ditto.
1265         (GetIntegerType): Ditto.
1266         (GetWordType): Ditto.
1267         (GetM2CardinalType): Ditto.
1268         (GetBitsetType): Ditto.
1269         (GetM2CType): Ditto.
1270         (GetProcType): Ditto.
1271         (GetM2ComplexType): Ditto.
1272         (GetM2LongComplexType): Ditto.
1273         (GetM2ShortComplexType): Ditto.
1274         (GetM2Complex128): Ditto.
1275         (GetM2Complex96): Ditto.
1276         (GetM2Complex64): Ditto.
1277         (GetM2Complex32): Ditto.
1278         (GetM2Real128): Ditto.
1279         (GetM2Real96): Ditto.
1280         (GetM2Real64): Ditto.
1281         (GetM2Real32): Ditto.
1282         (GetM2Bitset32): Ditto.
1283         (GetM2Bitset16): Ditto.
1284         (GetM2Bitset8): Ditto.
1285         (GetM2Word64): Ditto.
1286         (GetM2Word32): Ditto.
1287         (GetM2Word16): Ditto.
1288         (GetM2Cardinal64): Ditto.
1289         (GetM2Cardinal32): Ditto.
1290         (GetM2Cardinal16): Ditto.
1291         (GetM2Cardinal8): Ditto.
1292         (GetM2Integer64): Ditto.
1293         (GetM2Integer32): Ditto.
1294         (GetM2Integer16): Ditto.
1295         (GetM2Integer8): Ditto.
1296         (GetISOLocType): Ditto.
1297         (GetISOByteType): Ditto.
1298         (GetISOWordType): Ditto.
1299         (GetShortCardType): Ditto.
1300         (GetM2ShortCardType): Ditto.
1301         (GetShortIntType): Ditto.
1302         (GetM2ShortIntType): Ditto.
1303         (GetM2LongCardType): Ditto.
1304         (GetM2LongIntType): Ditto.
1305         (GetM2LongRealType): Ditto.
1306         (GetM2RealType): Ditto.
1307         (GetM2ShortRealType): Ditto.
1308         (GetM2IntegerType): Ditto.
1309         (GetM2CharType): Ditto.
1310         (GetCSizeTType): Ditto.
1311         (GetCSSizeTType): Ditto.
1312         (BuildArrayStringConstructor): Ditto.
1313         (RealToTree): Ditto.
1314         (BuildStartRecord): Ditto.
1315         (BuildStartUnion): Ditto.
1316         (BuildStartVarient): Ditto.
1317         (BuildEndVarient): Ditto.
1318         (BuildStartFieldVarient): Ditto.
1319         (BuildEndFieldVarient): Ditto.
1320         (BuildStartFieldRecord): Ditto.
1321         (BuildFieldRecord): Ditto.
1322         (ChainOn): Ditto.
1323         (ChainOnParamValue): Ditto.
1324         (AddStringToTreeList): Ditto.
1325         (BuildEndRecord): Ditto.
1326         (SetAlignment): Ditto.
1327         (SetDeclPacked): Ditto.
1328         (SetTypePacked): Ditto.
1329         (SetRecordFieldOffset): Ditto.
1330         (BuildPackedFieldRecord): Ditto.
1331         (BuildNumberOfArrayElements): Ditto.
1332         (AddStatement): Ditto.
1333         (MarkFunctionReferenced): Ditto.
1334         (BuildArrayIndexType): Ditto.
1335         (GetArrayNoOfElements): Ditto.
1336         (BuildEndArrayType): Ditto.
1337         (PutArrayType): Ditto.
1338         (BuildStartArrayType): Ditto.
1339         (IsAddress): Ditto.
1340         (SameRealType): Ditto.
1341         * m2.flex (Gm2linemap.h): Include.
1342         * mc-boot/GDynamicStrings.cc: Rebuild.
1343         * mc-boot/GFIO.cc: Ditto.
1344         * mc-boot/GIndexing.cc: Ditto.
1345         * mc-boot/GM2Dependent.cc: Ditto.
1346         * mc-boot/GSArgs.cc: Ditto.
1347         * mc-boot/GStringConvert.cc: Ditto.
1348         * mc-boot/Gdecl.cc: Ditto.
1349         * mc-boot/Gdecl.h: Ditto.
1350         * mc-boot/Gdtoa.h: Ditto.
1351         * mc-boot/Gkeyc.cc: Ditto.
1352         * mc-boot/Gkeyc.h: Ditto.
1353         * mc-boot/Glibc.h: Ditto.
1354         * mc-boot/GmcComp.cc: Ditto.
1355         * mc-boot/GmcLexBuf.cc: Ditto.
1356         * mc-boot/GmcPreprocess.cc: Ditto.
1357         * mc-boot/GmcStream.cc: Ditto.
1358         * mc-boot/Gmcp1.cc: Ditto.
1359         * mc-boot/Gmcp3.cc: Ditto.
1360         * mc-boot/Gmcp4.cc: Ditto.
1361         * mc-boot/Gmcp5.cc: Ditto.
1362         * mc-boot/GnameKey.cc: Ditto.
1363         * mc-boot/Gvarargs.cc: Ditto.
1364         * mc/decl.def (putDefUnqualified): New procedure function.
1365         (isDefUnqualified): Ditto.
1366         * mc/decl.mod (defT): Add unqualified field.
1367         (charStarN): New variable.
1368         (constCharStarN): Ditto.
1369         (checkGccType): New procedure.
1370         (checkCDataTypes): Ditto.
1371         (import): Call checkGccType and checkCDataTypes.
1372         (putDefUnqualified): New procedure function.
1373         (isDefUnqualified): Ditto.
1374         * mc/keyc.def (useGccTree): New procedure.
1375         (useGccLocation): Ditto.
1376         * mc/keyc.mod (checkGccConfigSystem): Call checkGccConfigSystem.
1377         (useGccTree): New procedure.
1378         (useGccLocation): Ditto.
1379         * mc/mcp1.bnf (decl): Import putDefUnqualified.
1380         (Export): Call putDefUnqualified.
1381         * gm2-gcc/CDataTypes.def: New file.
1382         * gm2-gcc/gcctypes.def: New file.
1384 2024-09-02  Gaius Mulley  <gaiusmod2@gmail.com>
1386         PR modula2/116557
1387         * gm2-lang.cc: Replace physical address with URL in GPL header.
1388         * gm2-lang.h: Ditto.
1389         * images/LICENSE.IMG: Ditto.
1390         * m2-tree.def: Ditto.
1391         * mc-boot/GIndexing.cc: Ditto.
1392         * mc-boot/Gkeyc.cc: Ditto.
1393         * mc-boot/Glists.cc: Ditto.
1394         * mc-boot/GmcComp.cc: Ditto.
1395         * mc-boot/GmcDebug.cc: Ditto.
1396         * mc-boot/GmcFileName.cc: Ditto.
1397         * mc-boot/GmcMetaError.cc: Ditto.
1398         * mc-boot/GmcOptions.cc: Ditto.
1399         * mc-boot/GmcPreprocess.cc: Ditto.
1400         * mc-boot/GmcPretty.cc: Ditto.
1401         * mc-boot/GmcPrintf.cc: Ditto.
1402         * mc-boot/GmcQuiet.cc: Ditto.
1403         * mc-boot/GmcReserved.cc: Ditto.
1404         * mc-boot/GmcSearch.cc: Ditto.
1405         * mc-boot/GmcStack.cc: Ditto.
1406         * mc/Indexing.mod: Ditto.
1407         * mc/keyc.mod: Ditto.
1408         * mc/lists.mod: Ditto.
1409         * mc/mcComp.mod: Ditto.
1410         * mc/mcDebug.mod: Ditto.
1411         * mc/mcFileName.mod: Ditto.
1412         * mc/mcMetaError.mod: Ditto.
1413         * mc/mcOptions.mod: Ditto.
1414         * mc/mcPreprocess.mod: Ditto.
1415         * mc/mcPretty.mod: Ditto.
1416         * mc/mcPrintf.mod: Ditto.
1417         * mc/mcQuiet.mod: Ditto.
1418         * mc/mcReserved.mod: Ditto.
1419         * mc/mcSearch.mod: Ditto.
1420         * mc/mcStack.mod: Ditto.
1421         * tools-src/buildpg: Ditto.
1422         * tools-src/calcpath: Ditto.
1423         * tools-src/checkmeta.py: Ditto.
1424         * tools-src/def2doc.py: Ditto.
1425         * tools-src/makeSystem: Ditto.
1426         * tools-src/tidydates.py: Ditto.
1428 2024-09-02  Richard Sandiford  <richard.sandiford@arm.com>
1430         * gm2-gcc/m2block.cc (flush_pending_note): Rename ASM_INPUT_P
1431         to ASM_BASIC_P.
1432         * gm2-gcc/m2statement.cc (m2statement_BuildAsm): Likewise.
1434 2024-08-30  Gaius Mulley  <gaiusmod2@gmail.com>
1436         PR modula2/116181
1437         * pge-boot/GM2RTS.h: Regenerate.
1438         * pge-boot/m2rts.h: Ditto.
1440 2024-08-28  Gaius Mulley  <gaiusmod2@gmail.com>
1442         PR modula2/116181
1443         * Make-lang.in (MC_SRC_FLAGS): New macro.
1444         (m2/mc-boot/$(SRC_PREFIX)%.o): Use MC_SRC_FLAGS.
1445         (m2/mc-boot-ch/$(SRC_PREFIX)%.o): Ditto.
1446         (m2/gm2-libs-boot/M2RTS.o): Ditto.
1447         (m2/gm2-libs-boot/%.o): Ditto.
1448         (GM2-LIBS-BOOT-H): New macro.
1449         (m2/gm2-libs-boot/RTcodummy.o): Use MC_SRC_FLAGS.
1450         Remove gm2-libs-host.h from the dependancy.
1451         (m2/gm2-libs-boot/wrapc.o): Use MC_SRC_FLAGS.
1452         Add dependancy GM2-LIBS-BOOT-H.
1453         (m2/gm2-libs-boot/UnixArgs.o): Ditto.
1454         (m2/gm2-libs-boot/choosetemp.o): Ditto.
1455         (m2/gm2-libs-boot/errno.o): Ditto.
1456         (m2/gm2-libs-boot/dtoa.o): Ditto.
1457         (m2/gm2-libs-boot/ldtoa.o): Ditto.
1458         (m2/gm2-libs-boot/termios.o): Ditto.
1459         (m2/gm2-libs-boot/SysExceptions.o): Ditto.
1460         (m2/gm2-compiler-boot/M2GCCDeclare.o): Add gm2-libs-ch to the
1461         search path.
1462         (m2/gm2-compiler-boot/M2Error.o): Ditto.
1463         (m2/gm2-compiler-boot/%.o): Ditto.
1464         (m2/pge-boot/%.o): Ditto.
1465         * gm2-gcc/m2color.cc (m2color_colorize_start): Replace parameter
1466         type char to void and recast to char * when calling colorize_start.
1467         * gm2-gcc/m2color.h (m2color_colorize_start): Replace parameter
1468         type char to void.
1469         * gm2-gcc/m2type.h: Remove #if 0 block.
1470         * gm2-libs-ch/SysExceptions.c (DECL_PROC_T): Provide alternative
1471         defines for MC an gm2.
1472         (PROC_FUNC): Ditto.
1473         (EXTERN): Force undefine and redefine.
1474         (SysExceptions_InitExceptionHandlers): Rewrite function
1475         declaration using defined macros.
1476         (_M2_SysExceptions_init): Use EXTERN.
1477         (_M2_SysExceptions_finish): Replace with ...
1478         (_M2_SysExceptions_fini): ... this and add parameters.
1479         * gm2-libs-ch/UnixArgs.cc (gm2-libs-host.h): Include.
1480         (GUnixArgs.h): Include.
1481         (GM2RTS.h): Include.
1482         (UnixArgs_GetArgV): Change return type to void *.
1483         (UnixArgs_GetEnvV): Ditto.
1484         * gm2-libs-ch/m2rts.h (M2RTS_RegisterModule_Cstr): Add new
1485         conditional macro.
1486         (M2RTS_RequestDependant): Remove.
1487         (M2RTS_RegisterModule): Ditto.
1488         (M2RTS_Terminate): Ditto.
1489         (M2RTS_DeconstructModules): Ditto.
1490         (M2RTS_Halt): Ditto.
1491         (_M2_M2RTS_init): Ditto.
1492         (M2RTS_ConstructModules): Ditto.
1493         * gm2-libs-ch/termios.c (_termios_C): Define.
1494         (EXTERN): Add conditional definition.
1495         (doSetUnset): New function.
1496         (_M2_termios_init): Add correct parameters.
1497         (_M2_termios_finish): Ditto.
1498         (_M2_termios_fini): Ditto.
1499         * mc-boot-ch/GSysExceptions.c (DECL_PROC_T): New define.
1500         (PROC_FUNC): Ditto.
1501         (EXTERN): Force undef.
1502         (SysExceptions_InitExceptionHandlers): Rewrite.
1503         * mc-boot-ch/Glibc.c (libc_open): Rename parameter
1504         oflag to flags.
1505         * mc-boot-ch/Gtermios.cc (_termios_C): New define.
1506         (KillTermios): Change parameter type from
1507         struct termios * to termios_TERMIOS.
1508         (tcsnow): Rewrite.
1509         (tcsnow): Rewrite.
1510         (tcsdrain): Rewrite.
1511         (tcsflush): Rewrite.
1512         (cfgetospeed): Rewrite.
1513         (cfgetispeed): Rewrite.
1514         (cfsetospeed): Rewrite.
1515         (cfsetispeed): Rewrite.
1516         (cfsetspeed): Rewrite.
1517         (cfsetspeed): Rewrite.
1518         (tcgetattr): Rewrite.
1519         (tcsetattr): Rewrite.
1520         (cfmakeraw): Rewrite.
1521         (tcsendbreak): Rewrite.
1522         (tcdrain): Rewrite.
1523         (tcflushi): Rewrite.
1524         (tcflusho): Rewrite.
1525         (tcflushio): Rewrite.
1526         (tcflowoni): Rewrite.
1527         (tcflowoffi): Rewrite.
1528         (tcflowono): Rewrite.
1529         (tcflowoffo): Rewrite.
1530         (GetFlag): Rewrite.
1531         (SetFlag): Rewrite.
1532         (GetChar): Rewrite.
1533         (SetChar): Rewrite.
1534         (InitTermios): Rewrite.
1535         * pge-boot/GM2RTS.cc: Regenerate.
1536         * pge-boot/GSysExceptions.cc: Ditto.
1537         * pge-boot/Gtermios.cc: Ditto.
1538         * pge-boot/m2rts.h: Rewrite.
1539         * mc-boot-ch/GSYSTEM.h: New file.
1540         * mc-boot-ch/GSysExceptions.h: New file.
1541         * mc-boot-ch/Gtermios.h: New file.
1543 2024-08-24  Gaius Mulley  <gaiusmod2@gmail.com>
1545         * gm2-libs/libc.def (atof): Export unqualified.
1546         (atoi): Ditto.
1547         (atol): Ditto.
1548         (atoll): Ditto.
1549         (strtod): Ditto.
1550         (strtof): Ditto.
1551         (strtold): Ditto.
1552         (strtol): Ditto.
1553         (strtoll): Ditto.
1554         (strtoul): Ditto.
1555         (strtoull): Ditto.
1557 2024-08-16  Gaius Mulley  <gaiusmod2@gmail.com>
1559         * gm2-libs-iso/StdChans.mod (in): Rename to ...
1560         (inch): ... this.
1561         (out): Rename to ...
1562         (outch): ... this.
1563         (err): Rename to ...
1564         (errch): ... this.
1566 2024-08-16  Gaius Mulley  <gaiusmod2@gmail.com>
1568         * gm2-libs/DynamicStrings.mod (Slice): Rename end to stop.
1570 2024-08-16  Gaius Mulley  <gaiusmod2@gmail.com>
1572         PR modula2/116378
1573         * gm2-libs-iso/TermFile.mod (termOpen): Add third argument
1574         for open.
1575         * gm2-libs/libc.def (open): Remove vararg and use INTEGER for
1576         mode parameter three.
1577         * mc-boot-ch/Glibc.c (tracedb_open): Replace mode_t with int.
1578         (libc_open): Rewrite without varargs.
1579         * mc-boot/Glibc.h (libc_open): Replace varargs with int mode.
1580         * pge-boot/Glibc.cc (libc_open): Rewrite.
1581         * pge-boot/Glibc.h (libc_open): Replace varargs with int mode.
1583 2024-08-12  Gaius Mulley  <gaiusmod2@gmail.com>
1585         PR modula2/116181
1586         * gm2-compiler/ppg.mod (FindStr): Initialize j.
1587         * gm2-libs-ch/UnixArgs.cc (_M2_UnixArgs_ctor): Replace
1588         M2RTS_RegisterModule with M2RTS_RegisterModule_Cstr.
1589         * gm2-libs-ch/dtoa.cc (_M2_dtoa_ctor): Ditto.
1590         * gm2-libs-ch/ldtoa.cc (ldtoa_strtold): Cast parameter s
1591         for strtod.
1592         (_M2_ldtoa_ctor): Replace M2RTS_RegisterModule with
1593         M2RTS_RegisterModule_Cstr.
1594         * gm2-libs-ch/m2rts.h (M2RTS_RegisterModule_Cstr): New
1595         define.
1596         (M2RTS_RegisterModule): Remove const.
1597         * mc-boot-ch/GSelective.c (Selective_FdIsSet): Return bool
1598         rather than int.
1599         * mc-boot-ch/Gldtoa.cc (ldtoa_strtold): Change const char to
1600         void.
1601         Cast s before passing as a parameter to strtod.
1602         * mc-boot-ch/Glibc.c (tracedb_open): Replace const char with const
1603         void.
1604         (libc_perror): Replace char with const char.
1605         (libc_printf): Replace char with void.
1606         (libc_snprintf): Replace char with void.
1607         Add const_cast for parameter to index.
1608         Add reinterpret_cast for parameter to vsnprintf.
1609         (libc_open): Replace first paramter type char with void.
1610         Add vararg for the third parameter.
1611         * mc-boot-ch/Gm2rtsdummy.cc (M2RTS_RequestDependant): Remove #if 0 code.
1612         (m2pim_M2RTS_RegisterModule): Change const char parameters to void
1613         (M2RTS_RegisterModule): Ditto.
1614         (_M2_M2RTS_init): Remove #if 0 code.
1615         (M2RTS_ConstructModules): Ditto.
1616         (M2RTS_Terminate): Ditto.
1617         (M2RTS_DeconstructModules): Ditto.
1618         (M2RTS_Halt): Ditto.
1619         * mc-boot-ch/Gtermios.cc (SetFlag): Return bool.
1620         * mc-boot-ch/m2rts.h (M2RTS_RegisterModule_Cstr): New define.
1621         (M2RTS_RegisterModule): Change const char parameters to void.
1622         * mc-boot/Gdecl.cc: Regenerate.
1623         * mc/decl.mod (getNextConstExp): Reimplement.
1624         * pge-boot/GDynamicStrings.cc: Regenerate.
1625         * pge-boot/GDynamicStrings.h: Ditto.
1626         * pge-boot/GM2RTS.h (M2RTS_RegisterModule_Cstr): New function.
1627         (M2RTS_RegisterModule): Reformat.
1628         * pge-boot/GSymbolKey.cc: Regenerate.
1629         * pge-boot/GSysExceptions.cc (_M2_SysExceptions_init): Add correct parameters.
1630         (_M2_SysExceptions_fini): Ditto.
1631         * pge-boot/GUnixArgs.cc (_M2_UnixArgs_ctor::_M2_UnixArgs_ctor):
1632         Replace call to M2RTS_RegisterModule with M2RTS_RegisterModuleCstr.
1633         * pge-boot/Gerrno.cc (_M2_errno_init): Add correct parameters.
1634         (_M2_errno_fini): Ditto.
1635         * pge-boot/Gldtoa.cc (ldtoa_strtold): Replace const char with
1636         void.
1637         Use reinterpret_cast when passing s to strtod.
1638         Replace true with TRUE.
1639         * pge-boot/Gldtoa.h (ldtoa_strtold): Tidy up.
1640         * pge-boot/Glibc.cc (libc_read): Use size_t as the return type.
1641         (libc_write): Ditto.
1642         (libc_strlen): Ditto.
1643         (libc_perror): Replace char with const char.
1644         (libc_printf): Replace char to const char.
1645         Cast parameter to index using const_cast.
1646         (libc_snprintf): Replace char with void.
1647         Cast parameter to index using const_cast.
1648         (libc_malloc): Replace parameter type with size_t.
1649         (libc_memcpy): Replace third parameter type with size_t.
1650         (libc_open): Use varargs.
1651         * pge-boot/Glibc.h (libc_perror): Add _string_high parameter.
1652         * pge-boot/Gpge.cc: Regenerate.
1653         * pge-boot/Gtermios.cc (SetFlag): Replace return type with bool.
1654         (_M2_termios_init): Add correct parameters.
1655         (_M2_termios_fini): Ditto.
1656         * pge-boot/m2rts.h (M2RTS_RegisterModule_Cstr): New define.
1657         (M2RTS_RegisterModule): Replace const char with void.
1659 2024-08-10  Wilken Gottwalt  <wilken.gottwalt@posteo.net>
1661         * gm2-libs-iso/MemStream.mod: Guard debug output.
1663 2024-07-28  Gaius Mulley  <gaiusmod2@gmail.com>
1665         PR modula2/115823
1666         * gm2-gcc/m2builtins.cc (define_builtin): Build
1667         the function decl using the libname.
1669 2024-07-24  Gaius Mulley  <gaiusmod2@gmail.com>
1671         * gm2-compiler/M2StateCheck.mod (GenerateError): Add
1672         symbol name to the error message.
1674 2024-07-23  Gaius Mulley  <gaiusmod2@gmail.com>
1676         PR modula2/116048
1677         * Make-lang.in (GM2-COMP-BOOT-DEFS): Add M2StateCheck.def.
1678         (GM2-COMP-BOOT-MODS): Add M2StateCheck.mod.
1679         (GM2-COMP-DEFS): Add M2StateCheck.def.
1680         (GM2-COMP-MODS): Add M2StateCheck.mod.
1681         * gm2-compiler/M2Quads.mod (StartBuildWith): Generate
1682         unrecoverable error is the qualident type is NulSym.
1683         Replace MetaError1 with MetaErrorT1 and position the error
1684         to the qualident.
1685         * gm2-compiler/P3Build.bnf (M2StateCheck): Import procedures.
1686         (seenError): New variable.
1687         (WasNoError): Remove variable.
1688         (BlockState): New variable.
1689         (ErrorString): Rewrite using seenError.
1690         (CompilationUnit): Ditto.
1691         (QualidentCheck): New rule.
1692         (ConstantDeclaration): Bookend with InclConst and ExclConst.
1693         (Constructor): Add InclConstructor, ExclConstructor and call
1694         CheckQualident.
1695         (ConstActualParameters): Call PushState, PopState, InclConstFunc
1696         and CheckQualident.
1697         (TypeDeclaration): Bookend with InclType and ExclType.
1698         (SimpleType): Call QualidentCheck.
1699         (CaseTag): Ditto.
1700         (OptReturnType): Ditto.
1701         (VariableDeclaration): Bookend with InclVar and ExclVar.
1702         (Designator): Call QualidentCheck.
1703         (Formal;Type): Ditto.
1704         * gm2-compiler/PCBuild.bnf (M2StateCheck): Import procedures.
1705         (ConstantDeclaration): Rewrite using InclConst and ExclConst.
1706         (Constructor): Bookend with InclConstructor and ExclConstructor.
1707         Call CheckQualident.
1708         (ConstructorOrConstActualParameters): Rewrite and cal
1709         l CheckQualident.
1710         (ConstActualParameters): Bookend with PushState PopState.
1711         Call InclConstFunc and CheckQualident.
1712         * gm2-gcc/init.cc (_M2_M2StateCheck_init): New declaration.
1713         (_M2_P3Build_init): New declaration.
1714         (init_PerCompilationInit): Call _M2_M2StateCheck_init and
1715         _M2_P3Build_init.
1716         * gm2-compiler/M2StateCheck.def: New file.
1717         * gm2-compiler/M2StateCheck.mod: New file.
1719 2024-07-16  Gaius Mulley  <gaiusmod2@gmail.com>
1721         PR modula2/115957
1722         * gm2-compiler/M2StackAddress.mod (PopAddress): Detect tail=NIL
1723         and generate an internal error.
1724         * gm2-compiler/PCBuild.bnf (InConstParameter): New variable.
1725         (InConstBlock): New variable.
1726         (ErrorString): Rewrite using MetaErrorStringT0.
1727         (ErrorArrayAt): Rewrite using MetaErrorStringT0.
1728         (WarnMissingToken): Use MetaErrorStringT0.
1729         (CompilationUnit): Set seenError FALSE.
1730         (init): Initialize InConstParameter and InConstBlock.
1731         (ConstantDeclaration): Set InConstBlock.
1732         (ConstSetOrQualidentOrFunction): Call CheckNotVar if not
1733         InConstParameter and InConstBlock.
1734         (ConstActualParameters): Set InConstParameter TRUE and restore
1735         value at the end.
1736         * gm2-compiler/PCSymBuild.def (CheckNotVar): New procedure.
1737         Remove all unnecessary export qualified list.
1738         * gm2-compiler/PCSymBuild.mod (CheckNotVar): New procedure.
1740 2024-07-12  FX Coudert  <fxcoudert@gmail.com>
1742         * gm2-gcc/m2linemap.cc (INCLUDE_STRING): Define before
1743         include of gcc-consolidation.h.
1744         * gm2spec.cc (INCLUDE_STRING): Define before include of
1745         system.h.
1746         (INCLUDE_VECTOR): Ditto.
1748 2024-07-10  Gaius Mulley  <gaiusmod2@gmail.com>
1750         PR modula2/115823
1751         * gm2-gcc/m2builtins.cc (struct builtin_macro_definition): New
1752         field builtinname.
1753         (builtin_function_match): New function.
1754         (builtin_macro_match): Ditto.
1755         (m2builtins_BuiltinExists): Use builtin_function_match and
1756         builtin_macro_match.
1757         (lookup_builtin_macro): Use builtin_macro_match.
1758         (lookup_builtin_function): Use builtin_function_match.
1759         (define_builtin): Assign builtinname field.
1761 2024-07-07  Gaius Mulley  <gaiusmod2@gmail.com>
1762             Stefan Schulze Frielinghaus   <stefansf@linux.ibm.com>
1763             Andrew Pinski   <quic_apinski@quicinc.com>
1765         PR modula2/115804
1766         * gm2-gcc/m2builtins.cc (builtin_function_entry): Add GTY.
1767         (DoBuiltinMemCopy): Add rettype and use rettype in the call.
1768         (DoBuiltinAlloca): Ditto.
1769         (DoBuiltinIsfinite): Ditto.
1770         (DoBuiltinIsnan): Ditto.
1771         (m2builtins_BuiltInHugeVal): Ditto.
1772         (m2builtins_BuiltInHugeValShort): Ditto.
1773         (m2builtins_BuiltInHugeValLong): Ditto.
1775 2024-06-25  Gaius Mulley  <gaiusmod2@gmail.com>
1777         * gm2-compiler/M2GenGCC.mod (QuadCondition): Remove.
1778         (FoldIfEqu): Remove WalkAction parameter.
1779         (FoldIfNotEqu): Ditto.
1780         (FoldIfGreEqu): Ditto.
1781         (FoldIfLessEqu): Ditto.
1782         (FoldIfGre): Ditto.
1783         (FoldIfLess): Ditto.
1784         (FoldIfIn): Ditto.
1785         (FoldIfNotIn): Ditto.
1786         * gm2-compiler/M2Quads.mod (GenQuadOTypeUniquetok): Remove.
1788 2024-06-25  Gaius Mulley  <gaiusmod2@gmail.com>
1790         PR modula2/115540
1791         * gm2-libs-ch/termios.c (cfmakeraw): Remove return.
1792         * mc-boot-ch/Gtermios.cc (cfmakeraw): Remove return.
1793         * pge-boot/Gtermios.cc (cfmakeraw): Remove return.
1795 2024-06-25  Gaius Mulley  <gaiusmod2@gmail.com>
1797         PR modula2/115536
1798         * gm2-compiler/M2BasicBlock.def (GetBasicBlockScope): New procedure.
1799         (GetBasicBlockStart): Ditto.
1800         (GetBasicBlockEnd): Ditto.
1801         (IsBasicBlockFirst): New procedure function.
1802         * gm2-compiler/M2BasicBlock.mod (ConvertQuads2BasicBlock): Allow
1803         conditional boolean quads to be removed.
1804         (GetBasicBlockScope): Implement new procedure.
1805         (GetBasicBlockStart): Ditto.
1806         (GetBasicBlockEnd): Ditto.
1807         (IsBasicBlockFirst): Implement new procedure function.
1808         * gm2-compiler/M2GCCDeclare.def (FoldConstants): New parameter
1809         declaration.
1810         * gm2-compiler/M2GCCDeclare.mod (FoldConstants): New parameter
1811         declaration.
1812         (DeclareTypesConstantsProceduresInRange): Recreate basic blocks
1813         after resolving constant expressions.
1814         (CodeBecomes): Guard IsVariableSSA with IsVar.
1815         * gm2-compiler/M2GenGCC.def (ResolveConstantExpressions): New
1816         parameter declaration.
1817         * gm2-compiler/M2GenGCC.mod (FoldIfLess): Remove relop pattern
1818         detection.
1819         (FoldIfGre): Ditto.
1820         (FoldIfLessEqu): Ditto.
1821         (FoldIfGreEqu): Ditto.
1822         (FoldIfIn): Ditto.
1823         (FoldIfNotIn): Ditto.
1824         (FoldIfEqu): Ditto.
1825         (FoldIfNotEqu): Ditto.
1826         (FoldBecomes): Add BasicBlock parameter and allow conditional
1827         boolean becomes to be folded in the first basic block.
1828         (ResolveConstantExpressions): Reimplement.
1829         * gm2-compiler/M2Quads.def (IsConstQuad): New procedure function.
1830         (IsConditionalBooleanQuad): Ditto.
1831         * gm2-compiler/M2Quads.mod (IsConstQuad): Implement new procedure function.
1832         (IsConditionalBooleanQuad): Ditto.
1833         (MoveWithMode): Use GenQuadOTypetok.
1834         (IsInitialisingConst): Rewrite using OpUsesOp1.
1835         (OpUsesOp1): New procedure function.
1836         (doBuildAssignment): Mark des as a VarConditional.
1837         (ConvertBooleanToVariable): Call PutVarConditional.
1838         (DumpQuadSummary): New procedure.
1839         (BuildRelOpFromBoolean): Updated debugging and improved comments.
1840         (BuildRelOp): Only call BuildRelOpFromBoolean if we are in a const
1841         expression and both operands are boolean relops.
1842         (GenQuadOTypeUniquetok): New procedure.
1843         (BackPatch): Correct comment.
1844         * gm2-compiler/SymbolTable.def (PutVarConditional): New procedure.
1845         (IsVarConditional): New procedure function.
1846         * gm2-compiler/SymbolTable.mod (PutVarConditional): Implement new
1847         procedure.
1848         (IsVarConditional): Implement new procedure function.
1849         (SymConstVar): New field IsConditional.
1850         (SymVar): New field IsConditional.
1851         (MakeVar): Initialize IsConditional field.
1852         (MakeConstVar): Initialize IsConditional field.
1853         * gm2-compiler/M2Swig.mod (DoBasicBlock): Change parameters to
1854         use BasicBlock.
1855         * gm2-compiler/M2Code.mod (SecondDeclareAndOptimize): Use iterator
1856         to FoldConstants over basic block list.
1857         * gm2-compiler/M2SymInit.mod (AppendEntry): Replace parameters
1858         with BasicBlock.
1859         * gm2-compiler/P3Build.bnf (Relation): Call RecordOp for #, <> and =.
1861 2024-06-17  Kewen Lin  <linkw@linux.ibm.com>
1863         * gm2-gcc/m2type.cc (build_m2_short_real_node): Adjust assertion with
1864         TYPE_SIZE check.
1865         (build_m2_real_node): Likewise.
1866         (build_m2_long_real_node): Add assertion with TYPE_SIZE check.
1868 2024-06-11  Gaius Mulley  <gaiusmod2@gmail.com>
1870         PR modula2/114529
1871         * Make-lang.in (MC_EXTENDED_OPAQUE): Assign to nothing.
1872         * Make-maintainer.in (mc-basetest): New rule.
1873         (mc-devel-basetest): New rule.
1874         (mc-clean): Remove mc.
1875         (m2/mc-boot-gen/$(SRC_PREFIX)decl.cc): Replace --extended-opaque
1876         with $(EXTENDED_OPAQUE).
1877         (PG-SRC): Move define before generic rules.
1878         (PGE-DEF): Ditto.
1879         (m2/gm2-ppg-boot/$(SRC_PREFIX)%.h): New rule.
1880         (m2/gm2-ppg-boot/$(SRC_PREFIX)libc.o): Ditto.
1881         (m2/gm2-ppg-boot/$(SRC_PREFIX)mcrts.o): Ditto.
1882         (m2/gm2-ppg-boot/$(SRC_PREFIX)UnixArgs.o): Ditto.
1883         (m2/gm2-ppg-boot/$(SRC_PREFIX)Selective.o): Ditto.
1884         (m2/gm2-ppg-boot/$(SRC_PREFIX)termios.o): Ditto.
1885         (m2/gm2-ppg-boot/$(SRC_PREFIX)SysExceptions.o): Ditto.
1886         (m2/gm2-ppg-boot/$(SRC_PREFIX)ldtoa.o): Ditto.
1887         (m2/gm2-ppg-boot/$(SRC_PREFIX)wrapc.o): Ditto.
1888         (m2/gm2-ppg-boot/$(SRC_PREFIX)SYSTEM.o): Ditto.
1889         (m2/gm2-ppg-boot/$(SRC_PREFIX)errno.o): Ditto.
1890         (m2/gm2-ppg-boot/$(SRC_PREFIX)M2RTS.o): Ditto.
1891         (m2/gm2-ppg-boot/$(SRC_PREFIX)SymbolKey.h): Ditto.
1892         (m2/gm2-ppg-boot/$(SRC_PREFIX)SymbolKey.o): Ditto.
1893         (m2/gm2-ppg-boot/$(SRC_PREFIX)NameKey.h): Ditto.
1894         (m2/gm2-ppg-boot/$(SRC_PREFIX)NameKey.o): Ditto.
1895         (m2/gm2-ppg-boot/$(SRC_PREFIX)Lists.h): Ditto.
1896         (m2/gm2-ppg-boot/$(SRC_PREFIX)Lists.o): Ditto.
1897         (m2/gm2-ppg-boot/$(SRC_PREFIX)Output.h): Ditto.
1898         (m2/gm2-ppg-boot/$(SRC_PREFIX)bnflex.h): Ditto.
1899         (m2/gm2-ppg-boot/$(SRC_PREFIX)bnflex.o): Ditto.
1900         (m2/gm2-ppg-boot/$(SRC_PREFIX)RTco.h): Ditto.
1901         (m2/gm2-ppg-boot/$(SRC_PREFIX)RTentity.h): Ditto.
1902         (m2/gm2-ppg-boot/$(SRC_PREFIX)RTco.o): Ditto.
1903         (m2/gm2-ppg-boot/$(SRC_PREFIX)RTentity.o): Ditto.
1904         (m2/gm2-ppg-boot/$(SRC_PREFIX)%.o): Ditto.
1905         (m2/ppg$(exeext)): Ditto.
1906         (m2/gm2-ppg-boot/main.o): Ditto.
1907         (m2/gm2-auto): Ditto.
1908         (c-family/m2pp.o): Ditto.
1909         (BUILD-BOOT-PG-H): Correct macro definition.
1910         (m2/gm2-pg-boot/$(SRC_PREFIX)%.h): New rule.
1911         (m2/gm2-pg-boot/$(SRC_PREFIX)NameKey.h): Ditto.
1912         (m2/gm2-pg-boot/$(SRC_PREFIX)NameKey.o): Ditto.
1913         (m2/gm2-pg-boot/$(SRC_PREFIX)Lists.h): Ditto.
1914         (m2/gm2-pg-boot/$(SRC_PREFIX)Lists.o): Ditto.
1915         (m2/gm2-pg-boot/$(SRC_PREFIX)Output.h): Ditto.
1916         (m2/gm2-pg-boot/$(SRC_PREFIX)Output.o): Ditto.
1917         (m2/gm2-pg-boot/$(SRC_PREFIX)bnflex.h): Ditto.
1918         (m2/gm2-pg-boot/$(SRC_PREFIX)bnflex.o): Ditto.
1919         (m2/gm2-pg-boot/$(SRC_PREFIX)RTco.h): Ditto.
1920         (m2/gm2-pg-boot/$(SRC_PREFIX)RTentity.h): Ditto.
1921         (m2/gm2-pg-boot/$(SRC_PREFIX)RTco.o): Ditto.
1922         (m2/gm2-pg-boot/$(SRC_PREFIX)RTentity.o): Ditto.
1923         (BUILD-BOOT-PGE-H): Correct macro definition.
1924         (m2/gm2-pge-boot/$(SRC_PREFIX)SymbolKey.h): Ditto.
1925         (m2/gm2-pge-boot/$(SRC_PREFIX)SymbolKey.o): Ditto.
1926         (m2/gm2-pge-boot/$(SRC_PREFIX)NameKey.h): Ditto.
1927         (m2/gm2-pge-boot/$(SRC_PREFIX)NameKey.o): Ditto.
1928         (m2/gm2-pge-boot/$(SRC_PREFIX)Lists.h): Ditto.
1929         (m2/gm2-pge-boot/$(SRC_PREFIX)Lists.o): Ditto.
1930         (m2/gm2-pge-boot/$(SRC_PREFIX)Output.h): Ditto.
1931         (m2/gm2-pge-boot/$(SRC_PREFIX)Output.o): Ditto.
1932         (m2/gm2-pge-boot/$(SRC_PREFIX)bnflex.h): Ditto.
1933         (m2/gm2-pge-boot/$(SRC_PREFIX)bnflex.o): Ditto.
1934         (m2/gm2-pge-boot/$(SRC_PREFIX)RTco.h): Ditto.
1935         (m2/gm2-pge-boot/$(SRC_PREFIX)RTentity.h): Ditto.
1936         (m2/gm2-pge-boot/$(SRC_PREFIX)RTco.o): Ditto.
1937         (m2/gm2-pge-boot/$(SRC_PREFIX)RTentity.o): Ditto.
1938         (mc-basetest): Ditto.
1939         (mc-devel-basetest): Ditto.
1940         * gm2-compiler/M2Options.def (SetM2Dump): Add BOOLEAN return.
1941         * gm2-compiler/M2Quads.def (BuildAlignment): Add tokno parameter.
1942         (BuildBitLength): Ditto.
1943         * gm2-compiler/P3Build.bnf (ByteAlignment): Move tokpos assignment
1944         to the start of the block.
1945         * gm2-compiler/PCBuild.bnf (ConstSetOrQualidentOrFunction): Ditto.
1946         (SetOrDesignatorOrFunction): Ditto.
1947         * gm2-compiler/PHBuild.bnf (ConstSetOrQualidentOrFunction): Ditto.
1948         (SetOrDesignatorOrFunction): Ditto.
1949         (ByteAlignment): Ditto.
1950         * gm2-libs/dtoa.def (dtoa): Change mode to INTEGER.
1951         * gm2-libs/ldtoa.def (ldtoa): Ditto.
1952         * mc-boot-ch/GSYSTEM.c (_M2_SYSTEM_init): Correct parameter list.
1953         (_M2_SYSTEM_fini): Ditto.
1954         * mc-boot-ch/Gdtoa.cc (dtoa_calcsign): Return bool.
1955         (dtoa_dtoa): Return void * and use bool in the fifth parameter.
1956         (_M2_dtoa_init): Correct parameter list.
1957         (_M2_dtoa_fini): Ditto.
1958         * mc-boot-ch/Gerrno.cc (_M2_errno_init): Ditto.
1959         (_M2_errno_fini): Ditto.
1960         * mc-boot-ch/Gldtoa.cc (dtoa_calcsign): Return bool.
1961         (ldtoa_ldtoa): Return void * and use bool in the fifth parameter.
1962         (_M2_ldtoa_init): Correct parameter list.
1963         (_M2_ldtoa_fini): Ditto.
1964         * mc-boot-ch/Glibc.c (tracedb_zresult): New function.
1965         (libc_read): Return size_t and use size_t in parameter three.
1966         (libc_write): Return size_t and use size_t in parameter three.
1967         (libc_printf): Add const to the format specifier.
1968         Change declaration of c to use const.
1969         (libc_snprintf): Add const to the format specifier.
1970         Change declaration of c to use const.
1971         (libc_malloc): Use size_t.
1972         (libc_memcpy): Ditto.
1973         * mc-boot/GASCII.cc: Regenerate.
1974         * mc-boot/GArgs.cc: Ditto.
1975         * mc-boot/GAssertion.cc: Ditto.
1976         * mc-boot/GBreak.cc: Ditto.
1977         * mc-boot/GCmdArgs.cc: Ditto.
1978         * mc-boot/GDebug.cc: Ditto.
1979         * mc-boot/GDynamicStrings.cc: Ditto.
1980         * mc-boot/GEnvironment.cc: Ditto.
1981         * mc-boot/GFIO.cc: Ditto.
1982         * mc-boot/GFormatStrings.cc: Ditto.
1983         * mc-boot/GFpuIO.cc: Ditto.
1984         * mc-boot/GIO.cc: Ditto.
1985         * mc-boot/GIndexing.cc: Ditto.
1986         * mc-boot/GM2Dependent.cc: Ditto.
1987         * mc-boot/GM2EXCEPTION.cc: Ditto.
1988         * mc-boot/GM2RTS.cc: Ditto.
1989         * mc-boot/GMemUtils.cc: Ditto.
1990         * mc-boot/GNumberIO.cc: Ditto.
1991         * mc-boot/GPushBackInput.cc: Ditto.
1992         * mc-boot/GRTExceptions.cc: Ditto.
1993         * mc-boot/GRTint.cc: Ditto.
1994         * mc-boot/GSArgs.cc: Ditto.
1995         * mc-boot/GSFIO.cc: Ditto.
1996         * mc-boot/GStdIO.cc: Ditto.
1997         * mc-boot/GStorage.cc: Ditto.
1998         * mc-boot/GStrCase.cc: Ditto.
1999         * mc-boot/GStrIO.cc: Ditto.
2000         * mc-boot/GStrLib.cc: Ditto.
2001         * mc-boot/GStringConvert.cc: Ditto.
2002         * mc-boot/GSysStorage.cc: Ditto.
2003         * mc-boot/GTimeString.cc: Ditto.
2004         * mc-boot/Galists.cc: Ditto.
2005         * mc-boot/Gdecl.cc: Ditto.
2006         * mc-boot/Gkeyc.cc: Ditto.
2007         * mc-boot/Glists.cc: Ditto.
2008         * mc-boot/GmcComment.cc: Ditto.
2009         * mc-boot/GmcComp.cc: Ditto.
2010         * mc-boot/GmcDebug.cc: Ditto.
2011         * mc-boot/GmcError.cc: Ditto.
2012         * mc-boot/GmcFileName.cc: Ditto.
2013         * mc-boot/GmcLexBuf.cc: Ditto.
2014         * mc-boot/GmcMetaError.cc: Ditto.
2015         * mc-boot/GmcOptions.cc: Ditto.
2016         * mc-boot/GmcPreprocess.cc: Ditto.
2017         * mc-boot/GmcPretty.cc: Ditto.
2018         * mc-boot/GmcPrintf.cc: Ditto.
2019         * mc-boot/GmcQuiet.cc: Ditto.
2020         * mc-boot/GmcReserved.cc: Ditto.
2021         * mc-boot/GmcSearch.cc: Ditto.
2022         * mc-boot/GmcStack.cc: Ditto.
2023         * mc-boot/GmcStream.cc: Ditto.
2024         * mc-boot/Gmcp1.cc: Ditto.
2025         * mc-boot/Gmcp2.cc: Ditto.
2026         * mc-boot/Gmcp3.cc: Ditto.
2027         * mc-boot/Gmcp4.cc: Ditto.
2028         * mc-boot/Gmcp5.cc: Ditto.
2029         * mc-boot/GnameKey.cc: Ditto.
2030         * mc-boot/GsymbolKey.cc: Ditto.
2031         * mc-boot/Gvarargs.cc: Ditto.
2032         * mc-boot/Gwlists.cc: Ditto.
2033         * mc-boot/Gdecl.h: Ditto.
2034         * mc-boot/Gldtoa.h: Ditto.
2035         * mc-boot/Glibc.h: Ditto.
2036         * mc/decl.def (putTypeOpaque): New procedure.
2037         (isTypeOpaque): New procedure function.
2038         * mc/decl.mod (debugOpaque): New constant.
2039         (nodeT): New enumeration field opaquecast.
2040         (node): New record field opaquecastF.
2041         (opaqueCastState): New record.
2042         (opaquecastT): New record.
2043         (typeT): New field isOpaque.
2044         (varT): New field opaqueState.
2045         (arrayT): Ditto.
2046         (varparamT): Ditto.
2047         (paramT): Ditto.
2048         (pointerT): Ditto.
2049         (recordfieldT): Ditto.
2050         (componentrefT): Ditto.
2051         (pointerrefT): Ditto.
2052         (arrayrefT): Ditto.
2053         (procedureT): Ditto.
2054         (proctypeT): Ditto.
2055         (makeType): Initialize field isOpaque.
2056         (makeTypeImp): Initialize field isOpaque.
2057         (putVar): Call initNodeOpaqueCastState.
2058         (putReturnType): Ditto.
2059         (makeProcType): Ditto.
2060         (putProcTypeReturn): Ditto.
2061         (makeVarParameter): Ditto.
2062         (makeNonVarParameter): Ditto.
2063         (makeFuncCall): Ditto.
2064         (putTypeOpaque): New procedure.
2065         (isTypeOpaque): New procedure function.
2066         (doMakeComponentRef): Call initNodeOpaqueCastState.
2067         (makePointerRef): Call initNodeOpaqueCastState.
2068         (doGetFuncType): Call initNodeOpaqueCastState.
2069         (doBinary): Add FALSE parameter to doExprCup.
2070         (doDeRefC): Rewrite.
2071         (doComponentRefC): Call flushOpaque.
2072         (doPointerRefC): Call flushOpaque.
2073         (doArrayRefC): Add const_cast for unbounded array.
2074         (doExprCup): Rewrite.
2075         (doTypeAliasC): Remove.
2076         (isDeclType): New procedure function.
2077         (doEnumerationC): New procedure function.
2078         (doParamTypeEmit): Ditto.
2079         (doParamTypeNameModifier): Ditto.
2080         (initOpaqueCastState): Ditto.
2081         (initNodeOpaqueCastState): Ditto.
2082         (setOpaqueCastState): Ditto.
2083         (setNodeOpaqueVoidStar): Ditto.
2084         (nodeUsesOpaque): Ditto.
2085         (getNodeOpaqueVoidStar): Ditto.
2086         (getOpaqueFlushNecessary): Ditto.
2087         (makeOpaqueCast): Ditto.
2088         (flushOpaque): Ditto.
2089         (castOpaque): Ditto.
2090         (isTypeOpaqueDefImp): Ditto.
2091         (isParamVoidStar): Ditto.
2092         (isRefVoidStar): Ditto.
2093         (isReturnVoidStar): Ditto.
2094         (isVarVoidStar): Ditto.
2095         (initNodeOpaqueState): Ditto.
2096         (assignNodeOpaqueCastState): Ditto.
2097         (assignNodeOpaqueCastFalse): Ditto.
2098         (dumpOpaqueState): Ditto.
2099         (doProcTypeC): Rewrite.
2100         (isDeclInImp): New procedure function.
2101         (doTypeNameModifier): Ditto.
2102         (doTypeC): Emit typedef if enum is declared in this module.
2103         (doCompletePartialProcType): Rewrite.
2104         (outputCompletePartialProcType): New procedure.
2105         (doOpaqueModifier): Ditto.
2106         (doVarC): Ditto.
2107         (doProcedureHeadingC): Add opaque modifier to return type if
2108         necessary.
2109         (doReturnC): Cast opaque type for return if necessary.
2110         (forceCastOpaque): New procedure.
2111         (forceReintCastOpaque): New procedure.
2112         (doUnConstCastUnbounded): New procedure.
2113         (doAssignmentC): Cast opaque for both des and expr if necessary.
2114         (doAdrExprC): Use static_cast for void * casting.
2115         (doFuncVarParam): New procedure.
2116         (doFuncParamC): Rewrite.
2117         (doAdrArgC): Rewrite.
2118         (getFunction): New procedure function.
2119         (stop): Rename to ...
2120         (localstop): ... this.
2121         (dupFunccall): Call assignNodeOpaqueCastState.
2122         (dbg): Rewrite.
2123         (addDone): Rewrite.
2124         (addDoneDef): Do not add opaque types to the doneQ when declared in
2125         the definition module.
2126         * mc/mc.flex (openSource): Return bool.
2127         (_M2_mcflex_init): Correct parameter list.
2128         (_M2_mcflex_fini): Ditto.
2129         * mc/mcComment.h (stdbool.h): Include.
2130         (mcComment_initComment): Change unsigned int to bool.
2131         * mc/mcOptions.mod (handleOption): Disable --extended-opaque
2132         and issue warning.
2133         * mc/mcp1.bnf (DefTypeDeclaration): Call putTypeOpaque.
2135 2024-06-06  Gaius Mulley  <gaiusmod2@gmail.com>
2136             Kewen.Lin   <linkw@linux.ibm.com>
2138         * gm2-gcc/m2type.cc (build_m2_short_real_node): Rewrite
2139         to use the default float_type_node.
2140         (build_m2_real_node): Rewrite to use the default
2141         double_type_node.
2142         (build_m2_long_real_node): Rewrite to use the default
2143         long_double_type_node or float128_type_node.
2145 2024-05-21  Gaius Mulley  <gaiusmod2@gmail.com>
2147         * Make-lang.in (MC_EXTENDED_OPAQUE): New definition.
2148         * mc-boot/GDynamicStrings.cc: Rebuild.
2149         * mc-boot/GDynamicStrings.h: Rebuild.
2150         * mc-boot/Galists.cc: Rebuild.
2151         * mc-boot/Galists.h: Rebuild.
2152         * mc-boot/Gdecl.cc: Rebuild.
2153         * mc/alists.def (equalList): New procedure.
2154         * mc/alists.mod (equalList): New procedure implementation.
2155         * mc/decl.mod (group): New type.
2156         (freeGroup): New variable.
2157         (globalGroup): Ditto.
2158         (todoQ): Remove declaration and prefix all occurances with globalGroup^.
2159         (partialQ): Ditto.
2160         (doneQ): Ditto.
2161         (newGroup): New procedure.
2162         (initGroup): Ditto.
2163         (killGroup): Ditto.
2164         (dupGroup): Ditto.
2165         (equalGroup): Ditto.
2166         (topologicallyOut): Rewrite.
2168 2024-05-21  Sam James  <sam@gentoo.org>
2170         * Make-lang.in (m2.install-info): Pass --destdir for dir index.
2172 2024-05-15  Gaius Mulley  <gaiusmod2@gmail.com>
2174         PR modula2/115057
2175         * gm2-libs-iso/TextIO.mod (ReadRestLine): Use ReadChar to
2176         skip unwanted characters as this calls IOChan.Look and updates
2177         the cid result status.  A Skip without a Look does not update
2178         the status.  Skip always sets read result to allRight.
2179         * gm2-libs-iso/TextUtil.def (SkipSpaces): Improve comments.
2180         (CharAvailable): Improve comments.
2181         * gm2-libs-iso/TextUtil.mod (SkipSpaces): Improve comments.
2182         (CharAvailable): Improve comments.
2184 2024-05-09  Gaius Mulley  <gaiusmod2@gmail.com>
2186         PR modula2/115003
2187         * gm2-compiler/SymbolTable.mod (GetScope): Add UndefinedSym
2188         case clause and return NulSym.
2190 2024-05-03  Gaius Mulley  <gaiusmod2@gmail.com>
2192         PR modula2/114929
2193         * gm2-compiler/M2LangDump.mod (GenQualidentSymString): Add
2194         missing return result into identstr.
2195         * gm2-compiler/M2Quads.mod (ForLoopLastIteratorVariable): New
2196         procedure.
2197         (ForLoopLastIteratorConstant): Ditto.
2198         (ForLoopLastIterator): Ditto.
2199         (BuildForToByDo): Remove LastIterator calculation and call
2200         ForLoopLastIterator instead.
2201         (FinalValue): Replace with ...
2202         (LastIterator): ... this.
2204 2024-05-02  Gaius Mulley  <gaiusmod2@gmail.com>
2206         PR modula2/113836
2207         * gm2-compiler/M2AsmUtil.def: Remove export qualified and
2208         unused import.
2209         * gm2-compiler/M2LangDump.mod (AddRuleTextDump): New procedure.
2210         (AddRuleScopeQualidentDump): Add warning check against unmatched
2211         rule.
2212         (GenQualidentSymString): New procedure function.
2213         (IdentQualidentMatch): New procedure function.
2214         (IsRuleFilenameMatch): New procedure function.
2215         (CheckRuleMatch): New procedure function.
2216         (AddRuleFilenameDump): New procedure function.
2217         * gm2-gcc/m2misc.cc (m2misc_warning_m2_dump_filter): New function.
2218         * gm2-gcc/m2misc.def (warning_m2_dump_filter): New procedure.
2219         * gm2-gcc/m2misc.h (m2misc_warning_m2_dump_filter): New prototype.
2220         * gm2-gcc/m2pp.cc (VERBOSE_TYPE_DESC): New define.
2221         (m2pp_identifier): Define out verbose type info.
2222         (m2pp_constructor): Define out verbose type info.
2223         (m2pp_assignment): Define out verbose type info.
2224         * gm2-lang.cc (ENABLE_M2DUMP_ALL): Remove.
2225         * lang.opt (fm2-dump): Add.
2226         (fm2-dump-decl=): Add.
2227         (fm2-dump-gimple=): Add.
2228         (fm2-dump-quad=): Add.
2229         (fm2-dump-filter=): Add.
2231 2024-04-25  Gaius Mulley  <gaiusmod2@gmail.com>
2233         PR modula2/114836
2234         * gm2-compiler/M2Range.mod (FoldTypeAssign): Avoid error
2235         string concatenation.
2237 2024-04-25  Gaius Mulley  <gaiusmod2@gmail.com>
2239         * gm2-compiler/M2FileName.def (CalculateFileName): Remove
2240         quoted string in comment.
2241         * gm2-compiler/M2Range.mod (FoldTypeParam): Generate dialect
2242         specific parameter incompatibility error message.
2244 2024-04-23  Jakub Jelinek  <jakub@redhat.com>
2246         * lang.opt (fdef=, fmod=): Spelling fix: recognise -> recognize.
2248 2024-04-23  Jakub Jelinek  <jakub@redhat.com>
2250         * lang.opt (fuse-list=): Spelling fix: finalializations ->
2251         finalizations.
2253 2024-04-22  Gaius Mulley  <gaiusmod2@gmail.com>
2255         PR modula2/114811
2256         * gm2-compiler/M2GenGCC.mod (FoldBinarySet): Add condition
2257         checking to ensure op2 and op3 are fully resolved before
2258         type checking is performed.
2260 2024-04-22  Gaius Mulley  <gaiusmod2@gmail.com>
2262         PR modula2/114807
2263         * gm2-compiler/M2Check.mod (checkUnbounded): Remove unused
2264         local variables.
2265         (constCheckMeta): Include check for IsReallyPointer in the
2266         failure case.
2267         * gm2-compiler/M2Quads.mod (MoveWithMode): Remove CopyConstString.
2268         * gm2-compiler/SymbolTable.def (IsHiddenReallyPointer): Export.
2269         * gm2-compiler/SymbolTable.mod (SkipHiddenType): Remove.
2270         (IsReallyPointer): Include IsHiddenReallyPointer test.
2272 2024-04-20  Gaius Mulley  <gaiusmod2@gmail.com>
2274         PR modula2/112893
2275         * gm2-compiler/M2Check.mod (GetProcedureProcType): Import.
2276         (getType): Return value using GetProcedureProcType if sym is a
2277         procedure.
2278         * gm2-compiler/M2Range.mod (FoldTypeExpr): Remove quad if
2279         expression is type compatible.
2280         * gm2-compiler/SymbolTable.def (GetProcedureProcType): New
2281         procedure function.
2282         * gm2-compiler/SymbolTable.mod (Procedure): Add ProcedureType.
2283         (MakeProcedure): Initialize ProcedureType.
2284         (PutParam): Call AddProcedureProcTypeParam.
2285         (PutVarParam): Call AddProcedureProcTypeParam.
2286         (AddProcedureProcTypeParam): New procedure.
2287         (GetProcedureProcType): New procedure function.
2289 2024-04-16  Gaius Mulley  <gaiusmod2@gmail.com>
2291         PR modula2/114745
2292         * gm2-compiler/M2Code.mod (DumpLangDecl): Replace with ...
2293         (GetDumpDecl): ... this.
2294         (DumpLangGimple): Replace with ...
2295         (GetDumpGimple): ... this.
2296         * gm2-compiler/M2GenGCC.mod:
2297         * gm2-compiler/M2LangDump.mod (GetDumpLangQuadFilename): Replace with ...
2298         (GetDumpQuadFilename): ... this.
2299         (GetDumpLangDeclFilename): Replace with ...
2300         (GetDumpDeclFilename): ... this.
2301         (GetDumpLangGimpleFilename): Replace with ...
2302         (GetDumpGimpleFilename): ... this.
2303         * gm2-compiler/M2Options.def (GetDumpLangDeclFilename): New
2304         procedure function.
2305         (GetDumpDeclFilename): Ditto.
2306         (SetDumpLangDeclFilename): New procedure.
2307         (SetDumpDeclFilename): Ditto.
2308         (GetDumpLangQuadFilename): New procedure function.
2309         (GetDumpQuadFilename): Ditto
2310         (SetDumpLangQuadFilename): New procedure.
2311         (SetDumpQuadFilename): Ditto.
2312         (GetDumpLangGimpleFilename): New procedure function.
2313         (GetDumpGimpleFilename): Ditto.
2314         (SetDumpLangGimpleFilename): New procedure.
2315         (SetDumpGimpleFilename): Ditto.
2316         (GetDumpLangGimple): New procedure function.
2317         (SetM2Dump): New procedure.
2318         (GetDumpGimple): New procedure function.
2319         (GetDumpQuad): Ditto.
2320         (GetDumpDecl): Ditto.
2321         * gm2-compiler/M2Options.mod (DumpLangDeclFilename): Remove.
2322         (DumpLangQuadFilename): Ditto.
2323         (DumpLangGimpleFilename): Ditto.
2324         (DumpDeclFilename): New variable.
2325         (DumpQuadFilename): Ditto.
2326         (DumpGimpleFilename): Ditto.
2327         (DebugTraceTree): New variable.
2328         (SetQuadDebugging): Rewrite.
2329         (GetDumpLangDeclFilename): Replace with ...
2330         (GetDumpDeclFilename): ... this.
2331         (SetDumpLangQuadFilename): Replace with ...
2332         (SetDumpQuadFilename): ... this.
2333         (GetDumpLangGimpleFilename): Replace with ...
2334         (GetDumpGimpleFilename): ... this.
2335         (SetDumpLangGimpleFilename): Replace with ...
2336         (SetDumpGimpleFilename): ... this.
2337         (GetDumpLangGimple): Remove.
2338         (MatchDump): New procedure function.
2339         (SetM2Dump): New procedure.
2340         (GetDumpGimple): New procedure function.
2341         (GetDumpQuad): Ditto.
2342         (GetDumpDecl): Ditto.
2343         (GetDumpLangGimple): Ditto.
2344         * gm2-compiler/M2Quads.mod (BreakAtQuad): Assigned to 140.
2345         (BuildTypeCoercion): Add ConstExpr parameter.
2346         Check for const parameter in a const expression.
2347         Create a constant temporary if in a const expression.
2348         (BuildCastFunction): Pass ConstExpr to BuildTypeCoercion.
2349         (BuildFunctionCall): Pass ConstExpr to BuildTypeCoercion.
2350         * gm2-compiler/PCSymBuild.mod (buildConstFunction): Test for Cast
2351         and call InitConvert.
2352         (ErrorConstFunction): Add CAST to the error message.
2353         * gm2-compiler/SymbolTable.mod (GetConstStringContent): Remove
2354         unused procedure.
2355         * gm2-gcc/m2decl.cc (m2decl_DeclareKnownConstant): Copy value
2356         and change type of value.
2357         * gm2-gcc/m2options.h (M2Options_GetDumpLangDeclFilename): Remove.
2358         (M2Options_SetDumpLangDeclFilename): Ditto.
2359         (M2Options_GetDumpLangQuadFilename): Ditto.
2360         (M2Options_SetDumpLangQuadFilename): Ditto.
2361         (M2Options_GetDumpLangGimpleFilename): Ditto.
2362         (M2Options_SetDumpLangGimpleFilename): Ditto.
2363         (M2Options_GetDumpLangGimple): Ditto.
2364         (M2Options_GetDumpDeclFilename): New function.
2365         (M2Options_SetDumpDeclFilename): Ditto.
2366         (M2Options_GetDumpQuadFilename): Ditto.
2367         (M2Options_SetDumpQuadFilename): Ditto.
2368         (M2Options_GetDumpGimpleFilename): Ditto.
2369         (M2Options_SetDumpGimpleFilename): Ditto.
2370         (M2Options_SetM2Dump): Ditto.
2371         (M2Options_GetDumpGimple): Ditto.
2372         * gm2-gcc/m2pp.cc (GM2): New define.
2373         (m2pp_type_lowlevel): Remove linefeed.
2374         (m2pp_identifier): Add type description for const.
2375         (m2pp_assignment): Display lhs/rhs types.
2376         (m2pp_dump_gimple): Replace GetDumpLangGimple with GetDumpGimple.
2377         * gm2-lang.cc (ENABLE_QUAD_DUMP_ALL): Remove.
2378         (ENABLE_M2DUMP_ALL): New define.
2379         (gm2_langhook_handle_option): Remove commented options
2380         OPT_fdump_lang_all, OPT_fdump_lang_decl_, OPT_fdump_lang_gimple,
2381         OPT_fdump_lang_gimple_, OPT_fdump_lang_quad and
2382         OPT_fdump_lang_quad_.
2383         Add commented options OPT_fm2_dump_, OPT_fm2_dump_decl_,
2384         OPT_fm2_dump_gimple_ and OPT_fm2_dump_quad_.
2386 2024-04-09  Gaius Mulley  <gaiusmod2@gmail.com>
2388         * tools-src/makeSystem: Invoke ${COMPILER} once and adjust
2389         the echo string to expand the shell variables with -wrapper
2390         gdb, --args.
2392 2024-04-09  Gaius Mulley  <gaiusmod2@gmail.com>
2394         PR modula2/114648
2395         * gm2-compiler/M2Options.mod (LineDirectives): Initially
2396         set to true.
2398 2024-04-06  Gaius Mulley  <gaiusmod2@gmail.com>
2400         PR modula2/114617
2401         * gm2-compiler/M2GenGCC.mod (CodeStatememt): Add quad trace.
2402         (ResolveConstantExpressions): Add parameter p to FoldIfLess,
2403         FoldIfGre, FoldIfLessEqu, FoldIfGreEqu, FoldIfEqu, FoldIfNotEqu,
2404         FoldIfIn and FoldIfNotIn.
2405         (CodeInline): Add constExpr variable and pass it to GetQuadOtok.
2406         (CodeReturnValue): Ditto.
2407         (CodeParam): Ditto.
2408         (FoldStringLength): Ditto.
2409         (FoldStringConvertM2nul): Ditto.
2410         (FoldStringConvertCnul): Ditto.
2411         (DeclaredOperandsBecomes): Ditto.
2412         (TypeCheckBecomes): Ditto.
2413         (PerformFoldBecomes): Ditto.
2414         (CodeBecomes): Ditto.
2415         (CheckElementSetTypes): Ditto.
2416         (CodeBinarySet): Ditto.
2417         (PerformCodeIfLess): Ditto.
2418         (PerformCodeIfGre): Ditto.
2419         (PerformCodeIfLessEqu): Ditto.
2420         (PerformCodeIfGreEqu): Ditto.
2421         (PerformCodeIfEqu): Ditto.
2422         (PerformCodeIfNotEqu): Ditto.
2423         (IsValidExpressionRelOp): Ditto.
2424         (PerformCodeIfIn): Ditto.
2425         (PerformCodeIfNotIn): Ditto.
2426         (CodeXIndr): Ditto.
2427         (QuadCondition): New procedure function.
2428         (IsBooleanRelOpPattern): Ditto.
2429         (FoldBooleanRelopPattern): Ditto.
2430         (FoldIfGre): Check for boolean relop constant expression and
2431         add parameter p.
2432         (FoldIfLessEqu): Ditto.
2433         (FoldIfIn): Ditto.
2434         (FoldIfEqu): Ditto.
2435         (FoldIfNotIn): Ditto.
2436         (FoldIfGreEqu): New procedure.
2437         (FoldIfNotEqu): Ditto.
2438         * gm2-compiler/M2Optimize.mod (ReduceBranch): Add constExpr
2439         variable and pass it to GetQuadOtok.
2440         * gm2-compiler/M2Quads.def (IsBecomes): New procedure function.
2441         (IsDummy): Ditto.
2442         (IsQuadConstExpr): Ditto.
2443         (SetQuadConstExpr): Ditto.
2444         (GetQuadDest): New procedure.
2445         (GetQuadOp1): New procedure.
2446         (GetQuadOp2): New procedure.
2447         (GetQuadOp3): New procedure.
2448         (GetQuadOtok): New procedure.
2449         (GetQuadOTypetok): New procedure.
2450         (PutQuadOtok): New procedure.
2451         (IsInConstParameters): New procedure function.
2452         * gm2-compiler/M2Quads.mod (IsBecomes): New procedure function.
2453         (IsDummy): Ditto.
2454         (IsQuadConstExpr): Ditto.
2455         (SetQuadConstExpr): Ditto.
2456         (GetQuadDest): New procedure.
2457         (GetQuadOp1): New procedure.
2458         (GetQuadOp2): New procedure.
2459         (GetQuadOp3): New procedure.
2460         (GetQuadOtok): New procedure.
2461         (GetQuadOTypetok): New procedure.
2462         (PutQuadOtok): New procedure.
2463         (IsInConstParameters): New procedure function.
2464         (ConstStack): Remove to ...
2465         (ConstExprStack): ... this.
2466         (ConstParamStack): New variable and initialize.
2467         (QuadFrame): New field ConstExpr.
2468         (GetQuadOtok): Add parameter constExpr and assign.
2469         (PutQuadOtok): Add constExpr parameter and assign.
2470         (PutQuadOType): Ditto.
2471         (GetQuadOTypetok): Ditto.
2472         (EraseQuad): Assign ConstExpr to FALSE.
2473         (FoldSubrange): Set ConstExpr to FALSE in BecomesOp.
2474         (PushInConstParameters): New procedure.
2475         (PopInConstParameters): New procedure.
2476         (IsInConstParameters): New procedure function.
2477         * gm2-compiler/M2SymInit.mod (IssueConditional): Add
2478         constExpr boolean variable.
2479         (CheckReadBeforeInitQuad): Ditto.
2480         (trashParam): Ditto.
2481         * gm2-compiler/P3Build.bnf (ConstExpression): Call
2482         PushInConstExpression and PopInConstExpression.
2483         (ConstSetOrQualidentOrFunction): Call
2484         PushInConstParameters and PopInConstParameters.
2485         * gm2-compiler/PCBuild.bnf (ConstExpression): Call
2486         PushInConstExpression and PopInConstExpression.
2487         * gm2-compiler/PHBuild.bnf: Ditto
2488         * gm2-gcc/m2expr.cc (m2expr_BuildCondIfExpression): New
2489         function.
2490         * gm2-gcc/m2expr.def (BuildCondIfExpression): New prototype.
2491         * gm2-gcc/m2expr.h (m2expr_BuildCondIfExpression): New function.
2493 2024-04-05  Christophe Lyon  <christophe.lyon@linaro.org>
2495         * Make-lang.in (m2.install-dvi): New rule.
2497 2024-04-02  Gaius Mulley  <gaiusmod2@gmail.com>
2499         PR modula2/114565
2500         * gm2-compiler/M2GenGCC.mod (CodeStatement): Test
2501         GetDebugTraceQuad before calling DisplayQuad.
2502         * gm2-compiler/M2LexBuf.mod (NumberIO): Import CardToStr.
2503         (GetToken): Test GetDebugTraceToken before writing the
2504         token number or token line.
2505         * gm2-compiler/M2Options.def (SetDebugTraceQuad): Rename to
2506         (SetM2DebugTraceFilter): ...this.
2507         (SetDebugTraceAPI): Remove.
2508         (GetDebugTraceQuad): New procedure function.
2509         (GetDebugTraceTree): Ditto.
2510         (GetDebugTraceToken): Ditto.
2511         (GetDebugTraceLine): Ditto.
2512         (GetDebugFunctionLineNumbers): Ditto.
2513         * gm2-compiler/M2Options.mod (DebugFunctionLineNumbers): New
2514         boolean variable.
2515         (DebugTraceQuad): Ditto.
2516         (DebugTraceTree): Ditto.
2517         (DebugTraceLine): Ditto.
2518         (DebugTraceToken): Ditto.
2519         (errors1): New procedure.
2520         (SetDebugTraceQuad): Remove.
2521         (SetM2DebugTraceFilter): New procedure implemented.
2522         (SetM2DebugTrace): Ditto.
2523         (GetDebugTraceQuad): Ditto.
2524         (GetDebugTraceToken ): Ditto.
2525         (GetDebugTraceLine): Ditto.
2526         (SetDebugTraceLine): Remove.
2527         * gm2-compiler/M2Quads.mod (GenQuadOTrash): Test
2528         GetDebugTraceQuad and call DisplayQuad.
2529         (GenQuadOTypetok): Ditto.
2530         * gm2-compiler/SymbolTable.mod: Replace
2531         DebugFunctionLineNumbers with GetDebugFunctionLineNumbers.
2532         * gm2-gcc/init.cc (_M2_M2LangDump_init): Add prototype.
2533         (init_PerCompilationInit): Add call.
2534         * gm2-gcc/m2misc.cc (m2misc_cerror): New function.
2535         (m2misc_error): Ditto.
2536         * gm2-gcc/m2misc.def (error): New procedure.
2537         (cerror): Ditto.
2538         * gm2-gcc/m2misc.h (m2misc_cerror): New prototype.
2539         (m2misc_error): Ditto.
2540         * gm2-gcc/m2options.h (M2Options_SetDebugTraceQuad): New
2541         prototype.
2542         (M2Options_SetDebugTraceAPI): Remove.
2543         (M2Options_GetDebugTraceToken): New prototype.
2544         (M2Options_GetDebugTraceLine): Ditto.
2545         (M2Options_SetDebugFunctionLineNumbers): Ditto.
2546         (M2Options_GetDebugFunctionLineNumbers): Ditto.
2547         (M2Options_SetM2DebugTraceFilter): Ditto.
2548         * gm2-lang.cc (gm2_langhook_init_options): Remove
2549         OPT_fdebug_trace_quad case.
2550         Remove OPT_fdebug_trace_api case.
2551         Add OPT_fm2_debug_trace_ case.
2552         * lang.opt (fm2-debug-trace): New option.
2553         (fdebug-trace-api): Remove.
2554         (fdebug-trace-quad): Remove.
2555         * m2.flex (m2flex_M2Error): Check s for NULL.
2556         (skipnewline): New function.
2557         (consumeLine): Call traceline.
2559 2024-04-01  Gaius Mulley  <gaiusmod2@gmail.com>
2561         PR modula2/114548
2562         * gm2-compiler/M2Quads.mod (ConvertToAddress): Pass
2563         procedure, false parameters to BuildConvertFunction.
2564         (PushOne): Pass procedure, true parameters to
2565         BuildConvertFunction.
2566         Remove usused parameter internal.
2567         (BuildPseudoBy): Remove parameter to PushOne.
2568         (BuildIncProcedure): Ditto.
2569         (BuildDecProcedure): Ditto.
2570         (BuildFunctionCall): Add ConstExpr parameter to
2571         BuildPseudoFunctionCall.
2572         (BuildConstFunctionCall): Add procedure and true to
2573         BuildConvertFunction.
2574         (BuildPseudoFunctionCall): Add ConstExpr parameter.
2575         Pass ProcSym and ConstExpr to BuildLengthFunction,
2576         BuildConvertFunction, BuildOddFunction, BuildAbsFunction,
2577         BuildCapFunction, BuildValFunction, BuildChrFunction,
2578         BuildOrdFunction, BuildIntFunction, BuildTruncFunction,
2579         BuildFloatFunction, BuildAddAdrFunction, BuildSubAdrFunction,
2580         BuildDifAdrFunction, BuildCastFunction, BuildReFunction,
2581         BuildImFunction and BuildCmplxFunction.
2582         (BuildAddAdrFunction): Add ProcSym, ConstExpr parameters and
2583         check for constant parameters.
2584         (BuildSubAdrFunction): Ditto.
2585         (BuildDifAdrFunction): Ditto.
2586         (ConstExprError): Ditto.
2587         (BuildLengthFunction): Ditto.
2588         (BuildOddFunction): Ditto.
2589         (BuildAbsFunction): Ditto.
2590         (BuildCapFunction): Ditto.
2591         (BuildChrFunction): Ditto.
2592         (BuildOrdFunction): Ditto.
2593         (BuildIntFunction): Ditto.
2594         (BuildValFunction): Ditto.
2595         (BuildCastFunction): Ditto.
2596         (BuildConvertFunction): Ditto.
2597         (BuildTruncFunction): Ditto.
2598         (BuildFloatFunction): Ditto.
2599         (BuildReFunction): Ditto.
2600         (BuildImFunction): Ditto.
2601         (BuildCmplxFunction): Ditto.
2603 2024-03-31  Christophe Lyon  <christophe.lyon@linaro.org>
2605         * Make-lang.in (m2.install-info): Fix rule.
2607 2024-03-31  Christophe Lyon  <christophe.lyon@linaro.org>
2609         * Make-lang.in (install-html): New rule.
2611 2024-03-28  Gaius Mulley  <gaiusmod2@gmail.com>
2613         PR modula2/114520
2614         * gm2-compiler/P0SyntaxCheck.bnf (DetectImport): New
2615         procedure.
2616         (EnableImportCheck): New boolean.
2617         (Expect): Call DetectImport.
2618         (Export): Set EnableImportCheck TRUE before ';' and FALSE
2619         afterwards.
2621 2024-03-28  Gaius Mulley  <(no_default)>
2623         PR modula2/114517
2624         * gm2-compiler/M2Options.def (SetCpp): Add comment.
2625         (GetCpp): Move after SetCpp.
2626         (GetLineDirectives): New procedure function.
2627         * gm2-compiler/M2Options.mod (GetLineDirectives): New
2628         procedure function.
2629         * gm2-gcc/m2options.h (M2Options_GetLineDirectives): New
2630         prototype.
2631         * gm2-lang.cc (gm2_langhook_init_options): OPT_fcpp only
2632         assert if !value.
2633         * m2.flex: Test GetLineDirectives before changing to LINE0
2634         state.
2636 2024-03-28  Gaius Mulley  <gaiusmod2@gmail.com>
2638         * target-independent/m2/Builtins.texi: Rebuilt.
2639         * target-independent/m2/gm2-libs.texi: Rebuilt.
2641 2024-03-26  Gaius Mulley  <gaiusmod2@gmail.com>
2643         PR modula2/114478
2644         * gm2-gcc/m2builtins.cc (struct builtin_macro_definition): New struct.
2645         (lookup_builtin_macro): New function.
2646         (m2builtins_BuildBuiltinTree): Rewrite to lookup builtin function
2647         and builtin macro.
2648         (lookup_builtin_function): New function.
2649         (define_builtin): Rename parameter type to prototype push macro
2650         definition to builtin_macros vector.
2651         (define_builtin_ext): New function.
2652         (define_builtin_math): New function.
2653         (m2builtins_init): Add isgreater, isless, isgreaterequal,
2654         islessequal, islessgreater, isunordered, isnormal to macro definitions.
2655         * gm2-libs/Builtins.def (isgreater): New procedure function.
2656         (isgreaterf): Ditto.
2657         (isgreaterl): Ditto.
2658         (isgreaterequal): Ditto.
2659         (isgreaterequalf): Ditto.
2660         (isgreaterequall): Ditto.
2661         (isless): Ditto.
2662         (islessf): Ditto.
2663         (islessl): Ditto.
2664         (islessequal): Ditto.
2665         (islessequalf): Ditto.
2666         (islessequall): Ditto.
2667         (islessgreater): Ditto.
2668         (islessgreaterf): Ditto.
2669         (islessgreaterl): Ditto.
2670         (isunordered): Ditto.
2671         (isunorderedf): Ditto.
2672         (isunorderedl): Ditto.
2673         (iseqsig): Ditto.
2674         (iseqsigf): Ditto.
2675         (iseqsigl): Ditto.
2676         (isnormal): Ditto.
2677         (isnormalf): Ditto.
2678         (isnormall): Ditto.
2679         (isinf_sign): Ditto.
2680         (isinf_signf): Ditto.
2681         (isinf_signl): Ditto.
2682         * gm2-libs/Builtins.mod (isgreater): New procedure function.
2683         (isgreaterf): Ditto.
2684         (isgreaterl): Ditto.
2685         (isgreaterequal): Ditto.
2686         (isgreaterequalf): Ditto.
2687         (isgreaterequall): Ditto.
2688         (isless): Ditto.
2689         (islessf): Ditto.
2690         (islessl): Ditto.
2691         (islessequal): Ditto.
2692         (islessequalf): Ditto.
2693         (islessequall): Ditto.
2694         (islessgreater): Ditto.
2695         (islessgreaterf): Ditto.
2696         (islessgreaterl): Ditto.
2697         (isunordered): Ditto.
2698         (isunorderedf): Ditto.
2699         (isunorderedl): Ditto.
2700         (iseqsig): Ditto.
2701         (iseqsigf): Ditto.
2702         (iseqsigl): Ditto.
2703         (isnormal): Ditto.
2704         (isnormalf): Ditto.
2705         (isnormall): Ditto.
2706         (isinf_sign): Ditto.
2707         (isinf_signf): Ditto.
2708         (isinf_signl): Ditto.
2710 2024-03-25  Gaius Mulley  <gaiusmod2@gmail.com>
2712         * Make-lang.in (doc/m2.pdf): Add line break.
2713         * target-independent/m2/Builtins.texi: Rebuilt.
2714         * target-independent/m2/gm2-libs.texi: Rebuilt.
2716 2024-03-23  Gaius Mulley  <gaiusmod2@gmail.com>
2718         PR modula2/114444
2719         * gm2-compiler/M2Quads.mod (BuildTruncFunction): Correct
2720         error format specifier.
2721         (BuildFloatFunction): Correct error format specifier.
2723 2024-03-23  Gaius Mulley  <gaiusmod2@gmail.com>
2725         PR modula2/114443
2726         * m2.flex: Call AddTokCharStar with a stringtok if
2727         end of line is reached without a closing quote.
2729 2024-03-22  Gaius Mulley  <gaiusmod2@gmail.com>
2731         PR modula2/114422
2732         * gm2-compiler/M2Quads.mod (BuildConstructor): Add escape
2733         character.
2735 2024-03-21  Gaius Mulley  <gaiusmod2@gmail.com>
2737         PR modula2/113836
2738         * Make-lang.in (GM2_C_OBJS): Add m2/gm2-gcc/m2pp.o.
2739         (m2/m2pp.o): Remove rule.
2740         (GM2-COMP-BOOT-DEFS): Add M2LangDump.def.
2741         (GM2-COMP-BOOT-MODS): Add M2LangDump.mod.
2742         (GM2-GCC-DEFS): Add M2LangDump.def.
2743         (GM2-GCC-MODS): Add M2LangDump.mod.
2744         * gm2-compiler/M2CaseList.mod (WriteCase): Rewrite.
2745         * gm2-compiler/M2Code.mod (DoModuleDeclare): Call
2746         DumpFilteredResolver depending upon DumpLangDecl.
2747         (DoCodeBlock): Call CreateDumpGimple depending upon
2748         DumpLangGimple.
2749         (Code): Replace DisplayQuadList blocks with DumpQuadruples.
2750         (DisplayQuadsInScope): Remove.
2751         (DisplayQuadNumbers): Remove.
2752         (CodeBlock): Rewrite.
2753         * gm2-compiler/M2GCCDeclare.def (IncludeDumpSymbol): New procedure.
2754         (DumpFilteredResolver): New procedure.
2755         (DumpFilteredDefinitive): New procedure.
2756         * gm2-compiler/M2GCCDeclare.mod (IncludeDumpSymbol): New procedure.
2757         (DumpFilteredResolver): New procedure.
2758         (DumpFilteredDefinitive): New procedure.
2759         (doInclude): Rewrite to use GetDumpFile.
2760         (WatchIncludeList): Remove fixed debugging value.
2761         (doExclude): Rewrite to use GetDumpFile.
2762         (DeclareTypesConstantsProceduresInRange): Remove fixed debugging
2763         values.
2764         (PreAddModGcc): Rename parameter t as tree.
2765         (IncludeGetNth): Rewrite to use GetDumpFile.
2766         (IncludeType): Ditto.
2767         (IncludeSubscript): Ditto.
2768         (PrintLocalSymbol): Ditto.
2769         (PrintLocalSymbols): Ditto.
2770         (IncludeGetVarient): Ditto.
2771         (PrintDeclared): Ditto.
2772         (PrintAlignment): Ditto.
2773         (PrintDecl): Ditto.
2774         (PrintScope): Ditto.
2775         (PrintProcedure): Ditto.
2776         (PrintSym): Ditto.
2777         (PrintSymbol): Ditto.
2778         (PrintTerse): Ditto.
2779         * gm2-compiler/M2Options.def (GetDumpLangDeclFilename): New
2780         procedure function.
2781         (SetDumpLangDeclFilename): New procedure.
2782         (GetDumpLangQuadFilename): New procedure function.
2783         (SetDumpLangQuadFilename): New procedure.
2784         (GetDumpLangGimpleFilename): New procedure function.
2785         (SetDumpLangGimpleFilename): New procedure.
2786         (SetM2DumpFilter): New procedure.
2787         (GetM2DumpFilter): New procedure function.
2788         (GetDumpLangGimple): New procedure function.
2789         * gm2-compiler/M2Options.mod (GetDumpLangDeclFilename): New
2790         procedure function.
2791         (SetDumpLangDeclFilename): New procedure.
2792         (GetDumpLangQuadFilename): New procedure function.
2793         (SetDumpLangQuadFilename): New procedure.
2794         (GetDumpLangGimpleFilename): New procedure function.
2795         (SetDumpLangGimpleFilename): New procedure.
2796         (SetM2DumpFilter): New procedure.
2797         (GetM2DumpFilter): New procedure function.
2798         (GetDumpLangGimple): New procedure function.
2799         * gm2-compiler/M2Quads.def (DumpQuadruples): New procedure.
2800         * gm2-compiler/M2Quads.mod (DumpUntil): New procedure.
2801         (GetCtorInit): New procedure function.
2802         (GetCtorFini): New procedure function.
2803         (DumpQuadrupleFilter): New procedure function.
2804         (DumpQuadrupleAll): New procedure.
2805         (DisplayQuadList): Remove procedure.
2806         (DumpQuadruples): New procedure.
2807         (DisplayQuadRange): Rewrite.
2808         (DisplayQuad): Ditto.
2809         (DisplayProcedureAttributes): Ditto.
2810         (WriteOperator): Ditto.
2811         (WriteMode): Ditto.
2812         * gm2-compiler/M2Scope.mod (ForeachScopeBlockDo2): Replace
2813         DisplayQuadruples with TraceQuadruples.
2814         (ForeachScopeBlockDo3): Replace DisplayQuadruples with
2815         TraceQuadruples.
2816         * gm2-compiler/SymbolConversion.def (Gcc2Mod): New procedure function.
2817         * gm2-compiler/SymbolConversion.mod: New procedure function.
2818         * gm2-gcc/m2misc.cc (m2misc_DebugTree): New function.
2819         (m2misc_DebugTreeChain): New function.
2820         * gm2-gcc/m2options.h (M2Options_GetDumpLangDeclFilename): New
2821         prototype.
2822         (M2Options_SetDumpLangDeclFilename): New prototype.
2823         (M2Options_GetDumpLangQuadFilename): New prototype.
2824         (M2Options_SetDumpLangQuadFilename): New prototype.
2825         (M2Options_GetDumpLangGimpleFilename): New prototype.
2826         (M2Options_SetDumpLangGimpleFilename): New prototype.
2827         (M2Options_GetDumpLangGimple): New prototype.
2828         (M2Options_SetM2DumpFilter): New prototype.
2829         (M2Options_GetM2DumpFilter): New prototype.
2830         * m2pp.cc: Move to...
2831         * gm2-gcc/m2pp.cc: ...here.
2832         * m2pp.h: Move to...
2833         * gm2-gcc/m2pp.h: ...here.
2834         * gm2-gcc/m2statement.cc (m2statement_BuildEndFunctionCode): Call
2835         m2pp_dump_gimple.
2836         * gm2-lang.cc (ENABLE_QUAD_DUMP_ALL): New define.
2837         (gm2_langhook_init_options): Add switch cases for proposed new
2838         command line options.
2839         * gm2-libs/DynamicStrings.def (ReverseIndex): New procedure
2840         function.
2841         * gm2-libs/DynamicStrings.mod: New procedure function.
2842         * gm2-compiler/M2LangDump.def: New file.
2843         * gm2-compiler/M2LangDump.mod: New file.
2844         * gm2-gcc/m2langdump.h: New file.
2845         * gm2-gcc/m2pp.def: New file.
2847 2024-03-21  Gaius Mulley  <gaiusmod2@gmail.com>
2849         PR modula2/114418
2850         * gm2-compiler/PCSymBuild.mod (PushConstFunctionType): Check
2851         func against NulSym and issue an error.
2853 2024-03-18  Gaius Mulley  <gaiusmod2@gmail.com>
2855         PR modula2/114380
2856         * gm2-compiler/SymbolTable.mod (GetLowestType): Do not
2857         skip over a set type, but return sym.
2859 2024-03-17  Gaius Mulley  <gaiusmod2@gmail.com>
2861         PR modula2/114296
2862         * gm2-compiler/M2ALU.mod (ElementsSolved): Add tokenno parameter.
2863         Add constant checks and generate error messages.
2864         (EvalSetValues): Pass tokenno parameter to ElementsSolved.
2865         * gm2-compiler/M2LexBuf.mod (stop): New procedure.
2866         (MakeVirtualTok): Call stop if caret = BadTokenNo.
2867         * gm2-compiler/M2Quads.def (BuildNulExpression): Add tokpos
2868         parameter.
2869         (BuildSetStart): Ditto.
2870         (BuildEmptySet): Ditto.
2871         (BuildConstructorEnd): Add startpos parameter.
2872         (BuildTypeForConstructor): Add tokpos parameter.
2873         * gm2-compiler/M2Quads.mod (BuildNulExpression): Add tokpos
2874         parameter and push tokpos to the quad stack.
2875         (BuildSetStart): Add tokpos parameter and push tokpos.
2876         (BuildSetEnd): Rewrite.
2877         (BuildEmptySet): Add tokpos parameter and push tokpos with
2878         the set type.
2879         (BuildConstructorStart): Pop typepos.
2880         (BuildConstructorEnd): Add startpos parameter.
2881         Create valtok from startpos and cbratokpos.
2882         (BuildTypeForConstructor): Add tokpos parameter.
2883         * gm2-compiler/M2Range.def (InitAssignmentRangeCheck): Rename
2884         d to des and e to expr.
2885         Add destok and exprtok parameters.
2886         * gm2-compiler/M2Range.mod (InitAssignmentRangeCheck): Rename
2887         d to des and e to expr.
2888         Add destok and exprtok parameters.
2889         Save destok and exprtok into range record.
2890         (FoldAssignment): Pass exprtok to TryDeclareConstant.
2891         * gm2-compiler/P3Build.bnf (ComponentValue): Rewrite.
2892         (Constructor): Rewrite.
2893         (ConstSetOrQualidentOrFunction): Rewrite.
2894         (SetOrQualidentOrFunction): Rewrite.
2895         * gm2-compiler/PCBuild.bnf (ConstSetOrQualidentOrFunction): Rewrite.
2896         (SetOrQualidentOrFunction): Rewrite.
2897         * gm2-compiler/PHBuild.bnf (Constructor): Rewrite.
2898         (ConstSetOrQualidentOrFunction): Rewrite.
2900 2024-03-14  Gaius Mulley  <gaiusmod2@gmail.com>
2902         PR modula2/114294
2903         * gm2-compiler/M2Quads.mod (BuildConstHighFromSym):
2904         Call PutConst to assign the type Cardinal in the result
2905         constant.
2907 2024-03-14  Gaius Mulley  <gaiusmod2@gmail.com>
2909         PR modula2/114333
2910         * gm2-compiler/M2GenGCC.mod (CodeStatement): Remove op1, op2 and
2911         op3 parameters to CodeIfLess, CodeIfLessEqu, CodeIfGreEqu, CodeIfGre,
2912         CodeIfIn, CodeIfNotIn.
2913         (CodeIfLess): Rewrite.
2914         (PerformCodeIfLess): New procedure.
2915         (CodeIfLess): Rewrite.
2916         (PerformCodeIfLess): New procedure.
2917         (CodeIfLessEqu): Rewrite.
2918         (PerformCodeIfLessEqu): New procedure.
2919         (CodeIfGreEqu): Rewrite.
2920         (PerformCodeIfGreEqu): New procedure.
2921         (CodeIfGre): Rewrite.
2922         (PerformCodeIfGre): New procedure.
2923         (CodeIfIn): Rewrite.
2924         (PerformCodeIfIn): New procedure.
2925         (CodeIfNotIn): Rewrite.
2926         (PerformCodeIfNotIn): New procedure.
2928 2024-03-14  Gaius Mulley  <gaiusmod2@gmail.com>
2930         PR modula2/114333
2931         * gm2-compiler/M2Check.mod (checkUnbounded): New procedure
2932         function.
2933         (checkArrayTypeEquivalence): Extend checking to cover unbounded
2934         arrays, arrays and constants.
2935         (IsTyped): Simplified the expression and corrected a test for
2936         IsConstructor.
2937         (checkTypeKindViolation): New procedure function.
2938         (doCheckPair): Call checkTypeKindViolation.
2939         * gm2-compiler/M2GenGCC.mod (CodeStatement): Remove parameters
2940         to CodeEqu and CodeNotEqu.
2941         (PerformCodeIfEqu): New procedure.
2942         (CodeIfEqu): Rewrite.
2943         (PerformCodeIfNotEqu): New procedure.
2944         (CodeIfNotEqu): Rewrite.
2945         * gm2-compiler/M2Quads.mod (BuildRelOpFromBoolean): Correct
2946         comment.
2948 2024-03-11  Gaius Mulley  <gaiusmod2@gmail.com>
2950         PR modula2/114295
2951         * gm2-compiler/M2Batch.mod (MakeProgramSource): Call PutDeclared
2952         if the module is known.
2953         (MakeDefinitionSource): Ditto.
2954         (MakeImplementationSource): Ditto.
2955         * gm2-compiler/M2Comp.mod (ExamineHeader): New procedure.
2956         (ExamineCompilationUnit): Rewrite.
2957         (PeepInto): Rewrite.
2958         * gm2-compiler/M2Error.mod (NewError): Remove default call to
2959         GetTokenNo.
2960         * gm2-compiler/M2Quads.mod (callRequestDependant): Push tokno with
2961         Adr.
2962         (BuildStringAdrParam): Ditto.
2963         (doBuildBinaryOp): Push OperatorPos on the bool stack.
2964         (BuildRelOp): Ditto.
2965         * gm2-compiler/P2Build.bnf (SetType): Pass set token pos to
2966         BuildSetType.
2967         (PointerType): Pass pointer token pos to BuildPointerType.
2968         * gm2-compiler/P2SymBuild.def (BuildPointerType): Add parameter
2969         pointerpos.
2970         (BuildSetType): Add parameter setpos.
2971         * gm2-compiler/P2SymBuild.mod (BuildPointerType): Add parameter
2972         pointerpos.  Build combined token and use it when creating a
2973         pointer type.
2974         (BuildSetType): Add parameter setpos.  Build combined token and
2975         use it when creating a set type.
2976         * gm2-compiler/SymbolTable.mod (DebugUnknownToken): New constant.
2977         (CheckTok): New procedure function.
2978         (MakeProcedure): Call CheckTok.
2979         (MakeRecord): Ditto.
2980         (MakeVarient): Ditto.
2981         (MakeEnumeration): Ditto.
2982         (MakeHiddenType): Ditto.
2983         (MakeConstant): Ditto.
2984         (MakeConstStringCnul): Ditto.
2985         (MakeSubrange): Ditto.
2986         (MakeTemporary): Ditto.
2987         (MakeVariableForParam): Ditto.
2988         (MakeParameterHeapVar): Ditto.
2989         (MakePointer): Ditto.
2990         (MakeSet): Ditto.
2991         (MakeUnbounded): Ditto.
2992         (MakeProcType): Ditto.
2994 2024-03-08  Gaius Mulley  <gaiusmod2@gmail.com>
2996         * gm2-compiler/M2Quads.mod (Init): Use InitIndexTuned with
2997         default size 65K.
2998         * gm2-compiler/SymbolConversion.mod (Init): Ditto.
2999         * gm2-compiler/SymbolTable.mod (BEGIN): Ditto.
3000         * mc-boot/GM2Dependent.cc: Rebuild.
3001         * mc-boot/GM2Dependent.h: Rebuild.
3002         * mc-boot/GM2RTS.cc: Rebuild.
3003         * pge-boot/GIndexing.cc: Rebuild.
3004         * pge-boot/GIndexing.h: Rebuild.
3005         * pge-boot/GM2Dependent.cc: Rebuild.
3006         * pge-boot/GM2Dependent.h: Rebuild.
3007         * pge-boot/GM2RTS.cc: Rebuild.
3009 2024-03-07  Gaius Mulley  <gaiusmod2@gmail.com>
3011         PR modula2/109969
3012         * gm2-compiler/M2LexBuf.def (TokenToLineNo): Rename parameter.
3013         (TokenToColumnNo): Rename parameter.
3014         (TokenToLocation): Rename parameter.
3015         (FindFileNameFromToken): Rename parameter.
3016         (DumpTokens): Rewrite comment.
3017         * gm2-compiler/M2LexBuf.mod: Rewrite.
3018         * gm2-compiler/P0SyntaxCheck.bnf (CheckInsertCandidate):
3019         DumpTokens before and after inserting recovery token.
3020         * gm2-gcc/m2builtins.cc (do_target_support_exists): Add
3021         bf_c99_compl case.
3022         * gm2-libs/Indexing.def (InitIndexTuned): New procedure
3023         function.
3024         (IsEmpty): New procedure function.
3025         * gm2-libs/Indexing.mod (InitIndexTuned): New procedure
3026         function.
3027         (IsEmpty): New procedure function.
3028         (Index): New field GrowFactor.
3029         (PutIndice): Use GrowFactor to extend dynamic array.
3031 2024-03-04  Gaius Mulley  <gaiusmod2@gmail.com>
3033         PR modula2/114227
3034         * gm2-libs-iso/M2RTS.mod (ProcedureChain): Remove.
3035         (ProcedureList): Remove.
3036         (ExecuteReverse): Remove.
3037         (ExecuteTerminationProcedures): Rewrite.
3038         (ExecuteInitialProcedures): Rewrite.
3039         (AppendProc): Remove.
3040         (InstallTerminationProcedure): Rewrite.
3041         (InstallInitialProcedure): Rewrite.
3042         (InitProcList): Remove.
3043         * gm2-libs/M2Dependent.def (InstallTerminationProcedure):
3044         New procedure.
3045         (ExecuteTerminationProcedures): New procedure.
3046         (InstallInitialProcedure): New procedure.
3047         (ExecuteInitialProcedures): New procedure.
3048         * gm2-libs/M2Dependent.mod (ProcedureChain): New type.
3049         (ProcedureList): New type.
3050         (ExecuteReverse): New procedure.
3051         (ExecuteTerminationProcedures): New procedure.
3052         (ExecuteInitialProcedures): New procedure.
3053         (AppendProc): New procedure.
3054         (InstallTerminationProcedure): New procedure.
3055         (InstallInitialProcedure): New procedure.
3056         (InitProcList): New procedure.
3057         * gm2-libs/M2RTS.mod (ProcedureChain): Remove.
3058         (ProcedureList): Remove.
3059         (ExecuteReverse): Remove.
3060         (ExecuteTerminationProcedures): Rewrite.
3061         (ExecuteInitialProcedures): Rewrite.
3062         (AppendProc): Remove.
3063         (InstallTerminationProcedure): Rewrite.
3064         (InstallInitialProcedure): Rewrite.
3065         (InitProcList): Remove.
3067 2024-02-25  Gaius Mulley  <gaiusmod2@gmail.com>
3069         PR modula2/113749
3070         * Make-lang.in (BUILD-PGE-O): Add m2/pge-boot/Gwrapc.o.
3071         * gm2-libs-ch/wrapc.c (wrapc_SeekSet): New function.
3072         (wrapc_SeekEnd): Ditto.
3073         (wrapc_ReadOnly): Ditto.
3074         (wrapc_WriteOnly): Ditto.
3075         * gm2-libs/FIO.mod (SEEK_SET): Remove.
3076         (SEEK_END): Remove.
3077         (UNIXREADONLY): Remove.
3078         (UNIXWRITEONLY): Remove.
3079         (ConnectToUnix): Replace UNIXWRITEONLY with a call to WriteOnly.
3080         Replace UNIXREADONLY with a call to ReadOnly.
3081         (SetPositionFromBeginning): Replace SEEK_SET with a call to
3082         SeekSet.
3083         (SetPositionFromEnd): Replace SEEK_END with a call to
3084         SeekEnd.
3085         * gm2-libs/wrapc.def (SeekSet): New procedure function.
3086         (SeekEnd): New procedure function.
3087         (ReadOnly): New procedure function.
3088         (WriteOnly): New procedure function.
3089         * mc-boot-ch/Glibc.c (BUILD_MC_LIBC_TRACE): Undef.
3090         (check_init): New function.
3091         (tracedb): Ditto.
3092         (tracedb_open): Ditto.
3093         (tracedb_result): Ditto.
3094         (libc_read): Ditto.
3095         (libc_write): Ditto.
3096         (libc_close): Ditto.
3097         (libc_creat): Ditto.
3098         (libc_open): Ditto.
3099         (libc_lseek): Ditto.
3100         * mc-boot-ch/Gwrapc.c (wrapc_SeekSet): New function.
3101         (wrapc_SeekEnd): Ditto.
3102         (wrapc_ReadOnly): Ditto.
3103         (wrapc_WriteOnly): Ditto.
3104         * mc-boot/GDynamicStrings.cc: Rebuilt.
3105         * mc-boot/GFIO.cc: Ditto.
3106         * mc-boot/GIndexing.cc: Ditto.
3107         * mc-boot/GM2Dependent.cc: Ditto.
3108         * mc-boot/GM2EXCEPTION.cc: Ditto.
3109         * mc-boot/GPushBackInput.cc: Ditto.
3110         * mc-boot/GRTExceptions.cc: Ditto.
3111         * mc-boot/GRTint.cc: Ditto.
3112         * mc-boot/GSArgs.cc: Ditto.
3113         * mc-boot/GStdIO.cc: Ditto.
3114         * mc-boot/GStringConvert.cc: Ditto.
3115         * mc-boot/GSysStorage.cc: Ditto.
3116         * mc-boot/Gdecl.cc: Ditto.
3117         * mc-boot/Gkeyc.cc: Ditto.
3118         * mc-boot/Glibc.h: Ditto.
3119         * mc-boot/GmcComment.cc: Ditto.
3120         * mc-boot/GmcComp.cc: Ditto.
3121         * mc-boot/GmcDebug.cc: Ditto.
3122         * mc-boot/GmcMetaError.cc: Ditto.
3123         * mc-boot/GmcStack.cc: Ditto.
3124         * mc-boot/GmcStream.cc: Ditto.
3125         * mc-boot/GnameKey.cc: Ditto.
3126         * mc-boot/GsymbolKey.cc: Ditto.
3127         * mc-boot/Gvarargs.cc: Ditto.
3128         * mc-boot/Gwrapc.h: Ditto.
3129         * mc/decl.mod (getSymName): Add pointerref clause.
3130         * mc/mcStream.mod (copy): Check for an error after every read.
3131         * mc/varargs.mod (copy): Rewrite pointer arithmetic using INC to
3132         avoid type incompatibility.
3133         * pge-boot/GDynamicStrings.cc: Rebuilt.
3134         * pge-boot/GDynamicStrings.h: Ditto.
3135         * pge-boot/GFIO.cc: Ditto.
3136         * pge-boot/GFIO.h: Ditto.
3137         * pge-boot/GIO.cc: Ditto.
3138         * pge-boot/GIndexing.cc: Ditto.
3139         * pge-boot/GM2Dependent.cc: Ditto.
3140         * pge-boot/GM2EXCEPTION.cc: Ditto.
3141         * pge-boot/GNameKey.cc: Ditto.
3142         * pge-boot/GPushBackInput.cc: Ditto.
3143         * pge-boot/GRTExceptions.cc: Ditto.
3144         * pge-boot/GStdIO.cc: Ditto.
3145         * pge-boot/GSymbolKey.cc: Ditto.
3146         * pge-boot/GSysStorage.cc: Ditto.
3147         * pge-boot/Glibc.h: Ditto.
3148         * pge-boot/Gwrapc.cc: Ditto.
3149         * pge-boot/Gwrapc.h: Ditto.
3151 2024-02-22  Gaius Mulley  <gaiusmod2@gmail.com>
3153         PR modula2/114055
3154         * gm2-compiler/M2Check.mod (Import): IsConstLitInternal and
3155         IsConstLit.
3156         (isInternal): New procedure function.
3157         (doCheck): Test for isInternal in either operand and early
3158         return true.
3159         * gm2-compiler/M2Quads.mod (PushOne): Rewrite with extra
3160         parameter internal.
3161         (BuildPseudoBy): Add TRUE parameter to PushOne call.
3162         (BuildIncProcedure): Add FALSE parameter to PushOne call.
3163         (BuildDecProcedure): Add FALSE parameter to PushOne call.
3164         * gm2-compiler/M2Range.mod (ForLoopBeginTypeCompatible):
3165         Uncomment code and tidy up error string.
3166         * gm2-compiler/SymbolTable.def (PutConstLitInternal):
3167         New procedure.
3168         (IsConstLitInternal): New procedure function.
3169         * gm2-compiler/SymbolTable.mod (PutConstLitInternal):
3170         New procedure.
3171         (IsConstLitInternal): New procedure function.
3172         (SymConstLit): New field IsInternal.
3173         (CreateConstLit): Initialize IsInternal to FALSE.
3175 2024-02-21  Gaius Mulley  <gaiusmod2@gmail.com>
3177         PR modula2/114026
3178         * gm2-compiler/M2GenGCC.mod (Import): Remove DisplayQuadruples.
3179         Remove DisplayQuadList.
3180         (MixTypesBinary): Replace check with overflowCheck.
3181         New variable typeChecking.
3182         Use GenQuadOTypetok to retrieve typeChecking.
3183         Use typeChecking to suppress error message.
3184         * gm2-compiler/M2LexBuf.def (MakeVirtual2Tok): New procedure
3185         function.
3186         * gm2-compiler/M2LexBuf.mod (MakeVirtualTok): Improve comment.
3187         (MakeVirtual2Tok): New procedure function.
3188         * gm2-compiler/M2Quads.def (GetQuadOTypetok): New procedure.
3189         * gm2-compiler/M2Quads.mod (QuadFrame): New field CheckType.
3190         (PutQuadO): Rewrite using PutQuadOType.
3191         (PutQuadOType): New procedure.
3192         (GetQuadOTypetok): New procedure.
3193         (BuildPseudoBy): Rewrite.
3194         (BuildForToByDo): Remove type checking.
3195         Add parameters e2, e2tok, BySym, bytok to
3196         InitForLoopBeginRange.
3197         Push the RangeId.
3198         (BuildEndFor): Pop the RangeId.
3199         Use GenQuadOTypetok to generate AddOp without type checking.
3200         Call PutRangeForIncrement with the RangeId and IncQuad.
3201         (GenQuadOtok): Rewrite using GenQuadOTypetok.
3202         (GenQuadOTypetok): New procedure.
3203         * gm2-compiler/M2Range.def (InitForLoopBeginRangeCheck):
3204         Rename d as des, e as expr.
3205         Add expr1, expr1tok, expr2, expr2tok, byconst, byconsttok
3206         parameters.
3207         (PutRangeForIncrement): New procedure.
3208         * gm2-compiler/M2Range.mod (Import): MakeVirtual2Tok.
3209         (Range): Add expr2, byconst, destok, exprtok, expr2tok,
3210         incrementquad.
3211         (InitRange): Initialize expr2 to NulSym.
3212         Initialize byconst to NulSym.
3213         Initialize tokenNo, destok, exprtok, expr2tok, byconst to
3214         UnknownTokenNo.
3215         Initialize incrementquad to 0.
3216         (PutRangeForIncrement): New procedure.
3217         (PutRangeDesExpr2): New procedure.
3218         (InitForLoopBeginRangeCheck): Rewrite.
3219         (ForLoopBeginTypeCompatible): New procedure function.
3220         (CodeForLoopBegin): Call ForLoopBeginTypeCompatible and
3221         only code the for loop assignment if all the type checks
3222         succeed.
3224 2024-02-19  Gaius Mulley  <gaiusmod2@gmail.com>
3226         PR modula2/113889
3227         * gm2-compiler/M2ALU.mod (StringFitsArray): Add tokeno parameter
3228         to GetStringLength.
3229         (InitialiseArrayOfCharWithString): Add tokeno parameter to
3230         GetStringLength.
3231         (CheckGetCharFromString): Add tokeno parameter to GetStringLength.
3232         * gm2-compiler/M2Const.mod (constResolveViaMeta): Replace
3233         PutConstString with PutConstStringKnown.
3234         * gm2-compiler/M2GCCDeclare.mod (DeclareCharConstant): Add tokenno
3235         parameter and add assert.  Use tokenno to generate location.
3236         (DeclareStringConstant): Add tokenno and add asserts.
3237         Add tokenno parameter to calls to GetStringLength.
3238         (PromoteToString): Add assert and add tokenno parameter to
3239         GetStringLength.
3240         (PromoteToCString): Add assert and add tokenno parameter to
3241         GetStringLength.
3242         (DeclareConstString): New procedure function.
3243         (TryDeclareConst): Remove size local variable.
3244         Check IsConstStringKnown.
3245         Call DeclareConstString.
3246         (PrintString): New procedure.
3247         (PrintVerboseFromList): Call PrintString.
3248         (CheckResolveSubrange): Check IsConstStringKnown before creating
3249         subrange for char or issuing an error.
3250         * gm2-compiler/M2GenGCC.mod (ResolveConstantExpressions): Add
3251         StringLengthOp, StringConvertM2nulOp, StringConvertCnulOp case
3252         clauses.
3253         (FindSize): Add assert IsConstStringKnown.
3254         (StringToChar): New variable tokenno.
3255         Add tokenno parameter to GetStringLength.
3256         (FoldStringLength): New procedure.
3257         (FoldStringConvertM2nul): New procedure.
3258         (FoldStringConvertCnul): New procedure.
3259         (CodeAddr): Add tokenno parameter.
3260         Replace CurrentQuadToken with tokenno.
3261         Add tokenno parameter to GetStringLength.
3262         (PrepareCopyString): Rewrite.
3263         (IsConstStrKnown): New procedure function.
3264         (FoldAdd): Detect conststring op2 and op3 which are known and
3265         concat.  Place result into op1.
3266         (FoldStandardFunction): Pass tokenno as a parameter to
3267         GetStringLength.
3268         (CodeXIndr): Rewrite comment.
3269         Rename op1 to left, op3 to right.
3270         Pass rightpos to GetStringLength.
3271         * gm2-compiler/M2Quads.def (QuadrupleOp): Add
3272         StringConvertCnulOp, StringConvertM2nulOp and StringLengthOp.
3273         * gm2-compiler/M2Quads.mod (import): Remove MakeConstLitString.
3274         Add CopyConstString and PutConstStringKnown.
3275         (IsInitialisingConst): Add StringConvertCnulOp,
3276         StringConvertM2nulOp and StringLengthOp.
3277         (callRequestDependant): Replace MakeConstLitString with
3278         MakeConstString.
3279         (DeferMakeConstStringCnul): New procedure function.
3280         (DeferMakeConstStringM2nul): New procedure function.
3281         (CheckParameter): Add early return if the string const is unknown.
3282         (DescribeType): Add token parameter to GetStringLength.
3283         Check for IsConstStringKnown.
3284         (ManipulateParameters): Use DeferMakeConstStringCnul and
3285         DeferMakeConstStringM2nul.
3286         (MakeLengthConst): Remove and replace with...
3287         (DeferMakeLengthConst): ... this.
3288         (doBuildBinaryOp): Create ConstString and set it to contents
3289         unknown.
3290         Check IsConstStringKnown before generating error message.
3291         (WriteQuad): Add StringConvertCnulOp, StringConvertM2nulOp and
3292         StringLengthOp.
3293         (WriteOperator): Add StringConvertCnulOp, StringConvertM2nulOp and
3294         StringLengthOp.
3295         * gm2-compiler/M2SymInit.mod (CheckReadBeforeInitQuad): Add
3296         StringConvertCnulOp, StringConvertM2nulOp and StringLengthOp.
3297         * gm2-compiler/NameKey.mod (LengthKey): Allow NulName to return 0.
3298         * gm2-compiler/P2SymBuild.mod (BuildString): Replace
3299         MakeConstLitString with MakeConstString.
3300         (DetermineType): Replace PutConstString with PutConstStringKnown.
3301         * gm2-compiler/SymbolTable.def (MakeConstVar): Tidy up comment.
3302         (MakeConstLitString): Remove.
3303         (MakeConstString): New procedure function.
3304         (MakeConstStringCnul): New procedure function.
3305         (MakeConstStringM2nul): New procedure function.
3306         (PutConstStringKnown): New procedure.
3307         (CopyConstString): New procedure.
3308         (IsConstStringKnown): New procedure function.
3309         (IsConstStringM2): New procedure function.
3310         (IsConstStringC): New procedure function.
3311         (IsConstStringM2nul): New procedure function.
3312         (IsConstStringCnul): New procedure function.
3313         (GetStringLength): Add token parameter.
3314         (PutConstString): Remove.
3315         (GetConstStringM2): Remove.
3316         (GetConstStringC): Remove.
3317         (GetConstStringM2nul): Remove.
3318         (GetConstStringCnul): Remove.
3319         (MakeConstStringC): Remove.
3320         * gm2-compiler/SymbolTable.mod (SymConstString): Remove
3321         M2Variant, NulM2Variant, CVariant, NulCVariant.
3322         Add Known.
3323         (CheckAnonymous): Replace $$ with __anon.
3324         (IsNameAnonymous): Replace $$ with __anon.
3325         (MakeConstVar): Detect whether the name is nul and treat as
3326         a temporary constant.
3327         (MakeConstLitString): Remove.
3328         (BackFillString): Remove.
3329         (InitConstString): Rewrite.
3330         (GetConstStringM2): Remove.
3331         (GetConstStringC): Remove.
3332         (GetConstStringContent): New procedure function.
3333         (GetConstStringM2nul): Remove.
3334         (GetConstStringCnul): Remove.
3335         (MakeConstStringCnul): Rewrite.
3336         (MakeConstStringM2nul): Rewrite.
3337         (MakeConstStringC): Remove.
3338         (MakeConstString): Rewrite.
3339         (PutConstStringKnown): New procedure.
3340         (CopyConstString): New procedure.
3341         (PutConstString): Remove.
3342         (IsConstStringKnown): New procedure function.
3343         (IsConstStringM2): New procedure function.
3344         (IsConstStringC): Rewrite.
3345         (IsConstStringM2nul): Rewrite.
3346         (IsConstStringCnul): Rewrite.
3347         (GetConstStringKind): New procedure function.
3348         (GetString): Check Known.
3349         (GetStringLength): Add token parameter and check Known.
3351 2024-02-10  Gaius Mulley  <gaiusmod2@gmail.com>
3353         PR modula2/113848
3354         * gm2-libs/SArgs.mod (GetArg): Re-write address arithmetic
3355         to avoid (void *) computation.
3357 2024-02-03  Gaius Mulley  <gaiusmod2@gmail.com>
3359         PR modula2/113730
3360         * gm2-compiler/M2Base.mod (IsUserType): New procedure function.
3361         (MixTypes): Use IsUserType instead of IsType before calling MixTypes.
3362         * gm2-compiler/M2GenGCC.mod (GetTypeMode): Remove and import from
3363         SymbolTable.
3364         (CodeBinaryCheck): Replace call to MixTypes with MixTypesBinary.
3365         (CodeBinary): Replace call to MixTypes with MixTypesBinary.
3366         (CodeIfLess): Replace MixTypes with ComparisonMixTypes.
3367         (CodeIfGre): Replace MixTypes with ComparisonMixTypes.
3368         (CodeIfLessEqu): Replace MixTypes with ComparisonMixTypes.
3369         (CodeIfGreEqu): Replace MixTypes with ComparisonMixTypes.
3370         (CodeIfEqu): Replace MixTypes with ComparisonMixTypes.
3371         (CodeIfNotEqu): Replace MixTypes with ComparisonMixTypes.
3372         (ComparisonMixTypes): New procedure function.
3373         * gm2-compiler/M2Quads.mod (BuildEndFor): Replace GenQuadO
3374         with GenQuadOtok and pass tokenpos for the operands to the AddOp
3375         and XIndrOp.
3376         (CheckRangeIncDec): Check etype against NulSym and dtype for a
3377         pointer and set etype to Address.
3378         (BuildAddAdrFunction): New variable opa.  Convert operand to an
3379         address and save result in opa.  Replace GenQuad with GenQuadOtok.
3380         (BuildSubAdrFunction): New variable opa.  Convert operand to an
3381         address and save result in opa.  Replace GenQuad with GenQuadOtok.
3382         (BuildDiffAdrFunction): New variable opa.  Convert operand to an
3383         address and save result in opa.  Replace GenQuad with GenQuadOtok.
3384         (calculateMultipicand): Replace GenQuadO with GenQuadOtok.
3385         (ConvertToAddress): New procedure function.
3386         (BuildDynamicArray): Convert index to address before adding to
3387         the base.
3388         * gm2-compiler/SymbolTable.def (GetTypeMode): New procedure function.
3389         * gm2-compiler/SymbolTable.mod (GetTypeMode): New procedure
3390         function implemented (moved from M2GenGCC.mod).
3391         * gm2-libs/SArgs.mod (GetArg): Replace cast to PtrToChar with ADDRESS.
3393 2024-02-01  Gaius Mulley  <gaiusmod2@gmail.com>
3395         PR modula2/111627
3396         PR modula2/112506
3397         * gm2-compiler/M2Comp.mod (Pass0CheckMod): Test IsDefImp before
3398         checking IsDefinitionForC.
3400 2024-01-31  Gaius Mulley  <gaiusmod2@gmail.com>
3402         * gm2-compiler/M2Comp.mod (Pass0CheckMod): Tidy up comment.
3403         * gm2-compiler/P1Build.bnf (PossiblyExportIdent): Replace
3404         PushTF with PushTFtok.
3406 2024-01-26  Gaius Mulley  <gaiusmod2@gmail.com>
3408         * gm2-compiler/M2Check.mod (dumpIndice): New procedure.
3409         (dumpIndex): New procedure.
3410         (dumptInfo): New procedure.
3411         (buildError4): Add comment and pass formal and actual to
3412         MetaError4.  Improve text describing error.
3413         (buildError2): Generate different error descriptions for
3414         the three error kinds.
3415         (checkConstMeta): Add block comment.  Add more meta checks
3416         and call doCheckPair to complete string const checking.
3417         Add tinfo parameter.
3418         (checkConstEquivalence): Add tinfo parameter.
3419         * gm2-compiler/M2GCCDeclare.mod (PrintVerboseFromList):
3420         Print the length of a const string.
3421         * gm2-compiler/M2GenGCC.mod (CodeParam): Remove parameters
3422         op1, op2 and op3.
3423         (doParam): Add paramtok parameter.  Use paramtok instead rather
3424         than CurrentQuadToken.
3425         (CodeParam): Rewrite.
3426         * gm2-compiler/M2Quads.mod (CheckProcedureParameters):
3427         Add comments explaining that const strings are not checked
3428         in M2Quads.mod.
3429         (FailParameter): Use MetaErrorT2 with tokpos rather than
3430         MetaError2.
3431         (doBuildBinaryOp): Assign OldPos and OperatorPos before the
3432         IF block.
3433         * gm2-compiler/SymbolTable.mod (PutConstString): Add call to
3434         InitWhereDeclaredTok.
3436 2024-01-25  Gaius Mulley  <gaiusmod2@gmail.com>
3438         * gm2-libs/libc.def (lseek): Change the second parameter
3439         type to CSSIZE_T and make the return value optional.
3441 2024-01-24  Gaius Mulley  <gaiusmod2@gmail.com>
3443         PR modula2/113559
3444         * gm2-libs/FIO.mod (SetPositionFromBeginning): Convert pos into
3445         CSSIZE_T during call to lseek.
3446         (SetPositionFromEnd): Convert pos into CSSIZE_T during call to
3447         lseek.
3449 2024-01-23  H.J. Lu  <hjl.tools@gmail.com>
3451         PR bootstrap/113554
3452         * mc/mc.flex (alloca): Don't redefine.
3453         (handleDate): Replace (long *)0 with (time_t *)0 when calling
3454         time.
3456 2024-01-19  Gaius Mulley  <gaiusmod2@gmail.com>
3458         * gm2-compiler/M2BasicBlock.mod (InitBasicBlocks): Rename
3459         ForeachScopeBlockDo to ForeachScopeBlockDo3.
3460         * gm2-compiler/M2Code.mod: Import ForeachScopeBlockDo2.
3461         (OptimizeScopeBlock): Call ForeachScopeBlockDo3 for
3462         procedures with three parameters and ForeachScopeBlockDo2
3463         for two parameters.
3464         (CodeBlock): Ditto.
3465         * gm2-compiler/M2GCCDeclare.mod (DeclareTypesConstantsProcedures):
3466         Rename ForeachScopeBlockDo to ForeachScopeBlockDo3.
3467         * gm2-compiler/M2GenGCC.def (ConvertQuadsToTree): Remove Scope
3468         parameter.
3469         * gm2-compiler/M2GenGCC.mod (ConvertQuadsToTree): Remove Scope
3470         parameter.
3471         (MaybeDebugBuiltinMemcpy): Remove parameter tok.
3472         (MaybeDebugBuiltinMemset): Remove.
3473         (MakeCopyUse): Remove tokenno from call to
3474         MaybeDebugBuiltinMemcpy.
3475         (PerformFoldBecomes): Remove desloc and exprloc.
3476         (checkArrayElements): Remove location.  Remove virtpos
3477         as a parameter to MaybeDebugBuiltinMemcpy.
3478         (NoWalkProcedure): Add attribute unused.
3479         (CheckElementSetTypes): Remove parameter p.
3480         Remove CurrentQuadToken in call to MaybeDebugBuiltinMemcpy.
3481         Remove NoWalkProcedure from call to CheckElementSetTypes.
3482         Remove tokenno from call to MaybeDebugBuiltinMemcpy.
3483         * gm2-compiler/M2Optimize.mod (RemoveProcedures): Replace
3484         two parameter indirect procedure iterator with
3485         ForeachScopeBlockDo2.
3486         * gm2-compiler/M2SSA.mod: Remove ForeachScopeBlockDo.
3487         * gm2-compiler/M2Scope.def (ForeachScopeBlockDo2): New
3488         declaration.
3489         (ForeachScopeBlockDo): Rename ...
3490         (ForeachScopeBlockDo3): ... to this.
3491         (ScopeProcedure2): New declaration.
3492         * gm2-compiler/M2Scope.mod (ForeachScopeBlockDo2): New
3493         procedure.
3494         (ForeachScopeBlockDo): Rename ...
3495         (ForeachScopeBlockDo3): ... to this.
3497 2024-01-18  Gaius Mulley  <gaiusmod2@gmail.com>
3499         PR modula2/111956
3500         * Make-lang.in (host_mc_longreal): Remove.
3501         * configure: Regenerate.
3502         * configure.ac (M2C_LONGREAL_FLOAT128): Remove.
3503         (M2C_LONGREAL_PPC64LE): Remove.
3504         * gm2-compiler/M2Options.def (SetIBMLongDouble): New procedure.
3505         (GetIBMLongDouble): New procedure function.
3506         (SetIEEELongDouble): New procedure.
3507         (GetIEEELongDouble): New procedure function.
3508         * gm2-compiler/M2Options.mod (SetIBMLongDouble): New procedure.
3509         (GetIBMLongDouble): New procedure function.
3510         (SetIEEELongDouble): New procedure.
3511         (GetIEEELongDouble): New procedure function.
3512         (InitializeLongDoubleFlags): New procedure called during
3513         module block initialization.
3514         * gm2-gcc/m2configure.cc: Remove duplicate includes.
3515         (m2configure_M2CLongRealFloat128): Remove.
3516         (m2configure_M2CLongRealIBM128): Remove.
3517         (m2configure_M2CLongRealLongDouble): Remove.
3518         (m2configure_M2CLongRealLongDoublePPC64LE): Remove.
3519         (m2configure_TargetIEEEQuadDefault): New function.
3520         * gm2-gcc/m2configure.def (M2CLongRealFloat128): Remove.
3521         (M2CLongRealIBM128): Remove.
3522         (M2CLongRealLongDouble): Remove.
3523         (M2CLongRealLongDoublePPC64LE): Remove.
3524         (TargetIEEEQuadDefault): New function.
3525         * gm2-gcc/m2configure.h (m2configure_M2CLongRealFloat128): Remove.
3526         (m2configure_M2CLongRealIBM128): Remove.
3527         (m2configure_M2CLongRealLongDouble): Remove.
3528         (m2configure_M2CLongRealLongDoublePPC64LE): Remove.
3529         (m2configure_TargetIEEEQuadDefault): New function.
3530         * gm2-gcc/m2options.h (M2Options_SetIBMLongDouble): New prototype.
3531         (M2Options_GetIBMLongDouble): New prototype.
3532         (M2Options_SetIEEELongDouble): New prototype.
3533         (M2Options_GetIEEELongDouble): New prototype.
3534         * gm2-gcc/m2type.cc (build_m2_long_real_node): Re-implement using
3535         results of M2Options_GetIBMLongDouble and M2Options_GetIEEELongDouble.
3536         * gm2-lang.cc (gm2_langhook_handle_option): Add case
3537         OPT_mabi_ibmlongdouble and call M2Options_SetIBMLongDouble.
3538         Add case OPT_mabi_ieeelongdouble and call M2Options_SetIEEELongDouble.
3539         * gm2config.aci.in: Regenerate.
3540         * gm2spec.cc (lang_specific_driver): Remove block defined by
3541         M2C_LONGREAL_PPC64LE.
3542         Remove case OPT_mabi_ibmlongdouble.
3543         Remove case OPT_mabi_ieeelongdouble.
3545 2024-01-11  Gaius Mulley  <gaiusmod2@gmail.com>
3547         PR modula2/112946
3548         * gm2-compiler/M2GenGCC.mod (IsExpressionCompatible): Import.
3549         (ExpressionTypeCompatible): Import.
3550         (CodeStatement): Remove op1, op2, op3 parameters from CodeSetOr,
3551         CodeSetAnd, CodeSetSymmetricDifference, CodeSetLogicalDifference.
3552         (checkArrayElements): Rename op1 to des and op3 to expr.
3553         Use despos and exprpos instead of CurrentQuadToken.
3554         (checkRecordTypes): Rename op1 to des and op2 to expr.
3555         Use virtpos instead of CurrentQuadToken.
3556         (checkIncorrectMeta): Ditto.
3557         (checkBecomes): Rename op1 to des and op3 to expr.
3558         Use virtpos instead of CurrentQuadToken.
3559         (NoWalkProcedure): New procedure stub.
3560         (CheckBinaryExpressionTypes): New procedure function.
3561         (CheckElementSetTypes): New procedure function.
3562         (CodeBinarySet): Re-write.
3563         (FoldBinarySet): Re-write.
3564         (CodeSetOr): Remove parameters op1, op2 and op3.
3565         (CodeSetAnd): Ditto.
3566         (CodeSetLogicalDifference): Ditto.
3567         (CodeSetSymmetricDifference): Ditto.
3568         (CodeIfIn): Call CheckBinaryExpressionTypes and
3569         CheckElementSetTypes.
3570         * gm2-compiler/M2Quads.mod (BuildRotateFunction): Correct
3571         parameters to MakeVirtualTok to reflect parameter block
3572         passed to Rotate.
3574 2024-01-09  Gaius Mulley  <gaiusmod2@gmail.com>
3576         PR modula2/112920
3577         * gm2-compiler/M2GCCDeclare.mod (Group): New declaration.
3578         Import MakeSubrange, MakeConstVar, MakeConstLit and DivTrunc.
3579         (FreeGroup): New declaration.
3580         (GlobalGroup): New declaration.
3581         (ToBeSolvedByQuads): Remove.
3582         (NilTypedArrays): Remove.
3583         (PartiallyDeclared): Remove.
3584         (HeldByAlignment): Remove.
3585         (FinishedAlignment): Remove.
3586         (ToDoList): Remove.
3587         (DebugSet): Re-format.
3588         (DebugNumber): Re-format.
3589         (DebugSetNumbers): Reference sets using GlobalGroup.
3590         (AddSymToWatch): Re-format.
3591         (WatchIncludeList): Reference sets using GlobalGroup.
3592         (WatchRemoveList): Reference sets using GlobalGroup.
3593         (NewGroup): New procedure.
3594         (DisposeGroup): New procedure.
3595         (InitGroup): New procedure.
3596         (KillGroup): New procedure.
3597         (DupGroup): New procedure.
3598         (EqualGroup): New procedure.
3599         (LookupSet): New procedure.
3600         (CanDeclareTypePartially): Reference sets using GlobalGroup.
3601         (CompletelyResolved): Reference sets using GlobalGroup.
3602         (IsNilTypedArrays): Reference sets using GlobalGroup.
3603         (IsFullyDeclared): Reference sets using GlobalGroup.
3604         (IsPartiallyDeclared): Reference sets using GlobalGroup.
3605         (IsPartiallyOrFullyDeclared): Reference sets using GlobalGroup.
3606         (DeclareTypeConstFully): Reference sets using GlobalGroup.
3607         (bodyl): Remove.
3608         (Body): Use bodyt and to lookup the required set.
3609         (ForeachTryDeclare): Remove parameter l.  Lookup set instead.
3610         (DeclareOutstandingTypes): Add new rules setarraynul and setfully.
3611         Reference sets using GlobalGroup.
3612         (ActivateWatch): New procedure.
3613         (DeclareTypesConstantsProceduresInRange): Re-written to check
3614         group change.
3615         (DeclareTypesConstantsProcedures): Re-written to check
3616         group change.
3617         (DeclareBoolean): Reference sets using GlobalGroup.
3618         (DeclarePackedBoolean): Ditto.
3619         (DeclareDefaultConstants): Ditto.
3620         (FreeGroup): Initialized.
3621         (GlobalGroup): Ditto.
3622         * gm2-compiler/Sets.def (EqualSet): New procedure function.
3623         Remove export qualified list of identifiers.
3624         * gm2-compiler/Sets.mod (EqualSet): New procedure function.
3626 2024-01-04  David Malcolm  <dmalcolm@redhat.com>
3628         * lang.opt.urls: New file, autogenerated by
3629         regenerate-opt-urls.py.
3631 2023-12-15  Gaius Mulley  <gaiusmod2@gmail.com>
3633         PR modula2/112946
3634         * gm2-compiler/M2Check.mod (checkConstMeta): New procedure
3635         function.
3636         (checkConstEquivalence): New procedure function.
3637         (doCheckPair): Add call to checkConstEquivalence.
3638         * gm2-compiler/M2GenGCC.mod (ResolveConstantExpressions): Call
3639         FoldBecomes with reduced parameters.
3640         (FoldBecomes): Re-write.
3641         (TryDeclareConst): New procedure.
3642         (RemoveQuads): New procedure.
3643         (DeclaredOperandsBecomes): New procedure function.
3644         (TypeCheckBecomes): New procedure function.
3645         (PerformFoldBecomes): New procedure.
3646         * gm2-compiler/M2Range.mod (FoldAssignment): Call
3647         AssignmentTypeCompatible to check des expr compatibility.
3648         * gm2-compiler/M2SymInit.mod (CheckReadBeforeInitQuad): Remove
3649         parameter lst.
3650         (FilterCheckReadBeforeInitQuad): Remove parameter lst.
3651         (CheckReadBeforeInitFirstBasicBlock): Remove parameter lst.
3652         Call FilterCheckReadBeforeInitQuad without lst.
3654 2023-12-13  Gaius Mulley  <gaiusmod2@gmail.com>
3656         PR modula2/112921
3657         * gm2-libs-iso/ConvStringShort.def: New file.
3658         * gm2-libs-iso/ConvStringShort.mod: New file.
3659         * gm2-libs-iso/ShortConv.def: New file.
3660         * gm2-libs-iso/ShortConv.mod: New file.
3661         * gm2-libs-iso/ShortMath.def: New file.
3662         * gm2-libs-iso/ShortMath.mod: New file.
3663         * gm2-libs-iso/ShortStr.def: New file.
3664         * gm2-libs-iso/ShortStr.mod: New file.
3666 2023-12-12  Gaius Mulley  <gaiusmod2@gmail.com>
3668         PR modula2/112984
3669         * gm2-libs-coroutines/SYSTEM.mod: Remove redundant import of memcpy.
3670         * gm2-libs-iso/ClientSocket.mod: Remove redundant import of IOConsts.
3671         * gm2-libs-iso/IOChan.mod: Remove redundant import of IOConsts.
3672         * gm2-libs-iso/IOLink.mod: Remove redundant import of IOChan and SYSTEM.
3673         * gm2-libs-iso/IOResult.mod: Remove redundant import of IOChan.
3674         * gm2-libs-iso/LongIO.mod: Remove redundant import of writeString.
3675         * gm2-libs-iso/LongWholeIO.mod: Remove redundant import of IOChan.
3676         * gm2-libs-iso/M2RTS.mod: Remove redundant import of ADDRESS.
3677         * gm2-libs-iso/MemStream.mod: Remove redundant import of ADDRESS.
3678         * gm2-libs-iso/RTdata.mod: Remove redundant import of DeviceTablePtr.
3679         * gm2-libs-iso/RTfio.mod: Remove redundant import of DeviceTablePtr.
3680         * gm2-libs-iso/RTgen.mod: Remove redundant import of DeviceTablePtr.
3681         * gm2-libs-iso/RealIO.mod: Remove redundant import of writeString.
3682         * gm2-libs-iso/RndFile.mod: Remove redundant import of SYSTEM.
3683         * gm2-libs-iso/SYSTEM.mod: Remove redundant import of memcpy.
3684         * gm2-libs-iso/ShortWholeIO.mod: Remove redundant import of IOConsts.
3685         * gm2-libs-iso/TextIO.mod: Remove redundant import of IOChan.
3686         * gm2-libs-iso/TextUtil.mod: Remove redundant import of IOChan.
3687         * gm2-libs-iso/WholeIO.mod: Remove redundant import of IOChan.
3688         * gm2-libs-log/BitByteOps.mod: Remove redundant import of BYTE.
3689         * gm2-libs-log/FileSystem.mod: Remove redundant import of BYTE and ADDRESS.
3690         * gm2-libs-log/InOut.mod: Remove redundant import of String.
3691         * gm2-libs-log/RealConversions.mod: Remove redundant import of StringToLongreal.
3692         * gm2-libs/FIO.mod: Remove redundant import of SIZE.
3693         * gm2-libs/FormatStrings.mod: Remove redundant import of String
3694         and ConCatChar.
3695         * gm2-libs/IO.mod: Remove redundant import of SIZE.
3696         * gm2-libs/Indexing.mod: Remove redundant import of ADDRESS.
3697         * gm2-libs/M2Dependent.mod: Remove redundant import of SIZE.
3698         * gm2-libs/M2RTS.mod: Remove redundant import of ADDRESS.
3699         * gm2-libs/OptLib.mod: Remove redundant import of DynamicStrings.
3700         * gm2-libs/SYSTEM.mod: Remove redundant import of memcpy.
3701         * gm2-libs/StringConvert.mod: Remove redundant import of String.
3703 2023-12-07  Gaius Mulley  <gaiusmod2@gmail.com>
3705         PR modula2/112893
3706         * gm2-compiler/M2Base.mod (Ass): Extend array to include proc row
3707         and column.  Allow PIM to assign cardinal variables to address
3708         variables.
3709         (Expr): Ditto.
3710         (Comp): Ditto.
3711         * gm2-compiler/M2Check.mod (getSType): New procedure function.
3712         Replace all occurances of GetSType with getSType.
3713         * gm2-compiler/M2GenGCC.mod (CodeParam): Rewrite format specifier
3714         error message.
3715         * gm2-compiler/M2Quads.mod (CheckProcTypeAndProcedure): Add tokno
3716         parameter.
3717         * gm2-compiler/M2Range.def (InitTypesParameterCheck): Add tokno
3718         parameter.
3719         (InitParameterRangeCheck): Add tokno parameter.
3720         Remove EXPORT QUALIFIED list.
3721         (InitParameterRangeCheck): Add tokno parameter.
3722         * gm2-compiler/M2Range.mod (InitTypesParameterCheck): Add tokno
3723         parameter and pass tokno to PutRangeParam.
3724         (InitParameterRangeCheck): Add tokno parameter and pass tokno to
3725         PutRangeParam.
3726         (PutRangeParam): Add tokno parameter and assign to tokenNo.
3727         (FoldTypeParam): Rewrite format string.
3729 2023-12-06  Thomas Schwinge  <thomas@codesourcery.com>
3731         * lang.opt (-isysroot): New.
3733 2023-12-05  Gaius Mulley  <gaiusmod2@gmail.com>
3735         PR modula2/112865
3736         * gm2-compiler/M2Quads.mod (BuildReFunction): Use
3737         GetDType to retrieve the type of the operand when
3738         converting the complex type to its scalar equivalent.
3739         (BuildImFunction): Use GetDType to retrieve the type of the
3740         operand when converting the complex type to its scalar
3741         equivalent.
3743 2023-12-05  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3745         * mc/mc.flex [__GNUC__]: Define alloca as __builtin_alloca.
3746         (handleDate): Use strchr instead of index.
3748 2023-12-04  Gaius Mulley  <gaiusmod2@gmail.com>
3750         PR modula2/112825
3751         * tools-src/makeSystem: Change all occurrences of -c to -S.
3753 2023-11-01  Gaius Mulley  <gaiusmod2@gmail.com>
3755         PR modula2/102989
3756         * gm2-compiler/SymbolTable.mod (OverflowZType): Import from m2expr.
3757         (ConstantStringExceedsZType): Remove import.
3758         (GetConstLitType): Replace ConstantStringExceedsZType with OverflowZType.
3759         * gm2-gcc/m2decl.cc (m2decl_ConstantStringExceedsZType): Remove.
3760         (m2decl_BuildConstLiteralNumber): Re-write.
3761         * gm2-gcc/m2decl.def (ConstantStringExceedsZType): Remove.
3762         * gm2-gcc/m2decl.h (m2decl_ConstantStringExceedsZType): Remove.
3763         * gm2-gcc/m2expr.cc (m2expr_StrToWideInt): Rewrite to check overflow.
3764         (m2expr_OverflowZType): New function.
3765         (ToWideInt): New function.
3766         * gm2-gcc/m2expr.def (OverflowZType): New procedure function declaration.
3767         * gm2-gcc/m2expr.h (m2expr_OverflowZType): New prototype.
3769 2023-10-27  Gaius Mulley  <gaiusmod2@gmail.com>
3771         PR modula2/111530
3772         * gm2-libs-ch/cgetopt.c (cgetopt_cgetopt_long): Re-format.
3773         (cgetopt_cgetopt_long_only): Re-format.
3774         (cgetopt_SetOption):  Re-format and assign flag to NULL
3775         if name is also NULL.
3776         * gm2-libs/GetOpt.def (AddLongOption): Add index parameter
3777         and change flag to be a VAR parameter rather than a pointer.
3778         (GetOptLong): Re-format.
3779         (GetOpt): Correct comment.
3780         * gm2-libs/GetOpt.mod: Re-write to rely on cgetopt rather
3781         than implement long option creation in GetOpt.
3782         * gm2-libs/cgetopt.def (SetOption): has_arg type is INTEGER.
3784 2023-10-25  Gaius Mulley  <gaiusmod2@gmail.com>
3786         PR modula2/111955
3787         * gm2-gcc/m2builtins.cc (gm2_isnan_node): New tree.
3788         (DoBuiltinIsnan): New function.
3789         (m2builtins_BuiltInIsnan): New function.
3790         (m2builtins_init): Initialize gm2_isnan_node.
3791         (list_of_builtins): Add define for __builtin_isnan.
3792         * gm2-libs-ch/wrapc.c (wrapc_isnan): New function.
3793         (wrapc_isnanf): New function.
3794         (wrapc_isnanl): New function.
3795         * gm2-libs/Builtins.def (isnanf): New procedure function.
3796         (isnan): New procedure function.
3797         (isnanl): New procedure function.
3798         * gm2-libs/Builtins.mod:
3799         * gm2-libs/wrapc.def (isnan): New function.
3800         (isnanf): New function.
3801         (isnanl): New function.
3803 2023-10-24  Gaius Mulley  <gaiusmod2@gmail.com>
3805         * gm2-libs/M2Dependent.mod (InitDependencyList): New
3806         procedure.
3807         (CreateModule): Call InitDependencyList to initialize
3808         all fields of DependencyList.
3810 2023-10-24  Gaius Mulley  <gaiusmod2@gmail.com>
3812         * gm2-libs/M2Dependent.mod (CreateModule): Initialize all
3813         dependency fields for DependencyList.
3815 2023-10-17  Gaius Mulley  <gaiusmod2@gmail.com>
3817         PR modula2/111756
3818         * Make-lang.in (CM2DEP): New define conditionally set if
3819         ($(CXXDEPMODE),depmode=gcc3).
3820         (GM2_1): Use $(CM2DEP).
3821         (m2/gm2-gcc/%.o): Ensure $(@D)/$(DEPDIR) is created.
3822         Add $(CM2DEP) to the $(COMPILER) command and use $(POSTCOMPILE).
3823         (m2/gm2-gcc/m2configure.o): Ditto.
3824         (m2/gm2-lang.o): Ditto.
3825         (m2/m2pp.o): Ditto.
3826         (m2/gm2-gcc/rtegraph.o): Ditto.
3827         (m2/mc-boot/$(SRC_PREFIX)%.o): Ditto.
3828         (m2/mc-boot-ch/$(SRC_PREFIX)%.o): Ditto.
3829         (m2/mc-boot-ch/$(SRC_PREFIX)%.o): Ditto.
3830         (m2/mc-boot/main.o): Ditto.
3831         (mcflex.o): Ditto.
3832         (m2/gm2-libs-boot/M2RTS.o): Ditto.
3833         (m2/gm2-libs-boot/%.o): Ditto.
3834         (m2/gm2-libs-boot/%.o): Ditto.
3835         (m2/gm2-libs-boot/RTcodummy.o): Ditto.
3836         (m2/gm2-libs-boot/RTintdummy.o): Ditto.
3837         (m2/gm2-libs-boot/wrapc.o): Ditto.
3838         (m2/gm2-libs-boot/UnixArgs.o): Ditto.
3839         (m2/gm2-libs-boot/choosetemp.o): Ditto.
3840         (m2/gm2-libs-boot/errno.o): Ditto.
3841         (m2/gm2-libs-boot/dtoa.o): Ditto.
3842         (m2/gm2-libs-boot/ldtoa.o): Ditto.
3843         (m2/gm2-libs-boot/termios.o): Ditto.
3844         (m2/gm2-libs-boot/SysExceptions.o): Ditto.
3845         (m2/gm2-libs-boot/SysStorage.o): Ditto.
3846         (m2/gm2-compiler-boot/M2GCCDeclare.o): Ditto.
3847         (m2/gm2-compiler-boot/M2Error.o): Ditto.
3848         (m2/gm2-compiler-boot/%.o): Ditto.
3849         (m2/gm2-compiler-boot/%.o): Ditto.
3850         (m2/gm2-compiler-boot/m2flex.o): Ditto.
3851         (m2/gm2-compiler/%.o): Ditto.
3852         (m2/gm2-compiler/m2flex.o): Ditto.
3853         (m2/gm2-libs-iso/%.o): Ditto.
3854         (m2/gm2-libs/%.o): Ditto.
3855         (m2/gm2-libs/%.o): Ditto.
3856         (m2/gm2-libs/choosetemp.o): Ditto.
3857         (m2/boot-bin/mklink$(exeext)): Ditto.
3858         (m2/pge-boot/%.o): Ditto.
3859         (m2/pge-boot/%.o): Ditto.
3860         (m2/gm2-compiler/%.o): Ensure $(@D)/$(DEPDIR) is created and use
3861         $(POSTCOMPILE).
3862         (m2/gm2-compiler/%.o): Ditto.
3863         (m2/gm2-libs-iso/%.o): Ditto.
3864         (m2/gm2-libs/%.o): Ditto.
3865         * README: Purge out of date info.
3866         * gm2-compiler/M2Comp.mod (MakeSaveTempsFileNameExt): Import.
3867         (OnExitDelete): Import.
3868         (GetModuleDefImportStatementList): Import.
3869         (GetModuleModImportStatementList): Import.
3870         (GetImportModule): Import.
3871         (IsImportStatement): Import.
3872         (IsImport): Import.
3873         (GetImportStatementList): Import.
3874         (File): Import.
3875         (Close): Import.
3876         (EOF): Import.
3877         (IsNoError): Import.
3878         (WriteLine): Import.
3879         (WriteChar): Import.
3880         (FlushOutErr): Import.
3881         (WriteS): Import.
3882         (OpenToRead): Import.
3883         (OpenToWrite): Import.
3884         (ReadS): Import.
3885         (WriteS): Import.
3886         (GetM): Import.
3887         (GetMM): Import.
3888         (GetDepTarget): Import.
3889         (GetMF): Import.
3890         (GetMP): Import.
3891         (GetObj): Import.
3892         (GetMD): Import.
3893         (GetMMD): Import.
3894         (GenerateDefDependency): New procedure.
3895         (GenerateDependenciesFromImport): New procedure.
3896         (GenerateDependenciesFromList): New procedure.
3897         (GenerateDependencies): New procedure.
3898         (Compile): Re-write.
3899         (compile): Re-format.
3900         (CreateFileStem): New procedure function.
3901         (DoPass0): Re-write.
3902         (IsLibrary): New procedure function.
3903         (IsUnique): New procedure function.
3904         (Append): New procedure.
3905         (MergeDep): New procedure.
3906         (GetRuleTarget): New procedure function.
3907         (ReadDepContents): New procedure function.
3908         (WriteDep): New procedure.
3909         (WritePhonyDep): New procedure.
3910         (WriteDepContents): New procedure.
3911         (CreateDepFilename): New procedure function.
3912         (Pass0CheckDef): New procedure function.
3913         (Pass0CheckMod): New procedure function.
3914         (DoPass0): Re-write.
3915         (DepContent): New variable.
3916         (DepOutput): New variable.
3917         (BaseName): New procedure function.
3918         * gm2-compiler/M2GCCDeclare.mod (PrintTerse): Handle IsImport.
3919         Replace IsGnuAsmVolatile with IsGnuAsm.
3920         * gm2-compiler/M2Options.def (EXPORT QUALIFIED): Remove list.
3921         (SetM): New procedure.
3922         (GetM): New procedure function.
3923         (SetMM): New procedure.
3924         (GetMM): New procedure function.
3925         (SetMF): New procedure.
3926         (GetMF): New procedure function.
3927         (SetPPOnly): New procedure.
3928         (GetB): New procedure function.
3929         (SetMD): New procedure.
3930         (GetMD): New procedure function.
3931         (SetMMD): New procedure.
3932         (GetMMD): New procedure function.
3933         (SetMQ): New procedure.
3934         (SetMT): New procedure.
3935         (GetMT): New procedure function.
3936         (GetDepTarget): New procedure function.
3937         (SetMP): New procedure.
3938         (GetMP): New procedure function.
3939         (SetObj): New procedure.
3940         (SetSaveTempsDir): New procedure.
3941         * gm2-compiler/M2Options.mod (SetM): New procedure.
3942         (GetM): New procedure function.
3943         (SetMM): New procedure.
3944         (GetMM): New procedure function.
3945         (SetMF): New procedure.
3946         (GetMF): New procedure function.
3947         (SetPPOnly): New procedure.
3948         (GetB): New procedure function.
3949         (SetMD): New procedure.
3950         (GetMD): New procedure function.
3951         (SetMMD): New procedure.
3952         (GetMMD): New procedure function.
3953         (SetMQ): New procedure.
3954         (SetMT): New procedure.
3955         (GetMT): New procedure function.
3956         (GetDepTarget): New procedure function.
3957         (SetMP): New procedure.
3958         (GetMP): New procedure function.
3959         (SetObj): New procedure.
3960         (SetSaveTempsDir): New procedure.
3961         * gm2-compiler/M2Preprocess.def (PreprocessModule): New parameters
3962         topSource and outputDep.  Re-write.
3963         (MakeSaveTempsFileNameExt): New procedure function.
3964         (OnExitDelete): New procedure function.
3965         * gm2-compiler/M2Preprocess.mod (GetM): Import.
3966         (GetMM): Import.
3967         (OnExitDelete): Add debugging message.
3968         (RemoveFile): Add debugging message.
3969         (BaseName): Remove.
3970         (BuildCommandLineExecute): New procedure function.
3971         * gm2-compiler/M2Search.def (SetDefExtension): Remove unnecessary
3972         spacing.
3973         * gm2-compiler/SymbolTable.mod (GetSymName): Handle ImportSym and
3974         ImportStatementSym.
3975         * gm2-gcc/m2options.h (M2Options_SetMD): New function.
3976         (M2Options_GetMD): New function.
3977         (M2Options_SetMMD): New function.
3978         (M2Options_GetMMD): New function.
3979         (M2Options_SetM): New function.
3980         (M2Options_GetM): New function.
3981         (M2Options_SetMM): New function.
3982         (M2Options_GetMM): New function.
3983         (M2Options_GetMQ): New function.
3984         (M2Options_SetMF): New function.
3985         (M2Options_GetMF): New function.
3986         (M2Options_SetMT): New function.
3987         (M2Options_SetMP): New function.
3988         (M2Options_GetMP): New function.
3989         (M2Options_GetDepTarget): New function.
3990         * gm2-lang.cc (gm2_langhook_init): Correct comment case.
3991         (gm2_langhook_init_options): Add case OPT_M and
3992         OPT_MM.
3993         (gm2_langhook_post_options): Add case OPT_MF, OPT_MT,
3994         OPT_MD and OPT_MMD.
3995         * lang-specs.h (M2CPP): Pass though MF option.
3996         (MDMMD): New define.  Add MDMMD to "@modula-2".
3998 2023-10-15  Gaius Mulley  <gaiusmod2@gmail.com>
4000         * Make-lang.in (m2.tags): New rule.
4002 2023-10-11  Gaius Mulley  <gaiusmod2@gmail.com>
4004         * gm2-compiler/M2GCCDeclare.mod (DeclareSubrange): Check
4005         the base type of the subrange against the ZTYPE and call
4006         DeclareSubrangeNarrow if necessary.
4007         (DeclareSubrangeNarrow): New procedure function.
4009 2023-10-11  Gaius Mulley  <gaiusmod2@gmail.com>
4011         PR modula2/111675
4012         * gm2-compiler/M2CaseList.mod (appendTree): Replace
4013         InitStringCharStar with InitString.
4014         * gm2-compiler/M2GCCDeclare.mod: Import AreConstantsEqual.
4015         (DeclareSubrange): Add zero alignment test and call
4016         BuildSmallestTypeRange if necessary.
4017         (WalkSubrangeDependants): Walk the align expression.
4018         (IsSubrangeDependants): Test the align expression.
4019         * gm2-compiler/M2Quads.mod (BuildStringAdrParam): Correct end name.
4020         * gm2-compiler/P2SymBuild.mod (BuildTypeAlignment): Allow subranges
4021         to be zero aligned (packed).
4022         * gm2-compiler/SymbolTable.mod (Subrange): Add Align field.
4023         (MakeSubrange): Set Align to NulSym.
4024         (PutAlignment): Assign Subrange.Align to align.
4025         (GetAlignment): Return Subrange.Align.
4026         * gm2-gcc/m2expr.cc (noBitsRequired): Rewrite.
4027         (calcNbits): Rename ...
4028         (m2expr_calcNbits): ... to this and test for negative values.
4029         (m2expr_BuildTBitSize): Replace calcNBits with m2expr_calcNbits.
4030         * gm2-gcc/m2expr.def (calcNbits): Export.
4031         * gm2-gcc/m2expr.h (m2expr_calcNbits): New prototype.
4032         * gm2-gcc/m2type.cc (noBitsRequired): Remove.
4033         (m2type_BuildSmallestTypeRange): Call m2expr_calcNbits.
4034         (m2type_BuildSubrangeType): Create range_type from
4035         build_range_type (type, lowval, highval).
4037 2023-09-29  Gaius Mulley  <gaiusmod2@gmail.com>
4039         * gm2-compiler/M2Quads.mod (EndBuildFor): Improve
4040         block comments.
4041         * gm2-libs-iso/SysClock.mod (ExtractDate): Replace
4042         testDays with yearOfDays.  New local variable monthOfDays.
4044 2023-09-26  Gaius Mulley  <gaiusmod2@gmail.com>
4046         PR modula2/111510
4047         * gm2-compiler/M2GenGCC.mod (IsExportedGcc): Minor spacing changes.
4048         (BuildTrashTreeFromInterface): Minor spacing changes.
4049         * gm2-compiler/M2Options.mod (GetRuntimeModuleOverride): Call
4050         string to generate a nul terminated C style string.
4051         * gm2-compiler/M2Quads.mod (BuildStringAdrParam): New procedure.
4052         (BuildM2InitFunction): Replace inline parameter generation with
4053         calls to BuildStringAdrParam.
4055 2023-09-19  Gaius Mulley  <gaiusmod2@gmail.com>
4057         * Make-lang.in (host_mc_longreal): Detect hosting on powerpc64le
4058         and if so use __float128 for longreal in mc.
4059         (MC_ARGS): Append host_mc_longreal.
4060         * config-make.in (TEST_TARGET_CPU_DEFAULT): New variable.
4061         (TEST_HOST_CPU_DEFAULT): New variable.
4062         * configure: Regenerate.
4063         * configure.ac (M2C_LONGREAL_FLOAT128): New define set if target
4064         is powerpc64le.
4065         (M2C_LONGREAL_PPC64LE): New define set if target is powerpc64le.
4066         * gm2-compiler/M2GCCDeclare.mod: Correct comment case.
4067         * gm2-compiler/M2GenGCC.mod (MaybeDebugBuiltinAlloca): Call
4068         SetLastFunction for the builtin function call.
4069         (MaybeDebugBuiltinMemcpy): Call SetLastFunction for the builtin
4070         function call.
4071         (MaybeDebugBuiltinMemset): New procedure function.
4072         (MakeCopyUse): Use GNU formatting.
4073         (UseBuiltin): Rewrite to check BuiltinExists.
4074         (CodeDirectCall): Rewrite to check BuiltinExists and call
4075         SetLastFunction.
4076         (CodeMakeAdr): Re-format.
4077         * gm2-compiler/M2Options.def (SetDebugBuiltins): New procedure.
4078         * gm2-compiler/M2Options.mod (SetUninitVariableChecking): Allow
4079         "cond" to switch UninitVariableConditionalChecking separately.
4080         (SetDebugBuiltins): New procedure.
4081         * gm2-compiler/M2Quads.def (BuildFunctionCall): Add parameter
4082         ConstExpr.
4083         * gm2-compiler/M2Quads.mod (BuildRealProcedureCall): Add parameter
4084         to BuildRealFuncProcCall.
4085         (BuildRealFuncProcCall): Add ConstExpr parameter.  Pass ConstExpr
4086         to BuildFunctionCall.
4087         (BuildFunctionCall): Add parameter ConstExpr.  Pass ConstExpr to
4088         BuildRealFunctionCall.
4089         (BuildConstFunctionCall): Add parameter ConstExpr.  Pass ConstExpr to
4090         BuildFunctionCall.
4091         (BuildRealFunctionCall): Add parameter ConstExpr.  Pass ConstExpr to
4092         BuildRealFuncProcCall.
4093         * gm2-compiler/P3Build.bnf (SetOrDesignatorOrFunction): Pass FALSE
4094         to BuildFunctionCall.
4095         (AssignmentOrProcedureCall): Pass FALSE to BuildFunctionCall.
4096         * gm2-compiler/SymbolTable.def (IsProcedureBuiltinAvailable): New
4097         procedure function.
4098         * gm2-compiler/SymbolTable.mod (CanUseBuiltin): New procedure
4099         function.
4100         (IsProcedureBuiltinAvailable): New procedure function.
4101         * gm2-gcc/m2builtins.cc (DEBUGGING): Undef.
4102         (bf_category): New enum type.
4103         (struct builtin_function_entry): New field function_avail.
4104         (m2builtins_BuiltInMemCopy): Rename from ...
4105         (m2builtins_BuiltinMemCopy): ... this.
4106         (DoBuiltinMemSet): New function.
4107         (m2builtins_BuiltinMemSet): New function.
4108         (do_target_support_exists): New function.
4109         (target_support_exists): New function.
4110         (m2builtins_BuiltinExists): Return true or false.
4111         (m2builtins_BuildBuiltinTree): Rename local variables.
4112         Replace long_double_type_node with GetM2LongRealType.
4113         (m2builtins_init): Use GetM2LongRealType rather than
4114         long_double_type_node.
4115         * gm2-gcc/m2builtins.def (BuiltInMemCopy): Rename to ...
4116         (BuiltinMemCopy): ... this.
4117         (BuiltinMemSet): New procedure function.
4118         * gm2-gcc/m2builtins.h (m2builtins_BuiltInMemCopy): Rename to ...
4119         (m2builtins_BuiltinMemCopy): ... this.
4120         (m2builtins_BuiltinMemSet): New procedure function.
4121         * gm2-gcc/m2configure.cc (m2configure_M2CLongRealFloat128): New
4122         procedure function.
4123         (m2configure_M2CLongRealIBM128): New procedure function.
4124         (m2configure_M2CLongRealLongDouble): New procedure function.
4125         (m2configure_M2CLongRealLongDoublePPC64LE): New procedure function.
4126         * gm2-gcc/m2configure.def (M2CLongRealFloat128): New procedure function.
4127         (M2CLongRealIBM128): New procedure function.
4128         (M2CLongRealLongDouble): New procedure function.
4129         (M2CLongRealLongDoublePPC64LE): New procedure function.
4130         * gm2-gcc/m2configure.h (m2configure_FullPathCPP): New procedure function.
4131         (m2configure_M2CLongRealFloat128): New procedure function.
4132         (m2configure_M2CLongRealIBM128): New procedure function.
4133         (m2configure_M2CLongRealLongDouble): New procedure function.
4134         (m2configure_M2CLongRealLongDoublePPC64LE): New procedure function.
4135         * gm2-gcc/m2convert.cc (m2convert_BuildConvert): Use convert_loc.
4136         * gm2-gcc/m2options.h (M2Options_SetDebugBuiltins): New function.
4137         * gm2-gcc/m2statement.cc (m2statement_BuildAssignmentTree): Set
4138         TREE_USED to true.
4139         (m2statement_BuildGoto):Set TREE_USED to true.
4140         (m2statement_BuildParam): Set TREE_USED to true.
4141         (m2statement_BuildBuiltinCallTree): New function.
4142         (m2statement_BuildFunctValue): Set TREE_USED to true.
4143         * gm2-gcc/m2statement.def (BuildBuiltinCallTree): New procedure function.
4144         * gm2-gcc/m2statement.h (m2statement_BuildBuiltinCallTree): New
4145         procedure function.
4146         * gm2-gcc/m2treelib.cc (m2treelib_DoCall0): Remove spacing.
4147         (m2treelib_DoCall1): Remove spacing.
4148         (m2treelib_DoCall2): Remove spacing.
4149         (m2treelib_DoCall3): Remove spacing.
4150         (add_stmt): Rename parameter.
4151         * gm2-gcc/m2type.cc (build_set_type): Remove spacing.
4152         (build_m2_specific_size_type): Remove spacing.
4153         (finish_build_pointer_type): Remove spacing.
4154         (m2type_BuildVariableArrayAndDeclare): Remove spacing.
4155         (build_m2_short_real_node): Remove spacing.
4156         (build_m2_real_node): Remove spacing.
4157         (build_m2_long_real_node): Use float128_type_node if
4158         M2CLongRealFloat128 is set.
4159         (build_m2_ztype_node): Remove spacing.
4160         (build_m2_long_int_node): Remove spacing.
4161         (build_m2_long_card_node): Remove spacing.
4162         (build_m2_short_int_node): Remove spacing.
4163         (build_m2_short_card_node): Remove spacing.
4164         (build_m2_iso_loc_node): Remove spacing.
4165         (m2type_SameRealType): New function.
4166         (m2type_InitBaseTypes): Create m2_c_type_node using
4167         m2_long_complex_type_node.
4168         (m2type_SetAlignment): Tidy up comment.
4169         * gm2-gcc/m2type.def (SameRealType):  New procedure function.
4170         * gm2-gcc/m2type.h (m2type_SameRealType): New procedure function.
4171         * gm2-lang.cc (gm2_langhook_type_for_mode): Build long complex
4172         node from m2 language specific long double node.
4173         * gm2-libs-log/RealConversions.mod (IsNan): New procedure
4174         function.
4175         (doPowerOfTen): Re-implement.
4176         * gm2-libs/Builtins.mod: Add newline.
4177         * gm2-libs/DynamicStrings.def (ReplaceChar): New procedure function.
4178         * gm2-libs/DynamicStrings.mod (ReplaceChar): New procedure function.
4179         * gm2config.aci.in (M2C_LONGREAL_FLOAT128): New config value.
4180         (M2C_LONGREAL_PPC64LE): New config value.
4181         * gm2spec.cc (lang_specific_driver): New local variable
4182         need_default_mabi set to default value depending upon
4183         M2C_LONGREAL_PPC64LE and M2C_LONGREAL_FLOAT128.
4184         * lang.opt (Wcase-enum): Moved to correct section.
4185         * m2pp.cc (m2pp_real_type): New function.
4186         (m2pp_type): Call m2pp_real_type.
4187         (m2pp_print_mode): New function.
4188         (m2pp_simple_type): Call m2pp_simple_type.
4189         (m2pp_float): New function.
4190         (m2pp_expression): Call m2pp_float.
4191         * mc-boot/GDynamicStrings.cc: Rebuild.
4192         * mc-boot/GDynamicStrings.h: Rebuild.
4193         * mc-boot/GFIO.cc: Rebuild.
4194         * mc-boot/GFIO.h: Rebuild.
4195         * mc-boot/GIO.cc: Rebuild.
4196         * mc-boot/GRTint.cc: Rebuild.
4197         * mc-boot/Gdecl.cc: Rebuild.
4198         * mc-boot/GmcOptions.cc: Rebuild.
4199         * mc-boot/GmcOptions.h: Rebuild.
4200         * mc/decl.mod: Rebuild.
4201         * mc/mcOptions.def (getCRealType): New procedure function.
4202         (getCLongRealType): New procedure function.
4203         (getCShortRealType): New procedure function.
4204         * mc/mcOptions.mod (getCRealType): New procedure function.
4205         (getCLongRealType): New procedure function.
4206         (getCShortRealType): New procedure function.
4208 2023-09-14  Gaius Mulley  <gaiusmod2@gmail.com>
4210         * gm2-compiler/M2CaseList.mod (NewRanges): Add block
4211         comment.
4212         (NewSet): Add block comment.
4213         (DisplayRanges): Add block comment.
4214         (IncludeElement): Add block comment.
4215         (IncludeElements): Add block comment.
4216         (appendString): Add block comment.
4217         (appendEnum): Add block comment.
4218         (appendTree): Add block comment.
4219         (SubrangeErrors): Add block comment.
4221 2023-09-14  Gaius Mulley  <gaiusmod2@gmail.com>
4223         * gm2-compiler/M2CaseList.mod (appendString): New procedure.
4224         (appendEnum): Re-implement.
4225         (NoOfSetElements): New procedure function.
4226         (isPrintableChar): New procedure function.
4227         (appendTree): New procedure.
4228         (SubrangeErrors): New procedure.
4229         (EmitMissingRangeErrors): Call SubrangeErrors if appropriate.
4230         * gm2-compiler/M2SymInit.mod (SetFieldInitializedNo): Avoid
4231         using a temporary variable once.
4232         (IsLocalVar): Comment out.
4233         (RecordContainsVarient): Remove fieldtype.
4234         (GenerateNoteFlow): Remove lst parameter.
4235         (CheckDeferredRecordAccess): Remove lst parameter.
4236         (CheckUnary): Remove lst parameter.  Remove procSym.
4237         (CheckBinary): Remove lst parameter.  Remove procSym.
4238         (CheckIndrX): Remove lst parameter.  Remove procSym.
4239         (CheckXIndr): Remove bblst and procSym parameters.
4240         (CheckRecordField): Remove procSym, op1tok, op2tok and op2.
4241         (CheckBecomes): Remove procSym and bblst.
4242         (CheckComparison): Remove procSym and bblst.
4243         (CheckAddr): Remove procSym parameter.
4244         * gm2-gcc/m2expr.cc (m2expr_CSTIntToString): New function.
4245         (m2expr_CSTIntToChar): New function.
4246         * gm2-gcc/m2expr.def (CSTIntToString): New procedure function
4247         declaration.
4248         (CSTIntToChar): New procedure function declaration.
4249         * gm2-gcc/m2expr.h (m2expr_CSTIntToChar): New prototype.
4250         (m2expr_CSTIntToString): New prototype.
4252 2023-09-13  Gaius Mulley  <gaiusmod2@gmail.com>
4254         * Make-lang.in (GM2_FLAGS): Add -Wcase-enum.
4255         (GM2_ISO_FLAGS): Add -Wcase-enum.
4256         * gm2-compiler/M2CaseList.mod (EnumerateErrors): Issue
4257         singular or plural start text prior to the enum list.
4258         Remove unused parameter tokenno.
4259         (EmitMissingRangeErrors): New procedure.
4260         (MissingCaseBounds): Call EmitMissingRangeErrors.
4261         (MissingCaseStatementBounds): Call EmitMissingRangeErrors.
4262         * gm2-libs-iso/TextIO.mod: Fix spacing.
4264 2023-09-12  Gaius Mulley  <gaiusmod2@gmail.com>
4266         * gm2-compiler/M2CaseList.def (PushCase): Rename parameters
4267         r to rec and v to va.  Add expr parameter.
4268         (MissingCaseStatementBounds): New procedure function.
4269         * gm2-compiler/M2CaseList.mod (RangePair): Add expression.
4270         (PushCase): Rename parameters r to rec and v to va.  Add
4271         expr parameter.
4272         (RemoveRange): New procedure function.
4273         (SubBitRange): Detect the case when the range in the set matches
4274         lo..hi.
4275         (CheckLowHigh): New procedure.
4276         (ExcludeCaseRanges): Rename parameter c to cd.  Rename local
4277         variables q to cl and r to rp.
4278         (High): Remove.
4279         (Low): Remove.
4280         (DoEnumValues): Remove.
4281         (IncludeElement): New procedure.
4282         (IncludeElements): New procedure.
4283         (ErrorRangeEnum): New procedure.
4284         (ErrorRange): Remove.
4285         (ErrorRanges): Remove.
4286         (appendEnum): New procedure.
4287         (appendStr): New procedure.
4288         (EnumerateErrors): New procedure.
4289         (MissingCaseBounds): Re-implement.
4290         (InRangeList): Remove.
4291         (MissingCaseStatementBounds): New procedure function.
4292         (checkTypes): Re-format.
4293         (inRange): Re-format.
4294         (TypeCaseBounds): Re-format.
4295         * gm2-compiler/M2Error.mod (GetAnnounceScope): Add noscope to
4296         case label list.
4297         * gm2-compiler/M2GCCDeclare.mod: Replace ForeachFieldEnumerationDo
4298         with ForeachLocalSymDo.
4299         * gm2-compiler/M2Options.def (SetCaseEnumChecking): New procedure.
4300         (CaseEnumChecking): New variable.
4301         * gm2-compiler/M2Options.mod (SetCaseEnumChecking): New procedure.
4302         (Module initialization): set CaseEnumChecking to FALSE.
4303         * gm2-compiler/M2Quads.def (QuadOperator): Alphabetically ordered.
4304         * gm2-compiler/M2Quads.mod (IsBackReferenceConditional): Add else
4305         clause.
4306         (BuildCaseStart): Pass selector expression to InitCaseBounds.
4307         (CheckUninitializedVariablesAreUsed): Remove.
4308         (IsInlineWithinBlock): Remove.
4309         (AsmStatementsInBlock): Remove.
4310         (CheckVariablesInBlock): Remove commented code.
4311         (BeginVarient): Pass NulSym to InitCaseBounds.
4312         * gm2-compiler/M2Range.mod (FoldCaseBounds): New local variable
4313         errorGenerated.  Add call to MissingCaseStatementBounds.
4314         * gm2-compiler/P3Build.bnf (CaseEndStatement): Call ElseCase.
4315         * gm2-compiler/PCSymBuild.mod (InitDesExpr): Add else clause.
4316         (InitFunction): Add else clause.
4317         (InitConvert): Add else clause.
4318         (InitLeaf): Add else clause.
4319         (InitBinary): Add else clause.
4320         (InitUnary): Add else clause.
4321         * gm2-compiler/SymbolTable.def (GetNth): Re-write comment.
4322         (ForeachFieldEnumerationDo): Re-write comment stating alphabetical
4323         traversal.
4324         * gm2-compiler/SymbolTable.mod (GetNth): Re-write comment.
4325         Add case label for EnumerationSym and call GetItemFromList.
4326         (ForeachFieldEnumerationDo): Re-write comment stating alphabetical
4327         traversal.
4328         (SymEnumeration): Add ListOfFields used for declaration order.
4329         (MakeEnumeration): Initialize ListOfFields.
4330         (PutFieldEnumeration): Include Field in ListOfFields.
4331         * gm2-gcc/m2options.h (M2Options_SetCaseEnumChecking): New
4332         function.
4333         * gm2-lang.cc (gm2_langhook_handle_option): Add
4334         OPT_Wcase_enum case and call M2Options_SetCaseEnumChecking.
4335         * lang.opt (Wcase-enum): Add.
4337 2023-09-11  Gaius Mulley  <gaiusmod2@gmail.com>
4339         PR modula2/111330
4340         * gm2-compiler/M2SymInit.mod (CheckReadBeforeInitQuad): Add
4341         case labels LogicalDiffOp, DummyOp, OptParamOp and
4342         InitAddressOp.
4344 2023-08-20  Gaius Mulley  <gaiusmod2@gmail.com>
4346         PR modula2/111085
4347         * gm2-libs/Builtins.def (nexttoward): Alter the second
4348         parameter to LONGREAL.
4349         (nexttowardf): Alter the second parameter to LONGREAL.
4350         * gm2-libs/Builtins.mod (nexttoward): Alter the second
4351         parameter to LONGREAL.
4352         (nexttowardf): Alter the second parameter to LONGREAL.
4353         * gm2-libs/cbuiltin.def (nexttoward): Alter the second
4354         parameter to LONGREAL.
4355         (nexttowardf): Alter the second parameter to LONGREAL.
4357 2023-08-13  Iain Sandoe  <iain@sandoe.co.uk>
4359         * Make-lang.in: Update suffix spellings to use 'soext'.
4360         Add libc to the plugin link.
4362 2023-08-12  Gaius Mulley  <gaiusmod2@gmail.com>
4364         PR modula2/110779
4365         * gm2-libs-iso/SysClock.mod (EpochTime): New procedure.
4366         (GetClock): Call EpochTime if the C time functions are
4367         unavailable.
4368         * gm2-libs-iso/wrapclock.def (istimezone): New function
4369         definition.
4371 2023-08-12  Gaius Mulley  <gaiusmod2@gmail.com>
4373         PR modula2/108119
4374         * Make-lang.in (M2RTE_PLUGIN_SO): Assigned to
4375         plugin/m2rte$(exeext).so if enable_plugin is yes.
4376         (m2.all.cross): Replace plugin/m2rte$(soext) with
4377         $(M2RTE_PLUGIN_SO).
4378         (m2.all.encap): Replace plugin/m2rte$(soext) with
4379         $(M2RTE_PLUGIN_SO).
4380         (m2.install-plugin): Add dummy rule when enable_plugin
4381         is not yes.
4382         (plugin/m2rte$(exeext).so): Add dummy rule when enable_plugin
4383         is not yes.
4384         (m2/stage2/cc1gm2$(exeext)): Replace plugin/m2rte$(soext) with
4385         $(M2RTE_PLUGIN_SO).
4386         (m2/stage1/cc1gm2$(exeext)): Replace plugin/m2rte$(soext) with
4387         $(M2RTE_PLUGIN_SO).
4388         * gm2spec.cc (lang_specific_driver): Set need_plugin to false
4389         by default.
4391 2023-08-09  Gaius Mulley  <gaiusmod2@gmail.com>
4393         PR modula2/110779
4394         * gm2-libs-iso/SysClock.mod (GetClock): Test GetTimespec
4395         return value.
4396         (SetClock): Test SetTimespec return value.
4397         * gm2-libs-iso/wrapclock.def (GetTimespec): Add integer
4398         return type.
4399         (SetTimespec): Add integer return type.
4401 2023-08-05  Gaius Mulley  <gaiusmod2@gmail.com>
4403         PR modula2/110779
4404         * gm2-libs-iso/SysClock.mod: Re-implement using wrapclock.
4405         * gm2-libs-iso/wrapclock.def: New file.
4407 2023-08-01  Gaius Mulley  <gaiusmod2@gmail.com>
4409         PR modula2/110161
4410         * gm2-compiler/M2Check.mod (checkProcTypeEquivalence): New
4411         procedure function.
4412         (checkTypeKindEquivalence): Call checkProcTypeEquivalence
4413         if either left or right is a proc type.
4414         * gm2-compiler/M2Quads.mod (BuildRelOp): Create
4415         combinedTok prior to creating the range check quadruple.
4416         Use combinedTok when creating the range check quadruple.
4418 2023-08-01  Gaius Mulley  <gaiusmod2@gmail.com>
4420         PR modula2/110865
4421         * gm2-compiler/M2Quads.mod (BuildDesignatorArray):
4422         Rename t as type and d as dim.  New variable result.
4423         Allow constants of an array type to be indexed.
4425 2023-07-25  Gaius Mulley  <gaiusmod2@gmail.com>
4427         PR modula2/110174
4428         * gm2-compiler/M2GCCDeclare.def (PromoteToCString): New procedure
4429         function.
4430         * gm2-compiler/M2GCCDeclare.mod (PromoteToCString): New procedure
4431         function.
4432         * gm2-compiler/M2GenGCC.mod (BuildTreeFromInterface): Call
4433         skip_const_decl before chaining the parameter value.
4434         Use PromoteToCString to ensure the string is nul terminated.
4435         (CodeInline): Remove all parameters and replace with quad.
4436         Use GetQuadOtok to get operand token numbers.
4437         Remove call to DeclareConstant and replace it with PromoteToCString.
4438         * gm2-compiler/M2Quads.def (BuildInline): Rename into ...
4439         (BuildAsm): ... this.
4440         * gm2-compiler/M2Quads.mod: (BuildInline): Rename into ...
4441         (BuildAsm): ... this.
4442         (BuildAsmElement): Add debugging.
4443         * gm2-compiler/P1Build.bnf: Remove import of BuildInline.
4444         * gm2-compiler/P2Build.bnf: Remove import of BuildInline.
4445         * gm2-compiler/P3Build.bnf: Remove import of BuildInline and
4446         import BuildAsm.
4447         * gm2-compiler/PHBuild.bnf: Remove import of BuildInline.
4448         * gm2-libs-iso/SysClock.mod (foo): Remove.
4449         * gm2-libs/FIO.mod (BufferedRead): Rename parameter a to dest.
4450         Rename variable t to src.
4451         * m2pp.cc (pf): Correct block comment.
4452         (pe): Correct block comment.
4453         (m2pp_asm_expr): New function.
4454         (m2pp_statement): Call m2pp_asm_expr.
4456 2023-07-22  Gaius Mulley  <gaiusmod2@gmail.com>
4458         PR modula2/110631
4459         * gm2-libs/FIO.def (ReadAny): Correct comment as
4460         HIGH (a) + 1 is number of bytes.
4461         (WriteAny): Correct comment as HIGH (a) + 1 is number of
4462         bytes.
4463         * gm2-libs/FIO.mod (ReadAny): Correct comment as
4464         HIGH (a) + 1 is number of bytes.  Also pass HIGH (a) + 1
4465         to BufferedRead.
4466         (WriteAny): Correct comment as HIGH (a) + 1 is number of
4467         bytes.  Also pass HIGH (a) + 1 to BufferedWrite.
4468         (BufferedWrite): Rename parameter a to src, rename variable
4469         t to dest.  Correct parameter order to memcpy.
4471 2023-07-20  Gaius Mulley  <gaiusmod2@gmail.com>
4473         * gm2-compiler/M2SymInit.mod (IsExempt): Remove parameter exemption.
4474         (CheckIndrX): Call SetupLAlias between lhs and content.
4475         (trashParam): Re-write.
4476         (SetVarLRInitialized): Indicate shadow and heap are initialized.
4477         Call SetupIndr between shadow and heap.
4478         * gm2-compiler/P2SymBuild.mod: Import
4479         PutProcedureParameterHeapVars.
4480         (EndBuildProcedure): Call PutProcedureParameterHeapVars.
4481         * gm2-compiler/SymbolTable.def (GetParameterHeapVar): New
4482         procedure function.
4483         (PutProcedureParameterHeapVars): New procedure function.
4484         * gm2-compiler/SymbolTable.mod (MakeParameterHeapVar): New
4485         procedure function.
4486         (GetParameterHeapVar): New procedure function.
4487         (PuttParameterHeapVar): New procedure function.
4488         (PutProcedureParameterHeapVars): New procedure.
4489         (VarParam): HeapVar new record field.
4490         (PutVarParam): HeapVar assigned to NulSym.
4492 2023-07-19  Gaius Mulley  <gaiusmod2@gmail.com>
4494         PR modula2/110284
4495         * Make-lang.in (m2_OBJS): Add m2/gm2-gcc/rtegraph.o and
4496         m2/gm2-compiler-boot/m2flex.o.
4497         (c-family/m2pp.o): Remove.
4498         * Make-maintainer.in (c-family/m2pp.o): Add.
4500 2023-07-19  Gaius Mulley  <gaiusmod2@gmail.com>
4502         * gm2-compiler/M2Quads.mod (BuildDifAdrFunction): Removed
4503         unnecessary in error message.  Use vartok for location.
4504         (BuildOddFunction): Use optok for location.
4505         (BuildAbsFunction): Use vartok for location.  Bugfix set vartok.
4506         (BuildCapFunction): Use optok for location.
4507         (BuildOrdFunction): Use optok for location and correct format
4508         specifier.
4509         (BuildShiftFunction): Use vartok for location.
4510         (BuildRotateFunction): Use vartok for location.
4511         (BuildTruncFunction): Use vartok for location.
4512         (BuildFloatFunction): Use vartok for location.
4513         (BuildReFunction): Use vartok for location.
4514         (BuildImFunction): Use vartok for location.
4515         * gm2-compiler/M2SymInit.mod (trashParam): Remove commented code.
4517 2023-07-19  Gaius Mulley  <gaiusmod2@gmail.com>
4519         * gm2-compiler/M2Quads.mod (BuildRealFuncProcCall): Set the trash
4520         parameter value to NIL if DEALLOCATE is detected.
4521         * gm2-compiler/M2SymInit.mod (CheckDeferredRecordAccess): Pass
4522         tok to SetVarInitialized.  Pass tok to GetVarComponentInitialized.
4523         (ComponentFindVar): Add tok parameter.  Check aliased pointer
4524         against Nil and generate warning if necessary.
4525         (deRefComponent): Add tok and sym parameters and pass them to
4526         getContent.
4527         (SetVarComponentInitialized): Add tok parameter.  Pass tok to
4528         ComponentFindVar.  Pass tok and sym to deRefComponent.
4529         (GetVarComponentInitialized): Add tok parameter.  Pass tok to
4530         ComponentFindVar.  Pass tok to deRefComponent.
4531         (SetVarInitialized): Add tok parameter.  Pass tok to
4532         SetVarComponentInitialized.
4533         (doGetVarInitialized): Add tok parameter.  Pass tok to
4534         GetVarComponentInitialized.
4535         (CheckXIndr): Pass lhs and lhstok to getContent.
4536         (CheckIndrX): Pass rhs and rhstok to getContent.
4537         (CheckBecomes): Pass destok to ComponentFindVar.  Pass des and
4538         destok to deRefComponent.
4539         (CheckAddr): Pass contenttok to GetVarInitialized.  Pass ptrtok
4540         to SetVarInitialized.
4541         (CheckReadBeforeInitQuad): Pass op1tok to SetVarInitialized for
4542         op1 cases and op3tok for op3 cases.
4543         (trashParam): Get operand tokens.  Pass op3tok to
4544         SetVarInitialized.  Pass op3 and op3tok to getContent.
4545         Alias ptr to NIL if procedure is DEALLOCATE.  Pass op3tok to
4546         SetVarInitialized.
4547         (IsDeallocate): New procedure function.
4548         (DetectTrash): Use IsDeallocate.
4549         (SetupLAlias): Allow exp to be Nil.
4550         (getContent): Generate warning message if ptr is Nil.
4552 2023-07-18  Gaius Mulley  <gaiusmod2@gmail.com>
4554         * Make-lang.in: Minor formatting change.
4555         * gm2-compiler/M2GCCDeclare.mod
4556         (DeclareUnboundedProcedureParameters): Rename local variables.
4557         (WalkUnboundedProcedureParameters): Rename local variables.
4558         (DoVariableDeclaration): Avoid declaration of a variable if
4559         it is on the heap (used by static analysis only).
4560         * gm2-compiler/M2GenGCC.mod: Formatting.
4561         * gm2-compiler/M2Quads.def (GetQuadTrash): New procedure function.
4562         * gm2-compiler/M2Quads.mod (GetQuadTrash): New procedure function.
4563         (QuadFrame): Add Trash field.
4564         (BuildRealFuncProcCall): Detect ALLOCATE and DEALLOCATE and create
4565         a heap variable for parameter 1 saving it as the trashed variable
4566         for static analysis.
4567         (GenQuadOTrash): New procedure.
4568         (DisplayQuadRange): Bugfix.  Write the scope number.
4569         * gm2-compiler/M2SymInit.mod: Rewritten to separate LValue
4570         equivalence from LValue to RValue pairings.  Comprehensive
4571         detection of variant record implemented.  Allow dereferencing
4572         of pointers through LValue/RValue chains.
4573         * gm2-compiler/SymbolTable.def (PutVarHeap): New procedure.
4574         (IsVarHeap): New procedure function.
4575         (ForeachParamSymDo): New procedure.
4576         * gm2-compiler/SymbolTable.mod (PutVarHeap): New procedure.
4577         (IsVarHeap): New procedure function.
4578         (ForeachParamSymDo): New procedure.
4579         (MakeVariableForParam): Reformatted.
4580         (CheckForUnknownInModule): Reformatted.
4581         (SymVar): Add field Heap.
4582         (MakeVar): Assign Heap to FALSE.
4584 2023-07-13  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
4586         * Make-lang.in (m2/boot-bin/mklink$(exeext)): Add $(LDFLAGS).
4588 2023-07-11  Gaius Mulley  <gaiusmod2@gmail.com>
4590         * gm2-compiler/M2BasicBlock.def (InitBasicBlocksFromRange): New
4591         parameter ScopeSym.
4592         * gm2-compiler/M2BasicBlock.mod (ConvertQuads2BasicBlock): New
4593         parameter ScopeSym.
4594         (InitBasicBlocksFromRange): New parameter ScopeSym.  Call
4595         ConvertQuads2BasicBlock with ScopeSym.
4596         (DisplayBasicBlocks): Uncomment.
4597         * gm2-compiler/M2Code.mod: Replace VariableAnalysis with
4598         ScopeBlockVariableAnalysis.
4599         (InitialDeclareAndOptiomize): Add parameter scope.
4600         (SecondDeclareAndOptimize): Add parameter scope.
4601         * gm2-compiler/M2GCCDeclare.mod (DeclareConstructor): Add scope
4602         parameter to DeclareTypesConstantsProceduresInRange.
4603         (DeclareTypesConstantsProceduresInRange): New parameter scope.
4604         Pass scope to DisplayQuadRange.  Reformatted.
4605         * gm2-compiler/M2GenGCC.def (ConvertQuadsToTree): New parameter
4606         scope.
4607         * gm2-compiler/M2GenGCC.mod (ConvertQuadsToTree): New parameter
4608         scope.
4609         * gm2-compiler/M2Optimize.mod (KnownReachable): New parameter
4610         scope.
4611         * gm2-compiler/M2Options.def (SetUninitVariableChecking): Add
4612         arg parameter.
4613         * gm2-compiler/M2Options.mod (SetUninitVariableChecking): Add
4614         arg parameter and set boolean UninitVariableChecking and
4615         UninitVariableConditionalChecking.
4616         (UninitVariableConditionalChecking): New boolean set to FALSE.
4617         * gm2-compiler/M2Quads.def (IsGoto): New procedure function.
4618         (DisplayQuadRange): Add scope parameter.
4619         (LoopAnalysis): Add scope parameter.
4620         * gm2-compiler/M2Quads.mod: Import PutVarArrayRef.
4621         (IsGoto): New procedure function.
4622         (LoopAnalysis): Add scope parameter and use MetaErrorT1 instead
4623         of WarnStringAt.
4624         (BuildStaticArray): Call PutVarArrayRef.
4625         (BuildDynamicArray): Call PutVarArrayRef.
4626         (DisplayQuadRange): Add scope parameter.
4627         (GetM2OperatorDesc): Add relational condition cases.
4628         * gm2-compiler/M2Scope.def (ScopeProcedure): Add parameter.
4629         * gm2-compiler/M2Scope.mod (DisplayScope): Pass scopeSym to
4630         DisplayQuadRange.
4631         (ForeachScopeBlockDo): Pass scopeSym to p.
4632         * gm2-compiler/M2SymInit.def (VariableAnalysis): Rename to ...
4633         (ScopeBlockVariableAnalysis): ... this.
4634         * gm2-compiler/M2SymInit.mod (ScopeBlockVariableAnalysis): Add
4635         scope parameter.
4636         (bbEntry): New pointer to record.
4637         (bbArray): New array.
4638         (bbFreeList): New variable.
4639         (errorList): New list.
4640         (IssueConditional): New procedure.
4641         (GenerateNoteFlow): New procedure.
4642         (IssueWarning): New procedure.
4643         (IsUniqueWarning): New procedure.
4644         (CheckDeferredRecordAccess): Re-implement.
4645         (CheckBinary): Add warning and lst parameters.
4646         (CheckUnary): Add warning and lst parameters.
4647         (CheckXIndr): Add warning and lst parameters.
4648         (CheckIndrX): Add warning and lst parameters.
4649         (CheckBecomes): Add warning and lst parameters.
4650         (CheckComparison): Add warning and lst parameters.
4651         (CheckReadBeforeInitQuad): Add warning and lst parameters to all
4652         Check procedures.  Add all case quadruple clauses.
4653         (FilterCheckReadBeforeInitQuad): Add warning and lst parameters.
4654         (CheckReadBeforeInitFirstBasicBlock): Add warning and lst parameters.
4655         (bbArrayKill): New procedure.
4656         (DumpBBEntry): New procedure.
4657         (DumpBBArray): New procedure.
4658         (DumpBBSequence): New procedure.
4659         (TestBBSequence): New procedure.
4660         (CreateBBPermultations): New procedure.
4661         (ScopeBlockVariableAnalysis): New procedure.
4662         (GetOp3): New procedure.
4663         (GenerateCFG): New procedure.
4664         (NewEntry): New procedure.
4665         (AppendEntry): New procedure.
4666         (init): Initialize bbFreeList and errorList.
4667         * gm2-compiler/SymbolTable.def (PutVarArrayRef): New procedure.
4668         (IsVarArrayRef): New procedure function.
4669         * gm2-compiler/SymbolTable.mod (SymVar): ArrayRef new field.
4670         (MakeVar): Set ArrayRef to FALSE.
4671         (PutVarArrayRef): New procedure.
4672         (IsVarArrayRef): New procedure function.
4673         * gm2-gcc/init.cc (_M2_M2SymInit_init): New prototype.
4674         (init_PerCompilationInit): Add call to _M2_M2SymInit_init.
4675         * gm2-gcc/m2options.h (M2Options_SetUninitVariableChecking):
4676         New definition.
4677         * gm2-lang.cc (gm2_langhook_handle_option): Add new case
4678         OPT_Wuninit_variable_checking_.
4679         * lang.opt: Wuninit-variable-checking= new entry.
4681 2023-07-03  Gaius Mulley  <gaiusmod2@gmail.com>
4683         PR modula2/110125
4684         * Make-lang.in (GM2-COMP-BOOT-DEFS): Add M2SymInit.def.
4685         (GM2-COMP-BOOT-MODS): Add M2SymInit.mod.
4686         * gm2-compiler/M2BasicBlock.mod: Formatting changes.
4687         * gm2-compiler/M2Code.mod: Remove import of VariableAnalysis from
4688         M2Quads.  Import VariableAnalysis from M2SymInit.mod.
4689         * gm2-compiler/M2GCCDeclare.mod (PrintVerboseFromList):
4690         Add debugging print for a component.
4691         (TypeConstFullyDeclared): Call RememberType for every type.
4692         * gm2-compiler/M2GenGCC.mod (CodeReturnValue): Add parameter to
4693         GetQuadOtok.
4694         (CodeBecomes): Add parameter to GetQuadOtok.
4695         (CodeXIndr): Add parameter to GetQuadOtok.
4696         * gm2-compiler/M2Optimize.mod (ReduceBranch): Reformat and
4697         preserve operand token positions when reducing the branch
4698         quadruples.
4699         (ReduceGoto): Reformat.
4700         (FoldMultipleGoto): Reformat.
4701         (KnownReachable): Reformat.
4702         * gm2-compiler/M2Options.def (UninitVariableChecking): New
4703         variable declared and exported.
4704         (SetUninitVariableChecking): New procedure.
4705         * gm2-compiler/M2Options.mod (SetWall): Set
4706         UninitVariableChecking.
4707         (SetUninitVariableChecking): New procedure.
4708         * gm2-compiler/M2Quads.def (PutQuadOtok): Exported and declared.
4709         (VariableAnalysis): Removed.
4710         * gm2-compiler/M2Quads.mod (PutQuadOtok): New procedure.
4711         (doVal): Reformatted.
4712         (MarkAsWrite): Reformatted.
4713         (MarkArrayAsWritten): Reformatted.
4714         (doIndrX): Use PutQuadOtok.
4715         (MakeRightValue): Use GenQuadOtok.
4716         (MakeLeftValue): Use GenQuadOtok.
4717         (CheckReadBeforeInitialized): Remove.
4718         (IsNeverAltered): Reformat.
4719         (DebugLocation): New procedure.
4720         (BuildDesignatorPointer): Use GenQuadO to preserve operand token
4721         position.
4722         (BuildRelOp): Use GenQuadOtok ditto.
4723         * gm2-compiler/SymbolTable.def (VarCheckReadInit): New procedure.
4724         (VarInitState): New procedure.
4725         (PutVarInitialized): New procedure.
4726         (PutVarFieldInitialized): New procedure function.
4727         (GetVarFieldInitialized): New procedure function.
4728         (PrintInitialized): New procedure.
4729         * gm2-compiler/SymbolTable.mod (VarCheckReadInit): New procedure.
4730         (VarInitState): New procedure.
4731         (PutVarInitialized): New procedure.
4732         (PutVarFieldInitialized): New procedure function.
4733         (GetVarFieldInitialized): New procedure function.
4734         (PrintInitialized): New procedure.
4735         (LRInitDesc): New type.
4736         (SymVar): InitState new field.
4737         (MakeVar): Initialize InitState.
4738         * gm2-gcc/m2options.h (M2Options_SetUninitVariableChecking):
4739         New function declaration.
4740         * gm2-lang.cc (gm2_langhook_handle_option): Detect
4741         OPT_Wuninit_variable_checking and call SetUninitVariableChecking.
4742         * lang.opt: Add Wuninit-variable-checking.
4743         * gm2-compiler/M2SymInit.def: New file.
4744         * gm2-compiler/M2SymInit.mod: New file.
4746 2023-06-30  Iain Sandoe  <iain@sandoe.co.uk>
4748         PR testsuite/108835
4749         * gm2-libs/RTint.mod: Do not use NIL timeout setting on select,
4750         test failures sequentially, finishing on the first success.
4752 2023-06-18  Gaius Mulley  <gaiusmod2@gmail.com>
4754         PR modula2/110284
4755         * Make-lang.in (m2_OBJS): Assign $(GM2_C_OBJS).
4756         (GM2_C_OBJS): Remove m2/stor-layout.o.
4757         (m2/stor-layout.o): Remove rule.
4758         * gm2-gcc/gcc-consolidation.h (rtl.h): Remove include.
4759         (df.h): Remove include.
4760         (except.h): Remove include.
4762 2023-06-15  Marek Polacek  <polacek@redhat.com>
4764         * Make-lang.in: New var, GM2_PICFLAGS.  Use it.
4766 2023-06-13  Gaius Mulley  <gaiusmod2@gmail.com>
4768         * Make-lang.in (check-format-error): New rule.
4769         * gm2-compiler/M2MetaError.mod (op): Add calls InternalError if
4770         digits are detected.
4771         * gm2-compiler/M2Quads.mod (BuildForToByDo): Bugfix to format
4772         specifier.
4773         (BuildLengthFunction): Bugfix to format specifiers.
4774         (BuildOddFunction): Bugfix to format specifiers.
4775         (BuildAbsFunction): Bugfix to format specifiers.
4776         (BuildCapFunction): Bugfix to format specifiers.
4777         (BuildChrFunction): Bugfix to format specifiers.
4778         (BuildOrdFunction): Bugfix to format specifiers.
4779         (BuildMakeAdrFunction): Bugfix to format specifiers.
4780         (BuildSizeFunction): Bugfix to format specifiers.
4781         (BuildBitSizeFunction): Bugfix to format specifiers.
4782         * tools-src/checkmeta.py: New file.
4784 2023-06-12  Gaius Mulley  <gaiusmod2@gmail.com>
4786         PR modula2/110189
4787         * gm2-compiler/M2Quads.mod (BuildAbsFunction): Replace abort
4788         format specifier.
4789         (BuildValFunction): Replace abort format specifier.
4790         (BuildCastFunction): Replace abort format specifier.
4791         (BuildMinFunction): Replace abort format specifier.
4792         (BuildMaxFunction): Replace abort format specifier.
4793         (BuildTruncFunction): Replace abort format specifier.
4794         * gm2-compiler/P3Build.bnf (Pass1): Remove.
4795         (Pass2): Remove.
4796         (Pass3): Remove.
4797         (Expect): Add Pass1.
4798         (AsmStatement): Remove Pass3.
4799         (AsmOperands): Remove Pass3.
4800         (AsmOperandSpec): Remove Pass3.
4801         (AsmInputElement): Remove Pass3.
4802         (AsmOutputElement): Remove Pass3.
4803         (AsmTrashList): Remove Pass3.
4805 2023-06-12  Gaius Mulley  <gaiusmod2@gmail.com>
4807         PR modula2/110126
4808         * gm2-compiler/M2Quads.def (BuildAsmElement): Remove
4809         trash parameter.
4810         (BuildAsmTrash): New procedure.
4811         * gm2-compiler/M2Quads.mod (BuildAsmTrash): New procedure.
4812         (BuildAsmElement): Remove trash parameter.
4813         * gm2-compiler/P3Build.bnf (AsmTrashList): Rewrite.
4815 2023-06-08  Gaius Mulley  <gaiusmod2@gmail.com>
4817         PR modula2/110126
4818         * gm2-compiler/M2GenGCC.mod (BuildTreeFromInterface): Remove
4819         tokenno parameter.  Use object tok instead of tokenno.
4820         (BuildTrashTreeFromInterface): Use object tok instead of
4821         GetDeclaredMod.
4822         (CodeInline): Remove tokenno from parameter list to BuildTreeFromInterface.
4823         * gm2-compiler/M2Quads.def (BuildAsmElement): Exported and
4824         defined.
4825         * gm2-compiler/M2Quads.mod (BuildOptimizeOff): Reformatted.
4826         (BuildInline): Reformatted.
4827         (BuildLineNo): Reformatted.
4828         (UseLineNote): Reformatted.
4829         (BuildAsmElement): New procedure.
4830         * gm2-compiler/P0SyntaxCheck.bnf (AsmOperands): Use
4831         ConstExpression instead of string.
4832         (AsmElement): Use ConstExpression instead of string.
4833         (TrashList): Use ConstExpression instead of string.
4834         * gm2-compiler/P1Build.bnf (AsmOperands): Use
4835         ConstExpression instead of string.
4836         (AsmElement): Use ConstExpression instead of string.
4837         (TrashList): Use ConstExpression instead of string.
4838         * gm2-compiler/P2Build.bnf (AsmOperands): Use
4839         ConstExpression instead of string.
4840         (AsmElement): Use ConstExpression instead of string.
4841         (TrashList): Use ConstExpression instead of string.
4842         * gm2-compiler/P3Build.bnf (AsmOperands): Rewrite.
4843         (AsmOperandSpec): Rewrite.
4844         (AsmOutputList): New rule.
4845         (AsmInputList): New rule.
4846         (TrashList): Rewrite.
4847         * gm2-compiler/PCBuild.bnf (AsmOperands): Use
4848         ConstExpression instead of string.
4849         (AsmElement): Use ConstExpression instead of string.
4850         (TrashList): Use ConstExpression instead of string.
4851         * gm2-compiler/PHBuild.bnf (AsmOperands): Use
4852         ConstExpression instead of string.
4853         (AsmElement): Use ConstExpression instead of string.
4854         (TrashList): Use ConstExpression instead of string.
4855         * gm2-compiler/SymbolTable.def (PutRegInterface):
4856         Rewrite interface.
4857         (GetRegInterface): Rewrite interface.
4858         * gm2-compiler/SymbolTable.mod (SetFirstUsed): New procedure.
4859         (PutFirstUsed): New procedure.
4860         (PutRegInterface): Rewrite.
4861         (GetRegInterface): Rewrite.
4863 2023-06-07  Jakub Jelinek  <jakub@redhat.com>
4865         * Make-lang.in: Build $(generated_files) before building
4866         all $(GM2_C_OBJS).
4868 2023-06-07  Gaius Mulley  <gaiusmod2@gmail.com>
4870         PR modula2/110019
4871         * gm2-compiler/SymbolKey.mod (SearchAndDo): Reformatted.
4872         (ForeachNodeDo): Reformatted.
4873         * gm2-compiler/SymbolTable.mod (AddListify): Join list
4874         with "," or "and" if more than one word is in the list.
4875         * m2.flex: Remove -1 from atoi(yytext) line number.
4877 2023-06-03  Gaius Mulley  <gaiusmod2@gmail.com>
4879         PR modula2/110003
4880         * gm2-compiler/P2SymBuild.mod (GetParameterShadowVar): Import.
4881         (CheckFormalParameterSection): Call PutDeclared for the shadow
4882         variable associated with the parameter.
4884 2023-05-24  Gaius Mulley  <gaiusmod2@gmail.com>
4886         PR modula2/109952
4887         * Make-maintainer.in: Change header to include emacs file mode.
4888         * gm2-compiler/M2GenGCC.mod (BuildHighFromChar): Check whether
4889         operand is a constant string and is nul terminated then return one.
4890         * gm2-compiler/PCSymBuild.mod (WalkFunction): Add default return
4891         TRUE.  Static analysis missing return path fix.
4892         * gm2-libs/IO.mod (Init): Rewrite to help static analysis.
4893         * target-independent/m2/gm2-libs.texi: Rebuild.
4895 2023-05-19  Gaius Mulley  <gaiusmod2@gmail.com>
4897         PR modula2/109908
4898         * gm2-libs-iso/Strings.mod (Delete): Re-implement.
4900 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
4902         * gm2-gcc/m2builtins.cc (doradix): Use _P defines from tree.h.
4903         (doplaces): Ditto.
4904         (doexponentmin): Ditto.
4905         (doexponentmax): Ditto.
4906         (dolarge): Ditto.
4907         (dosmall): Ditto.
4908         (dogUnderflow): Ditto.
4909         * gm2-gcc/m2convert.cc (unsafe_conversion_p): Ditto.
4910         * gm2-gcc/m2expr.cc (m2expr_build_unary_op_check): Ditto.
4911         (m2expr_build_binary_op_check): Ditto.
4912         * gm2-gcc/m2tree.cc (m2tree_is_var): Ditto.
4913         * gm2-gcc/m2treelib.cc (build_modify_expr): Ditto.
4914         * gm2-gcc/m2type.cc (gm2_finish_decl): Ditto.
4915         * m2pp.cc (hextree): Ditto.
4916         (m2pp_call_expr): Ditto.
4918 2023-05-17  Gaius Mulley  <gaiusmod2@gmail.com>
4920         * gm2-libs-iso/LongWholeIO.mod (WriteInt): Only request a
4921         sign if the value is < 0.
4922         * gm2-libs-iso/ShortWholeIO.mod (WriteInt): Only request a
4923         sign if the value is < 0.
4924         * gm2-libs-iso/WholeIO.mod (WriteInt): Only request a sign
4925         if the value is < 0.
4926         * gm2-libs-iso/WholeStr.mod (WriteInt): Only request a sign
4927         if the value is < 0.
4929 2023-05-16  Gaius Mulley  <gaiusmod2@gmail.com>
4931         PR modula2/109879
4932         * gm2-libs-iso/LongIO.mod (ReadReal): Call SkipSpaces.
4933         * gm2-libs-iso/LongWholeIO.mod (ReadInt): Call SkipSpaces.
4934         (ReadCard): Call SkipSpaces.
4935         * gm2-libs-iso/RealIO.mod (ReadReal): Call SkipSpaces.
4936         * gm2-libs-iso/ShortWholeIO.mod: (ReadInt): Call SkipSpaces.
4937         (ReadCard): Call SkipSpaces.
4938         * gm2-libs-iso/TextIO.mod: Import SkipSpaces.
4939         * gm2-libs-iso/WholeIO.mod (ReadInt): Call SkipSpaces.
4940         (ReadCard): Call SkipSpaces.
4941         * gm2-libs-iso/TextUtil.def: New file.
4942         * gm2-libs-iso/TextUtil.mod: New file.
4944 2023-05-16  Gaius Mulley  <gaiusmod2@gmail.com>
4946         PR modula2/108344
4947         * gm2-libs-coroutines/TimerHandler.mod (EnableLED): New constant.
4948         (Timer): Test EnableLED before switching on the scroll LED.
4950 2023-05-12  Gaius Mulley  <gaiusmod2@gmail.com>
4952         PR modula2/109830
4953         * gm2-libs-iso/SeqFile.mod (newCid): New parameter toAppend
4954         used to select FIO.OpenForRandom.
4955         (OpenRead): Pass extra parameter to newCid.
4956         (OpenWrite): Pass extra parameter to newCid.
4957         (OpenAppend): Pass extra parameter to newCid.
4959 2023-05-11  Gaius Mulley  <gaiusmod2@gmail.com>
4961         PR modula2/109810
4962         * gm2-compiler/M2ALU.mod (ConvertConstToType): Use
4963         PrepareCopyString in place of DoCopyString.
4964         * gm2-compiler/M2GenGCC.def (DoCopyString): Rename to ...
4965         (PrepareCopyString): ... this.
4966         * gm2-compiler/M2GenGCC.mod (CodeStatement): Call CodeReturnValue
4967         with a single parameter.  Call CodeXIndr with a single parameter.
4968         (CodeReturnValue): Remove parameters and replace with a single
4969         quadno.  Reimplement using PrepareCopyString.  Issue error
4970         if the string exceeds designator space.
4971         (DoCopyString): Reimplement and rename to ...
4972         (PrepareCopyString): ... this.
4973         (CodeXIndr): Remove parameters and replace with a single
4974         quadno.  Reimplement using PrepareCopyString.  Issue error
4975         if the string exceeds designator space.
4976         (CodeBecomes): Remove parameters and replace with a single
4977         quadno.  Reimplement using PrepareCopyString.  Issue error
4978         if the string exceeds designator space.
4979         * gm2-compiler/M2Quads.def (BuildReturn): Rename parameter to
4980         tokreturn.
4981         * gm2-compiler/M2Quads.mod (BuildReturn): Rename parameter to
4982         tokreturn.  Rename tokno to tokcombined.
4984 2023-05-09  Gaius Mulley  <gaiusmod2@gmail.com>
4986         PR modula2/109779
4987         * gm2-libs-iso/RTgen.mod (doLook): Remove old.
4988         Remove re-assignment of result.
4989         * gm2-libs-iso/TextIO.mod (CanRead): Rename into ...
4990         (CharAvailable): ... this.
4991         (DumpState): New procedure.
4992         (SetResult): Rename as SetNul.
4993         (WasGoodChar): Rename into ...
4994         (EofOrEoln): ... this.
4995         (SkipLine): Skip over the newline.
4996         (ReadString): Flip THEN ELSE statements after testing for
4997         EofOrEoln.
4998         (ReadRestLine): Flip THEN ELSE statements after testing for
4999         EofOrEoln.
5001 2023-05-04  Gaius Mulley  <gaiusmod2@gmail.com>
5003         PR modula2/109729
5004         * gm2-compiler/M2GenGCC.mod (CodeStatement): Detect
5005         ArithAddOp and call CodeAddChecked.
5006         (ResolveConstantExpressions): Detect ArithAddOp and call
5007         FoldArithAdd.
5008         (FoldArithAdd): New procedure.
5009         (FoldAdd): Refactor to use FoldArithAdd.
5010         * gm2-compiler/M2Quads.def (QuadOperator): Add ArithAddOp.
5011         * gm2-compiler/M2Quads.mod: Remove commented imports.
5012         (QuadFrame): Changed comments to use GNU coding standards.
5013         (ArithPlusTok): New global variable.
5014         (BuildForToByDo): Use ArithPlusTok instead of PlusTok.
5015         (MakeOp): Detect ArithPlusTok and return ArithAddOp.
5016         (WriteQuad): Add ArithAddOp clause.
5017         (WriteOperator): Add ArithAddOp clause.
5018         (Init): Initialize ArithPlusTok.
5020 2023-05-04  Gaius Mulley  <gaiusmod2@gmail.com>
5022         PR modula2/109675
5023         * Make-lang.in (MC-LIB-DEFS): Remove M2LINK.def.
5024         (BUILD-PGE-O): Remove GM2LINK.o.
5025         * Make-maintainer.in (PPG-DEFS): New define.
5026         (PPG-LIB-DEFS): Remove M2LINK.def.
5027         (BUILD-BOOT-PPG-H): Add PPGDEF .h files.
5028         (m2/ppg$(exeext)): Remove M2LINK.o
5029         (PGE-DEPS): New define.
5030         (m2/pg$(exeext)): Remove M2LINK.o.
5031         (m2/gm2-pge-boot/$(SRC_PREFIX)%.o): Add -Im2/gm2-pge-boot.
5032         (m2/pge$(exeext)): Remove M2LINK.o.
5033         (pge-maintainer): Re-implement.
5034         (pge-libs-push): Re-implement.
5035         (m2/m2obj3/cc1gm2$(exeext)): Remove M2LINK.o.
5036         * gm2-libs/DynamicStrings.mod (writeAddress): Re-implement
5037         using snprintf.
5038         * gm2-libs/M2Dependent.mod: Remove commented out imports.
5039         * mc-boot/GDynamicStrings.cc: Rebuild.
5040         * mc-boot/GFIO.cc: Rebuild.
5041         * mc-boot/GFormatStrings.cc: Rebuild.
5042         * mc-boot/GM2Dependent.cc: Rebuild.
5043         * mc-boot/GM2Dependent.h: Rebuild.
5044         * mc-boot/GM2RTS.cc: Rebuild.
5045         * mc-boot/GM2RTS.h: Rebuild.
5046         * mc-boot/GRTExceptions.cc: Rebuild.
5047         * mc-boot/GRTint.cc: Rebuild.
5048         * mc-boot/GSFIO.cc: Rebuild.
5049         * mc-boot/GStringConvert.cc: Rebuild.
5050         * mc-boot/Gdecl.cc: Rebuild.
5051         * pge-boot/GASCII.cc: Rebuild.
5052         * pge-boot/GASCII.h: Rebuild.
5053         * pge-boot/GArgs.cc: Rebuild.
5054         * pge-boot/GArgs.h: Rebuild.
5055         * pge-boot/GAssertion.cc: Rebuild.
5056         * pge-boot/GAssertion.h: Rebuild.
5057         * pge-boot/GBreak.h: Rebuild.
5058         * pge-boot/GCmdArgs.h: Rebuild.
5059         * pge-boot/GDebug.cc: Rebuild.
5060         * pge-boot/GDebug.h: Rebuild.
5061         * pge-boot/GDynamicStrings.cc: Rebuild.
5062         * pge-boot/GDynamicStrings.h: Rebuild.
5063         * pge-boot/GEnvironment.h: Rebuild.
5064         * pge-boot/GFIO.cc: Rebuild.
5065         * pge-boot/GFIO.h: Rebuild.
5066         * pge-boot/GFormatStrings.h:: Rebuild.
5067         * pge-boot/GFpuIO.h:: Rebuild.
5068         * pge-boot/GIO.cc: Rebuild.
5069         * pge-boot/GIO.h: Rebuild.
5070         * pge-boot/GIndexing.cc: Rebuild.
5071         * pge-boot/GIndexing.h: Rebuild.
5072         * pge-boot/GLists.cc: Rebuild.
5073         * pge-boot/GLists.h: Rebuild.
5074         * pge-boot/GM2Dependent.cc: Rebuild.
5075         * pge-boot/GM2Dependent.h: Rebuild.
5076         * pge-boot/GM2EXCEPTION.cc: Rebuild.
5077         * pge-boot/GM2EXCEPTION.h: Rebuild.
5078         * pge-boot/GM2RTS.cc: Rebuild.
5079         * pge-boot/GM2RTS.h: Rebuild.
5080         * pge-boot/GNameKey.cc: Rebuild.
5081         * pge-boot/GNameKey.h: Rebuild.
5082         * pge-boot/GNumberIO.cc: Rebuild.
5083         * pge-boot/GNumberIO.h: Rebuild.
5084         * pge-boot/GOutput.cc: Rebuild.
5085         * pge-boot/GOutput.h: Rebuild.
5086         * pge-boot/GPushBackInput.cc: Rebuild.
5087         * pge-boot/GPushBackInput.h: Rebuild.
5088         * pge-boot/GRTExceptions.cc: Rebuild.
5089         * pge-boot/GRTExceptions.h: Rebuild.
5090         * pge-boot/GSArgs.h: Rebuild.
5091         * pge-boot/GSEnvironment.h: Rebuild.
5092         * pge-boot/GSFIO.cc: Rebuild.
5093         * pge-boot/GSFIO.h: Rebuild.
5094         * pge-boot/GSYSTEM.h: Rebuild.
5095         * pge-boot/GScan.h: Rebuild.
5096         * pge-boot/GStdIO.cc: Rebuild.
5097         * pge-boot/GStdIO.h: Rebuild.
5098         * pge-boot/GStorage.cc: Rebuild.
5099         * pge-boot/GStorage.h: Rebuild.
5100         * pge-boot/GStrCase.cc: Rebuild.
5101         * pge-boot/GStrCase.h: Rebuild.
5102         * pge-boot/GStrIO.cc: Rebuild.
5103         * pge-boot/GStrIO.h: Rebuild.
5104         * pge-boot/GStrLib.cc: Rebuild.
5105         * pge-boot/GStrLib.h: Rebuild.
5106         * pge-boot/GStringConvert.h: Rebuild.
5107         * pge-boot/GSymbolKey.cc: Rebuild.
5108         * pge-boot/GSymbolKey.h: Rebuild.
5109         * pge-boot/GSysExceptions.h: Rebuild.
5110         * pge-boot/GSysStorage.cc: Rebuild.
5111         * pge-boot/GSysStorage.h: Rebuild.
5112         * pge-boot/GTimeString.h: Rebuild.
5113         * pge-boot/GUnixArgs.h: Rebuild.
5114         * pge-boot/Gbnflex.cc: Rebuild.
5115         * pge-boot/Gbnflex.h: Rebuild.
5116         * pge-boot/Gdtoa.h: Rebuild.
5117         * pge-boot/Gerrno.h: Rebuild.
5118         * pge-boot/Gldtoa.h: Rebuild.
5119         * pge-boot/Glibc.h: Rebuild.
5120         * pge-boot/Glibm.h: Rebuild.
5121         * pge-boot/Gpge.cc: Rebuild.
5122         * pge-boot/Gtermios.h: Rebuild.
5123         * pge-boot/Gwrapc.h: Rebuild.
5124         * mc-boot/GM2LINK.h: Removed.
5125         * pge-boot/GM2LINK.cc: Removed.
5126         * pge-boot/GM2LINK.h: Removed.
5128 2023-04-30  Gaius Mulley  <gaiusmod2@gmail.com>
5130         * gm2-compiler/SymbolTable.mod (ConstLitPoolEntry): New
5131         pointer to record.
5132         (ConstLitSym): New field RangeError.
5133         (ConstLitPoolTree): New SymbolTree representing name to
5134         index.
5135         (ConstLitArray): New dynamic array containing pointers
5136         to a ConstLitPoolEntry.
5137         (CreateConstLit): New procedure function.
5138         (LookupConstLitPoolEntry): New procedure function.
5139         (AddConstLitPoolEntry): New procedure function.
5140         (MakeConstLit): Re-implemented to check the constant lit
5141         pool before calling CreateConstLit.
5142         * m2.flex: Add ability to decode binary constant literals.
5144 2023-04-26  Gaius Mulley  <gaiusmod2@gmail.com>
5146         PR modula2/108121
5147         * gm2-compiler/M2ALU.mod (Less): Reformatted.
5148         * gm2-compiler/SymbolTable.mod (DetermineSizeOfConstant): Remove
5149         from import.
5150         (ConstantStringExceedsZType): Import.
5151         (GetConstLitType): Re-implement using ConstantStringExceedsZType.
5152         * gm2-gcc/m2decl.cc (m2decl_DetermineSizeOfConstant): Remove.
5153         (m2decl_ConstantStringExceedsZType): New function.
5154         (m2decl_BuildConstLiteralNumber): Re-implement.
5155         * gm2-gcc/m2decl.def (DetermineSizeOfConstant): Remove.
5156         (ConstantStringExceedsZType): New function.
5157         * gm2-gcc/m2decl.h (m2decl_DetermineSizeOfConstant): Remove.
5158         (m2decl_ConstantStringExceedsZType): New function.
5159         * gm2-gcc/m2expr.cc (append_digit): Remove.
5160         (m2expr_interpret_integer): Remove.
5161         (append_m2_digit): Remove.
5162         (m2expr_StrToWideInt): New function.
5163         (m2expr_interpret_m2_integer): Remove.
5164         * gm2-gcc/m2expr.def (CheckConstStrZtypeRange): New function.
5165         * gm2-gcc/m2expr.h (m2expr_StrToWideInt): New function.
5166         * gm2-gcc/m2type.cc (build_m2_word64_type_node): New function.
5167         (build_m2_ztype_node): New function.
5168         (m2type_InitBaseTypes): Call build_m2_ztype_node.
5169         * gm2-lang.cc (gm2_type_for_size): Re-write using early returns.
5171 2023-04-21  Arsen Arsenović  <arsen@aarsen.me>
5173         * Make-lang.in: Remove references to $(P).
5174         * Make-maintainer.in: Ditto.
5176 2023-04-21  Gaius Mulley  <gaiusmod2@gmail.com>
5178         PR modula2/109586
5179         * gm2-gcc/m2tree.cc (m2tree_IsAConstant): Add (TREE_CODE
5180         (t) == CONSTRUCTOR) to expression.
5182 2023-04-13  Gaius Mulley  <gaiusmod2@gmail.com>
5184         PR modula2/109488
5185         * lang.opt: Fix typo "maybe" to "may be".
5187 2023-04-13  Gaius Mulley  <gaiusmod2@gmail.com>
5189         * gm2-compiler/M2ALU.def (PopChar): New procedure function.
5190         * gm2-compiler/M2ALU.mod (PopChar): New procedure function.
5191         * gm2-compiler/M2GCCDeclare.mod (PromoteToString): Detect
5192         a single constant char and build a C string.
5193         * gm2-compiler/M2GenGCC.mod (IsConstStr): New procedure
5194         function.
5195         (GetStr): New procedure function.
5196         (FoldAdd): Use IsConstStr.
5197         * gm2-compiler/M2Quads.mod: Formatting changes.
5198         * gm2-gcc/m2expr.cc (m2expr_GetCstInteger): New function.
5199         * gm2-gcc/m2expr.def (GetCstInteger): New procedure function.
5200         * gm2-gcc/m2expr.h (m2expr_GetCstInteger): New prototype.
5202 2023-04-05  Gaius Mulley  <gaiusmod2@gmail.com>
5204         PR modula2/109423
5205         * gm2-compiler/M2Base.def (Unbounded): Remove.
5206         * gm2-compiler/M2Error.def (ErrorAbort0): Add noreturn
5207         attribute.
5208         * gm2-compiler/M2Quads.mod (BuildInclProcedure): Correct
5209         error format string.
5210         (BuildExceptProcedure): Correct error format string.
5211         (BuildAdrFunction): Call PutWriteQuad when taking the
5212         address of a variable.
5213         * gm2-libs-ch/SysExceptions.c (_M2_SysExceptions_init): Add
5214         parameters.
5215         * gm2-libs-ch/wrapc.c (_M2_wrapc_init): Add parameters.
5216         * gm2-libs/DynamicStrings.mod (DumpStringInfo): Remove t.
5217         (PopAllocationExemption): Remove f.
5218         * gm2-libs/FIO.mod (BufferedWrite): Remove result.
5219         * gm2-libs/FormatStrings.mod (Copy): Remove endpos and
5220         afterperc.
5221         (HandlePercent): Remove result.
5222         * gm2-libs/Indexing.mod (RemoveIndiceFromIndex): Remove k.
5223         * gm2-libs/M2Dependent.mod (CreateModule): Remove p0
5224         and p1.
5225         (DumpModuleData): Remove mptr.
5226         (ConstructModules): Remove nulp.
5227         * gm2-libs/RTExceptions.mod (PopHandler): Remove i.
5228         * gm2-libs/RTint.mod (Listen): Remove b4s, b4m, afs
5229         and afm.
5230         * gm2-libs/SFIO.mod (ReadS): Remove c.
5231         * gm2-libs/StringConvert.mod (doDecimalPlaces): Remove
5232         whole and fraction.
5234 2023-04-03  Gaius Mulley  <gaiusmod2@gmail.com>
5236         PR modula2/109388
5237         * gm2-compiler/M2GCCDeclare.mod (DoVariableDeclaration):
5238         Remove second parameter module.  Adjust all callers to
5239         remove the second parameter.
5240         * gm2-compiler/PHBuild.bnf (CheckAndInsert): Remove.
5241         (InStopSet): Remove.
5242         (PeepToken): Remove.
5243         (PushQualident): Remove.
5244         (SimpleDes): Remove.
5245         (ActualParameters): Remove.
5247 2023-04-02  Gaius Mulley  <gaiusmod2@gmail.com>
5249         PR modula2/109336
5250         * Make-lang.in (GM2_O): Set to -O0.
5251         (GM2_LIBS): Remove target libraries and replace with build libs.
5252         (BUILD-LIBS): New declaration.
5253         (m2/gm2-libs/libgm2.a): New rule.
5254         (m2/gm2-libs/%.o): New rule.
5255         (m2/gm2-libs/choosetemp.o): New rule.
5256         * gm2-compiler/M2ColorString.mod (append): Use ADR rather than
5257         implicit conversion.
5258         * gm2-compiler/M2Comp.mod (Compile): Add qprintf messages for when
5259         a source file is not found.  Improve comments and formatting.
5260         * gm2-libs-ch/cgetopt.c (cgetopt_cgetopt_long): Remove
5261         ansi-decl.h.  Add getopt.h.
5262         (cgetopt_cgetopt_long_only): Change cgetopt_ to getopt_.
5263         * gm2spec.cc (lang_specific_driver): Do not skip -fmod=.
5264         Remove comment.
5266 2023-03-29  Gaius Mulley  <gaiusmod2@gmail.com>
5268         PR modula2/109336
5269         PR modula2/109315
5270         * gm2-compiler/M2FileName.mod (CalculateFileName): Simplified by
5271         ensuring the extension contains the ".".
5272         (CalculateStemName): Re-formatted.
5273         (ExtractExtension): Re-formatted.
5274         (ExtractModule): Re-formatted.
5275         * gm2-compiler/M2Options.def (setdefextension): Add block comment.
5276         (setmodextension): Add block comment.  Re-formatted.
5277         * gm2-compiler/M2Options.mod (setdefextension): Add block comment.
5278         (setmodextension): Add block comment.  Re-formatted.
5279         * gm2-compiler/M2Search.mod (FindSourceDefFile): Use
5280         DefaultDefExt.
5281         (DefaultDefExt): New constant.
5282         (DefaultModExt): New constant.
5283         (FindSourceModFile): Use DefaultModExt.
5284         * gm2-gcc/m2decl.cc (m2decl_DeclareKnownVariable): Correct
5285         spelling.
5286         * gm2spec.cc (M2SOURCE): New constant.
5287         (LANGSPEC): New value.
5288         (MATHLIB): New value.
5289         (WITHLIBC): New value.
5290         (SKIPOPT): New value.
5291         (lang_specific_driver): Replace seen_module_extension bool with
5292         module_extension char *.  Detect -fmod= and remember extension.
5293         Use the extension to detect modula-2 source and mark it as such.
5295 2023-03-23  Gaius Mulley  <gaiusmod2@gmail.com>
5297         PR modula2/109264
5298         * gm2-compiler/M2Quads.mod (BuildConstFunctionCall): Comment
5299         out ErrorString in debugging block.
5300         (BuildConstructorStart): Replace Assert with a call to
5301         MetaErrorT3.  Import MetaErrorT3.
5302         * gm2-compiler/PCSymBuild.mod (buildConstFunction): Rename
5303         local variables.
5304         (WalkFunctionParam): Remove test for IsEnumeration when
5305         resolving MIN or MAX parameters.
5306         * gm2-compiler/PHBuild.bnf (BlockAssert): New procedure.
5307         (ErrorArrayat): New procedure.
5308         (Expect): Renamed parameter t to tok.
5309         (PushQualident): New rule.
5310         (ConstSetOrQualidentOrFunction): Force AutoOn.
5311         (TypeDeclaration): Add debugging assert.
5312         (SimpleType): Add debugging assert.
5313         (DefaultRecordAttributes): New rule (and bugfix).
5314         (FieldPragmaExpression): New rule (and bugfix).
5315         (PragmaConstExpression): New rule (and bugfix).
5316         (SetOrDesignatorOrFunction): Add debugging assert.
5317         (Block): Add debugging assert.
5318         * gm2-gcc/m2expr.cc (m2expr_ConstantExpressionWarning): int
5319         to bool.
5320         * gm2-gcc/m2expr.h (m2expr_TreeOverflow): int to bool.
5321         (m2expr_GetBooleanTrue): Remove.
5322         (m2expr_GetBooleanFalse): Remove.
5323         * gm2-gcc/m2options.h (M2Options_SetStatistics): Replace
5324         int with bool.
5326 2023-03-22  Gaius Mulley  <gaiusmod2@gmail.com>
5328         PR modula2/109248
5329         * Make-lang.in (m2/pge-boot/%.o): Add CFLAGS and CXXFLAGS for C
5330         and C++ compiles.
5331         * gm2spec.cc (add_m2_I_path): Indentation.
5332         (lang_specific_driver): New variable seen_pathname.
5333         Detect -fm2-pathname.  If not seen then push_back_Ipath (".").
5334         Change non iso library path to "m2cor,m2log,m2pim,m2iso".
5336 2023-03-22  Gaius Mulley  <gaiusmod2@gmail.com>
5338         PR modula2/107630
5339         * Make-lang.in (m2/stage2/cc1gm2$(exeext)): Remove
5340         m2/gm2-libs-boot/M2LINK.o.
5341         (m2/stage1/cc1gm2$(exeext)): Ditto.
5342         (GM2-LIBS-BOOT-DEFS): Remove M2LINK.def.
5343         (GM2-LIBS-DEFS): Ditto.
5344         (m2/mc-boot/$(SRC_PREFIX)%.o): Replace CXX_FLAGS with CXXFLAGS.
5345         (m2/mc-boot-ch/$(SRC_PREFIX)%.o): Ditto.
5346         (m2/mc-boot/main.o): Ditto.
5347         (mcflex.o): Add $(CFLAGS).
5348         (m2/gm2-libs-boot/M2LINK.o): Remove rule.
5349         * gm2-compiler/M2GCCDeclare.def (DeclareM2linkGlobals): Remove.
5350         * gm2-compiler/M2GCCDeclare.mod: (M2LinkEntry): Remove.
5351         (M2LinkIndex): Remove.
5352         (DoVariableDeclaration): Remove initial and call to
5353         AddEntryM2Link.
5354         (AddEntryM2Link): Remove.
5355         (GetEntryM2Link): Remove.
5356         (DeclareM2linkGlobals): Remove.
5357         (DetectM2LinkInitial): Remove.
5358         (InitM2LinkModule): Remove.
5359         * gm2-compiler/M2GenGCC.mod (CodeFinallyEnd): Remove call to
5360         DeclareM2linkGlobals.
5361         * gm2-compiler/M2Quads.mod (BuildM2InitFunction): Add extra
5362         parameter containing runtime module override to ConstructModules.
5363         * gm2-compiler/M2Scaffold.mod: Update comment describing
5364         ConstructModules.
5365         * gm2-gcc/m2decl.cc (m2decl_DeclareM2linkForcedModuleInitOrder):
5366         Remove.
5367         * gm2-libs-iso/M2RTS.def (ConstructModules): Add overrideliborder
5368         parameter.
5369         * gm2-libs-iso/M2RTS.mod: Add overrideliborder parameter.
5370         * gm2-libs/M2Dependent.def (ConstructModules): Add overrideliborder
5371         parameter.
5372         * gm2-libs/M2Dependent.mod (ConstructModules): Add overrideliborder
5373         parameter.
5374         * gm2-libs/M2RTS.def (ConstructModules): Add overrideliborder parameter.
5375         * gm2-libs/M2RTS.mod (ConstructModules): Add overrideliborder
5376         parameter.
5377         * gm2-libs/M2LINK.def: Removed.
5379 2023-03-21  Gaius Mulley  <gaiusmod2@gmail.com>
5381         * Make-lang.in (m2/mc-boot/$(SRC_PREFIX)%.o): Add $(CXXFLAGS).
5382         (m2/mc-boot-ch/$(SRC_PREFIX)%.o): Add $(CXXFLAGS).
5383         (m2/mc-boot-ch/$(SRC_PREFIX)%.o): Add $(CXXFLAGS).
5384         (m2/mc-boot/main.o): Add $(CXXFLAGS).
5386 2023-03-19  Gaius Mulley  <gaiusmod2@gmail.com>
5388         * Make-maintainer.in (gm2.maintainer-clean): Remove.
5389         (gm2.maintainer-help): Add gm2.maintainer-tools,
5390         gm2.maintainer-doc.  Remove gm2.maintainer-clean.
5391         Change target-independent directory to target-independent/m2.
5392         * gm2-compiler/ppg.mod: Correct __FILE_ typo to __FILE__.
5393         * gm2-compiler/M2Options.def (SetAutoInit): Update comment.
5394         * gm2-compiler/M2Options.mod (SetAutoInit): Update comment.
5395         * gm2-gcc/m2color.cc (m2color_colorize_start): Rename name_len
5396         to _name_high.
5397         * gm2-gcc/m2color.def (colorize_start): change ARRAY OF CHAR to
5398         ADDRESS and add _name_high.
5399         * gm2-gcc/m2decl.cc (m2decl_BuildStartFunctionDeclaration): Change
5400         int to bool.
5401         * gm2-gcc/m2decl.h (m2decl_BuildStartFunctionDeclaration): Change
5402         int to bool.
5403         * gm2-gcc/m2expr.cc (m2expr_BuildBinarySetDo): Change int to bool.
5404         (m2expr_BuildIfConstInVar): Change int to bool.
5405         (m2expr_BuildIfNotConstInVar): Change int to bool.
5406         (m2expr_BuildIfVarInVar): Change int to bool.
5407         (m2expr_BuildIfNotVarInVar): Change int to bool.
5408         (m2expr_BuildForeachWordInSetDoIfExpr): Change int to bool.
5409         * gm2-gcc/m2expr.h (m2expr_BuildIfNotVarInVar): Change int to bool.
5410         (m2expr_BuildIfVarInVar): Change int to bool.
5411         (m2expr_BuildIfNotConstInVar): Change int to bool.
5412         (m2expr_BuildIfConstInVar): Change int to bool.
5413         * gm2-gcc/m2options.h (M2Options_SetAutoInit): Change int to bool.
5414         (M2Options_SetNilCheck): Change int to bool.
5415         (M2Options_SetReturnCheck): Change int to bool.
5416         (M2Options_SetCaseCheck): Change int to bool.
5417         (M2Options_SetCheckAll): Change int to bool.
5418         (M2Options_SetVerboseUnbounded): Change int to bool.
5419         (M2Options_SetUnboundedByReference): Change int to bool.
5420         (M2Options_SetOptimizing): Change int to bool.
5421         (M2Options_SetQuiet): Change int to bool.
5422         (M2Options_SetCpp): Change int to bool.
5423         (M2Options_SetM2g): Change int to bool.
5424         (M2Options_SetLowerCaseKeywords): Change int to bool.
5425         (M2Options_SetVerbose): Change int to bool.
5426         * gm2-gcc/m2treelib.cc (m2treelib_get_rvalue): Change int to bool.
5427         (m2treelib_get_field_no): Change int to bool.
5428         (m2treelib_get_set_value): Change int to bool.
5429         (m2treelib_get_set_address): Change int to bool.
5430         (m2treelib_get_set_address_if_var): Change int to bool.
5431         * gm2-gcc/m2treelib.def (get_set_address_if_var): Change int to bool.
5432         (get_set_address): Change int to bool.
5433         (get_set_value): Change int to bool.
5434         (get_field_no): Change int to bool.
5435         (get_rvalue): Change int to bool.
5436         * gm2-gcc/m2treelib.h (m2treelib_get_field_no): Change int to bool.
5437         (m2treelib_get_set_value): Change int to bool.
5438         (m2treelib_get_set_address): Change int to bool.
5439         (m2treelib_get_set_address_if_var): Change int to bool.
5440         * gm2-gcc/m2type.cc (m2type_BuildEndFunctionType): Change int to bool.
5441         * gm2-gcc/m2type.h (m2type_BuildEndFunctionType): Change int to bool.
5442         * gm2-libs-ch/dtoa.cc (dtoa_calcsign): Change int to bool.
5443         * gm2-libs-ch/ldtoa.cc (dtoa_calcsign): Change int to bool.
5444         (ldtoa_ldtoa): Change int to bool.
5445         * m2.flex (functionInfo): Change int to bool.
5446         (pushFunction): Change parameter from int to bool.
5447         * mc-boot/GDebug.cc (Debug_Halt): Rebuild.
5448         * mc-boot/GDebug.h (Debug_Halt): Rebuild.
5449         * mc-boot/GDynamicStrings.cc: Rebuild.
5450         * mc-boot/GDynamicStrings.h: Rebuild.
5451         * mc-boot/GFIO.cc: Rebuild.
5452         * mc-boot/GM2RTS.cc: Rebuild.
5453         * mc-boot/GM2RTS.h: Rebuild.
5454         * mc-boot/GPushBackInput.cc: Rebuild.
5455         * mc-boot/GRTExceptions.cc: Rebuild.
5456         * mc-boot/GRTint.cc: Rebuild.
5457         * mc-boot/GSysStorage.cc: Rebuild.
5458         * mc-boot/Gdecl.cc: Rebuild.
5459         * mc-boot/GsymbolKey.cc: Rebuild.
5460         * mc/symbolKey.mod: Rebuild.
5461         * target-independent/m2/Builtins.texi: Rebuild.
5462         * target-independent/m2/SYSTEM-iso.texi: Rebuild.
5463         * target-independent/m2/SYSTEM-pim.texi: Rebuild.
5464         * target-independent/m2/gm2-libs.texi: Rebuild.
5465         * tools-src/def2doc.py (PIM_Log): Change gm2-libs-pim to
5466         gm2-lib-log.
5468 2023-03-17  Gaius Mulley  <gaiusmod2@gmail.com>
5470         PR modula2/109032
5471         * gm2-gcc/m2expr.cc: Correct ? : order in comments.
5472         (m2expr_BuildDivM2): Improve comment.
5473         * lang.opt: Improve option descriptions.
5475 2023-03-17  Gaius Mulley  <gaiusmod2@gmail.com>
5477         PR modula2/109102
5478         * gm2-gcc/m2builtins.cc (ASSERT): Change format specifier to
5479         use %qs rather than quotes.
5481 2023-03-17  Gaius Mulley  <gaiusmod2@gmail.com>
5483         * gm2-compiler/M2AsmUtil.mod (SymNeedsModulePrefix):
5484         Re-implemented.
5485         * gm2-libs/SysStorage.mod (enableTrace): Disable tracing.
5487 2023-03-16  Gaius Mulley  <gaiusmod2@gmail.com>
5489         * gm2-compiler/SymbolKey.mod (PutSymKey): Halt parameters
5490         reordered.
5491         (DelSymKey): Ditto.
5492         * gm2-compiler/ppg.mod (GetEpsilon): Ditto.
5493         (GetReachEnd): Ditto.
5494         (GetFollow): Ditto.
5495         (CodeCondition): Ditto.
5496         (CodeThenDo): Ditto.
5497         (CodeEnd): Ditto.
5498         (RecoverCondition): Ditto.
5499         (ConditionIndent): Ditto.
5500         * gm2-libs-ch/m2rts.h (M2RTS_Halt): Ditto.
5501         * gm2-libs-coroutines/Executive.mod (Assert): Ditto.
5502         (Resume): Remove redundant comments.
5503         (Wait): Remove redundant comments.
5504         * gm2-libs-coroutines/SYSTEM.mod (TRANSFER): Halt parameters
5505         reordered.
5506         (IOTransferHandler): Ditto.
5507         (Finished): Ditto.
5508         (localInit): Ditto.
5509         * gm2-libs-coroutines/TimerHandler.mod (WaitOn): Halt parameters
5510         reordered.
5511         (Cancel): Ditto.
5512         (ReArmEvent): Ditto.
5513         (OnActiveQueue): Ditto.
5514         * gm2-libs-iso/COROUTINES.mod (NEWCOROUTINE): Ditto.
5515         (Transfer): Ditto.
5516         (IOTRANSFER): Ditto.
5517         * gm2-libs-iso/EXCEPTIONS.mod (RAISE): Correct Halt parameters.
5518         * gm2-libs-iso/M2RTS.def (Halt): Halt parameters reordered.
5519         (HaltC): Ditto.
5520         * gm2-libs-iso/M2RTS.mod: Ditto.
5521         * gm2-libs-iso/RTentity.mod (PutKey): Ditto.
5522         (DelKey): Ditto.
5523         (findChildAndParent): Ditto.
5524         (assert): Ditto.
5525         * gm2-libs-iso/Storage.mod (ALLOCATE): Add DebugTrace.
5526         Add UseMallocFree test.
5527         (DEALLOCATE): Add DebugTrace.  Add UseMallocFree test.
5528         (assert): Halt parameters reordered.
5529         * gm2-libs-log/Termbase.mod (Read): Ditto.
5530         (KeyPressed): Ditto.
5531         (Write): Ditto.
5532         (Init): Ditto.
5533         * gm2-libs/Debug.def (Halt): Halt parameters reordered.
5534         * gm2-libs/Debug.mod (Halt): Ditto.
5535         * gm2-libs/DynamicStrings.def (PopAllocation): Improve comment.
5536         * gm2-libs/DynamicStrings.mod (PopAllocation): Improve comment.
5537         Halt parameters reordered.
5538         * gm2-libs/M2RTS.def (Halt): Ditto.
5539         (HaltC): Ditto.
5540         * gm2-libs/M2RTS.mod (Halt): Ditto.
5541         (HaltC): Ditto.
5542         * gm2-libs/PushBackInput.mod (PutStr): Ditto.
5543         (PutString): Ditto.
5544         (PutCh): Ditto.
5545         * gm2-libs/RTExceptions.mod (GetBaseExceptionBlock): Ditto.
5546         * gm2-libs/RTint.mod (ReArmTimeVector): Ditto.
5547         (GetTimeVector): Ditto.
5548         (AttachVector): Ditto.
5549         (IncludeVector): Ditto.
5550         (Listen): Ditto.
5551         * gm2-libs/SysStorage.mod (ALLOCATE): Ditto.
5552         (DEALLOCATE): Ditto.
5553         (REALLOCATE): Ditto.
5554         * gm2-libs-coroutines/Debug.def: Removed.
5555         * gm2-libs-coroutines/Debug.mod: Removed.
5557 2023-03-16  Gaius Mulley  <gaiusmod2@gmail.com>
5559         * Make-lang.in: Rename target-independent to
5560         target-independent/m2.
5561         * target-independent/readme.txt: Update.
5562         * target-independent/m2/gm2-ebnf.texi: New file.
5563         * target-independent/m2/gpl_v3_without_node.texi: New file.
5564         * target-independent/Builtins.texi: Rename ...
5565         * target-independent/m2/Builtins.texi: ... to this.
5566         * target-independent/SYSTEM-iso.texi: Rename ...
5567         * target-independent/m2/SYSTEM-iso.texi: ... to this.
5568         * target-independent/SYSTEM-pim.texi: Rename ...
5569         * target-independent/m2/SYSTEM-pim.texi: ... to this.
5570         * target-independent/gm2-libs.texi: Rename ...
5571         * target-independent/m2/gm2-libs.texi: ... to this.
5573 2023-03-15  Gaius Mulley  <gaiusmod2@gmail.com>
5575         PR modula2/109125
5576         * gm2-libs-ch/dtoa.cc (dtoa_strtod): Replace int with bool.
5577         * gm2-libs-ch/ldtoa.cc (ldtoa_strtold): Replace int with bool.
5579 2023-03-14  Gaius Mulley  <gaiusmod2@gmail.com>
5581         PR modula2/109125
5582         * gm2-libs-ch/cgetopt.c (cgetopt_SetOption): Replace int
5583         for bool.
5584         * gm2-libs-ch/termios.c (doSetUnset): Replace int for bool.
5585         * gm2-libs/Builtins.mod (isfinitef): Correct typo in return
5586         statement.
5588 2023-03-13  Gaius Mulley  <gaiusmod2@gmail.com>
5590         PR modula2/109103
5591         * gm2-compiler/M2ALU.def (PushString): New parameter issueError.
5592         * gm2-compiler/M2ALU.mod (PushString): New parameter issueError.
5593         * gm2-compiler/SymbolTable.mod (PushString): New parameter issueError.
5594         * gm2-gcc/m2decl.cc (m2decl_DetermineSizeOfConstant): Pass
5595         location to interpret_m2_integer.
5596         (m2decl_BuildConstLiteralNumber): New parameter issueError.
5597         * gm2-gcc/m2expr.cc (m2expr_IsTrue): Replace int with bool.
5598         (m2expr_IsFalse): Replace int with bool.
5599         (m2expr_AreConstantsEqual): Replace int with bool.
5600         (m2expr_BuildBinaryForeachWordDo): Call m2linemap_internal_error_at.
5601         (append_digit): Ditto.
5602         (m2expr_interpret_integer): Add location parameter.
5603         (append_m2_digit): Call m2linemap_internal_error_at.
5604         (m2expr_interpret_m2_integer): Add location parameter.
5605         (m2expr_GetSizeOf): Replace sizeof with SIZE in error message.
5606         * gm2-gcc/m2expr.h (m2expr_AreRealOrComplexConstantsEqual):
5607         Replace int with bool.
5608         (m2expr_AreConstantsEqual): Ditto.
5609         (m2expr_IsFalse): Ditto.
5610         (m2expr_IsTrue): Ditto.
5611         (m2expr_interpret_integer): Add location parameter.
5612         (m2expr_interpret_m2_integer): Add location parameter.
5613         * gm2-gcc/m2linemap.cc (mformat_value): New function.
5614         (expand_format): New function.
5615         (expand_message): New function.
5616         (gm2_internal_error_at): New function.
5617         (m2linemap_internal_error_at): New function.
5618         * gm2-gcc/m2linemap.h (m2linemap_internal_error_at): New function.
5619         * gm2-gcc/m2options.h (M2Options_SetISO): Replace int with bool.
5620         (M2Options_SetPIM): Ditto.
5621         (M2Options_SetPIM2): Ditto.
5622         (M2Options_SetPIM3): Ditto.
5623         (M2Options_SetPIM4): Ditto.
5624         (M2Options_SetFloatValueCheck): Ditto.
5625         (M2Options_SetWholeValueCheck): Ditto.
5626         (M2Options_GetISO): Ditto.
5627         (M2Options_GetPIM): Ditto.
5628         (M2Options_GetPIM2): Ditto.
5629         (M2Options_GetPIM3): Ditto.
5630         (M2Options_GetPIM4): Ditto.
5631         (M2Options_GetPositiveModFloor): Ditto.
5632         (M2Options_GetFloatValueCheck): Ditto.
5633         (M2Options_GetWholeValueCheck): Ditto.
5634         (M2Options_Setc): Ditto.
5635         (M2Options_Getc): Ditto.
5636         (M2Options_SetPPOnly): Ditto.
5637         (M2Options_GetPPOnly): Ditto.
5638         (M2Options_SetUselist): Ditto.
5639         (M2Options_SetAutoInit): Ditto.
5640         (M2Options_SetPositiveModFloor): Ditto.
5641         (M2Options_SetNilCheck): Ditto.
5642         (M2Options_SetWholeDiv): Ditto.
5643         (M2Options_SetIndex): Ditto.
5644         (M2Options_SetRange): Ditto.
5645         (M2Options_SetReturnCheck): Ditto.
5646         (M2Options_SetCaseCheck): Ditto.
5647         (M2Options_SetCheckAll): Ditto.
5648         (M2Options_SetExceptions): Ditto.
5649         (M2Options_SetStyle): Ditto.
5650         (M2Options_SetPedantic): Ditto.
5651         (M2Options_SetPedanticParamNames): Ditto.
5652         (M2Options_SetPedanticCast): Ditto.
5653         (M2Options_SetExtendedOpaque): Ditto.
5654         (M2Options_SetVerboseUnbounded): Ditto.
5655         (M2Options_SetXCode): Ditto.
5656         (M2Options_SetCompilerDebugging): Ditto.
5657         (M2Options_SetQuadDebugging): Ditto.
5658         (M2Options_SetDebugTraceQuad): Ditto.
5659         (M2Options_SetDebugTraceAPI): Ditto.
5660         (M2Options_SetSources): Ditto.
5661         (M2Options_SetUnboundedByReference): Ditto.
5662         (M2Options_SetDumpSystemExports): Ditto.
5663         (M2Options_SetOptimizing): Ditto.
5664         (M2Options_SetQuiet): Ditto.
5665         (M2Options_SetCC1Quiet): Ditto.
5666         (M2Options_SetCpp): Ditto.
5667         (M2Options_SetSwig): Ditto.
5668         (M2Options_SetWholeProgram): Ditto.
5669         (M2Options_SetDebugFunctionLineNumbers): Ditto.
5670         (M2Options_SetGenerateStatementNote): Ditto.
5671         (M2Options_GetCpp): Ditto.
5672         (M2Options_GetM2g): Ditto.
5673         (M2Options_SetM2g): Ditto.
5674         (M2Options_SetLowerCaseKeywords): Ditto.
5675         (M2Options_SetVerbose): Ditto.
5676         (M2Options_SetUnusedVariableChecking): Ditto.
5677         (M2Options_SetUnusedParameterChecking): Ditto.
5678         (M2Options_SetStrictTypeChecking): Ditto.
5679         (M2Options_SetWall): Ditto.
5680         (M2Options_SetSaveTemps): Ditto.
5681         (M2Options_GetSaveTemps): Ditto.
5682         (M2Options_SetScaffoldStatic): Ditto.
5683         (M2Options_SetScaffoldDynamic): Ditto.
5684         (M2Options_SetScaffoldMain): Ditto.
5685         (M2Options_SetGenModuleList): Ditto.
5686         (M2Options_SetShared): Ditto.
5687         * gm2-libs-ch/M2LINK.c: Ditto.
5688         * gm2-libs-ch/m2rts.h (M2RTS_RequestDependant): Replace
5689         const char * with const void *.
5690         (M2RTS_RegisterModule): Ditto.
5691         (M2RTS_ConstructModules): Ditto.
5692         * gm2-gcc/m2decl.def (DetermineSizeOfConstant): New parameter
5693         issueError.
5694         * gm2-gcc/m2decl.h (DetermineSizeOfConstant): New parameter
5695         issueError.
5697 2023-03-12  Gaius Mulley  <gaiusmod2@gmail.com>
5699         PR modula2/109089
5700         * gm2-compiler/M2GCCDeclare.mod (DeclareKnownType): Import.
5701         * gm2-gcc/gcc-consolidation.h (stdbool.h): Include.
5702         * gm2-gcc/init.h (defined): Change block start.
5703         * gm2-gcc/m2block.cc: Change FALSE to false, change TRUE to true.
5704         * gm2-gcc/m2block.h: Change int to bool.
5705         * gm2-gcc/m2builtins.cc: Ditto.
5706         * gm2-gcc/m2builtins.h: Ditto.
5707         * gm2-gcc/m2convert.cc: Change FALSE to false, TRUE to true and
5708         int to bool.
5709         * gm2-gcc/m2convert.h: Change int to bool.
5710         * gm2-gcc/m2decl.cc: Change int to bool.
5711         * gm2-gcc/m2decl.h: Change int to bool.
5712         * gm2-gcc/m2expr.cc: Change FALSE to false, TRUE to true and
5713         int to bool.
5714         * gm2-gcc/m2expr.h: Change int to bool.
5715         * gm2-gcc/m2statement.cc: Change FALSE to false, TRUE to true and
5716         int to bool.
5717         * gm2-gcc/m2statement.h: Change int to bool.
5718         * gm2-gcc/m2top.cc: Change int to bool.
5719         * gm2-gcc/m2top.h: Change int to bool.
5720         * gm2-gcc/m2tree.cc: Change int to bool.
5721         * gm2-gcc/m2tree.h: Change int to bool.
5722         * gm2-gcc/m2type.cc: Change int to bool.
5723         * gm2-gcc/m2type.h: Change int to bool.
5724         * gm2-lang.cc (convert_loc): Call convert_to_integer for BOOLEAN_TYPE.
5725         * gm2-libs/Builtins.def (isfinitef): Change return value from
5726         BOOLEAN to INTEGER.
5727         (isfinite): Ditto.
5728         (isfinitel): Ditto.
5729         * gm2-libs/Builtins.mod (isfinitef): Change return value from
5730         BOOLEAN to INTEGER.
5731         (isfinite): Ditto.
5732         (isfinitel): Ditto.
5733         * mc-boot/GASCII.cc: Rebuild.
5734         * mc-boot/GASCII.h: Rebuild.
5735         * mc-boot/GArgs.cc: Rebuild.
5736         * mc-boot/GArgs.h: Rebuild.
5737         * mc-boot/GAssertion.cc: Rebuild.
5738         * mc-boot/GAssertion.h: Rebuild.
5739         * mc-boot/GBreak.cc: Rebuild.
5740         * mc-boot/GBreak.h: Rebuild.
5741         * mc-boot/GCOROUTINES.h: Rebuild.
5742         * mc-boot/GCmdArgs.cc: Rebuild.
5743         * mc-boot/GCmdArgs.h: Rebuild.
5744         * mc-boot/GDebug.cc: Rebuild.
5745         * mc-boot/GDebug.h: Rebuild.
5746         * mc-boot/GDynamicStrings.cc: Rebuild.
5747         * mc-boot/GDynamicStrings.h: Rebuild.
5748         * mc-boot/GEnvironment.cc: Rebuild.
5749         * mc-boot/GEnvironment.h: Rebuild.
5750         * mc-boot/GFIO.cc: Rebuild.
5751         * mc-boot/GFIO.h: Rebuild.
5752         * mc-boot/GFormatStrings.cc: Rebuild.
5753         * mc-boot/GFormatStrings.h: Rebuild.
5754         * mc-boot/GFpuIO.cc: Rebuild.
5755         * mc-boot/GFpuIO.h: Rebuild.
5756         * mc-boot/GIO.cc: Rebuild.
5757         * mc-boot/GIO.h: Rebuild.
5758         * mc-boot/GIndexing.cc: Rebuild.
5759         * mc-boot/GIndexing.h: Rebuild.
5760         * mc-boot/GM2Dependent.cc: Rebuild.
5761         * mc-boot/GM2Dependent.h: Rebuild.
5762         * mc-boot/GM2EXCEPTION.cc: Rebuild.
5763         * mc-boot/GM2EXCEPTION.h: Rebuild.
5764         * mc-boot/GM2LINK.h: Rebuild.
5765         * mc-boot/GM2RTS.cc: Rebuild.
5766         * mc-boot/GM2RTS.h: Rebuild.
5767         * mc-boot/GMemUtils.cc: Rebuild.
5768         * mc-boot/GMemUtils.h: Rebuild.
5769         * mc-boot/GNumberIO.cc: Rebuild.
5770         * mc-boot/GNumberIO.h: Rebuild.
5771         * mc-boot/GPushBackInput.cc: Rebuild.
5772         * mc-boot/GPushBackInput.h: Rebuild.
5773         * mc-boot/GRTExceptions.cc: Rebuild.
5774         * mc-boot/GRTExceptions.h: Rebuild.
5775         * mc-boot/GRTco.h: Rebuild.
5776         * mc-boot/GRTentity.h: Rebuild.
5777         * mc-boot/GRTint.cc: Rebuild.
5778         * mc-boot/GRTint.h: Rebuild.
5779         * mc-boot/GSArgs.cc: Rebuild.
5780         * mc-boot/GSArgs.h: Rebuild.
5781         * mc-boot/GSFIO.cc: Rebuild.
5782         * mc-boot/GSFIO.h: Rebuild.
5783         * mc-boot/GSYSTEM.h: Rebuild.
5784         * mc-boot/GSelective.h: Rebuild.
5785         * mc-boot/GStdIO.cc: Rebuild.
5786         * mc-boot/GStdIO.h: Rebuild.
5787         * mc-boot/GStorage.cc: Rebuild.
5788         * mc-boot/GStorage.h: Rebuild.
5789         * mc-boot/GStrCase.cc: Rebuild.
5790         * mc-boot/GStrCase.h: Rebuild.
5791         * mc-boot/GStrIO.cc: Rebuild.
5792         * mc-boot/GStrIO.h: Rebuild.
5793         * mc-boot/GStrLib.cc: Rebuild.
5794         * mc-boot/GStrLib.h: Rebuild.
5795         * mc-boot/GStringConvert.cc: Rebuild.
5796         * mc-boot/GStringConvert.h: Rebuild.
5797         * mc-boot/GSysExceptions.h: Rebuild.
5798         * mc-boot/GSysStorage.cc: Rebuild.
5799         * mc-boot/GSysStorage.h: Rebuild.
5800         * mc-boot/GTimeString.cc: Rebuild.
5801         * mc-boot/GTimeString.h: Rebuild.
5802         * mc-boot/GUnixArgs.h: Rebuild.
5803         * mc-boot/Galists.cc: Rebuild.
5804         * mc-boot/Galists.h: Rebuild.
5805         * mc-boot/Gdecl.cc: Rebuild.
5806         * mc-boot/Gdecl.h: Rebuild.
5807         * mc-boot/Gdtoa.h: Rebuild.
5808         * mc-boot/Gerrno.h: Rebuild.
5809         * mc-boot/Gkeyc.cc: Rebuild.
5810         * mc-boot/Gkeyc.h: Rebuild.
5811         * mc-boot/Gldtoa.h: Rebuild.
5812         * mc-boot/Glibc.h: Rebuild.
5813         * mc-boot/Glibm.h: Rebuild.
5814         * mc-boot/Glists.cc: Rebuild.
5815         * mc-boot/Glists.h: Rebuild.
5816         * mc-boot/GmcComment.cc: Rebuild.
5817         * mc-boot/GmcComment.h: Rebuild.
5818         * mc-boot/GmcComp.cc: Rebuild.
5819         * mc-boot/GmcComp.h: Rebuild.
5820         * mc-boot/GmcDebug.cc: Rebuild.
5821         * mc-boot/GmcDebug.h: Rebuild.
5822         * mc-boot/GmcError.cc: Rebuild.
5823         * mc-boot/GmcError.h: Rebuild.
5824         * mc-boot/GmcFileName.cc: Rebuild.
5825         * mc-boot/GmcFileName.h: Rebuild.
5826         * mc-boot/GmcLexBuf.cc: Rebuild.
5827         * mc-boot/GmcLexBuf.h: Rebuild.
5828         * mc-boot/GmcMetaError.cc: Rebuild.
5829         * mc-boot/GmcMetaError.h: Rebuild.
5830         * mc-boot/GmcOptions.cc: Rebuild.
5831         * mc-boot/GmcOptions.h: Rebuild.
5832         * mc-boot/GmcPreprocess.cc: Rebuild.
5833         * mc-boot/GmcPreprocess.h: Rebuild.
5834         * mc-boot/GmcPretty.cc: Rebuild.
5835         * mc-boot/GmcPretty.h: Rebuild.
5836         * mc-boot/GmcPrintf.cc: Rebuild.
5837         * mc-boot/GmcPrintf.h: Rebuild.
5838         * mc-boot/GmcQuiet.cc: Rebuild.
5839         * mc-boot/GmcQuiet.h: Rebuild.
5840         * mc-boot/GmcReserved.cc: Rebuild.
5841         * mc-boot/GmcReserved.h: Rebuild.
5842         * mc-boot/GmcSearch.cc: Rebuild.
5843         * mc-boot/GmcSearch.h: Rebuild.
5844         * mc-boot/GmcStack.cc: Rebuild.
5845         * mc-boot/GmcStack.h: Rebuild.
5846         * mc-boot/GmcStream.cc: Rebuild.
5847         * mc-boot/GmcStream.h: Rebuild.
5848         * mc-boot/Gmcflex.h: Rebuild.
5849         * mc-boot/Gmcp1.cc: Rebuild.
5850         * mc-boot/Gmcp1.h: Rebuild.
5851         * mc-boot/Gmcp2.cc: Rebuild.
5852         * mc-boot/Gmcp2.h: Rebuild.
5853         * mc-boot/Gmcp3.cc: Rebuild.
5854         * mc-boot/Gmcp3.h: Rebuild.
5855         * mc-boot/Gmcp4.cc: Rebuild.
5856         * mc-boot/Gmcp4.h: Rebuild.
5857         * mc-boot/Gmcp5.cc: Rebuild.
5858         * mc-boot/Gmcp5.h: Rebuild.
5859         * mc-boot/GnameKey.cc: Rebuild.
5860         * mc-boot/GnameKey.h: Rebuild.
5861         * mc-boot/GsymbolKey.cc: Rebuild.
5862         * mc-boot/GsymbolKey.h: Rebuild.
5863         * mc-boot/Gtermios.h: Rebuild.
5864         * mc-boot/Gtop.cc: Rebuild.
5865         * mc-boot/Gvarargs.cc: Rebuild.
5866         * mc-boot/Gvarargs.h: Rebuild.
5867         * mc-boot/Gwlists.cc: Rebuild.
5868         * mc-boot/Gwlists.h: Rebuild.
5869         * mc-boot/Gwrapc.h: Rebuild.
5870         * mc/decl.mod (doBoolC): New procedure.
5871         (doBaseC): Call doBoolC.
5872         * mc/keyc.mod: Import useBool.
5873         (genBool): New procedure.
5874         (genDefs): Call genBool.
5875         * mc/mcOptions.def (useBool): New procedure.
5876         * mc/mcOptions.mod (useBool): New procedure.
5877         (useBoolType): New variable.
5878         (optionIs): Assign useBoolType to TRUE.
5880 2023-03-04  Gaius Mulley  <gaiusmod2@gmail.com>
5882         * mc-boot-ch/GBuiltins.cc: New file.
5883         * mc-boot-ch/Gdtoa.cc: New file.
5884         * mc-boot-ch/Gerrno.cc: New file.
5885         * mc-boot-ch/Gldtoa.cc: New file.
5886         * mc-boot-ch/Gm2rtsdummy.cc: New file.
5887         * mc-boot/GASCII.cc: New file.
5888         * mc-boot/GArgs.cc: New file.
5889         * mc-boot/GAssertion.cc: New file.
5890         * mc-boot/GBreak.cc: New file.
5891         * mc-boot/GCmdArgs.cc: New file.
5892         * mc-boot/GDebug.cc: New file.
5893         * mc-boot/GDynamicStrings.cc: New file.
5894         * mc-boot/GEnvironment.cc: New file.
5895         * mc-boot/GFIO.cc: New file.
5896         * mc-boot/GFormatStrings.cc: New file.
5897         * mc-boot/GFpuIO.cc: New file.
5898         * mc-boot/GIO.cc: New file.
5899         * mc-boot/GIndexing.cc: New file.
5900         * mc-boot/GM2Dependent.cc: New file.
5901         * mc-boot/GM2EXCEPTION.cc: New file.
5902         * mc-boot/GM2RTS.cc: New file.
5903         * mc-boot/GMemUtils.cc: New file.
5904         * mc-boot/GNumberIO.cc: New file.
5905         * mc-boot/GPushBackInput.cc: New file.
5906         * mc-boot/GRTExceptions.cc: New file.
5907         * mc-boot/GRTint.cc: New file.
5908         * mc-boot/GSArgs.cc: New file.
5909         * mc-boot/GSFIO.cc: New file.
5910         * mc-boot/GStdIO.cc: New file.
5911         * mc-boot/GStorage.cc: New file.
5912         * mc-boot/GStrCase.cc: New file.
5913         * mc-boot/GStrIO.cc: New file.
5914         * mc-boot/GStrLib.cc: New file.
5915         * mc-boot/GStringConvert.cc: New file.
5916         * mc-boot/GSysStorage.cc: New file.
5917         * mc-boot/GTimeString.cc: New file.
5918         * mc-boot/Galists.cc: New file.
5919         * mc-boot/Gdecl.cc: New file.
5920         * mc-boot/Gkeyc.cc: New file.
5921         * mc-boot/Glists.cc: New file.
5922         * mc-boot/GmcComment.cc: New file.
5923         * mc-boot/GmcComp.cc: New file.
5924         * mc-boot/GmcDebug.cc: New file.
5925         * mc-boot/GmcError.cc: New file.
5926         * mc-boot/GmcFileName.cc: New file.
5927         * mc-boot/GmcLexBuf.cc: New file.
5928         * mc-boot/GmcMetaError.cc: New file.
5929         * mc-boot/GmcOptions.cc: New file.
5930         * mc-boot/GmcPreprocess.cc: New file.
5931         * mc-boot/GmcPretty.cc: New file.
5932         * mc-boot/GmcPrintf.cc: New file.
5933         * mc-boot/GmcQuiet.cc: New file.
5934         * mc-boot/GmcReserved.cc: New file.
5935         * mc-boot/GmcSearch.cc: New file.
5936         * mc-boot/GmcStack.cc: New file.
5937         * mc-boot/GmcStream.cc: New file.
5938         * mc-boot/Gmcp1.cc: New file.
5939         * mc-boot/Gmcp2.cc: New file.
5940         * mc-boot/Gmcp3.cc: New file.
5941         * mc-boot/Gmcp4.cc: New file.
5942         * mc-boot/Gmcp5.cc: New file.
5943         * mc-boot/GnameKey.cc: New file.
5944         * mc-boot/GsymbolKey.cc: New file.
5945         * mc-boot/Gtop.cc: New file.
5946         * mc-boot/Gvarargs.cc: New file.
5947         * mc-boot/Gwlists.cc: New file.
5948         * pge-boot/GASCII.cc: New file.
5949         * pge-boot/GArgs.cc: New file.
5950         * pge-boot/GAssertion.cc: New file.
5951         * pge-boot/GBuiltins.cc: New file.
5952         * pge-boot/GDebug.cc: New file.
5953         * pge-boot/GDynamicStrings.cc: New file.
5954         * pge-boot/GFIO.cc: New file.
5955         * pge-boot/GIO.cc: New file.
5956         * pge-boot/GIndexing.cc: New file.
5957         * pge-boot/GLists.cc: New file.
5958         * pge-boot/GM2Dependent.cc: New file.
5959         * pge-boot/GM2EXCEPTION.cc: New file.
5960         * pge-boot/GM2LINK.cc: New file.
5961         * pge-boot/GM2RTS.cc: New file.
5962         * pge-boot/GNameKey.cc: New file.
5963         * pge-boot/GNumberIO.cc: New file.
5964         * pge-boot/GOutput.cc: New file.
5965         * pge-boot/GPushBackInput.cc: New file.
5966         * pge-boot/GRTExceptions.cc: New file.
5967         * pge-boot/GRTco.cc: New file.
5968         * pge-boot/GSFIO.cc: New file.
5969         * pge-boot/GSYSTEM.cc: New file.
5970         * pge-boot/GSelective.cc: New file.
5971         * pge-boot/GStdIO.cc: New file.
5972         * pge-boot/GStorage.cc: New file.
5973         * pge-boot/GStrCase.cc: New file.
5974         * pge-boot/GStrIO.cc: New file.
5975         * pge-boot/GStrLib.cc: New file.
5976         * pge-boot/GSymbolKey.cc: New file.
5977         * pge-boot/GSysExceptions.cc: New file.
5978         * pge-boot/GSysStorage.cc: New file.
5979         * pge-boot/Gabort.cc: New file.
5980         * pge-boot/Gbnflex.cc: New file.
5981         * pge-boot/Gcbuiltin.cc: New file.
5982         * pge-boot/Gdtoa.cc: New file.
5983         * pge-boot/Gerrno.cc: New file.
5984         * pge-boot/Gldtoa.cc: New file.
5985         * pge-boot/Glibc.cc: New file.
5986         * pge-boot/Glibm.cc: New file.
5987         * pge-boot/Gmcrts.cc: New file.
5988         * pge-boot/Gpge.cc: New file.
5989         * pge-boot/Gwrapc.cc: New file.
5990         * pge-boot/main.cc: New file.
5991         * pge-boot/network.cc: New file.
5993 2023-03-04  Gaius Mulley  <gaiusmod2@gmail.com>
5995         * Make-lang.in (MC-LIB-BOOT-C): Rename to MC-LIB-BOOT-CC.
5996         (MC-BOOT-C): Rename to MC-BOOT-CC.
5997         (BUILD-MC-BOOT-C): Rename to BUILD-MC-BOOT-CC.
5998         (BUILD-MC-BOOT-AUTO-C): Rename to BUILD-MC-BOOT-AUTO-CC.
5999         (m2/mc-boot/$(SRC_PREFIX)%.o): Change source file extension to .cc.
6000         (m2/mc-boot-ch/$(SRC_PREFIX)%.o): Ditto.
6001         * Make-maintainer.in (m2/gm2-ppg-boot/$(SRC_PREFIX)%.o): Change
6002         source file extension to .cc.
6003         (m2/gm2-ppg-boot/main.o): Ditto.
6004         (m2/gm2-ppg-boot/$(SRC_PREFIX)%.o): Ditto.
6005         to .cc.
6006         (m2/gm2-pg-boot/main.o): Ditto.
6007         (m2/gm2-pge-boot/$(SRC_PREFIX)ldtoa.o): Ditto.
6008         (m2/gm2-pge-boot/$(SRC_PREFIX)dtoa.o): Ditto.
6009         (m2/gm2-pge-boot/$(SRC_PREFIX)errno.o): Ditto.
6010         (m2/gm2-pge-boot/$(SRC_PREFIX)M2RTS.o): Ditto.
6011         (m2/gm2-pge-boot/$(SRC_PREFIX)%.o): Ditto.
6012         (m2/gm2-pge-boot/$(SRC_PREFIX)%.o): Ditto.
6013         (m2/gm2-pge-boot/$(SRC_PREFIX)pge.o): Ditto.
6014         (m2/gm2-pge-boot/main.o): Ditto.
6015         (mc-push): Ditto.
6016         (mc-clean): Ditto.
6017         (mc-stage2): Ditto.
6018         ((objdir)/m2/mc-boot-gen): Ditto.
6019         (m2/mc-boot-gen/$(SRC_PREFIX)decl.c): Ditto.
6020         (m2/mc-boot-gen/$(SRC_PREFIX)%.c): Ditto.
6021         * mc-boot-ch/GBuiltins.c: Correct comment and rename.
6022         * mc-boot-ch/Gdtoa.c: Correct comment and rename.
6023         * mc-boot-ch/Gldtoa.c: Correct comment and rename
6024         * mc-boot-ch/Gtermios.cc: Rename from Gtermios.c.
6025         * mc-boot-ch/Gerrno.c: Rename.
6026         * mc-boot-ch/GRTco.c: Removed.
6027         * mc-boot/GASCII.c: Rename to mc-boot/GASCII.cc.
6028         * mc-boot/GArgs.c: Rename to mc-boot/GArgs.cc.
6029         * mc-boot/GAssertion.c: Rename to mc-boot/GAssertion.cc.
6030         * mc-boot/GBreak.c: Rename to mc-boot/GBreak.cc.
6031         * mc-boot/GCmdArgs.c: Rename to mc-boot/GCmdArgs.cc.
6032         * mc-boot/GDebug.c: Rename to mc-boot/GDebug.cc.
6033         * mc-boot/GDynamicStrings.c: Rename to mc-boot/GDynamicStrings.cc.
6034         * mc-boot/GEnvironment.c: Rename to mc-boot/GEnvironment.cc.
6035         * mc-boot/GFIO.c: Rename to mc-boot/GFIO.cc.
6036         * mc-boot/GFormatStrings.c: Rename to mc-boot/GFormatStrings.cc.
6037         * mc-boot/GFpuIO.c: Rename to mc-boot/GFpuIO.cc.
6038         * mc-boot/GIO.c: Rename to mc-boot/GIO.cc.
6039         * mc-boot/GIndexing.c: Rename to mc-boot/GIndexing.cc.
6040         * mc-boot/GM2Dependent.c: Rename to mc-boot/GM2Dependent.cc.
6041         * mc-boot/GM2EXCEPTION.c: Rename to mc-boot/GM2EXCEPTION.cc.
6042         * mc-boot/GM2RTS.c: Rename to mc-boot/GM2RTS.cc.
6043         * mc-boot/GMemUtils.c: Rename to mc-boot/GMemUtils.cc.
6044         * mc-boot/GNumberIO.c: Rename to mc-boot/GNumberIO.cc.
6045         * mc-boot/GPushBackInput.c: Rename to mc-boot/GPushBackInput.cc.
6046         * mc-boot/GRTExceptions.c: Rename to mc-boot/GRTExceptions.cc.
6047         * mc-boot/GRTint.c: Rename to mc-boot/GRTint.cc.
6048         * mc-boot/GSArgs.c: Rename to mc-boot/GSArgs.cc.
6049         * mc-boot/GSFIO.c: Rename to mc-boot/GSFIO.cc.
6050         * mc-boot/GStdIO.c: Rename to mc-boot/GStdIO.cc.
6051         * mc-boot/GStorage.c: Rename to mc-boot/GStorage.cc.
6052         * mc-boot/GStrCase.c: Rename to mc-boot/GStrCase.cc.
6053         * mc-boot/GStrIO.c: Rename to mc-boot/GStrIO.cc.
6054         * mc-boot/GStrLib.c: Rename to mc-boot/GStrLib.cc.
6055         * mc-boot/GStringConvert.c: Rename to mc-boot/GStringConvert.cc.
6056         * mc-boot/GSysStorage.c: Rename to mc-boot/GSysStorage.cc.
6057         * mc-boot/GTimeString.c: Rename to mc-boot/GTimeString.cc.
6058         * mc-boot/Galists.c: Rename to mc-boot/Galists.cc.
6059         * mc-boot/Gdecl.c: Rename to mc-boot/Gdecl.cc.
6060         * mc-boot/Gkeyc.c: Rename to mc-boot/Gkeyc.cc.
6061         * mc-boot/Glists.c: Rename to mc-boot/Glists.cc.
6062         * mc-boot/GmcComment.c: Rename to mc-boot/GmcComment.cc.
6063         * mc-boot/GmcComp.c: Rename to mc-boot/GmcComp.cc.
6064         * mc-boot/GmcDebug.c: Rename to mc-boot/GmcDebug.cc.
6065         * mc-boot/GmcError.c: Rename to mc-boot/GmcError.cc.
6066         * mc-boot/GmcFileName.c: Rename to mc-boot/GmcFileName.cc.
6067         * mc-boot/GmcLexBuf.c: Rename to mc-boot/GmcLexBuf.cc.
6068         * mc-boot/GmcMetaError.c: Rename to mc-boot/GmcMetaError.cc.
6069         * mc-boot/GmcOptions.c: Rename to mc-boot/GmcOptions.cc.
6070         * mc-boot/GmcPreprocess.c: Rename to mc-boot/GmcPreprocess.cc.
6071         * mc-boot/GmcPretty.c: Rename to mc-boot/GmcPretty.cc.
6072         * mc-boot/GmcPrintf.c: Rename to mc-boot/GmcPrintf.cc.
6073         * mc-boot/GmcQuiet.c: Rename to mc-boot/GmcQuiet.cc.
6074         * mc-boot/GmcReserved.c: Rename to mc-boot/GmcReserved.cc.
6075         * mc-boot/GmcSearch.c: Rename to mc-boot/GmcSearch.cc.
6076         * mc-boot/GmcStack.c: Rename to mc-boot/GmcStack.cc.
6077         * mc-boot/GmcStream.c: Rename to mc-boot/GmcStream.cc.
6078         * mc-boot/Gmcp1.c: Rename to mc-boot/Gmcp1.cc.
6079         * mc-boot/Gmcp2.c: Rename to mc-boot/Gmcp2.cc.
6080         * mc-boot/Gmcp3.c: Rename to mc-boot/Gmcp3.cc.
6081         * mc-boot/Gmcp4.c: Rename to mc-boot/Gmcp4.cc.
6082         * mc-boot/Gmcp5.c: Rename to mc-boot/Gmcp5.cc.
6083         * mc-boot/GnameKey.c: Rename to mc-boot/GnameKey.cc.
6084         * mc-boot/GsymbolKey.c: Rename to mc-boot/GsymbolKey.cc.
6085         * mc-boot/Gtop.c: Rename to mc-boot/Gtop.cc.
6086         * mc-boot/Gvarargs.c: Rename to mc-boot/Gvarargs.cc.
6087         * mc-boot/Gwlists.c: Rename to mc-boot/Gwlists.cc.
6088         * pge-boot/GASCII.c: Rename to pge-boot/GASCII.cc.
6089         * pge-boot/GArgs.c: Rename to pge-boot/GArgs.cc.
6090         * pge-boot/GAssertion.c: Rename to pge-boot/GAssertion.cc.
6091         * pge-boot/GBuiltins.c: Rename to pge-boot/GBuiltins.cc.
6092         * pge-boot/GDebug.c: Rename to pge-boot/GDebug.cc.
6093         * pge-boot/GDynamicStrings.c: Rename to pge-boot/GDynamicStrings.cc.
6094         * pge-boot/GFIO.c: Rename to pge-boot/GFIO.cc.
6095         * pge-boot/GIO.c: Rename to pge-boot/GIO.cc.
6096         * pge-boot/GIndexing.c: Rename to pge-boot/GIndexing.cc.
6097         * pge-boot/GLists.c: Rename to pge-boot/GLists.cc.
6098         * pge-boot/GM2Dependent.c: Rename to pge-boot/GM2Dependent.cc.
6099         * pge-boot/GM2EXCEPTION.c: Rename to pge-boot/GM2EXCEPTION.cc.
6100         * pge-boot/GM2LINK.c: Rename to pge-boot/GM2LINK.cc.
6101         * pge-boot/GM2RTS.c: Rename to pge-boot/GM2RTS.cc.
6102         * pge-boot/GNameKey.c: Rename to pge-boot/GNameKey.cc.
6103         * pge-boot/GNumberIO.c: Rename to pge-boot/GNumberIO.cc.
6104         * pge-boot/GOutput.c: Rename to pge-boot/GOutput.cc.
6105         * pge-boot/GPushBackInput.c: Rename to pge-boot/GPushBackInput.cc.
6106         * pge-boot/GRTExceptions.c: Rename to pge-boot/GRTExceptions.cc.
6107         * pge-boot/GRTco.c: Rename to pge-boot/GRTco.cc.
6108         * pge-boot/GSFIO.c: Rename to pge-boot/GSFIO.cc.
6109         * pge-boot/GSYSTEM.c: Rename to pge-boot/GSYSTEM.cc.
6110         * pge-boot/GSelective.c: Rename to pge-boot/GSelective.cc.
6111         * pge-boot/GStdIO.c: Rename to pge-boot/GStdIO.cc.
6112         * pge-boot/GStorage.c: Rename to pge-boot/GStorage.cc.
6113         * pge-boot/GStrCase.c: Rename to pge-boot/GStrCase.cc.
6114         * pge-boot/GStrIO.c: Rename to pge-boot/GStrIO.cc.
6115         * pge-boot/GStrLib.c: Rename to pge-boot/GStrLib.cc.
6116         * pge-boot/GSymbolKey.c: Rename to pge-boot/GSymbolKey.cc.
6117         * pge-boot/GSysExceptions.c: Rename to pge-boot/GSysExceptions.cc.
6118         * pge-boot/GSysStorage.c: Rename to pge-boot/GSysStorage.cc.
6119         * pge-boot/Gabort.c: Rename to pge-boot/Gabort.cc.
6120         * pge-boot/Gbnflex.c: Rename to pge-boot/Gbnflex.cc.
6121         * pge-boot/Gcbuiltin.c: Rename to pge-boot/Gcbuiltin.cc.
6122         * pge-boot/Gdtoa.c: Rename to pge-boot/Gdtoa.cc.
6123         * pge-boot/Gerrno.c: Rename to pge-boot/Gerrno.cc.
6124         * pge-boot/Gldtoa.c: Rename to pge-boot/Gldtoa.cc.
6125         * pge-boot/Glibc.c: Rename to pge-boot/Glibc.cc.
6126         * pge-boot/Glibm.c: Rename to pge-boot/Glibm.cc.
6127         * pge-boot/Gmcrts.c: Rename to pge-boot/Gmcrts.cc.
6128         * pge-boot/Gpge.c: Rename to pge-boot/Gpge.cc.
6129         * pge-boot/Gwrapc.c: Rename to pge-boot/Gwrapc.cc.
6130         * pge-boot/README: Correct description.
6131         * pge-boot/main.c: Rename to pge-boot/main.cc.
6132         * pge-boot/network.c: Rename to pge-boot/network.cc.
6134 2023-02-28  Gaius Mulley  <gaiusmod2@gmail.com>
6136         PR modula2/108956
6137         * Make-lang.in (m2/gm2-libs-boot/M2RTS.o): New specific rule to
6138         add the --suppress-noreturn option.
6139         * Make-maintainer.in (m2/gm2-ppg-boot/$(SRC_PREFIX)M2RTS.o): New
6140         specific rule to add the --suppress-noreturn option.
6141         (m2/gm2-pg-boot/$(SRC_PREFIX)M2RTS.o): New
6142         specific rule to add the --suppress-noreturn option.
6143         (m2/gm2-pg-boot/$(SRC_PREFIX)%.o): Add missing $(srcdir).
6144         (m2/gm2-pge-boot/$(SRC_PREFIX)M2RTS.o): New
6145         specific rule to add the --suppress-noreturn option.
6146         (m2/gm2-pge-boot/$(SRC_PREFIX)%.o): Add missing $(srcdir).
6147         * gm2-libs-ch/UnixArgs.cc (LIBNAME): New define.
6148         (_M2_UnixArgs_ctor): Add LIBNAME parameter to RegisterModule.
6149         * gm2-libs-ch/dtoa.cc (LIBNAME): New define.
6150         (_M2_dtoa_ctor): Add LIBNAME parameter to RegisterModule.
6151         * gm2-libs-ch/ldtoa.cc (LIBNAME): New define.
6152         (_M2_ldtoa_ctor): Add LIBNAME parameter to RegisterModule.
6153         * pge-boot/m2rts.h (M2RTS_RegisterModule): Add libname
6154         parameter.
6155         * gm2-libs-ch/m2rts.h (M2RTS_RegisterModule): Add libname
6156         parameter.
6157         * mc-boot-ch/GUnixArgs.cc (_M2_UnixArgs_ctor): Remove.
6158         * pge-boot/GUnixArgs.cc (LIBNAME): New define.
6159         (_M2_UnixArgs_ctor): Add LIBNAME parameter to RegisterModule.
6160         * gm2-libs/RTint.def (AttachVector): Rename parameter.
6161         * mc-boot/GDynamicStrings.c: Rebuilt.
6162         * mc-boot/GFIO.c: Rebuilt.
6163         * mc-boot/GIndexing.c: Rebuilt.
6164         * mc-boot/GM2EXCEPTION.c: Rebuilt.
6165         * mc-boot/GPushBackInput.c: Rebuilt.
6166         * mc-boot/GRTExceptions.c: Rebuilt.
6167         * mc-boot/GRTint.c: Rebuilt.
6168         * mc-boot/GRTint.h: Rebuilt.
6169         * mc-boot/GStdIO.c: Rebuilt.
6170         * mc-boot/GStringConvert.c: Rebuilt.
6171         * mc-boot/GSysStorage.c: Rebuilt.
6172         * mc-boot/Gdecl.c: Rebuilt.
6173         * mc-boot/Gkeyc.c: Rebuilt.
6174         * mc-boot/GmcComment.c: Rebuilt.
6175         * mc-boot/GmcComp.c: Rebuilt.
6176         * mc-boot/GmcDebug.c: Rebuilt.
6177         * mc-boot/GmcMetaError.c: Rebuilt.
6178         * mc-boot/GmcOptions.c: Rebuilt.
6179         * mc-boot/GmcOptions.h: Rebuilt.
6180         * mc-boot/GmcStack.c: Rebuilt.
6181         * mc-boot/GnameKey.c: Rebuilt.
6182         * mc-boot/GsymbolKey.c: Rebuilt.
6183         * mc/decl.mod:: Rebuilt.
6184         * mc/mcOptions.def: Rebuilt.
6185         * mc/mcOptions.mod:: Rebuilt.
6186         * pge-boot/GDynamicStrings.c: Rebuilt.
6187         * pge-boot/GFIO.c: Rebuilt.
6188         * pge-boot/GIndexing.c: Rebuilt.
6189         * pge-boot/GM2EXCEPTION.c: Rebuilt.
6190         * pge-boot/GM2RTS.c: Rebuilt.
6191         * pge-boot/GNameKey.c: Rebuilt.
6192         * pge-boot/GPushBackInput.c: Rebuilt.
6193         * pge-boot/GRTExceptions.c: Rebuilt.
6194         * pge-boot/GStdIO.c: Rebuilt.
6195         * pge-boot/GSymbolKey.c: Rebuilt.
6196         * pge-boot/GSysStorage.c: Rebuilt.
6198 2023-02-25  Gaius Mulley  <gaiusmod2@gmail.com>
6200         PR modula2/108261
6201         * Make-lang.in (GM2-COMP-BOOT-DEFS): DynamicStringPath.def
6202         remove.  DynamicPath.def add.
6203         (GM2-COMP-BOOT-MODS): DynamicStringPath.mod remove.
6204         DynamicPath.mod add.
6205         * Make-maintainer.in (BUILD-BOOT-PPG-H): New dependency.
6206         (m2/gm2-ppg-boot/$(SRC_PREFIX)%.o): $(BUILD-BOOT-PPG-H) Add
6207         dependency.
6208         (PGE-DEF): New definition.
6209         (BUILD-BOOT-PG-H): New dependency.
6210         (m2/gm2-pg-boot/$(SRC_PREFIX)%.o): $(BUILD-BOOT-PG-H) Add
6211         dependency.
6212         (BUILD-BOOT-PGE-H): New dependency.
6213         (m2/gm2-pge-boot/$(SRC_PREFIX)%.o): $(BUILD-BOOT-PGE-H) Add
6214         dependency.
6215         (GM2PATH): Add pathname entries.
6216         (m2/boot-bin/mc-devel$(exeext)): Add m2/mc-boot-ch/Gm2rtsdummy.o
6217         dependency.
6218         (m2/boot-bin/mc-opt$(exeext)): Fix -I path.
6219         * gm2-compiler/DynamicStringPath.def: Renamed module to
6220         DynamicPath.
6221         (GetUserPath): Remove.
6222         (GetSystemPath): Remove.
6223         (SetUserPath): Remove.
6224         (SetSystemPath): Remove.
6225         (DumpPath): New procedure definition.
6226         * gm2-compiler/DynamicStringPath.mod: Renamed module to
6227         DynamicPath.
6228         (GetUserPath): Remove.
6229         (GetSystemPath): Remove.
6230         (SetUserPath): Remove.
6231         (SetSystemPath): Remove.
6232         (DumpPath): Remove Debugging conditional.
6233         * gm2-compiler/M2AsmUtil.mod: Import EqualArray, NulName and
6234         GetLibName.
6235         (Debugging): New declaration.
6236         (GetFullSymName): Re-implemented to prefix (mange) libname
6237         to any extern variable/procedure which is IsExportQualified.
6238         * gm2-compiler/M2Comp.mod (qprintLibName): New procedure.
6239         * gm2-compiler/M2Graph.mod (resolveImports): Add libname.
6240         * gm2-compiler/M2Options.def (SetM2Prefix): New procedure.
6241         (GetM2Prefix): New procedure function.
6242         (SetM2PathName): New procedure.
6243         (GetM2PathName): New procedure function.
6244         * gm2-compiler/M2Options.mod: (SetM2Prefix): New procedure implemented.
6245         (GetM2Prefix): New procedure function implemented.
6246         (SetM2PathName): New procedure implemented.
6247         (GetM2PathName): New procedure function implemented.
6248         (RuntimeModuleOverride): Set to DefaultRuntimeModuleOverride.
6249         * gm2-compiler/M2Quads.mod: Import GetLibName.
6250         (SafeRequestSym) Pass result of GetLibName to RequestDependant.
6251         (callRequestDependant): Add libname as a parameter.
6252         (BuildM2InitFunction): Add libname as a parameter.
6253         (BuildM2FiniFunction): Add libname as a parameter.
6254         (BuildM2CtorFunction): Add libname as a parameter.
6255         * gm2-compiler/M2Scaffold.mod (LookupModuleSym): Set LibName
6256         if a definition source was found.
6257         * gm2-compiler/M2Search.def (FindSourceFile): Add named library parameter.
6258         (FindSourceDefFile): Add named library parameter.
6259         (FindSourceModFile): Add named library parameter.
6260         * gm2-compiler/M2Search.mod (FindSourceFile): Reimplement.
6261         (FindSourceDefFile): Add named library parameter.
6262         (FindSourceModFile): Add named library parameter.
6263         * gm2-compiler/SymbolTable.def (MakeProcedureCtorExtern): Add
6264         libname parameter.
6265         (PutLibName): New procedure.
6266         (GetLibName): New procedure function.
6267         * gm2-compiler/SymbolTable.mod (MakeProcedureCtorExtern): Add
6268         libname parameter.
6269         (GenName): Add libname parameter.
6270         (InitCtorFields): Add moduleSym as a parameter.
6271         (PutCtorExtern): Add libname parameter to GenName.
6272         * gm2-gcc/init.cc (_M2_DynamicStringPath_init): Rename function...
6273         (_M2_DynamicPath_init): ...to this.
6274         (_M2_PathName_init): Added.
6275         * gm2-gcc/m2decl.cc (m2decl_DeclareM2linkStaticInitialization):
6276         Add m2pim as the manged component of the exported symbol.
6277         (m2decl_DeclareM2linkForcedModuleInitOrder): Add m2pim mangle prefix.
6278         * gm2-gcc/m2options.h (M2Options_SetM2Prefix): New function.
6279         (M2Options_GetM2Prefix): New function.
6280         (M2Options_SetM2PathName): New function.
6281         (M2Options_GetM2PathName): New function.
6282         * gm2-lang.cc (push_back_Ipath): New function.
6283         (add_one_import_path): New function.
6284         (gm2_langhook_handle_option): Record -I component.  Call
6285         SetM2PathName when -fm2-pathname= is seen.  Record -fm2-pathnameI
6286         component.  Call SetM2Prefix when -fm2-prefix= is seen.
6287         (gm2_langhook_post_options): Iterative over pathname entries
6288         and call SetM2PathName, SetSearchPath as appropriate.
6289         * gm2-libs-iso/M2RTS.def (ConstructModules): Add libname parameter.
6290         (DeconstructModules): Add libname parameter.
6291         (RegisterModule): Add libname parameter.
6292         (RequestDependant): Add libname parameter.
6293         * gm2-libs-iso/M2RTS.mod (ConstructModules): Add libname parameter.
6294         (DeconstructModules): Add libname parameter.
6295         (RegisterModule): Add libname parameter.
6296         (RequestDependant): Add libname parameter.
6297         * gm2-libs-min/M2RTS.def (ConstructModules): Add libname parameter.
6298         (DeconstructModules): Add libname parameter.
6299         (RegisterModule): Add libname parameter.
6300         (RequestDependant): Add libname parameter.
6301         * gm2-libs-min/M2RTS.mod (ConstructModules): Add libname parameter.
6302         (DeconstructModules): Add libname parameter.
6303         (RegisterModule): Add libname parameter.
6304         (RequestDependant): Add libname parameter.
6305         * gm2-libs/M2Dependent.def (ConstructModules): Add libname parameter.
6306         (DeconstructModules): Add libname parameter.
6307         (RegisterModule): Add libname parameter.
6308         (RequestDependant): Add libname parameter.
6309         * gm2-libs/M2Dependent.mod (ConstructModules): Add libname parameter.
6310         (DeconstructModules): Add libname parameter.
6311         (RegisterModule): Add libname parameter.
6312         (RequestDependant): Add libname parameter.
6313         * gm2-libs/M2RTS.def (ConstructModules): Add libname parameter.
6314         (DeconstructModules): Add libname parameter.
6315         (RegisterModule): Add libname parameter.
6316         (RequestDependant): Add libname parameter.
6317         * gm2-libs/M2RTS.mod (ConstructModules): Add libname parameter.
6318         (DeconstructModules): Add libname parameter.
6319         (RegisterModule): Add libname parameter.
6320         (RequestDependant): Add libname parameter.
6321         * gm2-libs/RTint.mod (FindVector): Rename variables.
6322         (initInputVector): Rename variables.
6323         (initOutputVector): Rename variables.
6324         (InitTimeVector): Rename variables.
6325         (FindVectorNo): Rename variables.
6326         (FindPendingVector): Rename variables.
6327         (ReArmTimeVector): Rename variables.
6328         (GetTimeVector): Rename variables.
6329         (AttachVector): Rename variables.
6330         (AttachVector): Rename variables.
6331         (IncludeVector): Rename variables.
6332         (ExcludeVector): Rename variables.
6333         (AddFd): Rename variables.
6334         (AddFd): Rename variables.
6335         (DumpPendingQueue): Rename variables.
6336         (stop): Remove.
6337         (activatePending): Rename variables.
6338         (Listen): Rename variables.
6339         * gm2-libs/libc.def (snprintf): New function.
6340         * gm2-libs/sckt.def: Change all exported identifiers to be
6341         export qualified.
6342         * gm2spec.cc (push_back_Ipath): New function.
6343         (add_m2_I_path): New function.
6344         (lang_specific_driver): Skip -fm2-pathname= and remember pathname.
6345         Skip -I and record the path and current pathname.  Call add_m2_I_path.
6346         * lang-specs.h: Replace %{I*} with %{fm2-pathname*}.
6347         * lang.opt (-fm2-pathname=): New entry.
6348         (-fm2-pathname): New entry.
6349         (-fm2-prefix=): New entry.
6350         * mc-boot-ch/GUnixArgs.cc (_M2_UnixArgs_dep): New function.
6351         (_M2_UnixArgs_ctor::_M2_UnixArgs_ctor): New method.
6352         * mc-boot-ch/Glibc.c (libc_snprintf): New function.
6353         * mc-boot-ch/m2rts.h (M2RTS_RequestDependant): Changed prototype.
6354         (M2RTS_RegisterModule): Changed prototype.
6355         * mc-boot/GDynamicStrings.c: Rebuild.
6356         * mc-boot/GFIO.c: Rebuild.
6357         * mc-boot/GIndexing.c: Rebuild.
6358         * mc-boot/GM2Dependent.c: Rebuild.
6359         * mc-boot/GM2Dependent.h: Rebuild.
6360         * mc-boot/GM2EXCEPTION.c: Rebuild.
6361         * mc-boot/GM2RTS.c: Rebuild.
6362         * mc-boot/GM2RTS.h: Rebuild.
6363         * mc-boot/GPushBackInput.c: Rebuild.
6364         * mc-boot/GRTExceptions.c: Rebuild.
6365         * mc-boot/GRTint.c: Rebuild.
6366         * mc-boot/GStdIO.c: Rebuild.
6367         * mc-boot/GStringConvert.c: Rebuild.
6368         * mc-boot/GSysStorage.c: Rebuild.
6369         * mc-boot/Gdecl.c: Rebuild.
6370         * mc-boot/Gkeyc.c: Rebuild.
6371         * mc-boot/Glibc.h: Rebuild.
6372         * mc-boot/GmcComment.c: Rebuild.
6373         * mc-boot/GmcComp.c: Rebuild.
6374         * mc-boot/GmcDebug.c: Rebuild.
6375         * mc-boot/GmcMetaError.c: Rebuild.
6376         * mc-boot/GmcStack.c: Rebuild.
6377         * mc-boot/GnameKey.c: Rebuild.
6378         * mc-boot/GsymbolKey.c: Rebuild.
6379         * pge-boot/GASCII.c: Rebuild.
6380         * pge-boot/GArgs.c: Rebuild.
6381         * pge-boot/GAssertion.c: Rebuild.
6382         * pge-boot/GDebug.c: Rebuild.
6383         * pge-boot/GDynamicStrings.c: Rebuild.
6384         * pge-boot/GFIO.c: Rebuild.
6385         * pge-boot/GIO.c: Rebuild.
6386         * pge-boot/GIndexing.c: Rebuild.
6387         * pge-boot/GLists.c: Rebuild.
6388         * pge-boot/GM2Dependent.c: Rebuild.
6389         * pge-boot/GM2Dependent.h: Rebuild.
6390         * pge-boot/GM2EXCEPTION.c: Rebuild.
6391         * pge-boot/GM2RTS.c: Rebuild.
6392         * pge-boot/GM2RTS.h: Rebuild.
6393         * pge-boot/GNameKey.c: Rebuild.
6394         * pge-boot/GNumberIO.c: Rebuild.
6395         * pge-boot/GOutput.c: Rebuild.
6396         * pge-boot/GPushBackInput.c: Rebuild.
6397         * pge-boot/GRTExceptions.c: Rebuild.
6398         * pge-boot/GSFIO.c: Rebuild.
6399         * pge-boot/GStdIO.c: Rebuild.
6400         * pge-boot/GStorage.c: Rebuild.
6401         * pge-boot/GStrCase.c: Rebuild.
6402         * pge-boot/GStrIO.c: Rebuild.
6403         * pge-boot/GStrLib.c: Rebuild.
6404         * pge-boot/GSymbolKey.c: Rebuild.
6405         * pge-boot/GSysExceptions.c (_M2_SysExceptions_finish): Rename this...
6406         (_M2_SysExceptions_fini): ... to this.
6407         * pge-boot/GSysStorage.c: Rebuild.
6408         (_M2_SysStorage_finish): Rename this...
6409         (_M2_SysStorage_fini): ... to this.
6410         * pge-boot/GUnixArgs.cc: New file.
6411         * pge-boot/Gbnflex.c (_M2_bnflex_finish): Rename this...
6412         (_M2_bnflex_fini): ... to this.
6413         * pge-boot/Gerrno.c (_M2_errno_finish): Rename this...
6414         (_M2_errno_fini): ... to this.
6415         * pge-boot/Glibc.c (libc_snprintf): New function.
6416         * pge-boot/Glibc.h (libc_snprintf): New prototype.
6417         * pge-boot/Gpge.c (_M2_pge_finish): Rename this...
6418         (_M2_pge_fini): ... to this.
6419         * pge-boot/Gtermios.cc (_M2_termios_finish): Rename this...
6420         (_M2_termios_fini): ... to this.
6421         * pge-boot/main.c (_M2_RTExceptions_finish): Rename this...
6422         (_M2_RTExceptions_fini): ... to this.
6423         (_M2_M2EXCEPTION_finish): Rename this...
6424         (_M2_M2EXCEPTION_fini): ... to this.
6425         (_M2_M2RTS_finish): Rename this...
6426         (_M2_M2RTS_fini): ... to this.
6427         (_M2_SysExceptions_finish): Rename this...
6428         (_M2_SysExceptions_fini): ... to this.
6429         (_M2_StrLib_finish): Rename this...
6430         (_M2_StrLib_fini): ... to this.
6431         (_M2_errno_finish): Rename this...
6432         (_M2_errno_fini): ... to this.
6433         (_M2_termios_finish): Rename this...
6434         (_M2_termios_fini): ... to this.
6435         (_M2_IO_finish): Rename this...
6436         (_M2_IO_fini): ... to this.
6437         (_M2_StdIO_finish): Rename this...
6438         (_M2_StdIO_fini): ... to this.
6439         (_M2_Debug_finish): Rename this...
6440         (_M2_Debug_fini): ... to this.
6441         (_M2_SysStorage_finish): Rename this...
6442         (_M2_SysStorage_fini): ... to this.
6443         (_M2_Storage_finish): Rename this...
6444         (_M2_Storage_fini): ... to this.
6445         (_M2_StrIO_finish): Rename this...
6446         (_M2_StrIO_fini): ... to this.
6447         (_M2_DynamicStrings_finish): Rename this...
6448         (_M2_DynamicStrings_fini): ... to this.
6449         (_M2_Assertion_finish): Rename this...
6450         (_M2_Assertion_fini): ... to this.
6451         (_M2_Indexing_finish): Rename this...
6452         (_M2_Indexing_fini): ... to this.
6453         (_M2_NameKey_finish): Rename this...
6454         (_M2_NameKey_fini): ... to this.
6455         (_M2_NumberIO_finish): Rename this...
6456         (_M2_NumberIO_fini): ... to this.
6457         (_M2_PushBackInput_finish): Rename this...
6458         (_M2_PushBackInput_fini): ... to this.
6459         (_M2_SymbolKey_finish): Rename this...
6460         (_M2_SymbolKey_fini): ... to this.
6461         (_M2_UnixArgs_finish): Rename this...
6462         (_M2_UnixArgs_fini): ... to this.
6463         (_M2_FIO_finish): Rename this...
6464         (_M2_FIO_fini): ... to this.
6465         (_M2_SFIO_finish): Rename this...
6466         (_M2_SFIO_fini): ... to this.
6467         (_M2_StrCase_finish): Rename this...
6468         (_M2_StrCase_fini): ... to this.
6469         (_M2_bnflex_finish): Rename this...
6470         (_M2_bnflex_fini): ... to this.
6471         (_M2_Lists_finish): Rename this...
6472         (_M2_Lists_fini): ... to this.
6473         (_M2_Args_finish): Rename this...
6474         (_M2_Args_fini): ... to this.
6475         (_M2_Output_finish): Rename this...
6476         (_M2_Output_fini): ... to this.
6477         (_M2_pge_finish): Rename this...
6478         (_M2_pge_fini): ... to this.
6479         * plugin/m2rte.cc (m2_runtime_error_calls): Change all runtime
6480         procedure names to their name mangled counterparts.
6481         * gm2-libs-iso/wrapsock.c: Removed.
6482         * gm2-libs-iso/wraptime.c: Removed.
6483         * mc-boot/Gpth.h: Removed.
6484         * gm2-compiler/PathName.def: New file.
6485         * gm2-compiler/PathName.mod: New file.
6486         * gm2-compiler/DynamicPath.def: New file.
6487         * gm2-compiler/DynamicPath.mod: New file.
6489 2023-02-06  Gaius Mulley  <gaiusmod2@gmail.com>
6491         PR modula2/108135
6492         * gm2-compiler/M2Search.mod (DSdbEnter): Comment out.
6493         (DSdbExit): Comment out.
6495 2023-02-06  Co-Authored by: Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
6497         PR modula2/107234
6498         * m2pp.cc (m2pp_integer_cst): Use
6499         HOST_WIDE_INT_PRINT_UNSIGNED as the format specifier.
6501 2023-02-06  Gaius Mulley  <gaiusmod2@gmail.com>
6503         * gm2-compiler/M2Preprocess.mod (BaseName): Comment out.
6504         * gm2-lang.cc (opt): Remove.
6505         * gm2spec.cc (add_include): Remove.
6506         (full_libraries): Remove.
6507         (concat_option): Remove.
6509 2023-02-03  Gaius Mulley  <gaiusmod2@gmail.com>
6511         * Make-lang.in (TEXISRC): Remove m2/images/gnu.eps.
6512         (RSTSRC): Remove m2/images/gnu.eps.
6513         (doc/m2.dvi): Add $(objdir)/m2/images/gnu.eps.
6514         (doc/m2.pdf): Add $(objdir)/m2/images/gnu.eps.
6515         (M2_PDFFILES): New definition.
6516         (m2.install-pdf): New rule.
6517         (m2.pod): Add $(objdir)/m2/images/gnu.eps.
6518         (m2.info): Add $(objdir)/m2/images/gnu.eps.
6519         (m2.html): New rule.
6520         (m2/gpl_v3_without_node.texi): New rule.
6521         (plugin/m2rte$(soext)): Simplify mkinstalldirs.
6522         (cc1gm2$(exeext)): Ditto.
6523         (m2/stage1/cc1gm2$(exeext)): Ditto.
6524         (m2/gm2-gcc/%.o): Ditto.
6525         (m2/gm2-gcc/rtegraph.o): Ditto.
6526         (m2/gm2-gcc/$(SRC_PREFIX)%.h): Ditto.
6527         (m2/mc-boot/$(SRC_PREFIX)%.o):Ditto.
6528         (m2/mc-boot-ch/$(SRC_PREFIX)%.o): Ditto.
6529         (m2/mc-boot/main.o): Ditto.
6530         (m2/gm2-libs-boot/%.o): Ditto.
6531         (m2/gm2-libs-boot/$(SRC_PREFIX)%.h): Ditto.
6532         (m2/gm2-libs-boot/RTcodummy.o): Ditto.
6533         (m2/gm2-libs-boot/wrapc.o): Ditto.
6534         (m2/gm2-libs-boot/M2LINK.o): Ditto.
6535         (m2/gm2-libs-boot/UnixArgs.o): Ditto.
6536         (m2/gm2-libs-boot/choosetemp.o): Ditto.
6537         (m2/gm2-libs-boot/errno.o): Ditto.
6538         (m2/gm2-libs-boot/dtoa.o): Ditto.
6539         (m2/gm2-libs-boot/ldtoa.o): Ditto.
6540         (m2/gm2-libs-boot/termios.o): Ditto.
6541         (m2/gm2-libs-boot/SysExceptions.o): Ditto.
6542         (m2/gm2-libs-boot/SysStorage.o): Ditto.
6543         (m2/gm2-compiler-boot/M2GCCDeclare.o): Ditto.
6544         (m2/gm2-compiler-boot/M2Error.o): Ditto.
6545         (m2/gm2-compiler-boot/%.o): Ditto.
6546         (m2/gm2-compiler-boot/$(SRC_PREFIX)%.h): Ditto.
6547         (m2/gm2-compiler-boot/m2flex.o): Ditto.
6548         (m2/gm2-compiler/m2flex.c): Ditto.
6549         (m2/gm2-libiberty/$(SRC_PREFIX)%.h): Ditto.
6550         (m2/gm2-compiler/%.o): Ditto.
6551         (m2/gm2-compiler/m2flex.o): Ditto.
6552         (m2/gm2-compiler/%.o): Ditto.
6553         (m2/gm2-libs-iso/%.o): Ditto.
6554         (m2/gm2-libs/gm2-libs-host.h): Ditto.
6555         ($(objdir)/m2/gm2-libs-min/SYSTEM.def): Ditto.
6556         ($(objdir)/m2/gm2-libs/SYSTEM.def): Ditto.
6557         ($(objdir)/m2/gm2-libs-iso/SYSTEM.def): Ditto.
6558         ($(objdir)/m2/gm2-libs-coroutines/SYSTEM.def): Ditto.
6559         (m2/gm2-compiler/gm2.a): Ditto.
6560         (m2/gm2-libs-boot/libgm2.a): Ditto.
6561         (m2/gm2-compiler-boot/gm2.a): Ditto.
6562         (m2/boot-bin/mklink$(exeext)): Ditto.
6563         (m2/gm2-compiler-boot/$(SRC_PREFIX)%.h): Ditto.
6564         (m2/gm2-compiler/%.mod): Ditto.
6565         (m2/gm2-compiler-boot/%.mod): Ditto.
6566         (m2/pge-boot/%.o): Ditto.
6568 2023-02-01  Gaius Mulley  <gaiusmod2@gmail.com>
6570         * Make-lang.in (GM2_FLAGS): Add -fno-return -Wreturn-type.
6571         (GM2_ISO_FLAGS): Add -fno-return -Wreturn-type.
6572         * Make-maintainer.in (GM2PATH): Split into separate -I components.
6573         (MC-LIB-DEFS): Add RTentity.def.
6574         (m2/boot-bin/mc-devel$(exeext)): Changed -I$(GM2PATH) to
6575         $(GM2PATH).
6576         (m2/boot-bin/mc-opt$(exeext)): Separate -I paths.
6577         (m2/mc/decl.o): Separate -I paths.
6578         (gm2-bootstrap): Separate -I paths.
6579         (m2/mc-boot-gen/$(SRC_PREFIX)%.h): Separate -I paths.
6580         (m2/mc-boot-gen/$(SRC_PREFIX)decl.c): Separate -I paths.
6581         (m2/mc-boot-gen/$(SRC_PREFIX)%.c): Separate -I paths.
6582         (gm2.verifyparanoid): Separate -I paths.
6583         (gm2.verifystage12): Separate -I paths.
6584         * gm2-compiler/M2ALU.mod (GetConstructorElement): Add default
6585         Return NulSym.  Remove return from the error case.
6586         * gm2-compiler/M2Base.mod (ComplexToScalar): Return RType
6587         from the error case.
6588         (MixMetaTypes):  Return MakeError as a default.
6589         * gm2-compiler/M2GCCDeclare.mod (GetTypeMin): Return NulSym
6590         from the error case.
6591         (GetTypeMax): Return NulSym from the error case.
6592         * gm2-compiler/M2GenGCC.mod (IsExportedGcc): Replace Assert
6593         by InternalError.
6594         * gm2-compiler/M2Quads.mod (GetItemPointedTo): Add InternalError.
6595         (GetTypeMin): Add InternalError.
6596         (GetTypeMax): Add InternalError.
6597         * gm2-compiler/M2System.mod (InitSystem): Call
6598         PutProcedureNoReturn on Throw.
6599         * gm2-gcc/m2except.cc (m2except_InitExceptions): fn_throw_tree
6600         declare as noreturn.  fn_rethrow_tree declare as noreturn.
6601         * gm2-libs-coroutines/Debug.def (Halt): Add noreturn attribute.
6602         * gm2-libs-coroutines/SYSTEM.def (THROW): Add noreturn attribute.
6603         * gm2-libs-iso/ClientSocket.mod (dorbytes): Add return FALSE.
6604         * gm2-libs-iso/EXCEPTIONS.def (RAISE): Add noreturn attribute.
6605         * gm2-libs-iso/IOLink.def (RAISEdevException): Add noreturn attribute.
6606         * gm2-libs-iso/M2RTS.def (HALT): Add noreturn attribute.
6607         (Halt): Ditto.
6608         (HaltC): Ditto.
6609         (ErrorMessage): Ditto.
6610         (AssignmentException): Ditto.
6611         (ReturnException): Ditto.
6612         (IncException): Ditto.
6613         (DecException): Ditto.
6614         (InclException): Ditto.
6615         (ExclException): Ditto.
6616         (ShiftException): Ditto.
6617         (RotateException): Ditto.
6618         (StaticArraySubscriptException): Ditto.
6619         (DynamicArraySubscriptException): Ditto.
6620         (ForLoopBeginException): Ditto.
6621         (ForLoopToException): Ditto.
6622         (ForLoopEndException): Ditto.
6623         (PointerNilException): Ditto.
6624         (NoReturnException): Ditto.
6625         (CaseException): Ditto.
6626         (WholeNonPosDivException): Ditto.
6627         (WholeNonPosModException): Ditto.
6628         (WholeZeroDivException): Ditto.
6629         (WholeZeroRemException): Ditto.
6630         (WholeValueException): Ditto.
6631         (RealValueException): Ditto.
6632         (ParameterException): Ditto.
6633         (NoException): Ditto.
6634         * gm2-libs-iso/SYSTEM.def (THROW): Ditto.
6635         * gm2-libs-iso/TermFile.mod (dorbytes): Add default return FALSE.
6636         * gm2-libs-min/M2RTS.def: Add noreturn attribute.
6637         * gm2-libs/FIO.mod (BufferedRead): Return -1.
6638         (getFileName): Return NIL.
6639         (getFileNameLength): Return 0.
6640         * gm2-libs/M2RTS.def (HaltC): Add noreturn attribute.
6641         (AssignmentException): Ditto.
6642         (ReturnException): Ditto.
6643         (IncException): Ditto.
6644         (DecException): Ditto.
6645         (InclException): Ditto.
6646         (ExclException): Ditto.
6647         (ShiftException): Ditto.
6648         (RotateException): Ditto.
6649         (StaticArraySubscriptException): Ditto.
6650         (DynamicArraySubscriptException): Ditto.
6651         (ForLoopBeginException): Ditto.
6652         (ForLoopToException): Ditto.
6653         (ForLoopEndException): Ditto.
6654         (PointerNilException): Ditto.
6655         (NoReturnException): Ditto.
6656         (CaseException): Ditto.
6657         (WholeNonPosDivException): Ditto.
6658         (WholeNonPosModException): Ditto.
6659         (WholeZeroDivException): Ditto.
6660         (WholeZeroRemException): Ditto.
6661         (WholeValueException): Ditto.
6662         (RealValueException): Ditto.
6663         (ParameterException): Ditto.
6664         (NoException): Ditto.
6665         * gm2-libs/RTExceptions.def (Raise): Ditto.
6666         * gm2-libs/RTExceptions.mod (InvokeHandler): Ditto.
6667         * gm2-libs/SYSTEM.def (THROW): Ditto.
6668         * m2.flex (_M2_m2flex_fini): Remamed to...
6669         (_M2_m2flex_finish): ...here.
6670         * mc-boot-ch/GBuiltins.c (_M2_Builtins_finish): Remamed to...
6671         (_M2_Builtins_fini): ...this.
6672         * mc-boot-ch/GRTco.c (_M2_RTco_finish): Remamed to...
6673         (_M2_RTco_fini): ...this.
6674         * mc-boot-ch/GSYSTEM.c (_M2_SYSTEM_finish): Remamed to...
6675         (_M2_SYSTEM_fini): ...this.
6676         * mc-boot-ch/GSelective.c (_M2_Selective_finish): Remamed to...
6677         (_M2_Selective_fini): ...this.
6678         * mc-boot-ch/GSysExceptions.c (_M2_SysExceptions_init): Add
6679         parameters.
6680         (_M2_SysExceptions_finish): Remamed to...
6681         (_M2_SysExceptions_fini): ...this.
6682         * mc-boot-ch/GUnixArgs.cc (_M2_UnixArgs_finish): Remamed to...
6683         (_M2_UnixArgs_fini): ...this.
6684         (_M2_UnixArgs_ctor::_M2_UnixArgs_ctor): Change parameter
6685         to _M2_UnixArgs_fini.
6686         * mc-boot-ch/Gdtoa.c (_M2_dtoa_finish): Remamed to...
6687         (_M2_dtoa_fini): ...this.
6688         * mc-boot-ch/Gerrno.c (_M2_errno_finish): Remamed to...
6689         (_M2_errno_fini): ...this.
6690         * mc-boot-ch/Gldtoa.c (_M2_ldtoa_finish): Remamed to...
6691         (_M2_ldtoa_fini): ...this.
6692         * mc-boot-ch/Gtermios.cc (_M2_termios_init): Add parameters.
6693         (_M2_termios_finish): Remamed to...
6694         (_M2_termios_fini): ...this.
6695         * mc-boot-ch/Gwrapc.c (_M2_wrapc_init): Add parameters.
6696         (_M2_wrapc_finish): Remamed to...
6697         (_M2_wrapc_fini): ...this.
6698         * mc-boot/GASCII.c: Rebuild.
6699         * mc-boot/GArgs.c: Rebuild.
6700         * mc-boot/GAssertion.c: Rebuild.
6701         * mc-boot/GBreak.c: Rebuild.
6702         * mc-boot/GCmdArgs.c: Rebuild.
6703         * mc-boot/GDebug.c: Rebuild.
6704         * mc-boot/GDynamicStrings.c: Rebuild.
6705         * mc-boot/GEnvironment.c: Rebuild.
6706         * mc-boot/GFIO.c: Rebuild.
6707         * mc-boot/GFormatStrings.c: Rebuild.
6708         * mc-boot/GFpuIO.c: Rebuild.
6709         * mc-boot/GIO.c: Rebuild.
6710         * mc-boot/GIndexing.c: Rebuild.
6711         * mc-boot/GM2Dependent.c: Rebuild.
6712         * mc-boot/GM2EXCEPTION.c: Rebuild.
6713         * mc-boot/GM2RTS.c: Rebuild.
6714         * mc-boot/GM2RTS.h: Rebuild.
6715         * mc-boot/GMemUtils.c: Rebuild.
6716         * mc-boot/GNumberIO.c: Rebuild.
6717         * mc-boot/GPushBackInput.c: Rebuild.
6718         * mc-boot/GRTExceptions.c: Rebuild.
6719         * mc-boot/GRTExceptions.h: Rebuild.
6720         * mc-boot/GRTco.h: Rebuild.
6721         * mc-boot/GRTint.c: Rebuild.
6722         * mc-boot/GSArgs.c: Rebuild.
6723         * mc-boot/GSFIO.c: Rebuild.
6724         * mc-boot/GStdIO.c: Rebuild.
6725         * mc-boot/GStorage.c: Rebuild.
6726         * mc-boot/GStrCase.c: Rebuild.
6727         * mc-boot/GStrIO.c: Rebuild.
6728         * mc-boot/GStrLib.c: Rebuild.
6729         * mc-boot/GStringConvert.c: Rebuild.
6730         * mc-boot/GSysStorage.c: Rebuild.
6731         * mc-boot/GTimeString.c: Rebuild.
6732         * mc-boot/Galists.c: Rebuild.
6733         * mc-boot/Gdecl.c: Rebuild.
6734         * mc-boot/Gkeyc.c: Rebuild.
6735         * mc-boot/Glists.c: Rebuild.
6736         * mc-boot/GmcComment.c: Rebuild.
6737         * mc-boot/GmcComp.c: Rebuild.
6738         * mc-boot/GmcDebug.c: Rebuild.
6739         * mc-boot/GmcError.c: Rebuild.
6740         * mc-boot/GmcFileName.c: Rebuild.
6741         * mc-boot/GmcLexBuf.c: Rebuild.
6742         * mc-boot/GmcMetaError.c: Rebuild.
6743         * mc-boot/GmcOptions.c: Rebuild.
6744         * mc-boot/GmcPreprocess.c: Rebuild.
6745         * mc-boot/GmcPretty.c: Rebuild.
6746         * mc-boot/GmcPrintf.c: Rebuild.
6747         * mc-boot/GmcQuiet.c: Rebuild.
6748         * mc-boot/GmcReserved.c: Rebuild.
6749         * mc-boot/GmcSearch.c: Rebuild.
6750         * mc-boot/GmcStack.c: Rebuild.
6751         * mc-boot/GmcStream.c: Rebuild.
6752         * mc-boot/Gmcp1.c: Rebuild.
6753         * mc-boot/Gmcp2.c: Rebuild.
6754         * mc-boot/Gmcp3.c: Rebuild.
6755         * mc-boot/Gmcp4.c: Rebuild.
6756         * mc-boot/Gmcp5.c: Rebuild.
6757         * mc-boot/GnameKey.c: Rebuild.
6758         * mc-boot/GsymbolKey.c: Rebuild.
6759         * mc-boot/Gtop.c: Rebuild.
6760         * mc-boot/Gvarargs.c: Rebuild.
6761         * mc-boot/Gwlists.c: Rebuild.
6762         * mc-boot/GRTentity.h: New file.
6763         * mc/decl.mod (scaffoldStatic): Change _finish to _fini.
6764         * mc/mc.flex (_M2_mcflex_fini): New function.
6765         (_M2_mcflex_finish): Remove function.
6766         * tools-src/mklink.c (GenerateFinishCalls): Change
6767         _finish to _fini.
6768         (GeneratePrototypes): Change _finish to _fini.
6770 2023-01-31  Gaius Mulley  <gaiusmod2@gmail.com>
6772         * Make-lang.in (gm2-libs.texi-check): Rename
6773         m2/gm2-libs-pim to m2/gm2-libs-log.
6774         * gm2-libs-pim/BitBlockOps.def: Moved to...
6775         * gm2-libs-log/BitBlockOps.def: ...here.
6776         * gm2-libs-pim/BitBlockOps.mod: Moved to...
6777         * gm2-libs-log/BitBlockOps.mod: ...here.
6778         * gm2-libs-pim/BitByteOps.def: Moved to...
6779         * gm2-libs-log/BitByteOps.def: ...here.
6780         * gm2-libs-pim/BitByteOps.mod: Moved to...
6781         * gm2-libs-log/BitByteOps.mod: ...here.
6782         * gm2-libs-pim/BitWordOps.def: Moved to...
6783         * gm2-libs-log/BitWordOps.def: ...here.
6784         * gm2-libs-pim/BitWordOps.mod: Moved to...
6785         * gm2-libs-log/BitWordOps.mod: ...here.
6786         * gm2-libs-pim/BlockOps.def: Moved to...
6787         * gm2-libs-log/BlockOps.def: ...here.
6788         * gm2-libs-pim/BlockOps.mod: Moved to...
6789         * gm2-libs-log/BlockOps.mod: ...here.
6790         * gm2-libs-pim/Break.c: Moved to...
6791         * gm2-libs-log/Break.c: ...here.
6792         * gm2-libs-pim/Break.def: Moved to...
6793         * gm2-libs-log/Break.def: ...here.
6794         * gm2-libs-pim/CardinalIO.def: Moved to...
6795         * gm2-libs-log/CardinalIO.def: ...here.
6796         * gm2-libs-pim/CardinalIO.mod: Moved to...
6797         * gm2-libs-log/CardinalIO.mod: ...here.
6798         * gm2-libs-pim/Conversions.def: Moved to...
6799         * gm2-libs-log/Conversions.def: ...here.
6800         * gm2-libs-pim/Conversions.mod: Moved to...
6801         * gm2-libs-log/Conversions.mod: ...here.
6802         * gm2-libs-pim/DebugPMD.def: Moved to...
6803         * gm2-libs-log/DebugPMD.def: ...here.
6804         * gm2-libs-pim/DebugPMD.mod: Moved to...
6805         * gm2-libs-log/DebugPMD.mod: ...here.
6806         * gm2-libs-pim/DebugTrace.def: Moved to...
6807         * gm2-libs-log/DebugTrace.def: ...here.
6808         * gm2-libs-pim/DebugTrace.mod: Moved to...
6809         * gm2-libs-log/DebugTrace.mod: ...here.
6810         * gm2-libs-pim/Delay.def: Moved to...
6811         * gm2-libs-log/Delay.def: ...here.
6812         * gm2-libs-pim/Delay.mod: Moved to...
6813         * gm2-libs-log/Delay.mod: ...here.
6814         * gm2-libs-pim/Display.def: Moved to...
6815         * gm2-libs-log/Display.def: ...here.
6816         * gm2-libs-pim/Display.mod: Moved to...
6817         * gm2-libs-log/Display.mod: ...here.
6818         * gm2-libs-pim/ErrorCode.def: Moved to...
6819         * gm2-libs-log/ErrorCode.def: ...here.
6820         * gm2-libs-pim/ErrorCode.mod: Moved to...
6821         * gm2-libs-log/ErrorCode.mod: ...here.
6822         * gm2-libs-pim/FileSystem.def: Moved to...
6823         * gm2-libs-log/FileSystem.def: ...here.
6824         * gm2-libs-pim/FileSystem.mod: Moved to...
6825         * gm2-libs-log/FileSystem.mod: ...here.
6826         * gm2-libs-pim/FloatingUtilities.def: Moved to...
6827         * gm2-libs-log/FloatingUtilities.def: ...here.
6828         * gm2-libs-pim/FloatingUtilities.mod: Moved to...
6829         * gm2-libs-log/FloatingUtilities.mod: ...here.
6830         * gm2-libs-pim/InOut.def: Moved to...
6831         * gm2-libs-log/InOut.def: ...here.
6832         * gm2-libs-pim/InOut.mod: Moved to...
6833         * gm2-libs-log/InOut.mod: ...here.
6834         * gm2-libs-pim/Keyboard.def: Moved to...
6835         * gm2-libs-log/Keyboard.def: ...here.
6836         * gm2-libs-pim/Keyboard.mod: Moved to...
6837         * gm2-libs-log/Keyboard.mod: ...here.
6838         * gm2-libs-pim/LongIO.def: Moved to...
6839         * gm2-libs-log/LongIO.def: ...here.
6840         * gm2-libs-pim/LongIO.mod: Moved to...
6841         * gm2-libs-log/LongIO.mod: ...here.
6842         * gm2-libs-pim/NumberConversion.def: Moved to...
6843         * gm2-libs-log/NumberConversion.def: ...here.
6844         * gm2-libs-pim/NumberConversion.mod: Moved to...
6845         * gm2-libs-log/NumberConversion.mod: ...here.
6846         * gm2-libs-pim/README.texi: Moved to...
6847         * gm2-libs-log/README.texi: ...here.
6848         * gm2-libs-pim/Random.def: Moved to...
6849         * gm2-libs-log/Random.def: ...here.
6850         * gm2-libs-pim/Random.mod: Moved to...
6851         * gm2-libs-log/Random.mod: ...here.
6852         * gm2-libs-pim/RealConversions.def: Moved to...
6853         * gm2-libs-log/RealConversions.def: ...here.
6854         * gm2-libs-pim/RealConversions.mod: Moved to...
6855         * gm2-libs-log/RealConversions.mod: ...here.
6856         * gm2-libs-pim/RealInOut.def: Moved to...
6857         * gm2-libs-log/RealInOut.def: ...here.
6858         * gm2-libs-pim/RealInOut.mod: Moved to...
6859         * gm2-libs-log/RealInOut.mod: ...here.
6860         * gm2-libs-pim/Strings.def: Moved to...
6861         * gm2-libs-log/Strings.def: ...here.
6862         * gm2-libs-pim/Strings.mod: Moved to...
6863         * gm2-libs-log/Strings.mod: ...here.
6864         * gm2-libs-pim/Termbase.def: Moved to...
6865         * gm2-libs-log/Termbase.def: ...here.
6866         * gm2-libs-pim/Termbase.mod: Moved to...
6867         * gm2-libs-log/Termbase.mod: ...here.
6868         * gm2-libs-pim/Terminal.def: Moved to...
6869         * gm2-libs-log/Terminal.def: ...here.
6870         * gm2-libs-pim/Terminal.mod: Moved to...
6871         * gm2-libs-log/Terminal.mod: ...here.
6872         * gm2-libs-pim/TimeDate.def: Moved to...
6873         * gm2-libs-log/TimeDate.def: ...here.
6874         * gm2-libs-pim/TimeDate.mod: Moved to...
6875         * gm2-libs-log/TimeDate.mod: ...here.
6877 2023-01-28  Iain Sandoe  <iain@sandoe.co.uk>
6879         * lang.opt: Claim Wreturn-type.
6881 2023-01-27  Gaius Mulley  <gaiusmod2@gmail.com>
6883         * gm2-compiler/M2Comp.mod:  Import MetaString0.
6884         (ExamineCompilationUnit): New variable Message.
6885         Create and format error string.
6886         * gm2-compiler/M2LexBuf.mod: New variable SeenEof.
6887         (GetNonEofToken): New procedure.
6888         (Init): Set SeenEof to FALSE.
6889         (GetToken): Use GetNonEofToken instead of calls to
6890         m2flex.GetToken and GetToken.
6891         (AddTok): Detect eoftok and set SeenEof.
6893 2023-01-27  Gaius Mulley  <gaiusmod2@gmail.com>
6895         * gm2-compiler/M2Options.def: Export GetMQ, SetMQ.
6896         * gm2-compiler/M2Preprocess.mod: (MakeSaveTempsFileName):
6897         Test NewDir against NIL.  Test Dumpdir against NIL.
6898         Test GetMD () against NIL.  Test GetMMD () against NIL.
6899         Test GetMQ () against NIL.  Test GetObj () against NIL.
6900         Test tempfile against NIL.
6901         * gm2-compiler/P2SymBuild.def: Export
6902         BuildNoReturnAttribute.
6904 2023-01-27  Iain Sandoe  <iain@sandoe.co.uk>
6906         PR modula2/108555
6907         PR modula2/108182
6908         PR modula2/102343
6909         * gm2-lang.cc (gm2_langhook_option_lang_mask): Do not claim CL_C
6910         or CL_DRIVER.
6911         (gm2_langhook_init_options): Handle options that we want to pass
6912         to the preprocessor.
6913         * lang-specs.h: Pass -B and -save-temps to regular compile lines.
6914         * lang.opt: Add C and Driver options that Modula-2 intercepts for
6915         internal use. Reorder options into two sections and to collate.
6917 2023-01-26  Gaius Mulley  <gaiusmod2@gmail.com>
6919         * gm2-compiler/M2GCCDeclare.mod: Import IsProcedureNoReturn.
6920         (DeclareProcedureToGccWholeProgram): New variable declared and set
6921         returnType.  Pass returnType to BuildEndFunctionDeclaration.
6922         Extra parameter IsProcedureNoReturn passed to
6923         BuildEndFunctionDeclaration.
6924         * gm2-compiler/M2Quads.mod (BuildM2MainFunction): Correct
6925         scaffold comment and add extra return 0.
6926         * gm2-compiler/P2Build.bnf: Import BuildNoReturnAttribute.
6927         (ProcedureHeading): Process EndBuildFormalParameters before
6928         parsing AttributeNoReturn.
6929         (DefProcedureHeading): Process EndBuildFormalParameters before
6930         parsing AttributeNoReturn.
6931         (AttributeNoReturn): Call BuildNoReturnAttribute.
6932         * gm2-compiler/P2SymBuild.def (BuildNoReturnAttribute): New
6933         procedure.
6934         * gm2-compiler/P2SymBuild.mod (BuildNoReturnAttribute): New
6935         procedure.
6936         * gm2-compiler/SymbolTable.def (PutProcedureInline): Corrected
6937         comment.
6938         (PutProcedureNoReturn): New procedure.
6939         (IsProcedureNoReturn): New procedure function.
6940         * gm2-compiler/SymbolTable.mod (SymProcedure): IsNoReturn
6941         new field.
6942         (MakeProcedure): Initialize IsNoReturn to FALSE.
6943         (PutProcedureNoReturn): New procedure.
6944         (IsProcedureNoReturn): New procedure function.
6945         * gm2-gcc/m2decl.cc (m2decl_BuildEndFunctionDeclaration):
6946         Add extra parameter isnoreturn.  Set TREE_THIS_VOLATILE
6947         to isnoreturn.
6948         * gm2-gcc/m2decl.def (BuildEndFunctionDeclaration): Add
6949         extra parameter isnoreturn.
6950         * gm2-gcc/m2decl.h (m2decl_BuildEndFunctionDeclaration): Add
6951         extra parameter isnoreturn.
6952         * gm2-gcc/m2except.cc (m2except_InitExceptions): Change all
6953         function decl to pass an extra parameter isnoreturn.
6955 2023-01-26  Gaius Mulley  <gaiusmod2@gmail.com>
6957         * m2.flex (splitSlashStar): Fix comment so that /* does not
6958         appear inside the comment.
6960 2023-01-26  Iain Sandoe  <iain@sandoe.co.uk>
6962         PR modula2/108553
6963         * gm2-lang.cc (gm2_langhook_init_options): Remove debug code.
6965 2023-01-26  Gaius Mulley  <gaiusmod2@gmail.com>
6967         * Make-lang.in (m2/gm2config.h): Rewrite rule to be
6968         dependent upon m2/gm2config.aci.
6969         (m2/gm2config.aci): Newrule.
6970         * configure.ac (AC_CONFIG_HEADERS): Change destination
6971         to gm2config.aci.
6972         * configure: Regenerate.
6973         * gm2-libs/config-host: Regenerate.
6974         * gm2-compiler/M2GCCDeclare.mod (AddSymToWatch): Comment
6975         out.
6976         * gm2-compiler/M2Quads.mod (BuildConstHighFromSym): Remove
6977         Dim.
6978         (StartBuildWith): Call BuildStmtNoteTok.
6979         (BuildStmtNoteTok): New procedure.
6980         (BuildStmtNote): Re-implement re-factor into two
6981         procedures and call BuildStmtNoteTok.
6982         * gm2config.h.in: Remove.
6983         * gm2config.aci.in: New file.
6985 2023-01-25  Iain Sandoe  <iain@sandoe.co.uk>
6987         PR modula2/102343
6988         PR modula2/108182
6989         * gm2-compiler/M2Comp.mod: Early exit for pre-processor-only jobs.
6990         * gm2-compiler/M2Options.def (SetPPOnly, GetPPOnly, SetMD, GetMD,
6991         SetMMD, GetMMD, SetMQ, GetMQ, SetObj, GetObj, SetDumpDir,
6992         GetDumpDir):New.
6993         * gm2-compiler/M2Options.mod:(SetPPOnly, GetPPOnly, SetMD, GetMD,
6994         SetMMD, GetMMD, SetMQ, GetMQ, SetObj, GetObj, SetDumpDir,
6995         GetDumpDir):New.
6996         * gm2-compiler/M2Preprocess.def (PreprocessModule): Add flag to
6997         indicate the main file.
6998         * gm2-compiler/M2Preprocess.mod: Handle Preprocess-only jobs,
6999         handle MD, MMD and MQ options.
7000         * gm2-gcc/m2options.h (M2Options_SetPPOnly, M2Options_GetPPOnly,
7001         M2Options_SetDumpDir, M2Options_SetMD, M2Options_GetMD,
7002         M2Options_SetMMD, M2Options_GetMMD, M2Options_SetMQ, M2Options_GetMQ,
7003         M2Options_SetObj, M2Options_GetObj): New.
7004         * gm2-gcc/m2type.cc (m2type_InitBaseTypes): Early exit for pre-
7005         processor-only jobs.
7006         * gm2-lang.cc (gm2_langhook_init): Handle preprocess-only commands.
7007         (gm2_langhook_option_lang_mask): Claim C and Driver options so that
7008         we can intercept them for building pre-processor commands.
7009         (gm2_langhook_init_options): Collect the preprocessor line here.
7010         Save options that have different actions for preprocessor and compile
7011         commands.
7012         (gm2_langhook_handle_option): Only handle the modula-2 options here.
7013         (gm2_langhook_post_options): Do not create a back-end for pre-
7014         processor-only jobs.
7015         * gm2spec.cc (lang_specific_driver): Ignore PCH options, append a
7016         scaffold-main for cases where we are building a main module with
7017         -c.
7018         * lang-specs.h: Revise to handle preprocessor-only jobs and to
7019         consume pre-processed files.
7020         * lang.opt: Remove Driver and C options copies (we claim these
7021         separately).
7023 2023-01-24  Co-Authored by: Iain Sandoe  <iain@sandoe.co.uk>
7025         * Make-lang.in (GM2-COMP-BOOT-DEFS): Add
7026         DynamicStringPath.def.
7027         (GM2-COMP-BOOT-MODS): Add DynamicStringPath.mod.
7028         (GM2-COMP-DEFS): Add DynamicStringPath.def.
7029         (GM2-COMP-MODS): Add DynamicStringPath.mod.
7030         ($(objdir)/m2/gm2-libs-min/SYSTEM.def): Split path into
7031         multiple -I components.
7032         ($(objdir)/m2/gm2-libs/SYSTEM.def): Ditto.
7033         ($(objdir)/m2/gm2-libs-coroutines/SYSTEM.def): Ditto.
7034         * gm2-compiler/M2Options.mod: Import DynamicStringPath.
7035         (SetSearchPath): Reimplement using DynamicStringPath
7036         procedures.
7037         * gm2-compiler/M2Search.def (InitSearchPath): Remove.
7038         (PrependSearchPath): Remove.
7039         * gm2-compiler/M2Search.mod (SFIO): Remove import.
7040         (DynamicStringPath): Add import.
7041         (Directory): Remove.
7042         (UserPath): Remove.
7043         (InitialPath): Remove.
7044         (InitSearchPath): Remove.
7045         (PrependSearchPath): Remove.
7046         (FindSourceFile): Re-implement.
7047         (FindSourceDefFile): Re-implement.
7048         (FindSourceModFile): Re-implement.
7049         * gm2-gcc/init.cc (_M2_DynamicStringPath_init):
7050         New prototype.
7051         (init_FrontEndInit): Call _M2_DynamicStringPath_init.
7052         * tools-src/makeSystem: Allow multiple -I paths.
7053         * gm2-compiler/DynamicStringPath.def: New file.
7054         * gm2-compiler/DynamicStringPath.mod: New file.
7055         * gm2-gcc/m2options.h (M2Options_SetMakeIncludePath): Add
7056         prototype.
7058 2023-01-24  Gaius Mulley  <gaiusmod2@gmail.com>
7060         * m2.flex (cpreprocessor): Add temporary variable
7061         which is initialized to 0.
7062         (commentCLevel): New variable.
7063         (endOfCComment): New function.
7064         (splitSlashStar): New function to split /* into / and *
7065         tokens.
7066         (COMMENTC): New flex state.
7067         ("/*"): New rule to test whether we should treat /*
7068         as a single token or as two tokens.
7069         (<COMMENTC>.): New rule to skip a character.
7070         (<COMMENTC>\n.*): New rule to consume the line.
7071         (<COMMENTC>"*/"): New rule to call endOfCComment.
7073 2023-01-24  Gaius Mulley  <gaiusmod2@gmail.com>
7075         * gm2-libs-iso/RTco.def: Import RTentity.
7076         Declare RTco as a definition for C module.
7078 2023-01-23  Iain Sandoe  <iain@sandoe.co.uk>
7080         PR modula2/108182
7081         PR modula2/108480
7082         * Make-lang.in: Pass libsubdir to the language init
7083         build.
7084         * gm2-lang.cc (INCLUDE_VECTOR): Define.
7085         (add_one_import_path): New.
7086         (add_m2_import_paths): New.
7087         (gm2_langhook_post_options): Arrange to add the include
7088         paths (and add the system ones) in the same order as C
7089         uses.
7090         * gm2spec.cc (build_archive_path): Remove.
7091         (add_default_combination): Remove.
7092         (add_default_archives): Remove.
7093         (add_default_libs): We no longer need a '-L' option, just
7094         emit the -l and each library in use.
7095         (build_include_path): Remove.
7096         (add_include): Remove.
7097         (add_default_includes): Remove.
7098         (library_installed): Remove.
7099         (check_valid_library): Remove.
7100         (check_valid_list): Remove.
7101         (convert_abbreviation): Diagnose unhandled cases.
7102         (lang_specific_driver): Skip options where we will add back
7103         a validated version.
7104         * lang-specs.h (M2CPP): Reformat, append %I when -fcpp is not
7105         in use.  Revise the cc1gm2 spec to omit mentioning options that
7106         are handled in the c pre-processor line.
7107         * lang.opt: Allow preprocessing and path options as input to the
7108         cc1gm2 invocation, so that they can be passed to the preprocessor
7109         invocation.
7111 2023-01-23  Iain Sandoe  <iain@sandoe.co.uk>
7113         PR modula2/108405
7114         * gm2-libs-iso/Preemptive.mod (initPreemptive): Use a value for
7115         extra space that is divisible by common OS pagesizes.
7117 2023-01-20  Gaius Mulley  <gaiusmod2@gmail.com>
7119         * gm2-libs/Args.mod (GetArg): Check index before
7120         accessing array.
7121         * gm2-libs/M2Dependent.mod (toCString): Check index
7122         before accessing array.
7123         * mc-boot/GArgs.c: Rebuilt.
7124         * mc-boot/GM2Dependent.c: Rebuilt.
7125         * mc-boot/Gkeyc.c: Rebuilt.
7126         * mc/keyc.mod (seenUIntMin): Initialize once.
7127         (seenUIntMax): Initialize once.
7128         (checkLimits): Only test seenUIntMin and seenUIntMax
7129         once.
7130         * pge-boot/GArgs.c:  Rebuilt.
7131         * pge-boot/GM2Dependent.c: Rebuilt.
7133 2023-01-20  Gaius Mulley  <gaiusmod2@gmail.com>
7135         * gm2-gcc/m2statement.cc (gm2_gimplify_function_node):
7136         Remove.
7137         * gm2-libs/DynamicStrings.mod (Equal): Remove dead code.
7138         * m2.flex (<COMMENT>"<*"): Add {} for else statement.
7139         * m2pp.cc (hextree): Add conditional #ifdef DEBUGGING.
7140         * mc-boot/GDynamicStrings.c: Rebuild.
7141         * pge-boot/GDynamicStrings.c: Rebuild.
7142         * pge-boot/GFIO.c: Rebuild.
7143         * pge-boot/GIndexing.c: Rebuild.
7144         * pge-boot/GM2EXCEPTION.c: Rebuild.
7145         * pge-boot/GM2RTS.c: Rebuild.
7146         * pge-boot/GNameKey.c: Rebuild.
7147         * pge-boot/GPushBackInput.c: Rebuild.
7148         * pge-boot/GRTExceptions.c: Rebuild.
7149         * pge-boot/GStdIO.c: Rebuild.
7150         * pge-boot/GSymbolKey.c: Rebuild.
7151         * pge-boot/GSysStorage.c: Rebuild.
7153 2023-01-17  Gaius Mulley  <gaiusmod2@gmail.com>
7155         * mc-boot/GM2RTS.c: Rebuilt.
7156         * mc-boot/GM2RTS.h: Rebuilt.
7157         * mc-boot/Gdecl.c: Rebuilt.
7158         * mc-boot/GmcOptions.c: Rebuilt.
7159         * mc/mcOptions.mod (displayVersion):
7160         Split first printf into three components
7162 2023-01-17  Gaius Mulley  <gaiusmod2@gmail.com>
7164         * gm2-libs-iso/M2RTS.def (Halt): Parameter file renamed to filename.
7165         (HaltC): New procedure declaration.
7166         (ErrorMessage): Parameter file renamed to filename.
7167         * gm2-libs-iso/M2RTS.mod (Halt): Parameter file renamed to
7168         filename.
7169         (HaltC): New procedure implementation.
7170         (ErrorStringC): New procedure implementation.
7171         (ErrorMessageC): New procedure implementation.
7172         * gm2-libs/M2RTS.def (Halt): Parameter file renamed to filename.
7173         (HaltC): New procedure declaration.
7174         (ErrorMessage): Parameter file renamed to filename.
7175         * gm2-libs/M2RTS.mod (Halt): Parameter file renamed to filename.
7176         (HaltC): New procedure implementation.
7177         (ErrorStringC): New procedure implementation.
7178         (ErrorMessageC): New procedure implementation.
7180 2023-01-16  Gaius Mulley  <gaiusmod2@gmail.com>
7182         * mc-boot-ch/Glibc.c (libc_time): New function.
7183         (libc_localtime): New function.
7184         * mc-boot/GDynamicStrings.c: Regenerate.
7185         * mc-boot/GFIO.c: Regenerate.
7186         * mc-boot/GFormatStrings.c: Regenerate.
7187         * mc-boot/GIndexing.c: Regenerate.
7188         * mc-boot/GM2Dependent.c: Regenerate.
7189         * mc-boot/GM2EXCEPTION.c: Regenerate.
7190         * mc-boot/GPushBackInput.c: Regenerate.
7191         * mc-boot/GRTExceptions.c: Regenerate.
7192         * mc-boot/GRTint.c: Regenerate.
7193         * mc-boot/GStdIO.c: Regenerate.
7194         * mc-boot/GStringConvert.c: Regenerate.
7195         * mc-boot/GSysStorage.c: Regenerate.
7196         * mc-boot/Gdecl.c: Regenerate.
7197         * mc-boot/GmcComment.c: Regenerate.
7198         * mc-boot/GmcComp.c: Regenerate.
7199         * mc-boot/GmcDebug.c: Regenerate.
7200         * mc-boot/GmcMetaError.c: Regenerate.
7201         * mc-boot/GmcOptions.c: Regenerate.
7202         * mc-boot/GmcStack.c: Regenerate.
7203         * mc-boot/GnameKey.c: Regenerate.
7204         * mc-boot/GsymbolKey.c: Regenerate.
7205         * mc-boot/Gkeyc.c: Regenerate.
7206         * mc/decl.mod (putFieldRecord): Change NulName to NulKey
7207         and fix type comparision.
7208         * mc/mcOptions.mod (YEAR): Remove.
7209         (getYear): New procedure function.
7210         (displayVersion): Use result from getYear instead of YEAR.
7211         Emit boilerplate for GPL v3.
7212         (gplBody): Use result from getYear instead of YEAR.
7213         (glplBody): Use result from getYear instead of YEAR.
7215 2023-01-16  Gaius Mulley  <gaiusmod2@gmail.com>
7217         * gm2-compiler/M2Quads.mod (AssignUnboundedVar): Check Type
7218         against NulSym and call MetaErrorT1 if necessary.
7219         (AssignUnboundedNonVar): Check Type against NulSym and
7220         call MetaErrorT1 if necessary.
7221         (BuildDesignatorPointer): Check Type1 against NulSym and
7222         call MetaErrorT1 if necessary.
7224 2023-01-16  Gaius Mulley  <gaiusmod2@gmail.com>
7226         * mc/mcOptions.mod (displayVersion): Change GPLv2 to GPLv3.
7227         (YEAR) set to 2023.
7229 2023-01-15  Gaius Mulley  <gaiusmod2@gmail.com>
7231         * gm2-compiler/M2LexBuf.mod (isSrcToken): Add block comment.
7232         Remove dead code.
7233         * gm2-compiler/M2Quads.def (BuildNot): Add notTokPos parameter.
7234         * gm2-compiler/M2Quads.mod (BuildNot): Add notTokPos parameter.
7235         Create and push virtual token.
7236         (PopBooltok): New procedure.
7237         (PushBooltok): New procedure.
7238         (PushBool): Re-implement using PushBooltok.
7239         (PopBool): Re-implement using PopBooltok.
7240         * gm2-compiler/P3Build.bnf (ConstFactor): Record token
7241         position of NOT.
7242         (Factor): Record token position of NOT.
7243         * gm2-compiler/PHBuild.bnf (ConstFactor): Record token
7244         position of NOT.
7245         (Relation): Push token position.
7246         (UnaryOrConstTerm): Push token position.
7247         (AddOperator): Push token position.
7248         (MulOperator): Push token position.
7250 2023-01-13  Iain Sandoe  <iain@sandoe.co.uk>
7252         * gm2-gcc/m2options.h (M2Options_SetVerbose): Export the
7253         function.
7254         * gm2-lang.cc: Handle OPT_v, passing it to the compiler.
7255         * lang-specs.h: Pass -v to cc1gm2.
7257 2023-01-13  Gaius Mulley  <gaiusmod2@gmail.com>
7259         * mc-boot-ch/GRTco.c (RTco_select): Add return 0.
7260         * pge-boot/GRTco.c (RTco_select): Add return 0.
7262 2023-01-10  Gaius Mulley  <gaiusmod2@gmail.com>
7264         * Make-lang.in (m2/mc-boot/$(SRC_PREFIX)%.o): Add
7265         m2/gm2-libs/gm2-libs-host.h dependency.
7266         (m2/mc-boot-ch/$(SRC_PREFIX)%.o): Add
7267         m2/gm2-libs/gm2-libs-host.h dependency.
7269 2023-01-10  Gaius Mulley  <gaiusmod2@gmail.com>
7271         * Make-lang.in (GM2_1): Change -B path to m2/stage1.
7272         ($(objdir)/m2/images/gnu.eps): Check and create dest dir
7273         if necessary.
7274         (gm2-libs.texi-check): Check and create dir m2/gm2-libs-pim,
7275         m2/gm2-libs-iso and m2/gm2-libs if necessary.
7276         ($(objdir)/m2/gm2-compiler-boot): Remove.
7277         ($(objdir)/m2/gm2-libs-boot): Remove.
7278         ($(objdir)/m2/gm2-libs-libiberty): Remove.
7279         ($(objdir)/m2/gm2-libiberty): Remove.
7280         ($(objdir)/m2/gm2-gcc): Remove.
7281         ($(objdir)/m2/gm2-compiler): Remove.
7282         ($(objdir)/m2/gm2-libs): Remove.
7283         ($(objdir)/m2/gm2-libs-iso): Remove.
7284         ($(objdir)/m2/gm2-libs-min): Remove.
7285         ($(objdir)/m2/gm2-compiler-paranoid): Remove.
7286         ($(objdir)/m2/gm2-libs-paranoid): Remove.
7287         ($(objdir)/m2/gm2-compiler-verify): Remove.
7288         ($(objdir)/m2/boot-bin): Remove.
7289         ($(objdir)/m2/gm2-libs-pim): Remove.
7290         ($(objdir)/m2/gm2-libs-coroutines): Remove.
7291         (stage1/m2): Remove.
7292         (stage2/m2): Remove.
7293         (stage3/m2): Remove.
7294         (m2.stageprofile): New rule.
7295         (m2.stagefeedback): New rule.
7296         (cc1gm2$(exeext)): Change dependent name.
7297         (m2/stage2/cc1gm2$(exeext)): Change dependent name.
7298         Check and create dest dir.
7299         (m2/stage1/cc1gm2$(exeext)): Check and create dest dir
7300         if necessary.
7301         (m2/gm2-gcc/%.o): Ditto.
7302         (m2/gm2-gcc/rtegraph.o): Ditto.
7303         (m2/gm2-gcc/$(SRC_PREFIX)%.h): Ditto.
7304         (m2/gm2-gcc/$(SRC_PREFIX)%.h): Ditto.
7305         (m2/mc-boot): Ditto.
7306         (m2/mc-boot-ch): Ditto.
7307         (m2/gm2-libs-boot): Ditto.
7308         (m2/gm2-compiler-boot): Ditto.
7309         (m2/gm2-compiler): Ditto.
7310         (m2/gm2-libiberty): Ditto.
7311         (m2/gm2-compiler): Ditto.
7312         (m2/gm2-libs-iso): Ditto.
7313         (m2/gm2-libs): Ditto.
7314         (m2/gm2-libs-min): Ditto.
7315         (m2/gm2-libs-coroutines): Ditto.
7316         (m2/boot-bin): Ditto.
7317         (m2/pge-boot): Ditto.
7318         (m2/pge-boot): Ditto.
7319         * Make-maintainer.in (m2/gm2-ppg-boot): Check and create
7320         dest dir if necessary.
7321         (m2): Ditto.
7322         (m2/gm2-ppg-boot): Ditto.
7323         (m2/gm2-pg-boot): Ditto.
7324         (m2/gm2-auto): Ditto.
7325         (m2/gm2-pg-boot): Ditto.
7326         (m2/gm2-pge-boot): Ditto.
7327         ($(objdir)/plugin): Ditto.
7328         ($(objdir)/m2/mc-boot-ch): Ditto.
7329         ($(objdir)/m2/mc-boot-gen): Ditto.
7330         (m2/boot-bin): Ditto.
7331         (m2/mc): Ditto.
7332         (m2/mc-obj): Ditto.
7333         ($(objdir)/m2/gm2-ppg-boot): Ditto.
7334         ($(objdir)/m2/gm2-pg-boot): Ditto.
7335         ($(objdir)/m2/gm2-pge-boot): Ditto.
7336         (m2/mc-boot-gen): Ditto.
7337         (m2/m2obj3): Ditto.
7338         (m2/gm2-libs-paranoid): Ditto.
7339         (m2/gm2-compiler-paranoid): Ditto.
7340         (m2/gm2-libs-paranoid): Ditto.
7341         (m2/gm2-compiler-paranoid): Ditto.
7342         (m2/gm2-libs-paranoid): Ditto.
7343         (m2/gm2-compiler-paranoid): Ditto.
7344         * config-lang.in (m2/gm2-compiler-boot): Remove mkdir.
7345         (m2/gm2-libs-boot): Ditto.
7346         (m2/gm2-ici-boot): Ditto.
7347         (m2/gm2-libiberty): Ditto.
7348         (m2/gm2-gcc): Ditto.
7349         (m2/gm2-compiler): Ditto.
7350         (m2/gm2-libs): Ditto.
7351         (m2/gm2-libs-iso): Ditto.
7352         (m2/gm2-compiler-paranoid): Ditto.
7353         (m2/gm2-libs-paranoid): Ditto.
7354         (m2/gm2-compiler-verify): Ditto.
7355         (m2/boot-bin): Ditto.
7356         (m2/gm2-libs-pim): Ditto.
7357         (m2/gm2-libs-coroutines): Ditto.
7358         (m2/gm2-libs-min): Ditto.
7359         (m2/pge-boot): Ditto.
7360         (plugin): Ditto.
7361         (stage1/m2): Ditto.
7362         (stage2/m2): Ditto.
7363         (stage3/m2): Ditto.
7364         (stage4/m2): Ditto.
7365         (m2/gm2-auto): Ditto.
7366         (m2/gm2-pg-boot): Ditto.
7367         (m2/gm2-pge-boot): Ditto.
7368         (m2/gm2-ppg-boot): Ditto.
7369         (m2/mc-boot): Ditto.
7370         (m2/mc-boot-ch): Ditto.
7371         (m2/mc-boot-gen): Ditto.
7373 2023-01-09  Gaius Mulley  <gaiusmod2@gmail.com>
7375         * Make-lang.in (m2/pge-boot/%.o): Add m2/gm2config.h.
7376         * gm2-libs/config-host: Regenerate.
7378 2023-01-07  Iain Sandoe  <iain@sandoe.co.uk>
7380         * gm2-libs-min/libc.c (abort): Update declaration to match the
7381         expected form, add no-return attribute.
7382         (exit): Add no-return attribute.
7384 2023-01-05  Iain Sandoe  <iain@sandoe.co.uk>
7386         PR modula2/107631
7387         * gm2-gcc/m2builtins.cc: Remove scalb, scalbf, scalbl,
7388         significand, significandf, significandl.
7389         * gm2-libs/Builtins.def (significand): Likewise.
7390         * gm2-libs/Builtins.mod: Likewise.
7391         * target-independent/Builtins.texi: Likewise.
7392         * gm2-libs-iso/LowLong.mod: Implement fraction with scalbn*() and
7393         ilogb*().
7394         * gm2-libs-iso/LowReal.mod: Likewise.
7395         * gm2-libs-iso/LowShort.mod: Likewise.
7397 2023-01-05  Gaius Mulley  <gaiusmod2@gmail.com>
7399         * gm2-libs-min/M2RTS.def (ConstructModules): New procedure
7400         declaration.
7401         (DeconstructModules): New procedure declaration.
7402         * gm2-libs-min/M2RTS.mod (ConstructModules): New procedure
7403         dummy implementation.
7404         (DeconstructModules): New procedure dummy implementation.
7406 2023-01-05  Iain Sandoe  <iain@sandoe.co.uk>
7408         * gm2spec.cc (lang_specific_driver): Handle static-libgm2.
7409         * lang.opt: Add static-libgm2.
7411 2023-01-05  Iain Sandoe  <iain@sandoe.co.uk>
7413         * gm2spec.cc (lang_specific_driver): Pass -static-libstdc++ on to
7414         the target driver if the linker does not support Bstatic/dynamic.
7416 2023-01-04  Iain Sandoe  <iain@sandoe.co.uk>
7418         PR modula2/108183
7419         * gm2-libs-ch/UnixArgs.cc (_M2_UnixArgs_ctor): Rework to use
7420         an extern "C" function with 'constructor' attribute.
7421         * gm2-libs-ch/dtoa.cc (_M2_dtoa_ctor): Likewise.
7422         * gm2-libs-ch/ldtoa.cc (_M2_ldtoa_ctor): Likewise.
7424 2023-01-04  Iain Sandoe  <iain@sandoe.co.uk>
7426         PR modula2/108259
7427         * gm2-gcc/m2decl.cc (m2decl_DeclareModuleCtor): Make module
7428         registration constructors visible.
7430 2023-01-04  Iain Sandoe  <iain@sandoe.co.uk>
7432         * Make-lang.in (dvi, ps, pdf): Build in the gcc/doc directory, also
7433         use the configured tools for texi -> dvi and texi -> pdf.
7435 2023-01-01  Iain Sandoe  <iain@sandoe.co.uk>
7436             Gaius Mulley  <gaiusmod2@gmail.com>
7438         PR modula2/108183
7439         * gm2-compiler/M2GCCDeclare.mod: Module registration constructors are
7440         externs to the builder of m2_link.
7442 2022-12-31  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
7443             Iain Sandoe  <iain@sandoe.co.uk>
7445         PR modula2/107612
7446         * Make-lang.in (soext): Use .dylib for Darwin.
7447         (PLUGINLDFLAGS): Use dynmic lookup, set the plugin name, and append
7448         -nodefaultlibs to suppress the linking of libstdc++.
7449         Use INCINTL in compile lines for the plugin.
7451 2022-12-21  Jakub Jelinek  <jakub@redhat.com>
7453         PR modula2/108153
7454         * gm2-gcc/m2linemap.def (location_t): Use CARDINAL instead of INTEGER.
7456 2022-12-19  Jakub Jelinek  <jakub@redhat.com>
7458         * gm2-gcc/m2linemap.cc (m2linemap_ErrorAt, m2linemap_ErrorAtf,
7459         m2linemap_WarningAtf, m2linemap_NoteAtf, m2linemap_internal_error):
7460         Call functions with "%s", message rather than just message, so that
7461         % chars in message aren't treated as format specifiers.
7463 2022-12-19  Jakub Jelinek  <jakub@redhat.com>
7465         PR modula2/108147
7466         * gm2-gcc/m2linemap.def (ErrorAtf, WarningAtf, NoteAtf):
7467         Comment out prototypes with varargs.
7468         * gm2-gcc/m2linemap.h (m2linemap_ErrorAtf, m2linemap_WarningAtf,
7469         m2linemap_NoteAtf): No longer varargs.
7470         * gm2-gcc/m2linemap.cc (m2linemap_ErrorAtf): Turned into a
7471         non-varargs wrapper around ...
7472         (m2linemap_ErrorAtf_1): ... this.  New static function.
7473         (m2linemap_WarningAtf): Turned into a non-varargs wrapper around ...
7474         (m2linemap_WarningAtf_1): ... this.  New static function.
7475         (m2linemap_NoteAtf): Turned into a non-varargs wrapper around ...
7476         (m2linemap_NoteAtf_1): ... this.  New static function.
7478 2022-12-15  Gaius Mulley  <gaiusmod2@gmail.com>
7480         * configure.ac: Stop probing for realpath.
7481         * tools-src/calcpath: Break dependency on realpath, cut
7482         and echo.
7483         * configure: Rebuilt.
7485 2022-12-15  Gaius Mulley  <gaiusmod2@gmail.com>
7487         * gm2config.h.in: Rebuilt.
7489 2022-12-14  Gaius Mulley  <gaiusmod2@gmail.com>
7491         * COPYING.FDL: New file.
7492         * COPYING.RUNTIME: New file.
7493         * COPYING3: New file.
7494         * COPYING3.LIB: New file.
7495         * Make-lang.in: New file.
7496         * Make-maintainer.in: New file.
7497         * NEWS: New file.
7498         * README: New file.
7499         * config-lang.in: New file.
7500         * config-make.in: New file.
7501         * configure.ac: New file.
7502         * gm2-compiler/CLexBuf.def: New file.
7503         * gm2-compiler/CLexBuf.mod: New file.
7504         * gm2-compiler/FifoQueue.def: New file.
7505         * gm2-compiler/FifoQueue.mod: New file.
7506         * gm2-compiler/Lists.def: New file.
7507         * gm2-compiler/Lists.mod: New file.
7508         * gm2-compiler/M2ALU.def: New file.
7509         * gm2-compiler/M2ALU.mod: New file.
7510         * gm2-compiler/M2AsmUtil.def: New file.
7511         * gm2-compiler/M2AsmUtil.mod: New file.
7512         * gm2-compiler/M2Base.def: New file.
7513         * gm2-compiler/M2Base.mod: New file.
7514         * gm2-compiler/M2BasicBlock.def: New file.
7515         * gm2-compiler/M2BasicBlock.mod: New file.
7516         * gm2-compiler/M2Batch.def: New file.
7517         * gm2-compiler/M2Batch.mod: New file.
7518         * gm2-compiler/M2Bitset.def: New file.
7519         * gm2-compiler/M2Bitset.mod: New file.
7520         * gm2-compiler/M2CaseList.def: New file.
7521         * gm2-compiler/M2CaseList.mod: New file.
7522         * gm2-compiler/M2Check.def: New file.
7523         * gm2-compiler/M2Check.mod: New file.
7524         * gm2-compiler/M2Code.def: New file.
7525         * gm2-compiler/M2Code.mod: New file.
7526         * gm2-compiler/M2ColorString.def: New file.
7527         * gm2-compiler/M2ColorString.mod: New file.
7528         * gm2-compiler/M2Comp.def: New file.
7529         * gm2-compiler/M2Comp.mod: New file.
7530         * gm2-compiler/M2Const.def: New file.
7531         * gm2-compiler/M2Const.mod: New file.
7532         * gm2-compiler/M2Debug.def: New file.
7533         * gm2-compiler/M2Debug.mod: New file.
7534         * gm2-compiler/M2DebugStack.def: New file.
7535         * gm2-compiler/M2DebugStack.mod: New file.
7536         * gm2-compiler/M2Defaults.def: New file.
7537         * gm2-compiler/M2Defaults.mod: New file.
7538         * gm2-compiler/M2DriverOptions.def: New file.
7539         * gm2-compiler/M2DriverOptions.mod: New file.
7540         * gm2-compiler/M2Emit.def: New file.
7541         * gm2-compiler/M2Emit.mod: New file.
7542         * gm2-compiler/M2Error.def: New file.
7543         * gm2-compiler/M2Error.mod: New file.
7544         * gm2-compiler/M2EvalSym.def: New file.
7545         * gm2-compiler/M2FileName.def: New file.
7546         * gm2-compiler/M2FileName.mod: New file.
7547         * gm2-compiler/M2GCCDeclare.def: New file.
7548         * gm2-compiler/M2GCCDeclare.mod: New file.
7549         * gm2-compiler/M2GenGCC.def: New file.
7550         * gm2-compiler/M2GenGCC.mod: New file.
7551         * gm2-compiler/M2Graph.def: New file.
7552         * gm2-compiler/M2Graph.mod: New file.
7553         * gm2-compiler/M2Lex.def: New file.
7554         * gm2-compiler/M2Lex.mod: New file.
7555         * gm2-compiler/M2LexBuf.def: New file.
7556         * gm2-compiler/M2LexBuf.mod: New file.
7557         * gm2-compiler/M2MetaError.def: New file.
7558         * gm2-compiler/M2MetaError.mod: New file.
7559         * gm2-compiler/M2Optimize.def: New file.
7560         * gm2-compiler/M2Optimize.mod: New file.
7561         * gm2-compiler/M2Options.def: New file.
7562         * gm2-compiler/M2Options.mod: New file.
7563         * gm2-compiler/M2Pass.def: New file.
7564         * gm2-compiler/M2Pass.mod: New file.
7565         * gm2-compiler/M2Preprocess.def: New file.
7566         * gm2-compiler/M2Preprocess.mod: New file.
7567         * gm2-compiler/M2Printf.def: New file.
7568         * gm2-compiler/M2Printf.mod: New file.
7569         * gm2-compiler/M2Quads.def: New file.
7570         * gm2-compiler/M2Quads.mod: New file.
7571         * gm2-compiler/M2Quiet.def: New file.
7572         * gm2-compiler/M2Quiet.mod: New file.
7573         * gm2-compiler/M2Range.def: New file.
7574         * gm2-compiler/M2Range.mod: New file.
7575         * gm2-compiler/M2Reserved.def: New file.
7576         * gm2-compiler/M2Reserved.mod: New file.
7577         * gm2-compiler/M2SSA.def: New file.
7578         * gm2-compiler/M2SSA.mod: New file.
7579         * gm2-compiler/M2Scaffold.def: New file.
7580         * gm2-compiler/M2Scaffold.mod: New file.
7581         * gm2-compiler/M2Scope.def: New file.
7582         * gm2-compiler/M2Scope.mod: New file.
7583         * gm2-compiler/M2Search.def: New file.
7584         * gm2-compiler/M2Search.mod: New file.
7585         * gm2-compiler/M2Size.def: New file.
7586         * gm2-compiler/M2Size.mod: New file.
7587         * gm2-compiler/M2StackAddress.def: New file.
7588         * gm2-compiler/M2StackAddress.mod: New file.
7589         * gm2-compiler/M2StackWord.def: New file.
7590         * gm2-compiler/M2StackWord.mod: New file.
7591         * gm2-compiler/M2Students.def: New file.
7592         * gm2-compiler/M2Students.mod: New file.
7593         * gm2-compiler/M2Swig.def: New file.
7594         * gm2-compiler/M2Swig.mod: New file.
7595         * gm2-compiler/M2System.def: New file.
7596         * gm2-compiler/M2System.mod: New file.
7597         * gm2-compiler/M2Version.def: New file.
7598         * gm2-compiler/NameKey.def: New file.
7599         * gm2-compiler/NameKey.mod: New file.
7600         * gm2-compiler/ObjectFiles.def: New file.
7601         * gm2-compiler/ObjectFiles.mod: New file.
7602         * gm2-compiler/Output.def: New file.
7603         * gm2-compiler/Output.mod: New file.
7604         * gm2-compiler/P0SymBuild.def: New file.
7605         * gm2-compiler/P0SymBuild.mod: New file.
7606         * gm2-compiler/P0SyntaxCheck.bnf: New file.
7607         * gm2-compiler/P0SyntaxCheck.def: New file.
7608         * gm2-compiler/P1Build.bnf: New file.
7609         * gm2-compiler/P1Build.def: New file.
7610         * gm2-compiler/P1SymBuild.def: New file.
7611         * gm2-compiler/P1SymBuild.mod: New file.
7612         * gm2-compiler/P2Build.bnf: New file.
7613         * gm2-compiler/P2Build.def: New file.
7614         * gm2-compiler/P2SymBuild.def: New file.
7615         * gm2-compiler/P2SymBuild.mod: New file.
7616         * gm2-compiler/P3Build.bnf: New file.
7617         * gm2-compiler/P3Build.def: New file.
7618         * gm2-compiler/P3SymBuild.def: New file.
7619         * gm2-compiler/P3SymBuild.mod: New file.
7620         * gm2-compiler/PCBuild.bnf: New file.
7621         * gm2-compiler/PCBuild.def: New file.
7622         * gm2-compiler/PCSymBuild.def: New file.
7623         * gm2-compiler/PCSymBuild.mod: New file.
7624         * gm2-compiler/PHBuild.bnf: New file.
7625         * gm2-compiler/PHBuild.def: New file.
7626         * gm2-compiler/README: New file.
7627         * gm2-compiler/Sets.def: New file.
7628         * gm2-compiler/Sets.mod: New file.
7629         * gm2-compiler/SymbolConversion.def: New file.
7630         * gm2-compiler/SymbolConversion.mod: New file.
7631         * gm2-compiler/SymbolKey.def: New file.
7632         * gm2-compiler/SymbolKey.mod: New file.
7633         * gm2-compiler/SymbolTable.def: New file.
7634         * gm2-compiler/SymbolTable.mod: New file.
7635         * gm2-compiler/bnflex.def: New file.
7636         * gm2-compiler/bnflex.mod: New file.
7637         * gm2-compiler/cflex.def: New file.
7638         * gm2-compiler/gm2.mod: New file.
7639         * gm2-compiler/gm2lcc.mod: New file.
7640         * gm2-compiler/gm2lgen.mod: New file.
7641         * gm2-compiler/gm2lorder.mod: New file.
7642         * gm2-compiler/m2flex.def: New file.
7643         * gm2-compiler/ppg.mod: New file.
7644         * gm2-gcc/README: New file.
7645         * gm2-gcc/dynamicstrings.h: New file.
7646         * gm2-gcc/gcc-consolidation.h: New file.
7647         * gm2-gcc/init.cc: New file.
7648         * gm2-gcc/init.def: New file.
7649         * gm2-gcc/init.h: New file.
7650         * gm2-gcc/m2assert.cc: New file.
7651         * gm2-gcc/m2assert.h: New file.
7652         * gm2-gcc/m2block.cc: New file.
7653         * gm2-gcc/m2block.def: New file.
7654         * gm2-gcc/m2block.h: New file.
7655         * gm2-gcc/m2builtins.cc: New file.
7656         * gm2-gcc/m2builtins.def: New file.
7657         * gm2-gcc/m2builtins.h: New file.
7658         * gm2-gcc/m2color.cc: New file.
7659         * gm2-gcc/m2color.def: New file.
7660         * gm2-gcc/m2color.h: New file.
7661         * gm2-gcc/m2configure.cc: New file.
7662         * gm2-gcc/m2configure.def: New file.
7663         * gm2-gcc/m2configure.h: New file.
7664         * gm2-gcc/m2convert.cc: New file.
7665         * gm2-gcc/m2convert.def: New file.
7666         * gm2-gcc/m2convert.h: New file.
7667         * gm2-gcc/m2decl.cc: New file.
7668         * gm2-gcc/m2decl.def: New file.
7669         * gm2-gcc/m2decl.h: New file.
7670         * gm2-gcc/m2except.cc: New file.
7671         * gm2-gcc/m2except.def: New file.
7672         * gm2-gcc/m2except.h: New file.
7673         * gm2-gcc/m2expr.cc: New file.
7674         * gm2-gcc/m2expr.def: New file.
7675         * gm2-gcc/m2expr.h: New file.
7676         * gm2-gcc/m2linemap.cc: New file.
7677         * gm2-gcc/m2linemap.def: New file.
7678         * gm2-gcc/m2linemap.h: New file.
7679         * gm2-gcc/m2misc.cc: New file.
7680         * gm2-gcc/m2misc.def: New file.
7681         * gm2-gcc/m2misc.h: New file.
7682         * gm2-gcc/m2options.h: New file.
7683         * gm2-gcc/m2range.h: New file.
7684         * gm2-gcc/m2search.h: New file.
7685         * gm2-gcc/m2statement.cc: New file.
7686         * gm2-gcc/m2statement.def: New file.
7687         * gm2-gcc/m2statement.h: New file.
7688         * gm2-gcc/m2top.cc: New file.
7689         * gm2-gcc/m2top.def: New file.
7690         * gm2-gcc/m2top.h: New file.
7691         * gm2-gcc/m2tree.cc: New file.
7692         * gm2-gcc/m2tree.def: New file.
7693         * gm2-gcc/m2tree.h: New file.
7694         * gm2-gcc/m2treelib.cc: New file.
7695         * gm2-gcc/m2treelib.def: New file.
7696         * gm2-gcc/m2treelib.h: New file.
7697         * gm2-gcc/m2type.cc: New file.
7698         * gm2-gcc/m2type.def: New file.
7699         * gm2-gcc/m2type.h: New file.
7700         * gm2-gcc/rtegraph.cc: New file.
7701         * gm2-gcc/rtegraph.h: New file.
7702         * gm2-ici/M2Emit.mod: New file.
7703         * gm2-ici/README: New file.
7704         * gm2-ici/m2linemap.c: New file.
7705         * gm2-internals.texi: New file.
7706         * gm2-lang.cc: New file.
7707         * gm2-lang.h: New file.
7708         * gm2-libiberty/README: New file.
7709         * gm2-libiberty/choosetemp.def: New file.
7710         * gm2-libiberty/pexecute.def: New file.
7711         * gm2-libs-ch/M2LINK.c: New file.
7712         * gm2-libs-ch/README: New file.
7713         * gm2-libs-ch/RTcodummy.c: New file.
7714         * gm2-libs-ch/RTintdummy.c: New file.
7715         * gm2-libs-ch/Selective.c: New file.
7716         * gm2-libs-ch/SysExceptions.c: New file.
7717         * gm2-libs-ch/UnixArgs.cc: New file.
7718         * gm2-libs-ch/cgetopt.c: New file.
7719         * gm2-libs-ch/choosetemp.c: New file.
7720         * gm2-libs-ch/dtoa.cc: New file.
7721         * gm2-libs-ch/errno.c: New file.
7722         * gm2-libs-ch/host.c: New file.
7723         * gm2-libs-ch/ldtoa.cc: New file.
7724         * gm2-libs-ch/m2rts.h: New file.
7725         * gm2-libs-ch/termios.c: New file.
7726         * gm2-libs-ch/tools.c: New file.
7727         * gm2-libs-ch/wrapc.c: New file.
7728         * gm2-libs-ch/xlibc.c: New file.
7729         * gm2-libs-coroutines/Debug.def: New file.
7730         * gm2-libs-coroutines/Debug.mod: New file.
7731         * gm2-libs-coroutines/Executive.def: New file.
7732         * gm2-libs-coroutines/Executive.mod: New file.
7733         * gm2-libs-coroutines/KeyBoardLEDs.def: New file.
7734         * gm2-libs-coroutines/README.texi: New file.
7735         * gm2-libs-coroutines/SYSTEM.def: New file.
7736         * gm2-libs-coroutines/SYSTEM.mod: New file.
7737         * gm2-libs-coroutines/TimerHandler.def: New file.
7738         * gm2-libs-coroutines/TimerHandler.mod: New file.
7739         * gm2-libs-iso/COROUTINES.def: New file.
7740         * gm2-libs-iso/COROUTINES.mod: New file.
7741         * gm2-libs-iso/ChanConsts.def: New file.
7742         * gm2-libs-iso/ChanConsts.h: New file.
7743         * gm2-libs-iso/ChanConsts.mod: New file.
7744         * gm2-libs-iso/CharClass.def: New file.
7745         * gm2-libs-iso/CharClass.mod: New file.
7746         * gm2-libs-iso/ClientSocket.def: New file.
7747         * gm2-libs-iso/ClientSocket.mod: New file.
7748         * gm2-libs-iso/ComplexMath.def: New file.
7749         * gm2-libs-iso/ComplexMath.mod: New file.
7750         * gm2-libs-iso/ConvStringLong.def: New file.
7751         * gm2-libs-iso/ConvStringLong.mod: New file.
7752         * gm2-libs-iso/ConvStringReal.def: New file.
7753         * gm2-libs-iso/ConvStringReal.mod: New file.
7754         * gm2-libs-iso/ConvTypes.def: New file.
7755         * gm2-libs-iso/ConvTypes.mod: New file.
7756         * gm2-libs-iso/EXCEPTIONS.def: New file.
7757         * gm2-libs-iso/EXCEPTIONS.mod: New file.
7758         * gm2-libs-iso/ErrnoCategory.def: New file.
7759         * gm2-libs-iso/GeneralUserExceptions.def: New file.
7760         * gm2-libs-iso/GeneralUserExceptions.mod: New file.
7761         * gm2-libs-iso/IOChan.def: New file.
7762         * gm2-libs-iso/IOChan.mod: New file.
7763         * gm2-libs-iso/IOConsts.def: New file.
7764         * gm2-libs-iso/IOConsts.mod: New file.
7765         * gm2-libs-iso/IOLink.def: New file.
7766         * gm2-libs-iso/IOLink.mod: New file.
7767         * gm2-libs-iso/IOResult.def: New file.
7768         * gm2-libs-iso/IOResult.mod: New file.
7769         * gm2-libs-iso/LongComplexMath.def: New file.
7770         * gm2-libs-iso/LongComplexMath.mod: New file.
7771         * gm2-libs-iso/LongConv.def: New file.
7772         * gm2-libs-iso/LongConv.mod: New file.
7773         * gm2-libs-iso/LongIO.def: New file.
7774         * gm2-libs-iso/LongIO.mod: New file.
7775         * gm2-libs-iso/LongMath.def: New file.
7776         * gm2-libs-iso/LongMath.mod: New file.
7777         * gm2-libs-iso/LongStr.def: New file.
7778         * gm2-libs-iso/LongStr.mod: New file.
7779         * gm2-libs-iso/LongWholeIO.def: New file.
7780         * gm2-libs-iso/LongWholeIO.mod: New file.
7781         * gm2-libs-iso/LowLong.def: New file.
7782         * gm2-libs-iso/LowLong.mod: New file.
7783         * gm2-libs-iso/LowReal.def: New file.
7784         * gm2-libs-iso/LowReal.mod: New file.
7785         * gm2-libs-iso/LowShort.def: New file.
7786         * gm2-libs-iso/LowShort.mod: New file.
7787         * gm2-libs-iso/M2EXCEPTION.def: New file.
7788         * gm2-libs-iso/M2EXCEPTION.mod: New file.
7789         * gm2-libs-iso/M2RTS.def: New file.
7790         * gm2-libs-iso/M2RTS.mod: New file.
7791         * gm2-libs-iso/MemStream.def: New file.
7792         * gm2-libs-iso/MemStream.mod: New file.
7793         * gm2-libs-iso/Preemptive.def: New file.
7794         * gm2-libs-iso/Preemptive.mod: New file.
7795         * gm2-libs-iso/Processes.def: New file.
7796         * gm2-libs-iso/Processes.mod: New file.
7797         * gm2-libs-iso/ProgramArgs.def: New file.
7798         * gm2-libs-iso/ProgramArgs.mod: New file.
7799         * gm2-libs-iso/README.texi: New file.
7800         * gm2-libs-iso/RTco.def: New file.
7801         * gm2-libs-iso/RTdata.def: New file.
7802         * gm2-libs-iso/RTdata.mod: New file.
7803         * gm2-libs-iso/RTentity.def: New file.
7804         * gm2-libs-iso/RTentity.mod: New file.
7805         * gm2-libs-iso/RTfio.def: New file.
7806         * gm2-libs-iso/RTfio.mod: New file.
7807         * gm2-libs-iso/RTgen.def: New file.
7808         * gm2-libs-iso/RTgen.mod: New file.
7809         * gm2-libs-iso/RTgenif.def: New file.
7810         * gm2-libs-iso/RTgenif.mod: New file.
7811         * gm2-libs-iso/RTio.def: New file.
7812         * gm2-libs-iso/RTio.mod: New file.
7813         * gm2-libs-iso/RandomNumber.def: New file.
7814         * gm2-libs-iso/RandomNumber.mod: New file.
7815         * gm2-libs-iso/RawIO.def: New file.
7816         * gm2-libs-iso/RawIO.mod: New file.
7817         * gm2-libs-iso/RealConv.def: New file.
7818         * gm2-libs-iso/RealConv.mod: New file.
7819         * gm2-libs-iso/RealIO.def: New file.
7820         * gm2-libs-iso/RealIO.mod: New file.
7821         * gm2-libs-iso/RealMath.def: New file.
7822         * gm2-libs-iso/RealMath.mod: New file.
7823         * gm2-libs-iso/RealStr.def: New file.
7824         * gm2-libs-iso/RealStr.mod: New file.
7825         * gm2-libs-iso/RndFile.def: New file.
7826         * gm2-libs-iso/RndFile.mod: New file.
7827         * gm2-libs-iso/SIOResult.def: New file.
7828         * gm2-libs-iso/SIOResult.mod: New file.
7829         * gm2-libs-iso/SLongIO.def: New file.
7830         * gm2-libs-iso/SLongIO.mod: New file.
7831         * gm2-libs-iso/SLongWholeIO.def: New file.
7832         * gm2-libs-iso/SLongWholeIO.mod: New file.
7833         * gm2-libs-iso/SRawIO.def: New file.
7834         * gm2-libs-iso/SRawIO.mod: New file.
7835         * gm2-libs-iso/SRealIO.def: New file.
7836         * gm2-libs-iso/SRealIO.mod: New file.
7837         * gm2-libs-iso/SShortIO.def: New file.
7838         * gm2-libs-iso/SShortIO.mod: New file.
7839         * gm2-libs-iso/SShortWholeIO.def: New file.
7840         * gm2-libs-iso/SShortWholeIO.mod: New file.
7841         * gm2-libs-iso/STextIO.def: New file.
7842         * gm2-libs-iso/STextIO.mod: New file.
7843         * gm2-libs-iso/SWholeIO.def: New file.
7844         * gm2-libs-iso/SWholeIO.mod: New file.
7845         * gm2-libs-iso/SYSTEM.def: New file.
7846         * gm2-libs-iso/SYSTEM.mod: New file.
7847         * gm2-libs-iso/Semaphores.def: New file.
7848         * gm2-libs-iso/Semaphores.mod: New file.
7849         * gm2-libs-iso/SeqFile.def: New file.
7850         * gm2-libs-iso/SeqFile.mod: New file.
7851         * gm2-libs-iso/ShortComplexMath.def: New file.
7852         * gm2-libs-iso/ShortComplexMath.mod: New file.
7853         * gm2-libs-iso/ShortIO.def: New file.
7854         * gm2-libs-iso/ShortIO.mod: New file.
7855         * gm2-libs-iso/ShortWholeIO.def: New file.
7856         * gm2-libs-iso/ShortWholeIO.mod: New file.
7857         * gm2-libs-iso/SimpleCipher.def: New file.
7858         * gm2-libs-iso/SimpleCipher.mod: New file.
7859         * gm2-libs-iso/StdChans.def: New file.
7860         * gm2-libs-iso/StdChans.mod: New file.
7861         * gm2-libs-iso/Storage.def: New file.
7862         * gm2-libs-iso/Storage.mod: New file.
7863         * gm2-libs-iso/StreamFile.def: New file.
7864         * gm2-libs-iso/StreamFile.mod: New file.
7865         * gm2-libs-iso/StringChan.def: New file.
7866         * gm2-libs-iso/StringChan.mod: New file.
7867         * gm2-libs-iso/Strings.def: New file.
7868         * gm2-libs-iso/Strings.mod: New file.
7869         * gm2-libs-iso/SysClock.def: New file.
7870         * gm2-libs-iso/SysClock.mod: New file.
7871         * gm2-libs-iso/TERMINATION.def: New file.
7872         * gm2-libs-iso/TERMINATION.mod: New file.
7873         * gm2-libs-iso/TermFile.def: New file.
7874         * gm2-libs-iso/TermFile.mod: New file.
7875         * gm2-libs-iso/TextIO.def: New file.
7876         * gm2-libs-iso/TextIO.mod: New file.
7877         * gm2-libs-iso/WholeConv.def: New file.
7878         * gm2-libs-iso/WholeConv.mod: New file.
7879         * gm2-libs-iso/WholeIO.def: New file.
7880         * gm2-libs-iso/WholeIO.mod: New file.
7881         * gm2-libs-iso/WholeStr.def: New file.
7882         * gm2-libs-iso/WholeStr.mod: New file.
7883         * gm2-libs-iso/wrapsock.c: New file.
7884         * gm2-libs-iso/wrapsock.def: New file.
7885         * gm2-libs-iso/wraptime.c: New file.
7886         * gm2-libs-iso/wraptime.def: New file.
7887         * gm2-libs-min/M2RTS.def: New file.
7888         * gm2-libs-min/M2RTS.mod: New file.
7889         * gm2-libs-min/SYSTEM.def: New file.
7890         * gm2-libs-min/SYSTEM.mod: New file.
7891         * gm2-libs-min/libc.c: New file.
7892         * gm2-libs-min/libc.def: New file.
7893         * gm2-libs-pim/BitBlockOps.def: New file.
7894         * gm2-libs-pim/BitBlockOps.mod: New file.
7895         * gm2-libs-pim/BitByteOps.def: New file.
7896         * gm2-libs-pim/BitByteOps.mod: New file.
7897         * gm2-libs-pim/BitWordOps.def: New file.
7898         * gm2-libs-pim/BitWordOps.mod: New file.
7899         * gm2-libs-pim/BlockOps.def: New file.
7900         * gm2-libs-pim/BlockOps.mod: New file.
7901         * gm2-libs-pim/Break.c: New file.
7902         * gm2-libs-pim/Break.def: New file.
7903         * gm2-libs-pim/CardinalIO.def: New file.
7904         * gm2-libs-pim/CardinalIO.mod: New file.
7905         * gm2-libs-pim/Conversions.def: New file.
7906         * gm2-libs-pim/Conversions.mod: New file.
7907         * gm2-libs-pim/DebugPMD.def: New file.
7908         * gm2-libs-pim/DebugPMD.mod: New file.
7909         * gm2-libs-pim/DebugTrace.def: New file.
7910         * gm2-libs-pim/DebugTrace.mod: New file.
7911         * gm2-libs-pim/Delay.def: New file.
7912         * gm2-libs-pim/Delay.mod: New file.
7913         * gm2-libs-pim/Display.def: New file.
7914         * gm2-libs-pim/Display.mod: New file.
7915         * gm2-libs-pim/ErrorCode.def: New file.
7916         * gm2-libs-pim/ErrorCode.mod: New file.
7917         * gm2-libs-pim/FileSystem.def: New file.
7918         * gm2-libs-pim/FileSystem.mod: New file.
7919         * gm2-libs-pim/FloatingUtilities.def: New file.
7920         * gm2-libs-pim/FloatingUtilities.mod: New file.
7921         * gm2-libs-pim/InOut.def: New file.
7922         * gm2-libs-pim/InOut.mod: New file.
7923         * gm2-libs-pim/Keyboard.def: New file.
7924         * gm2-libs-pim/Keyboard.mod: New file.
7925         * gm2-libs-pim/LongIO.def: New file.
7926         * gm2-libs-pim/LongIO.mod: New file.
7927         * gm2-libs-pim/NumberConversion.def: New file.
7928         * gm2-libs-pim/NumberConversion.mod: New file.
7929         * gm2-libs-pim/README.texi: New file.
7930         * gm2-libs-pim/Random.def: New file.
7931         * gm2-libs-pim/Random.mod: New file.
7932         * gm2-libs-pim/RealConversions.def: New file.
7933         * gm2-libs-pim/RealConversions.mod: New file.
7934         * gm2-libs-pim/RealInOut.def: New file.
7935         * gm2-libs-pim/RealInOut.mod: New file.
7936         * gm2-libs-pim/Strings.def: New file.
7937         * gm2-libs-pim/Strings.mod: New file.
7938         * gm2-libs-pim/Termbase.def: New file.
7939         * gm2-libs-pim/Termbase.mod: New file.
7940         * gm2-libs-pim/Terminal.def: New file.
7941         * gm2-libs-pim/Terminal.mod: New file.
7942         * gm2-libs-pim/TimeDate.def: New file.
7943         * gm2-libs-pim/TimeDate.mod: New file.
7944         * gm2-libs/ASCII.def: New file.
7945         * gm2-libs/ASCII.mod: New file.
7946         * gm2-libs/Args.def: New file.
7947         * gm2-libs/Args.mod: New file.
7948         * gm2-libs/Assertion.def: New file.
7949         * gm2-libs/Assertion.mod: New file.
7950         * gm2-libs/Break.def: New file.
7951         * gm2-libs/Break.mod: New file.
7952         * gm2-libs/Builtins.def: New file.
7953         * gm2-libs/Builtins.mod: New file.
7954         * gm2-libs/COROUTINES.def: New file.
7955         * gm2-libs/COROUTINES.mod: New file.
7956         * gm2-libs/CmdArgs.def: New file.
7957         * gm2-libs/CmdArgs.mod: New file.
7958         * gm2-libs/Debug.def: New file.
7959         * gm2-libs/Debug.mod: New file.
7960         * gm2-libs/DynamicStrings.def: New file.
7961         * gm2-libs/DynamicStrings.mod: New file.
7962         * gm2-libs/Environment.def: New file.
7963         * gm2-libs/Environment.mod: New file.
7964         * gm2-libs/FIO.def: New file.
7965         * gm2-libs/FIO.mod: New file.
7966         * gm2-libs/FormatStrings.def: New file.
7967         * gm2-libs/FormatStrings.mod: New file.
7968         * gm2-libs/FpuIO.def: New file.
7969         * gm2-libs/FpuIO.mod: New file.
7970         * gm2-libs/GetOpt.def: New file.
7971         * gm2-libs/GetOpt.mod: New file.
7972         * gm2-libs/IO.def: New file.
7973         * gm2-libs/IO.mod: New file.
7974         * gm2-libs/Indexing.def: New file.
7975         * gm2-libs/Indexing.mod: New file.
7976         * gm2-libs/LMathLib0.def: New file.
7977         * gm2-libs/LMathLib0.mod: New file.
7978         * gm2-libs/LegacyReal.def: New file.
7979         * gm2-libs/LegacyReal.mod: New file.
7980         * gm2-libs/M2Dependent.def: New file.
7981         * gm2-libs/M2Dependent.mod: New file.
7982         * gm2-libs/M2EXCEPTION.def: New file.
7983         * gm2-libs/M2EXCEPTION.mod: New file.
7984         * gm2-libs/M2LINK.def: New file.
7985         * gm2-libs/M2RTS.def: New file.
7986         * gm2-libs/M2RTS.mod: New file.
7987         * gm2-libs/MathLib0.def: New file.
7988         * gm2-libs/MathLib0.mod: New file.
7989         * gm2-libs/MemUtils.def: New file.
7990         * gm2-libs/MemUtils.mod: New file.
7991         * gm2-libs/NumberIO.def: New file.
7992         * gm2-libs/NumberIO.mod: New file.
7993         * gm2-libs/OptLib.def: New file.
7994         * gm2-libs/OptLib.mod: New file.
7995         * gm2-libs/PushBackInput.def: New file.
7996         * gm2-libs/PushBackInput.mod: New file.
7997         * gm2-libs/README.texi: New file.
7998         * gm2-libs/RTExceptions.def: New file.
7999         * gm2-libs/RTExceptions.mod: New file.
8000         * gm2-libs/RTint.def: New file.
8001         * gm2-libs/RTint.mod: New file.
8002         * gm2-libs/SArgs.def: New file.
8003         * gm2-libs/SArgs.mod: New file.
8004         * gm2-libs/SCmdArgs.def: New file.
8005         * gm2-libs/SCmdArgs.mod: New file.
8006         * gm2-libs/SEnvironment.def: New file.
8007         * gm2-libs/SEnvironment.mod: New file.
8008         * gm2-libs/SFIO.def: New file.
8009         * gm2-libs/SFIO.mod: New file.
8010         * gm2-libs/SMathLib0.def: New file.
8011         * gm2-libs/SMathLib0.mod: New file.
8012         * gm2-libs/SYSTEM.def: New file.
8013         * gm2-libs/SYSTEM.mod: New file.
8014         * gm2-libs/Scan.def: New file.
8015         * gm2-libs/Scan.mod: New file.
8016         * gm2-libs/Selective.def: New file.
8017         * gm2-libs/StdIO.def: New file.
8018         * gm2-libs/StdIO.mod: New file.
8019         * gm2-libs/Storage.def: New file.
8020         * gm2-libs/Storage.mod: New file.
8021         * gm2-libs/StrCase.def: New file.
8022         * gm2-libs/StrCase.mod: New file.
8023         * gm2-libs/StrIO.def: New file.
8024         * gm2-libs/StrIO.mod: New file.
8025         * gm2-libs/StrLib.def: New file.
8026         * gm2-libs/StrLib.mod: New file.
8027         * gm2-libs/StringConvert.def: New file.
8028         * gm2-libs/StringConvert.mod: New file.
8029         * gm2-libs/SysExceptions.def: New file.
8030         * gm2-libs/SysStorage.def: New file.
8031         * gm2-libs/SysStorage.mod: New file.
8032         * gm2-libs/TimeString.def: New file.
8033         * gm2-libs/TimeString.mod: New file.
8034         * gm2-libs/UnixArgs.def: New file.
8035         * gm2-libs/cbuiltin.def: New file.
8036         * gm2-libs/cgetopt.def: New file.
8037         * gm2-libs/config-host: New file.
8038         * gm2-libs/config-host.in: New file.
8039         * gm2-libs/cxxabi.def: New file.
8040         * gm2-libs/dtoa.def: New file.
8041         * gm2-libs/errno.def: New file.
8042         * gm2-libs/gdbif.def: New file.
8043         * gm2-libs/gdbif.mod: New file.
8044         * gm2-libs/gm2-libs-host.h.in: New file.
8045         * gm2-libs/ldtoa.def: New file.
8046         * gm2-libs/libc.def: New file.
8047         * gm2-libs/libm.def: New file.
8048         * gm2-libs/sckt.def: New file.
8049         * gm2-libs/termios.def: New file.
8050         * gm2-libs/wrapc.def: New file.
8051         * gm2config.h.in: New file.
8052         * gm2spec.cc: New file.
8053         * gm2version.h: New file.
8054         * init/README: New file.
8055         * init/mcinit: New file.
8056         * init/ppginit: New file.
8057         * lang-specs.h: New file.
8058         * lang.opt: New file.
8059         * m2-tree.def: New file.
8060         * m2-tree.h: New file.
8061         * m2.flex: New file.
8062         * m2pp.cc: New file.
8063         * m2pp.h: New file.
8064         * mc-boot-ch/GBuiltins.c: New file.
8065         * mc-boot-ch/GM2LINK.c: New file.
8066         * mc-boot-ch/GRTco.c: New file.
8067         * mc-boot-ch/GSYSTEM.c: New file.
8068         * mc-boot-ch/GSelective.c: New file.
8069         * mc-boot-ch/GSysExceptions.c: New file.
8070         * mc-boot-ch/GUnixArgs.cc: New file.
8071         * mc-boot-ch/Gabort.c: New file.
8072         * mc-boot-ch/Gcbuiltin.c: New file.
8073         * mc-boot-ch/Gdtoa.c: New file.
8074         * mc-boot-ch/Gerrno.c: New file.
8075         * mc-boot-ch/Gldtoa.c: New file.
8076         * mc-boot-ch/Glibc.c: New file.
8077         * mc-boot-ch/Glibm.c: New file.
8078         * mc-boot-ch/Gmcrts.c: New file.
8079         * mc-boot-ch/Gmcrts.h: New file.
8080         * mc-boot-ch/Gnetwork.h: New file.
8081         * mc-boot-ch/Gtermios.cc: New file.
8082         * mc-boot-ch/Gwrapc.c: New file.
8083         * mc-boot-ch/README: New file.
8084         * mc-boot-ch/m2rts.h: New file.
8085         * mc-boot-ch/network.c: New file.
8086         * mc-boot/GASCII.c: New file.
8087         * mc-boot/GASCII.h: New file.
8088         * mc-boot/GArgs.c: New file.
8089         * mc-boot/GArgs.h: New file.
8090         * mc-boot/GAssertion.c: New file.
8091         * mc-boot/GAssertion.h: New file.
8092         * mc-boot/GBreak.c: New file.
8093         * mc-boot/GBreak.h: New file.
8094         * mc-boot/GCOROUTINES.h: New file.
8095         * mc-boot/GCmdArgs.c: New file.
8096         * mc-boot/GCmdArgs.h: New file.
8097         * mc-boot/GDebug.c: New file.
8098         * mc-boot/GDebug.h: New file.
8099         * mc-boot/GDynamicStrings.c: New file.
8100         * mc-boot/GDynamicStrings.h: New file.
8101         * mc-boot/GEnvironment.c: New file.
8102         * mc-boot/GEnvironment.h: New file.
8103         * mc-boot/GFIO.c: New file.
8104         * mc-boot/GFIO.h: New file.
8105         * mc-boot/GFormatStrings.c: New file.
8106         * mc-boot/GFormatStrings.h: New file.
8107         * mc-boot/GFpuIO.c: New file.
8108         * mc-boot/GFpuIO.h: New file.
8109         * mc-boot/GIO.c: New file.
8110         * mc-boot/GIO.h: New file.
8111         * mc-boot/GIndexing.c: New file.
8112         * mc-boot/GIndexing.h: New file.
8113         * mc-boot/GM2Dependent.c: New file.
8114         * mc-boot/GM2Dependent.h: New file.
8115         * mc-boot/GM2EXCEPTION.c: New file.
8116         * mc-boot/GM2EXCEPTION.h: New file.
8117         * mc-boot/GM2LINK.h: New file.
8118         * mc-boot/GM2RTS.c: New file.
8119         * mc-boot/GM2RTS.h: New file.
8120         * mc-boot/GMemUtils.c: New file.
8121         * mc-boot/GMemUtils.h: New file.
8122         * mc-boot/GNumberIO.c: New file.
8123         * mc-boot/GNumberIO.h: New file.
8124         * mc-boot/GPushBackInput.c: New file.
8125         * mc-boot/GPushBackInput.h: New file.
8126         * mc-boot/GRTExceptions.c: New file.
8127         * mc-boot/GRTExceptions.h: New file.
8128         * mc-boot/GRTco.h: New file.
8129         * mc-boot/GRTint.c: New file.
8130         * mc-boot/GRTint.h: New file.
8131         * mc-boot/GSArgs.c: New file.
8132         * mc-boot/GSArgs.h: New file.
8133         * mc-boot/GSFIO.c: New file.
8134         * mc-boot/GSFIO.h: New file.
8135         * mc-boot/GSYSTEM.h: New file.
8136         * mc-boot/GSelective.h: New file.
8137         * mc-boot/GStdIO.c: New file.
8138         * mc-boot/GStdIO.h: New file.
8139         * mc-boot/GStorage.c: New file.
8140         * mc-boot/GStorage.h: New file.
8141         * mc-boot/GStrCase.c: New file.
8142         * mc-boot/GStrCase.h: New file.
8143         * mc-boot/GStrIO.c: New file.
8144         * mc-boot/GStrIO.h: New file.
8145         * mc-boot/GStrLib.c: New file.
8146         * mc-boot/GStrLib.h: New file.
8147         * mc-boot/GStringConvert.c: New file.
8148         * mc-boot/GStringConvert.h: New file.
8149         * mc-boot/GSysExceptions.h: New file.
8150         * mc-boot/GSysStorage.c: New file.
8151         * mc-boot/GSysStorage.h: New file.
8152         * mc-boot/GTimeString.c: New file.
8153         * mc-boot/GTimeString.h: New file.
8154         * mc-boot/GUnixArgs.h: New file.
8155         * mc-boot/Galists.c: New file.
8156         * mc-boot/Galists.h: New file.
8157         * mc-boot/Gdecl.c: New file.
8158         * mc-boot/Gdecl.h: New file.
8159         * mc-boot/Gdtoa.h: New file.
8160         * mc-boot/Gerrno.h: New file.
8161         * mc-boot/Gkeyc.c: New file.
8162         * mc-boot/Gkeyc.h: New file.
8163         * mc-boot/Gldtoa.h: New file.
8164         * mc-boot/Glibc.h: New file.
8165         * mc-boot/Glibm.h: New file.
8166         * mc-boot/Glists.c: New file.
8167         * mc-boot/Glists.h: New file.
8168         * mc-boot/GmcComment.c: New file.
8169         * mc-boot/GmcComment.h: New file.
8170         * mc-boot/GmcComp.c: New file.
8171         * mc-boot/GmcComp.h: New file.
8172         * mc-boot/GmcDebug.c: New file.
8173         * mc-boot/GmcDebug.h: New file.
8174         * mc-boot/GmcError.c: New file.
8175         * mc-boot/GmcError.h: New file.
8176         * mc-boot/GmcFileName.c: New file.
8177         * mc-boot/GmcFileName.h: New file.
8178         * mc-boot/GmcLexBuf.c: New file.
8179         * mc-boot/GmcLexBuf.h: New file.
8180         * mc-boot/GmcMetaError.c: New file.
8181         * mc-boot/GmcMetaError.h: New file.
8182         * mc-boot/GmcOptions.c: New file.
8183         * mc-boot/GmcOptions.h: New file.
8184         * mc-boot/GmcPreprocess.c: New file.
8185         * mc-boot/GmcPreprocess.h: New file.
8186         * mc-boot/GmcPretty.c: New file.
8187         * mc-boot/GmcPretty.h: New file.
8188         * mc-boot/GmcPrintf.c: New file.
8189         * mc-boot/GmcPrintf.h: New file.
8190         * mc-boot/GmcQuiet.c: New file.
8191         * mc-boot/GmcQuiet.h: New file.
8192         * mc-boot/GmcReserved.c: New file.
8193         * mc-boot/GmcReserved.h: New file.
8194         * mc-boot/GmcSearch.c: New file.
8195         * mc-boot/GmcSearch.h: New file.
8196         * mc-boot/GmcStack.c: New file.
8197         * mc-boot/GmcStack.h: New file.
8198         * mc-boot/GmcStream.c: New file.
8199         * mc-boot/GmcStream.h: New file.
8200         * mc-boot/Gmcflex.h: New file.
8201         * mc-boot/Gmcp1.c: New file.
8202         * mc-boot/Gmcp1.h: New file.
8203         * mc-boot/Gmcp2.c: New file.
8204         * mc-boot/Gmcp2.h: New file.
8205         * mc-boot/Gmcp3.c: New file.
8206         * mc-boot/Gmcp3.h: New file.
8207         * mc-boot/Gmcp4.c: New file.
8208         * mc-boot/Gmcp4.h: New file.
8209         * mc-boot/Gmcp5.c: New file.
8210         * mc-boot/Gmcp5.h: New file.
8211         * mc-boot/GnameKey.c: New file.
8212         * mc-boot/GnameKey.h: New file.
8213         * mc-boot/Gpth.h: New file.
8214         * mc-boot/GsymbolKey.c: New file.
8215         * mc-boot/GsymbolKey.h: New file.
8216         * mc-boot/Gtermios.h: New file.
8217         * mc-boot/Gtop.c: New file.
8218         * mc-boot/Gvarargs.c: New file.
8219         * mc-boot/Gvarargs.h: New file.
8220         * mc-boot/Gwlists.c: New file.
8221         * mc-boot/Gwlists.h: New file.
8222         * mc-boot/Gwrapc.h: New file.
8223         * mc-boot/README: New file.
8224         * mc/Indexing.def: New file.
8225         * mc/Indexing.mod: New file.
8226         * mc/README: New file.
8227         * mc/alists.def: New file.
8228         * mc/alists.mod: New file.
8229         * mc/decl.def: New file.
8230         * mc/decl.mod: New file.
8231         * mc/decl.mod-extra: New file.
8232         * mc/keyc.def: New file.
8233         * mc/keyc.mod: New file.
8234         * mc/lists.def: New file.
8235         * mc/lists.mod: New file.
8236         * mc/m2flex.def: New file.
8237         * mc/mc.flex: New file.
8238         * mc/mcComment.def: New file.
8239         * mc/mcComment.h: New file.
8240         * mc/mcComment.mod: New file.
8241         * mc/mcComp.def: New file.
8242         * mc/mcComp.mod: New file.
8243         * mc/mcDebug.def: New file.
8244         * mc/mcDebug.mod: New file.
8245         * mc/mcError.def: New file.
8246         * mc/mcError.mod: New file.
8247         * mc/mcFileName.def: New file.
8248         * mc/mcFileName.mod: New file.
8249         * mc/mcLexBuf.def: New file.
8250         * mc/mcLexBuf.h: New file.
8251         * mc/mcLexBuf.mod: New file.
8252         * mc/mcMetaError.def: New file.
8253         * mc/mcMetaError.mod: New file.
8254         * mc/mcOptions.def: New file.
8255         * mc/mcOptions.mod: New file.
8256         * mc/mcPreprocess.def: New file.
8257         * mc/mcPreprocess.mod: New file.
8258         * mc/mcPretty.def: New file.
8259         * mc/mcPretty.mod: New file.
8260         * mc/mcPrintf.def: New file.
8261         * mc/mcPrintf.mod: New file.
8262         * mc/mcQuiet.def: New file.
8263         * mc/mcQuiet.mod: New file.
8264         * mc/mcReserved.def: New file.
8265         * mc/mcReserved.h: New file.
8266         * mc/mcReserved.mod: New file.
8267         * mc/mcSearch.def: New file.
8268         * mc/mcSearch.mod: New file.
8269         * mc/mcStack.def: New file.
8270         * mc/mcStack.mod: New file.
8271         * mc/mcStream.def: New file.
8272         * mc/mcStream.mod: New file.
8273         * mc/mcflex.def: New file.
8274         * mc/mcp1.bnf: New file.
8275         * mc/mcp1.def: New file.
8276         * mc/mcp2.bnf: New file.
8277         * mc/mcp2.def: New file.
8278         * mc/mcp3.bnf: New file.
8279         * mc/mcp3.def: New file.
8280         * mc/mcp4.bnf: New file.
8281         * mc/mcp4.def: New file.
8282         * mc/mcp5.bnf: New file.
8283         * mc/mcp5.def: New file.
8284         * mc/nameKey.def: New file.
8285         * mc/nameKey.mod: New file.
8286         * mc/symbolKey.def: New file.
8287         * mc/symbolKey.mod: New file.
8288         * mc/top.mod: New file.
8289         * mc/varargs.def: New file.
8290         * mc/varargs.mod: New file.
8291         * mc/wlists.def: New file.
8292         * mc/wlists.mod: New file.
8293         * pge-boot/GASCII.c: New file.
8294         * pge-boot/GASCII.h: New file.
8295         * pge-boot/GArgs.c: New file.
8296         * pge-boot/GArgs.h: New file.
8297         * pge-boot/GAssertion.c: New file.
8298         * pge-boot/GAssertion.h: New file.
8299         * pge-boot/GBreak.h: New file.
8300         * pge-boot/GBuiltins.c: New file.
8301         * pge-boot/GCmdArgs.h: New file.
8302         * pge-boot/GDebug.c: New file.
8303         * pge-boot/GDebug.h: New file.
8304         * pge-boot/GDynamicStrings.c: New file.
8305         * pge-boot/GDynamicStrings.h: New file.
8306         * pge-boot/GEnvironment.h: New file.
8307         * pge-boot/GFIO.c: New file.
8308         * pge-boot/GFIO.h: New file.
8309         * pge-boot/GFormatStrings.h: New file.
8310         * pge-boot/GFpuIO.h: New file.
8311         * pge-boot/GIO.c: New file.
8312         * pge-boot/GIO.h: New file.
8313         * pge-boot/GIndexing.c: New file.
8314         * pge-boot/GIndexing.h: New file.
8315         * pge-boot/GLists.c: New file.
8316         * pge-boot/GLists.h: New file.
8317         * pge-boot/GM2Dependent.c: New file.
8318         * pge-boot/GM2Dependent.h: New file.
8319         * pge-boot/GM2EXCEPTION.c: New file.
8320         * pge-boot/GM2EXCEPTION.h: New file.
8321         * pge-boot/GM2LINK.c: New file.
8322         * pge-boot/GM2LINK.h: New file.
8323         * pge-boot/GM2RTS.c: New file.
8324         * pge-boot/GM2RTS.h: New file.
8325         * pge-boot/GNameKey.c: New file.
8326         * pge-boot/GNameKey.h: New file.
8327         * pge-boot/GNumberIO.c: New file.
8328         * pge-boot/GNumberIO.h: New file.
8329         * pge-boot/GOutput.c: New file.
8330         * pge-boot/GOutput.h: New file.
8331         * pge-boot/GPushBackInput.c: New file.
8332         * pge-boot/GPushBackInput.h: New file.
8333         * pge-boot/GRTExceptions.c: New file.
8334         * pge-boot/GRTExceptions.h: New file.
8335         * pge-boot/GRTco.c: New file.
8336         * pge-boot/GSArgs.h: New file.
8337         * pge-boot/GSEnvironment.h: New file.
8338         * pge-boot/GSFIO.c: New file.
8339         * pge-boot/GSFIO.h: New file.
8340         * pge-boot/GSYSTEM.c: New file.
8341         * pge-boot/GSYSTEM.h: New file.
8342         * pge-boot/GScan.h: New file.
8343         * pge-boot/GSelective.c: New file.
8344         * pge-boot/GStdIO.c: New file.
8345         * pge-boot/GStdIO.h: New file.
8346         * pge-boot/GStorage.c: New file.
8347         * pge-boot/GStorage.h: New file.
8348         * pge-boot/GStrCase.c: New file.
8349         * pge-boot/GStrCase.h: New file.
8350         * pge-boot/GStrIO.c: New file.
8351         * pge-boot/GStrIO.h: New file.
8352         * pge-boot/GStrLib.c: New file.
8353         * pge-boot/GStrLib.h: New file.
8354         * pge-boot/GStringConvert.h: New file.
8355         * pge-boot/GSymbolKey.c: New file.
8356         * pge-boot/GSymbolKey.h: New file.
8357         * pge-boot/GSysExceptions.c: New file.
8358         * pge-boot/GSysExceptions.h: New file.
8359         * pge-boot/GSysStorage.c: New file.
8360         * pge-boot/GSysStorage.h: New file.
8361         * pge-boot/GTimeString.h: New file.
8362         * pge-boot/GUnixArgs.cc: New file.
8363         * pge-boot/GUnixArgs.h: New file.
8364         * pge-boot/Gabort.c: New file.
8365         * pge-boot/Gbnflex.c: New file.
8366         * pge-boot/Gbnflex.h: New file.
8367         * pge-boot/Gcbuiltin.c: New file.
8368         * pge-boot/Gdtoa.c: New file.
8369         * pge-boot/Gdtoa.h: New file.
8370         * pge-boot/Gerrno.c: New file.
8371         * pge-boot/Gerrno.h: New file.
8372         * pge-boot/Gldtoa.c: New file.
8373         * pge-boot/Gldtoa.h: New file.
8374         * pge-boot/Glibc.c: New file.
8375         * pge-boot/Glibc.h: New file.
8376         * pge-boot/Glibm.c: New file.
8377         * pge-boot/Glibm.h: New file.
8378         * pge-boot/Gmcrts.c: New file.
8379         * pge-boot/Gmcrts.h: New file.
8380         * pge-boot/Gnetwork.h: New file.
8381         * pge-boot/Gpge.c: New file.
8382         * pge-boot/Gtermios.cc: New file.
8383         * pge-boot/Gtermios.h: New file.
8384         * pge-boot/Gwrapc.c: New file.
8385         * pge-boot/Gwrapc.h: New file.
8386         * pge-boot/README: New file.
8387         * pge-boot/m2rts.h: New file.
8388         * pge-boot/main.c: New file.
8389         * pge-boot/network.c: New file.
8390         * plugin/README: New file.
8391         * plugin/m2rte.cc: New file.
8392         * tools-src/README: New file.
8393         * tools-src/boilerplate.py: New file.
8394         * tools-src/buildpg: New file.
8395         * tools-src/calcpath: New file.
8396         * tools-src/def2doc.py: New file.
8397         * tools-src/makeSystem: New file.
8398         * tools-src/mklink.c: New file.
8399         * tools-src/tidydates.py: New file.
8400         * images/LICENSE.IMG: New file.
8401         * images/gnupng: New file.
8402         * images/gnu.eps: New file.
8403         * version.c: New file.
8404         * configure: Rebuilt.
8405         * target-independent/Builtins.texi: New file.
8406         * target-independent/SYSTEM-iso.texi: New file.
8407         * target-independent/SYSTEM-pim.texi: New file.
8408         * target-independent/gm2-libs.texi: New file.
8409         * target-independent/readme.txt: New file.