Daily bump.
[official-gcc.git] / gcc / m2 / ChangeLog
blob3d185fe2e590178ab0b4e5c6d0209e391eeae39d
1 2024-04-09  Gaius Mulley  <gaiusmod2@gmail.com>
3         * tools-src/makeSystem: Invoke ${COMPILER} once and adjust
4         the echo string to expand the shell variables with -wrapper
5         gdb, --args.
7 2024-04-09  Gaius Mulley  <gaiusmod2@gmail.com>
9         PR modula2/114648
10         * gm2-compiler/M2Options.mod (LineDirectives): Initially
11         set to true.
13 2024-04-06  Gaius Mulley  <gaiusmod2@gmail.com>
15         PR modula2/114617
16         * gm2-compiler/M2GenGCC.mod (CodeStatememt): Add quad trace.
17         (ResolveConstantExpressions): Add parameter p to FoldIfLess,
18         FoldIfGre, FoldIfLessEqu, FoldIfGreEqu, FoldIfEqu, FoldIfNotEqu,
19         FoldIfIn and FoldIfNotIn.
20         (CodeInline): Add constExpr variable and pass it to GetQuadOtok.
21         (CodeReturnValue): Ditto.
22         (CodeParam): Ditto.
23         (FoldStringLength): Ditto.
24         (FoldStringConvertM2nul): Ditto.
25         (FoldStringConvertCnul): Ditto.
26         (DeclaredOperandsBecomes): Ditto.
27         (TypeCheckBecomes): Ditto.
28         (PerformFoldBecomes): Ditto.
29         (CodeBecomes): Ditto.
30         (CheckElementSetTypes): Ditto.
31         (CodeBinarySet): Ditto.
32         (PerformCodeIfLess): Ditto.
33         (PerformCodeIfGre): Ditto.
34         (PerformCodeIfLessEqu): Ditto.
35         (PerformCodeIfGreEqu): Ditto.
36         (PerformCodeIfEqu): Ditto.
37         (PerformCodeIfNotEqu): Ditto.
38         (IsValidExpressionRelOp): Ditto.
39         (PerformCodeIfIn): Ditto.
40         (PerformCodeIfNotIn): Ditto.
41         (CodeXIndr): Ditto.
42         (QuadCondition): New procedure function.
43         (IsBooleanRelOpPattern): Ditto.
44         (FoldBooleanRelopPattern): Ditto.
45         (FoldIfGre): Check for boolean relop constant expression and
46         add parameter p.
47         (FoldIfLessEqu): Ditto.
48         (FoldIfIn): Ditto.
49         (FoldIfEqu): Ditto.
50         (FoldIfNotIn): Ditto.
51         (FoldIfGreEqu): New procedure.
52         (FoldIfNotEqu): Ditto.
53         * gm2-compiler/M2Optimize.mod (ReduceBranch): Add constExpr
54         variable and pass it to GetQuadOtok.
55         * gm2-compiler/M2Quads.def (IsBecomes): New procedure function.
56         (IsDummy): Ditto.
57         (IsQuadConstExpr): Ditto.
58         (SetQuadConstExpr): Ditto.
59         (GetQuadDest): New procedure.
60         (GetQuadOp1): New procedure.
61         (GetQuadOp2): New procedure.
62         (GetQuadOp3): New procedure.
63         (GetQuadOtok): New procedure.
64         (GetQuadOTypetok): New procedure.
65         (PutQuadOtok): New procedure.
66         (IsInConstParameters): New procedure function.
67         * gm2-compiler/M2Quads.mod (IsBecomes): New procedure function.
68         (IsDummy): Ditto.
69         (IsQuadConstExpr): Ditto.
70         (SetQuadConstExpr): Ditto.
71         (GetQuadDest): New procedure.
72         (GetQuadOp1): New procedure.
73         (GetQuadOp2): New procedure.
74         (GetQuadOp3): New procedure.
75         (GetQuadOtok): New procedure.
76         (GetQuadOTypetok): New procedure.
77         (PutQuadOtok): New procedure.
78         (IsInConstParameters): New procedure function.
79         (ConstStack): Remove to ...
80         (ConstExprStack): ... this.
81         (ConstParamStack): New variable and initialize.
82         (QuadFrame): New field ConstExpr.
83         (GetQuadOtok): Add parameter constExpr and assign.
84         (PutQuadOtok): Add constExpr parameter and assign.
85         (PutQuadOType): Ditto.
86         (GetQuadOTypetok): Ditto.
87         (EraseQuad): Assign ConstExpr to FALSE.
88         (FoldSubrange): Set ConstExpr to FALSE in BecomesOp.
89         (PushInConstParameters): New procedure.
90         (PopInConstParameters): New procedure.
91         (IsInConstParameters): New procedure function.
92         * gm2-compiler/M2SymInit.mod (IssueConditional): Add
93         constExpr boolean variable.
94         (CheckReadBeforeInitQuad): Ditto.
95         (trashParam): Ditto.
96         * gm2-compiler/P3Build.bnf (ConstExpression): Call
97         PushInConstExpression and PopInConstExpression.
98         (ConstSetOrQualidentOrFunction): Call
99         PushInConstParameters and PopInConstParameters.
100         * gm2-compiler/PCBuild.bnf (ConstExpression): Call
101         PushInConstExpression and PopInConstExpression.
102         * gm2-compiler/PHBuild.bnf: Ditto
103         * gm2-gcc/m2expr.cc (m2expr_BuildCondIfExpression): New
104         function.
105         * gm2-gcc/m2expr.def (BuildCondIfExpression): New prototype.
106         * gm2-gcc/m2expr.h (m2expr_BuildCondIfExpression): New function.
108 2024-04-05  Christophe Lyon  <christophe.lyon@linaro.org>
110         * Make-lang.in (m2.install-dvi): New rule.
112 2024-04-02  Gaius Mulley  <gaiusmod2@gmail.com>
114         PR modula2/114565
115         * gm2-compiler/M2GenGCC.mod (CodeStatement): Test
116         GetDebugTraceQuad before calling DisplayQuad.
117         * gm2-compiler/M2LexBuf.mod (NumberIO): Import CardToStr.
118         (GetToken): Test GetDebugTraceToken before writing the
119         token number or token line.
120         * gm2-compiler/M2Options.def (SetDebugTraceQuad): Rename to
121         (SetM2DebugTraceFilter): ...this.
122         (SetDebugTraceAPI): Remove.
123         (GetDebugTraceQuad): New procedure function.
124         (GetDebugTraceTree): Ditto.
125         (GetDebugTraceToken): Ditto.
126         (GetDebugTraceLine): Ditto.
127         (GetDebugFunctionLineNumbers): Ditto.
128         * gm2-compiler/M2Options.mod (DebugFunctionLineNumbers): New
129         boolean variable.
130         (DebugTraceQuad): Ditto.
131         (DebugTraceTree): Ditto.
132         (DebugTraceLine): Ditto.
133         (DebugTraceToken): Ditto.
134         (errors1): New procedure.
135         (SetDebugTraceQuad): Remove.
136         (SetM2DebugTraceFilter): New procedure implemented.
137         (SetM2DebugTrace): Ditto.
138         (GetDebugTraceQuad): Ditto.
139         (GetDebugTraceToken ): Ditto.
140         (GetDebugTraceLine): Ditto.
141         (SetDebugTraceLine): Remove.
142         * gm2-compiler/M2Quads.mod (GenQuadOTrash): Test
143         GetDebugTraceQuad and call DisplayQuad.
144         (GenQuadOTypetok): Ditto.
145         * gm2-compiler/SymbolTable.mod: Replace
146         DebugFunctionLineNumbers with GetDebugFunctionLineNumbers.
147         * gm2-gcc/init.cc (_M2_M2LangDump_init): Add prototype.
148         (init_PerCompilationInit): Add call.
149         * gm2-gcc/m2misc.cc (m2misc_cerror): New function.
150         (m2misc_error): Ditto.
151         * gm2-gcc/m2misc.def (error): New procedure.
152         (cerror): Ditto.
153         * gm2-gcc/m2misc.h (m2misc_cerror): New prototype.
154         (m2misc_error): Ditto.
155         * gm2-gcc/m2options.h (M2Options_SetDebugTraceQuad): New
156         prototype.
157         (M2Options_SetDebugTraceAPI): Remove.
158         (M2Options_GetDebugTraceToken): New prototype.
159         (M2Options_GetDebugTraceLine): Ditto.
160         (M2Options_SetDebugFunctionLineNumbers): Ditto.
161         (M2Options_GetDebugFunctionLineNumbers): Ditto.
162         (M2Options_SetM2DebugTraceFilter): Ditto.
163         * gm2-lang.cc (gm2_langhook_init_options): Remove
164         OPT_fdebug_trace_quad case.
165         Remove OPT_fdebug_trace_api case.
166         Add OPT_fm2_debug_trace_ case.
167         * lang.opt (fm2-debug-trace): New option.
168         (fdebug-trace-api): Remove.
169         (fdebug-trace-quad): Remove.
170         * m2.flex (m2flex_M2Error): Check s for NULL.
171         (skipnewline): New function.
172         (consumeLine): Call traceline.
174 2024-04-01  Gaius Mulley  <gaiusmod2@gmail.com>
176         PR modula2/114548
177         * gm2-compiler/M2Quads.mod (ConvertToAddress): Pass
178         procedure, false parameters to BuildConvertFunction.
179         (PushOne): Pass procedure, true parameters to
180         BuildConvertFunction.
181         Remove usused parameter internal.
182         (BuildPseudoBy): Remove parameter to PushOne.
183         (BuildIncProcedure): Ditto.
184         (BuildDecProcedure): Ditto.
185         (BuildFunctionCall): Add ConstExpr parameter to
186         BuildPseudoFunctionCall.
187         (BuildConstFunctionCall): Add procedure and true to
188         BuildConvertFunction.
189         (BuildPseudoFunctionCall): Add ConstExpr parameter.
190         Pass ProcSym and ConstExpr to BuildLengthFunction,
191         BuildConvertFunction, BuildOddFunction, BuildAbsFunction,
192         BuildCapFunction, BuildValFunction, BuildChrFunction,
193         BuildOrdFunction, BuildIntFunction, BuildTruncFunction,
194         BuildFloatFunction, BuildAddAdrFunction, BuildSubAdrFunction,
195         BuildDifAdrFunction, BuildCastFunction, BuildReFunction,
196         BuildImFunction and BuildCmplxFunction.
197         (BuildAddAdrFunction): Add ProcSym, ConstExpr parameters and
198         check for constant parameters.
199         (BuildSubAdrFunction): Ditto.
200         (BuildDifAdrFunction): Ditto.
201         (ConstExprError): Ditto.
202         (BuildLengthFunction): Ditto.
203         (BuildOddFunction): Ditto.
204         (BuildAbsFunction): Ditto.
205         (BuildCapFunction): Ditto.
206         (BuildChrFunction): Ditto.
207         (BuildOrdFunction): Ditto.
208         (BuildIntFunction): Ditto.
209         (BuildValFunction): Ditto.
210         (BuildCastFunction): Ditto.
211         (BuildConvertFunction): Ditto.
212         (BuildTruncFunction): Ditto.
213         (BuildFloatFunction): Ditto.
214         (BuildReFunction): Ditto.
215         (BuildImFunction): Ditto.
216         (BuildCmplxFunction): Ditto.
218 2024-03-31  Christophe Lyon  <christophe.lyon@linaro.org>
220         * Make-lang.in (m2.install-info): Fix rule.
222 2024-03-31  Christophe Lyon  <christophe.lyon@linaro.org>
224         * Make-lang.in (install-html): New rule.
226 2024-03-28  Gaius Mulley  <gaiusmod2@gmail.com>
228         PR modula2/114520
229         * gm2-compiler/P0SyntaxCheck.bnf (DetectImport): New
230         procedure.
231         (EnableImportCheck): New boolean.
232         (Expect): Call DetectImport.
233         (Export): Set EnableImportCheck TRUE before ';' and FALSE
234         afterwards.
236 2024-03-28  Gaius Mulley  <(no_default)>
238         PR modula2/114517
239         * gm2-compiler/M2Options.def (SetCpp): Add comment.
240         (GetCpp): Move after SetCpp.
241         (GetLineDirectives): New procedure function.
242         * gm2-compiler/M2Options.mod (GetLineDirectives): New
243         procedure function.
244         * gm2-gcc/m2options.h (M2Options_GetLineDirectives): New
245         prototype.
246         * gm2-lang.cc (gm2_langhook_init_options): OPT_fcpp only
247         assert if !value.
248         * m2.flex: Test GetLineDirectives before changing to LINE0
249         state.
251 2024-03-28  Gaius Mulley  <gaiusmod2@gmail.com>
253         * target-independent/m2/Builtins.texi: Rebuilt.
254         * target-independent/m2/gm2-libs.texi: Rebuilt.
256 2024-03-26  Gaius Mulley  <gaiusmod2@gmail.com>
258         PR modula2/114478
259         * gm2-gcc/m2builtins.cc (struct builtin_macro_definition): New struct.
260         (lookup_builtin_macro): New function.
261         (m2builtins_BuildBuiltinTree): Rewrite to lookup builtin function
262         and builtin macro.
263         (lookup_builtin_function): New function.
264         (define_builtin): Rename parameter type to prototype push macro
265         definition to builtin_macros vector.
266         (define_builtin_ext): New function.
267         (define_builtin_math): New function.
268         (m2builtins_init): Add isgreater, isless, isgreaterequal,
269         islessequal, islessgreater, isunordered, isnormal to macro definitions.
270         * gm2-libs/Builtins.def (isgreater): New procedure function.
271         (isgreaterf): Ditto.
272         (isgreaterl): Ditto.
273         (isgreaterequal): Ditto.
274         (isgreaterequalf): Ditto.
275         (isgreaterequall): Ditto.
276         (isless): Ditto.
277         (islessf): Ditto.
278         (islessl): Ditto.
279         (islessequal): Ditto.
280         (islessequalf): Ditto.
281         (islessequall): Ditto.
282         (islessgreater): Ditto.
283         (islessgreaterf): Ditto.
284         (islessgreaterl): Ditto.
285         (isunordered): Ditto.
286         (isunorderedf): Ditto.
287         (isunorderedl): Ditto.
288         (iseqsig): Ditto.
289         (iseqsigf): Ditto.
290         (iseqsigl): Ditto.
291         (isnormal): Ditto.
292         (isnormalf): Ditto.
293         (isnormall): Ditto.
294         (isinf_sign): Ditto.
295         (isinf_signf): Ditto.
296         (isinf_signl): Ditto.
297         * gm2-libs/Builtins.mod (isgreater): New procedure function.
298         (isgreaterf): Ditto.
299         (isgreaterl): Ditto.
300         (isgreaterequal): Ditto.
301         (isgreaterequalf): Ditto.
302         (isgreaterequall): Ditto.
303         (isless): Ditto.
304         (islessf): Ditto.
305         (islessl): Ditto.
306         (islessequal): Ditto.
307         (islessequalf): Ditto.
308         (islessequall): Ditto.
309         (islessgreater): Ditto.
310         (islessgreaterf): Ditto.
311         (islessgreaterl): Ditto.
312         (isunordered): Ditto.
313         (isunorderedf): Ditto.
314         (isunorderedl): Ditto.
315         (iseqsig): Ditto.
316         (iseqsigf): Ditto.
317         (iseqsigl): Ditto.
318         (isnormal): Ditto.
319         (isnormalf): Ditto.
320         (isnormall): Ditto.
321         (isinf_sign): Ditto.
322         (isinf_signf): Ditto.
323         (isinf_signl): Ditto.
325 2024-03-25  Gaius Mulley  <gaiusmod2@gmail.com>
327         * Make-lang.in (doc/m2.pdf): Add line break.
328         * target-independent/m2/Builtins.texi: Rebuilt.
329         * target-independent/m2/gm2-libs.texi: Rebuilt.
331 2024-03-23  Gaius Mulley  <gaiusmod2@gmail.com>
333         PR modula2/114444
334         * gm2-compiler/M2Quads.mod (BuildTruncFunction): Correct
335         error format specifier.
336         (BuildFloatFunction): Correct error format specifier.
338 2024-03-23  Gaius Mulley  <gaiusmod2@gmail.com>
340         PR modula2/114443
341         * m2.flex: Call AddTokCharStar with a stringtok if
342         end of line is reached without a closing quote.
344 2024-03-22  Gaius Mulley  <gaiusmod2@gmail.com>
346         PR modula2/114422
347         * gm2-compiler/M2Quads.mod (BuildConstructor): Add escape
348         character.
350 2024-03-21  Gaius Mulley  <gaiusmod2@gmail.com>
352         PR modula2/113836
353         * Make-lang.in (GM2_C_OBJS): Add m2/gm2-gcc/m2pp.o.
354         (m2/m2pp.o): Remove rule.
355         (GM2-COMP-BOOT-DEFS): Add M2LangDump.def.
356         (GM2-COMP-BOOT-MODS): Add M2LangDump.mod.
357         (GM2-GCC-DEFS): Add M2LangDump.def.
358         (GM2-GCC-MODS): Add M2LangDump.mod.
359         * gm2-compiler/M2CaseList.mod (WriteCase): Rewrite.
360         * gm2-compiler/M2Code.mod (DoModuleDeclare): Call
361         DumpFilteredResolver depending upon DumpLangDecl.
362         (DoCodeBlock): Call CreateDumpGimple depending upon
363         DumpLangGimple.
364         (Code): Replace DisplayQuadList blocks with DumpQuadruples.
365         (DisplayQuadsInScope): Remove.
366         (DisplayQuadNumbers): Remove.
367         (CodeBlock): Rewrite.
368         * gm2-compiler/M2GCCDeclare.def (IncludeDumpSymbol): New procedure.
369         (DumpFilteredResolver): New procedure.
370         (DumpFilteredDefinitive): New procedure.
371         * gm2-compiler/M2GCCDeclare.mod (IncludeDumpSymbol): New procedure.
372         (DumpFilteredResolver): New procedure.
373         (DumpFilteredDefinitive): New procedure.
374         (doInclude): Rewrite to use GetDumpFile.
375         (WatchIncludeList): Remove fixed debugging value.
376         (doExclude): Rewrite to use GetDumpFile.
377         (DeclareTypesConstantsProceduresInRange): Remove fixed debugging
378         values.
379         (PreAddModGcc): Rename parameter t as tree.
380         (IncludeGetNth): Rewrite to use GetDumpFile.
381         (IncludeType): Ditto.
382         (IncludeSubscript): Ditto.
383         (PrintLocalSymbol): Ditto.
384         (PrintLocalSymbols): Ditto.
385         (IncludeGetVarient): Ditto.
386         (PrintDeclared): Ditto.
387         (PrintAlignment): Ditto.
388         (PrintDecl): Ditto.
389         (PrintScope): Ditto.
390         (PrintProcedure): Ditto.
391         (PrintSym): Ditto.
392         (PrintSymbol): Ditto.
393         (PrintTerse): Ditto.
394         * gm2-compiler/M2Options.def (GetDumpLangDeclFilename): New
395         procedure function.
396         (SetDumpLangDeclFilename): New procedure.
397         (GetDumpLangQuadFilename): New procedure function.
398         (SetDumpLangQuadFilename): New procedure.
399         (GetDumpLangGimpleFilename): New procedure function.
400         (SetDumpLangGimpleFilename): New procedure.
401         (SetM2DumpFilter): New procedure.
402         (GetM2DumpFilter): New procedure function.
403         (GetDumpLangGimple): New procedure function.
404         * gm2-compiler/M2Options.mod (GetDumpLangDeclFilename): New
405         procedure function.
406         (SetDumpLangDeclFilename): New procedure.
407         (GetDumpLangQuadFilename): New procedure function.
408         (SetDumpLangQuadFilename): New procedure.
409         (GetDumpLangGimpleFilename): New procedure function.
410         (SetDumpLangGimpleFilename): New procedure.
411         (SetM2DumpFilter): New procedure.
412         (GetM2DumpFilter): New procedure function.
413         (GetDumpLangGimple): New procedure function.
414         * gm2-compiler/M2Quads.def (DumpQuadruples): New procedure.
415         * gm2-compiler/M2Quads.mod (DumpUntil): New procedure.
416         (GetCtorInit): New procedure function.
417         (GetCtorFini): New procedure function.
418         (DumpQuadrupleFilter): New procedure function.
419         (DumpQuadrupleAll): New procedure.
420         (DisplayQuadList): Remove procedure.
421         (DumpQuadruples): New procedure.
422         (DisplayQuadRange): Rewrite.
423         (DisplayQuad): Ditto.
424         (DisplayProcedureAttributes): Ditto.
425         (WriteOperator): Ditto.
426         (WriteMode): Ditto.
427         * gm2-compiler/M2Scope.mod (ForeachScopeBlockDo2): Replace
428         DisplayQuadruples with TraceQuadruples.
429         (ForeachScopeBlockDo3): Replace DisplayQuadruples with
430         TraceQuadruples.
431         * gm2-compiler/SymbolConversion.def (Gcc2Mod): New procedure function.
432         * gm2-compiler/SymbolConversion.mod: New procedure function.
433         * gm2-gcc/m2misc.cc (m2misc_DebugTree): New function.
434         (m2misc_DebugTreeChain): New function.
435         * gm2-gcc/m2options.h (M2Options_GetDumpLangDeclFilename): New
436         prototype.
437         (M2Options_SetDumpLangDeclFilename): New prototype.
438         (M2Options_GetDumpLangQuadFilename): New prototype.
439         (M2Options_SetDumpLangQuadFilename): New prototype.
440         (M2Options_GetDumpLangGimpleFilename): New prototype.
441         (M2Options_SetDumpLangGimpleFilename): New prototype.
442         (M2Options_GetDumpLangGimple): New prototype.
443         (M2Options_SetM2DumpFilter): New prototype.
444         (M2Options_GetM2DumpFilter): New prototype.
445         * m2pp.cc: Move to...
446         * gm2-gcc/m2pp.cc: ...here.
447         * m2pp.h: Move to...
448         * gm2-gcc/m2pp.h: ...here.
449         * gm2-gcc/m2statement.cc (m2statement_BuildEndFunctionCode): Call
450         m2pp_dump_gimple.
451         * gm2-lang.cc (ENABLE_QUAD_DUMP_ALL): New define.
452         (gm2_langhook_init_options): Add switch cases for proposed new
453         command line options.
454         * gm2-libs/DynamicStrings.def (ReverseIndex): New procedure
455         function.
456         * gm2-libs/DynamicStrings.mod: New procedure function.
457         * gm2-compiler/M2LangDump.def: New file.
458         * gm2-compiler/M2LangDump.mod: New file.
459         * gm2-gcc/m2langdump.h: New file.
460         * gm2-gcc/m2pp.def: New file.
462 2024-03-21  Gaius Mulley  <gaiusmod2@gmail.com>
464         PR modula2/114418
465         * gm2-compiler/PCSymBuild.mod (PushConstFunctionType): Check
466         func against NulSym and issue an error.
468 2024-03-18  Gaius Mulley  <gaiusmod2@gmail.com>
470         PR modula2/114380
471         * gm2-compiler/SymbolTable.mod (GetLowestType): Do not
472         skip over a set type, but return sym.
474 2024-03-17  Gaius Mulley  <gaiusmod2@gmail.com>
476         PR modula2/114296
477         * gm2-compiler/M2ALU.mod (ElementsSolved): Add tokenno parameter.
478         Add constant checks and generate error messages.
479         (EvalSetValues): Pass tokenno parameter to ElementsSolved.
480         * gm2-compiler/M2LexBuf.mod (stop): New procedure.
481         (MakeVirtualTok): Call stop if caret = BadTokenNo.
482         * gm2-compiler/M2Quads.def (BuildNulExpression): Add tokpos
483         parameter.
484         (BuildSetStart): Ditto.
485         (BuildEmptySet): Ditto.
486         (BuildConstructorEnd): Add startpos parameter.
487         (BuildTypeForConstructor): Add tokpos parameter.
488         * gm2-compiler/M2Quads.mod (BuildNulExpression): Add tokpos
489         parameter and push tokpos to the quad stack.
490         (BuildSetStart): Add tokpos parameter and push tokpos.
491         (BuildSetEnd): Rewrite.
492         (BuildEmptySet): Add tokpos parameter and push tokpos with
493         the set type.
494         (BuildConstructorStart): Pop typepos.
495         (BuildConstructorEnd): Add startpos parameter.
496         Create valtok from startpos and cbratokpos.
497         (BuildTypeForConstructor): Add tokpos parameter.
498         * gm2-compiler/M2Range.def (InitAssignmentRangeCheck): Rename
499         d to des and e to expr.
500         Add destok and exprtok parameters.
501         * gm2-compiler/M2Range.mod (InitAssignmentRangeCheck): Rename
502         d to des and e to expr.
503         Add destok and exprtok parameters.
504         Save destok and exprtok into range record.
505         (FoldAssignment): Pass exprtok to TryDeclareConstant.
506         * gm2-compiler/P3Build.bnf (ComponentValue): Rewrite.
507         (Constructor): Rewrite.
508         (ConstSetOrQualidentOrFunction): Rewrite.
509         (SetOrQualidentOrFunction): Rewrite.
510         * gm2-compiler/PCBuild.bnf (ConstSetOrQualidentOrFunction): Rewrite.
511         (SetOrQualidentOrFunction): Rewrite.
512         * gm2-compiler/PHBuild.bnf (Constructor): Rewrite.
513         (ConstSetOrQualidentOrFunction): Rewrite.
515 2024-03-14  Gaius Mulley  <gaiusmod2@gmail.com>
517         PR modula2/114294
518         * gm2-compiler/M2Quads.mod (BuildConstHighFromSym):
519         Call PutConst to assign the type Cardinal in the result
520         constant.
522 2024-03-14  Gaius Mulley  <gaiusmod2@gmail.com>
524         PR modula2/114333
525         * gm2-compiler/M2GenGCC.mod (CodeStatement): Remove op1, op2 and
526         op3 parameters to CodeIfLess, CodeIfLessEqu, CodeIfGreEqu, CodeIfGre,
527         CodeIfIn, CodeIfNotIn.
528         (CodeIfLess): Rewrite.
529         (PerformCodeIfLess): New procedure.
530         (CodeIfLess): Rewrite.
531         (PerformCodeIfLess): New procedure.
532         (CodeIfLessEqu): Rewrite.
533         (PerformCodeIfLessEqu): New procedure.
534         (CodeIfGreEqu): Rewrite.
535         (PerformCodeIfGreEqu): New procedure.
536         (CodeIfGre): Rewrite.
537         (PerformCodeIfGre): New procedure.
538         (CodeIfIn): Rewrite.
539         (PerformCodeIfIn): New procedure.
540         (CodeIfNotIn): Rewrite.
541         (PerformCodeIfNotIn): New procedure.
543 2024-03-14  Gaius Mulley  <gaiusmod2@gmail.com>
545         PR modula2/114333
546         * gm2-compiler/M2Check.mod (checkUnbounded): New procedure
547         function.
548         (checkArrayTypeEquivalence): Extend checking to cover unbounded
549         arrays, arrays and constants.
550         (IsTyped): Simplified the expression and corrected a test for
551         IsConstructor.
552         (checkTypeKindViolation): New procedure function.
553         (doCheckPair): Call checkTypeKindViolation.
554         * gm2-compiler/M2GenGCC.mod (CodeStatement): Remove parameters
555         to CodeEqu and CodeNotEqu.
556         (PerformCodeIfEqu): New procedure.
557         (CodeIfEqu): Rewrite.
558         (PerformCodeIfNotEqu): New procedure.
559         (CodeIfNotEqu): Rewrite.
560         * gm2-compiler/M2Quads.mod (BuildRelOpFromBoolean): Correct
561         comment.
563 2024-03-11  Gaius Mulley  <gaiusmod2@gmail.com>
565         PR modula2/114295
566         * gm2-compiler/M2Batch.mod (MakeProgramSource): Call PutDeclared
567         if the module is known.
568         (MakeDefinitionSource): Ditto.
569         (MakeImplementationSource): Ditto.
570         * gm2-compiler/M2Comp.mod (ExamineHeader): New procedure.
571         (ExamineCompilationUnit): Rewrite.
572         (PeepInto): Rewrite.
573         * gm2-compiler/M2Error.mod (NewError): Remove default call to
574         GetTokenNo.
575         * gm2-compiler/M2Quads.mod (callRequestDependant): Push tokno with
576         Adr.
577         (BuildStringAdrParam): Ditto.
578         (doBuildBinaryOp): Push OperatorPos on the bool stack.
579         (BuildRelOp): Ditto.
580         * gm2-compiler/P2Build.bnf (SetType): Pass set token pos to
581         BuildSetType.
582         (PointerType): Pass pointer token pos to BuildPointerType.
583         * gm2-compiler/P2SymBuild.def (BuildPointerType): Add parameter
584         pointerpos.
585         (BuildSetType): Add parameter setpos.
586         * gm2-compiler/P2SymBuild.mod (BuildPointerType): Add parameter
587         pointerpos.  Build combined token and use it when creating a
588         pointer type.
589         (BuildSetType): Add parameter setpos.  Build combined token and
590         use it when creating a set type.
591         * gm2-compiler/SymbolTable.mod (DebugUnknownToken): New constant.
592         (CheckTok): New procedure function.
593         (MakeProcedure): Call CheckTok.
594         (MakeRecord): Ditto.
595         (MakeVarient): Ditto.
596         (MakeEnumeration): Ditto.
597         (MakeHiddenType): Ditto.
598         (MakeConstant): Ditto.
599         (MakeConstStringCnul): Ditto.
600         (MakeSubrange): Ditto.
601         (MakeTemporary): Ditto.
602         (MakeVariableForParam): Ditto.
603         (MakeParameterHeapVar): Ditto.
604         (MakePointer): Ditto.
605         (MakeSet): Ditto.
606         (MakeUnbounded): Ditto.
607         (MakeProcType): Ditto.
609 2024-03-08  Gaius Mulley  <gaiusmod2@gmail.com>
611         * gm2-compiler/M2Quads.mod (Init): Use InitIndexTuned with
612         default size 65K.
613         * gm2-compiler/SymbolConversion.mod (Init): Ditto.
614         * gm2-compiler/SymbolTable.mod (BEGIN): Ditto.
615         * mc-boot/GM2Dependent.cc: Rebuild.
616         * mc-boot/GM2Dependent.h: Rebuild.
617         * mc-boot/GM2RTS.cc: Rebuild.
618         * pge-boot/GIndexing.cc: Rebuild.
619         * pge-boot/GIndexing.h: Rebuild.
620         * pge-boot/GM2Dependent.cc: Rebuild.
621         * pge-boot/GM2Dependent.h: Rebuild.
622         * pge-boot/GM2RTS.cc: Rebuild.
624 2024-03-07  Gaius Mulley  <gaiusmod2@gmail.com>
626         PR modula2/109969
627         * gm2-compiler/M2LexBuf.def (TokenToLineNo): Rename parameter.
628         (TokenToColumnNo): Rename parameter.
629         (TokenToLocation): Rename parameter.
630         (FindFileNameFromToken): Rename parameter.
631         (DumpTokens): Rewrite comment.
632         * gm2-compiler/M2LexBuf.mod: Rewrite.
633         * gm2-compiler/P0SyntaxCheck.bnf (CheckInsertCandidate):
634         DumpTokens before and after inserting recovery token.
635         * gm2-gcc/m2builtins.cc (do_target_support_exists): Add
636         bf_c99_compl case.
637         * gm2-libs/Indexing.def (InitIndexTuned): New procedure
638         function.
639         (IsEmpty): New procedure function.
640         * gm2-libs/Indexing.mod (InitIndexTuned): New procedure
641         function.
642         (IsEmpty): New procedure function.
643         (Index): New field GrowFactor.
644         (PutIndice): Use GrowFactor to extend dynamic array.
646 2024-03-04  Gaius Mulley  <gaiusmod2@gmail.com>
648         PR modula2/114227
649         * gm2-libs-iso/M2RTS.mod (ProcedureChain): Remove.
650         (ProcedureList): Remove.
651         (ExecuteReverse): Remove.
652         (ExecuteTerminationProcedures): Rewrite.
653         (ExecuteInitialProcedures): Rewrite.
654         (AppendProc): Remove.
655         (InstallTerminationProcedure): Rewrite.
656         (InstallInitialProcedure): Rewrite.
657         (InitProcList): Remove.
658         * gm2-libs/M2Dependent.def (InstallTerminationProcedure):
659         New procedure.
660         (ExecuteTerminationProcedures): New procedure.
661         (InstallInitialProcedure): New procedure.
662         (ExecuteInitialProcedures): New procedure.
663         * gm2-libs/M2Dependent.mod (ProcedureChain): New type.
664         (ProcedureList): New type.
665         (ExecuteReverse): New procedure.
666         (ExecuteTerminationProcedures): New procedure.
667         (ExecuteInitialProcedures): New procedure.
668         (AppendProc): New procedure.
669         (InstallTerminationProcedure): New procedure.
670         (InstallInitialProcedure): New procedure.
671         (InitProcList): New procedure.
672         * gm2-libs/M2RTS.mod (ProcedureChain): Remove.
673         (ProcedureList): Remove.
674         (ExecuteReverse): Remove.
675         (ExecuteTerminationProcedures): Rewrite.
676         (ExecuteInitialProcedures): Rewrite.
677         (AppendProc): Remove.
678         (InstallTerminationProcedure): Rewrite.
679         (InstallInitialProcedure): Rewrite.
680         (InitProcList): Remove.
682 2024-02-25  Gaius Mulley  <gaiusmod2@gmail.com>
684         PR modula2/113749
685         * Make-lang.in (BUILD-PGE-O): Add m2/pge-boot/Gwrapc.o.
686         * gm2-libs-ch/wrapc.c (wrapc_SeekSet): New function.
687         (wrapc_SeekEnd): Ditto.
688         (wrapc_ReadOnly): Ditto.
689         (wrapc_WriteOnly): Ditto.
690         * gm2-libs/FIO.mod (SEEK_SET): Remove.
691         (SEEK_END): Remove.
692         (UNIXREADONLY): Remove.
693         (UNIXWRITEONLY): Remove.
694         (ConnectToUnix): Replace UNIXWRITEONLY with a call to WriteOnly.
695         Replace UNIXREADONLY with a call to ReadOnly.
696         (SetPositionFromBeginning): Replace SEEK_SET with a call to
697         SeekSet.
698         (SetPositionFromEnd): Replace SEEK_END with a call to
699         SeekEnd.
700         * gm2-libs/wrapc.def (SeekSet): New procedure function.
701         (SeekEnd): New procedure function.
702         (ReadOnly): New procedure function.
703         (WriteOnly): New procedure function.
704         * mc-boot-ch/Glibc.c (BUILD_MC_LIBC_TRACE): Undef.
705         (check_init): New function.
706         (tracedb): Ditto.
707         (tracedb_open): Ditto.
708         (tracedb_result): Ditto.
709         (libc_read): Ditto.
710         (libc_write): Ditto.
711         (libc_close): Ditto.
712         (libc_creat): Ditto.
713         (libc_open): Ditto.
714         (libc_lseek): Ditto.
715         * mc-boot-ch/Gwrapc.c (wrapc_SeekSet): New function.
716         (wrapc_SeekEnd): Ditto.
717         (wrapc_ReadOnly): Ditto.
718         (wrapc_WriteOnly): Ditto.
719         * mc-boot/GDynamicStrings.cc: Rebuilt.
720         * mc-boot/GFIO.cc: Ditto.
721         * mc-boot/GIndexing.cc: Ditto.
722         * mc-boot/GM2Dependent.cc: Ditto.
723         * mc-boot/GM2EXCEPTION.cc: Ditto.
724         * mc-boot/GPushBackInput.cc: Ditto.
725         * mc-boot/GRTExceptions.cc: Ditto.
726         * mc-boot/GRTint.cc: Ditto.
727         * mc-boot/GSArgs.cc: Ditto.
728         * mc-boot/GStdIO.cc: Ditto.
729         * mc-boot/GStringConvert.cc: Ditto.
730         * mc-boot/GSysStorage.cc: Ditto.
731         * mc-boot/Gdecl.cc: Ditto.
732         * mc-boot/Gkeyc.cc: Ditto.
733         * mc-boot/Glibc.h: Ditto.
734         * mc-boot/GmcComment.cc: Ditto.
735         * mc-boot/GmcComp.cc: Ditto.
736         * mc-boot/GmcDebug.cc: Ditto.
737         * mc-boot/GmcMetaError.cc: Ditto.
738         * mc-boot/GmcStack.cc: Ditto.
739         * mc-boot/GmcStream.cc: Ditto.
740         * mc-boot/GnameKey.cc: Ditto.
741         * mc-boot/GsymbolKey.cc: Ditto.
742         * mc-boot/Gvarargs.cc: Ditto.
743         * mc-boot/Gwrapc.h: Ditto.
744         * mc/decl.mod (getSymName): Add pointerref clause.
745         * mc/mcStream.mod (copy): Check for an error after every read.
746         * mc/varargs.mod (copy): Rewrite pointer arithmetic using INC to
747         avoid type incompatibility.
748         * pge-boot/GDynamicStrings.cc: Rebuilt.
749         * pge-boot/GDynamicStrings.h: Ditto.
750         * pge-boot/GFIO.cc: Ditto.
751         * pge-boot/GFIO.h: Ditto.
752         * pge-boot/GIO.cc: Ditto.
753         * pge-boot/GIndexing.cc: Ditto.
754         * pge-boot/GM2Dependent.cc: Ditto.
755         * pge-boot/GM2EXCEPTION.cc: Ditto.
756         * pge-boot/GNameKey.cc: Ditto.
757         * pge-boot/GPushBackInput.cc: Ditto.
758         * pge-boot/GRTExceptions.cc: Ditto.
759         * pge-boot/GStdIO.cc: Ditto.
760         * pge-boot/GSymbolKey.cc: Ditto.
761         * pge-boot/GSysStorage.cc: Ditto.
762         * pge-boot/Glibc.h: Ditto.
763         * pge-boot/Gwrapc.cc: Ditto.
764         * pge-boot/Gwrapc.h: Ditto.
766 2024-02-22  Gaius Mulley  <gaiusmod2@gmail.com>
768         PR modula2/114055
769         * gm2-compiler/M2Check.mod (Import): IsConstLitInternal and
770         IsConstLit.
771         (isInternal): New procedure function.
772         (doCheck): Test for isInternal in either operand and early
773         return true.
774         * gm2-compiler/M2Quads.mod (PushOne): Rewrite with extra
775         parameter internal.
776         (BuildPseudoBy): Add TRUE parameter to PushOne call.
777         (BuildIncProcedure): Add FALSE parameter to PushOne call.
778         (BuildDecProcedure): Add FALSE parameter to PushOne call.
779         * gm2-compiler/M2Range.mod (ForLoopBeginTypeCompatible):
780         Uncomment code and tidy up error string.
781         * gm2-compiler/SymbolTable.def (PutConstLitInternal):
782         New procedure.
783         (IsConstLitInternal): New procedure function.
784         * gm2-compiler/SymbolTable.mod (PutConstLitInternal):
785         New procedure.
786         (IsConstLitInternal): New procedure function.
787         (SymConstLit): New field IsInternal.
788         (CreateConstLit): Initialize IsInternal to FALSE.
790 2024-02-21  Gaius Mulley  <gaiusmod2@gmail.com>
792         PR modula2/114026
793         * gm2-compiler/M2GenGCC.mod (Import): Remove DisplayQuadruples.
794         Remove DisplayQuadList.
795         (MixTypesBinary): Replace check with overflowCheck.
796         New variable typeChecking.
797         Use GenQuadOTypetok to retrieve typeChecking.
798         Use typeChecking to suppress error message.
799         * gm2-compiler/M2LexBuf.def (MakeVirtual2Tok): New procedure
800         function.
801         * gm2-compiler/M2LexBuf.mod (MakeVirtualTok): Improve comment.
802         (MakeVirtual2Tok): New procedure function.
803         * gm2-compiler/M2Quads.def (GetQuadOTypetok): New procedure.
804         * gm2-compiler/M2Quads.mod (QuadFrame): New field CheckType.
805         (PutQuadO): Rewrite using PutQuadOType.
806         (PutQuadOType): New procedure.
807         (GetQuadOTypetok): New procedure.
808         (BuildPseudoBy): Rewrite.
809         (BuildForToByDo): Remove type checking.
810         Add parameters e2, e2tok, BySym, bytok to
811         InitForLoopBeginRange.
812         Push the RangeId.
813         (BuildEndFor): Pop the RangeId.
814         Use GenQuadOTypetok to generate AddOp without type checking.
815         Call PutRangeForIncrement with the RangeId and IncQuad.
816         (GenQuadOtok): Rewrite using GenQuadOTypetok.
817         (GenQuadOTypetok): New procedure.
818         * gm2-compiler/M2Range.def (InitForLoopBeginRangeCheck):
819         Rename d as des, e as expr.
820         Add expr1, expr1tok, expr2, expr2tok, byconst, byconsttok
821         parameters.
822         (PutRangeForIncrement): New procedure.
823         * gm2-compiler/M2Range.mod (Import): MakeVirtual2Tok.
824         (Range): Add expr2, byconst, destok, exprtok, expr2tok,
825         incrementquad.
826         (InitRange): Initialize expr2 to NulSym.
827         Initialize byconst to NulSym.
828         Initialize tokenNo, destok, exprtok, expr2tok, byconst to
829         UnknownTokenNo.
830         Initialize incrementquad to 0.
831         (PutRangeForIncrement): New procedure.
832         (PutRangeDesExpr2): New procedure.
833         (InitForLoopBeginRangeCheck): Rewrite.
834         (ForLoopBeginTypeCompatible): New procedure function.
835         (CodeForLoopBegin): Call ForLoopBeginTypeCompatible and
836         only code the for loop assignment if all the type checks
837         succeed.
839 2024-02-19  Gaius Mulley  <gaiusmod2@gmail.com>
841         PR modula2/113889
842         * gm2-compiler/M2ALU.mod (StringFitsArray): Add tokeno parameter
843         to GetStringLength.
844         (InitialiseArrayOfCharWithString): Add tokeno parameter to
845         GetStringLength.
846         (CheckGetCharFromString): Add tokeno parameter to GetStringLength.
847         * gm2-compiler/M2Const.mod (constResolveViaMeta): Replace
848         PutConstString with PutConstStringKnown.
849         * gm2-compiler/M2GCCDeclare.mod (DeclareCharConstant): Add tokenno
850         parameter and add assert.  Use tokenno to generate location.
851         (DeclareStringConstant): Add tokenno and add asserts.
852         Add tokenno parameter to calls to GetStringLength.
853         (PromoteToString): Add assert and add tokenno parameter to
854         GetStringLength.
855         (PromoteToCString): Add assert and add tokenno parameter to
856         GetStringLength.
857         (DeclareConstString): New procedure function.
858         (TryDeclareConst): Remove size local variable.
859         Check IsConstStringKnown.
860         Call DeclareConstString.
861         (PrintString): New procedure.
862         (PrintVerboseFromList): Call PrintString.
863         (CheckResolveSubrange): Check IsConstStringKnown before creating
864         subrange for char or issuing an error.
865         * gm2-compiler/M2GenGCC.mod (ResolveConstantExpressions): Add
866         StringLengthOp, StringConvertM2nulOp, StringConvertCnulOp case
867         clauses.
868         (FindSize): Add assert IsConstStringKnown.
869         (StringToChar): New variable tokenno.
870         Add tokenno parameter to GetStringLength.
871         (FoldStringLength): New procedure.
872         (FoldStringConvertM2nul): New procedure.
873         (FoldStringConvertCnul): New procedure.
874         (CodeAddr): Add tokenno parameter.
875         Replace CurrentQuadToken with tokenno.
876         Add tokenno parameter to GetStringLength.
877         (PrepareCopyString): Rewrite.
878         (IsConstStrKnown): New procedure function.
879         (FoldAdd): Detect conststring op2 and op3 which are known and
880         concat.  Place result into op1.
881         (FoldStandardFunction): Pass tokenno as a parameter to
882         GetStringLength.
883         (CodeXIndr): Rewrite comment.
884         Rename op1 to left, op3 to right.
885         Pass rightpos to GetStringLength.
886         * gm2-compiler/M2Quads.def (QuadrupleOp): Add
887         StringConvertCnulOp, StringConvertM2nulOp and StringLengthOp.
888         * gm2-compiler/M2Quads.mod (import): Remove MakeConstLitString.
889         Add CopyConstString and PutConstStringKnown.
890         (IsInitialisingConst): Add StringConvertCnulOp,
891         StringConvertM2nulOp and StringLengthOp.
892         (callRequestDependant): Replace MakeConstLitString with
893         MakeConstString.
894         (DeferMakeConstStringCnul): New procedure function.
895         (DeferMakeConstStringM2nul): New procedure function.
896         (CheckParameter): Add early return if the string const is unknown.
897         (DescribeType): Add token parameter to GetStringLength.
898         Check for IsConstStringKnown.
899         (ManipulateParameters): Use DeferMakeConstStringCnul and
900         DeferMakeConstStringM2nul.
901         (MakeLengthConst): Remove and replace with...
902         (DeferMakeLengthConst): ... this.
903         (doBuildBinaryOp): Create ConstString and set it to contents
904         unknown.
905         Check IsConstStringKnown before generating error message.
906         (WriteQuad): Add StringConvertCnulOp, StringConvertM2nulOp and
907         StringLengthOp.
908         (WriteOperator): Add StringConvertCnulOp, StringConvertM2nulOp and
909         StringLengthOp.
910         * gm2-compiler/M2SymInit.mod (CheckReadBeforeInitQuad): Add
911         StringConvertCnulOp, StringConvertM2nulOp and StringLengthOp.
912         * gm2-compiler/NameKey.mod (LengthKey): Allow NulName to return 0.
913         * gm2-compiler/P2SymBuild.mod (BuildString): Replace
914         MakeConstLitString with MakeConstString.
915         (DetermineType): Replace PutConstString with PutConstStringKnown.
916         * gm2-compiler/SymbolTable.def (MakeConstVar): Tidy up comment.
917         (MakeConstLitString): Remove.
918         (MakeConstString): New procedure function.
919         (MakeConstStringCnul): New procedure function.
920         (MakeConstStringM2nul): New procedure function.
921         (PutConstStringKnown): New procedure.
922         (CopyConstString): New procedure.
923         (IsConstStringKnown): New procedure function.
924         (IsConstStringM2): New procedure function.
925         (IsConstStringC): New procedure function.
926         (IsConstStringM2nul): New procedure function.
927         (IsConstStringCnul): New procedure function.
928         (GetStringLength): Add token parameter.
929         (PutConstString): Remove.
930         (GetConstStringM2): Remove.
931         (GetConstStringC): Remove.
932         (GetConstStringM2nul): Remove.
933         (GetConstStringCnul): Remove.
934         (MakeConstStringC): Remove.
935         * gm2-compiler/SymbolTable.mod (SymConstString): Remove
936         M2Variant, NulM2Variant, CVariant, NulCVariant.
937         Add Known.
938         (CheckAnonymous): Replace $$ with __anon.
939         (IsNameAnonymous): Replace $$ with __anon.
940         (MakeConstVar): Detect whether the name is nul and treat as
941         a temporary constant.
942         (MakeConstLitString): Remove.
943         (BackFillString): Remove.
944         (InitConstString): Rewrite.
945         (GetConstStringM2): Remove.
946         (GetConstStringC): Remove.
947         (GetConstStringContent): New procedure function.
948         (GetConstStringM2nul): Remove.
949         (GetConstStringCnul): Remove.
950         (MakeConstStringCnul): Rewrite.
951         (MakeConstStringM2nul): Rewrite.
952         (MakeConstStringC): Remove.
953         (MakeConstString): Rewrite.
954         (PutConstStringKnown): New procedure.
955         (CopyConstString): New procedure.
956         (PutConstString): Remove.
957         (IsConstStringKnown): New procedure function.
958         (IsConstStringM2): New procedure function.
959         (IsConstStringC): Rewrite.
960         (IsConstStringM2nul): Rewrite.
961         (IsConstStringCnul): Rewrite.
962         (GetConstStringKind): New procedure function.
963         (GetString): Check Known.
964         (GetStringLength): Add token parameter and check Known.
966 2024-02-10  Gaius Mulley  <gaiusmod2@gmail.com>
968         PR modula2/113848
969         * gm2-libs/SArgs.mod (GetArg): Re-write address arithmetic
970         to avoid (void *) computation.
972 2024-02-03  Gaius Mulley  <gaiusmod2@gmail.com>
974         PR modula2/113730
975         * gm2-compiler/M2Base.mod (IsUserType): New procedure function.
976         (MixTypes): Use IsUserType instead of IsType before calling MixTypes.
977         * gm2-compiler/M2GenGCC.mod (GetTypeMode): Remove and import from
978         SymbolTable.
979         (CodeBinaryCheck): Replace call to MixTypes with MixTypesBinary.
980         (CodeBinary): Replace call to MixTypes with MixTypesBinary.
981         (CodeIfLess): Replace MixTypes with ComparisonMixTypes.
982         (CodeIfGre): Replace MixTypes with ComparisonMixTypes.
983         (CodeIfLessEqu): Replace MixTypes with ComparisonMixTypes.
984         (CodeIfGreEqu): Replace MixTypes with ComparisonMixTypes.
985         (CodeIfEqu): Replace MixTypes with ComparisonMixTypes.
986         (CodeIfNotEqu): Replace MixTypes with ComparisonMixTypes.
987         (ComparisonMixTypes): New procedure function.
988         * gm2-compiler/M2Quads.mod (BuildEndFor): Replace GenQuadO
989         with GenQuadOtok and pass tokenpos for the operands to the AddOp
990         and XIndrOp.
991         (CheckRangeIncDec): Check etype against NulSym and dtype for a
992         pointer and set etype to Address.
993         (BuildAddAdrFunction): New variable opa.  Convert operand to an
994         address and save result in opa.  Replace GenQuad with GenQuadOtok.
995         (BuildSubAdrFunction): New variable opa.  Convert operand to an
996         address and save result in opa.  Replace GenQuad with GenQuadOtok.
997         (BuildDiffAdrFunction): New variable opa.  Convert operand to an
998         address and save result in opa.  Replace GenQuad with GenQuadOtok.
999         (calculateMultipicand): Replace GenQuadO with GenQuadOtok.
1000         (ConvertToAddress): New procedure function.
1001         (BuildDynamicArray): Convert index to address before adding to
1002         the base.
1003         * gm2-compiler/SymbolTable.def (GetTypeMode): New procedure function.
1004         * gm2-compiler/SymbolTable.mod (GetTypeMode): New procedure
1005         function implemented (moved from M2GenGCC.mod).
1006         * gm2-libs/SArgs.mod (GetArg): Replace cast to PtrToChar with ADDRESS.
1008 2024-02-01  Gaius Mulley  <gaiusmod2@gmail.com>
1010         PR modula2/111627
1011         PR modula2/112506
1012         * gm2-compiler/M2Comp.mod (Pass0CheckMod): Test IsDefImp before
1013         checking IsDefinitionForC.
1015 2024-01-31  Gaius Mulley  <gaiusmod2@gmail.com>
1017         * gm2-compiler/M2Comp.mod (Pass0CheckMod): Tidy up comment.
1018         * gm2-compiler/P1Build.bnf (PossiblyExportIdent): Replace
1019         PushTF with PushTFtok.
1021 2024-01-26  Gaius Mulley  <gaiusmod2@gmail.com>
1023         * gm2-compiler/M2Check.mod (dumpIndice): New procedure.
1024         (dumpIndex): New procedure.
1025         (dumptInfo): New procedure.
1026         (buildError4): Add comment and pass formal and actual to
1027         MetaError4.  Improve text describing error.
1028         (buildError2): Generate different error descriptions for
1029         the three error kinds.
1030         (checkConstMeta): Add block comment.  Add more meta checks
1031         and call doCheckPair to complete string const checking.
1032         Add tinfo parameter.
1033         (checkConstEquivalence): Add tinfo parameter.
1034         * gm2-compiler/M2GCCDeclare.mod (PrintVerboseFromList):
1035         Print the length of a const string.
1036         * gm2-compiler/M2GenGCC.mod (CodeParam): Remove parameters
1037         op1, op2 and op3.
1038         (doParam): Add paramtok parameter.  Use paramtok instead rather
1039         than CurrentQuadToken.
1040         (CodeParam): Rewrite.
1041         * gm2-compiler/M2Quads.mod (CheckProcedureParameters):
1042         Add comments explaining that const strings are not checked
1043         in M2Quads.mod.
1044         (FailParameter): Use MetaErrorT2 with tokpos rather than
1045         MetaError2.
1046         (doBuildBinaryOp): Assign OldPos and OperatorPos before the
1047         IF block.
1048         * gm2-compiler/SymbolTable.mod (PutConstString): Add call to
1049         InitWhereDeclaredTok.
1051 2024-01-25  Gaius Mulley  <gaiusmod2@gmail.com>
1053         * gm2-libs/libc.def (lseek): Change the second parameter
1054         type to CSSIZE_T and make the return value optional.
1056 2024-01-24  Gaius Mulley  <gaiusmod2@gmail.com>
1058         PR modula2/113559
1059         * gm2-libs/FIO.mod (SetPositionFromBeginning): Convert pos into
1060         CSSIZE_T during call to lseek.
1061         (SetPositionFromEnd): Convert pos into CSSIZE_T during call to
1062         lseek.
1064 2024-01-23  H.J. Lu  <hjl.tools@gmail.com>
1066         PR bootstrap/113554
1067         * mc/mc.flex (alloca): Don't redefine.
1068         (handleDate): Replace (long *)0 with (time_t *)0 when calling
1069         time.
1071 2024-01-19  Gaius Mulley  <gaiusmod2@gmail.com>
1073         * gm2-compiler/M2BasicBlock.mod (InitBasicBlocks): Rename
1074         ForeachScopeBlockDo to ForeachScopeBlockDo3.
1075         * gm2-compiler/M2Code.mod: Import ForeachScopeBlockDo2.
1076         (OptimizeScopeBlock): Call ForeachScopeBlockDo3 for
1077         procedures with three parameters and ForeachScopeBlockDo2
1078         for two parameters.
1079         (CodeBlock): Ditto.
1080         * gm2-compiler/M2GCCDeclare.mod (DeclareTypesConstantsProcedures):
1081         Rename ForeachScopeBlockDo to ForeachScopeBlockDo3.
1082         * gm2-compiler/M2GenGCC.def (ConvertQuadsToTree): Remove Scope
1083         parameter.
1084         * gm2-compiler/M2GenGCC.mod (ConvertQuadsToTree): Remove Scope
1085         parameter.
1086         (MaybeDebugBuiltinMemcpy): Remove parameter tok.
1087         (MaybeDebugBuiltinMemset): Remove.
1088         (MakeCopyUse): Remove tokenno from call to
1089         MaybeDebugBuiltinMemcpy.
1090         (PerformFoldBecomes): Remove desloc and exprloc.
1091         (checkArrayElements): Remove location.  Remove virtpos
1092         as a parameter to MaybeDebugBuiltinMemcpy.
1093         (NoWalkProcedure): Add attribute unused.
1094         (CheckElementSetTypes): Remove parameter p.
1095         Remove CurrentQuadToken in call to MaybeDebugBuiltinMemcpy.
1096         Remove NoWalkProcedure from call to CheckElementSetTypes.
1097         Remove tokenno from call to MaybeDebugBuiltinMemcpy.
1098         * gm2-compiler/M2Optimize.mod (RemoveProcedures): Replace
1099         two parameter indirect procedure iterator with
1100         ForeachScopeBlockDo2.
1101         * gm2-compiler/M2SSA.mod: Remove ForeachScopeBlockDo.
1102         * gm2-compiler/M2Scope.def (ForeachScopeBlockDo2): New
1103         declaration.
1104         (ForeachScopeBlockDo): Rename ...
1105         (ForeachScopeBlockDo3): ... to this.
1106         (ScopeProcedure2): New declaration.
1107         * gm2-compiler/M2Scope.mod (ForeachScopeBlockDo2): New
1108         procedure.
1109         (ForeachScopeBlockDo): Rename ...
1110         (ForeachScopeBlockDo3): ... to this.
1112 2024-01-18  Gaius Mulley  <gaiusmod2@gmail.com>
1114         PR modula2/111956
1115         * Make-lang.in (host_mc_longreal): Remove.
1116         * configure: Regenerate.
1117         * configure.ac (M2C_LONGREAL_FLOAT128): Remove.
1118         (M2C_LONGREAL_PPC64LE): Remove.
1119         * gm2-compiler/M2Options.def (SetIBMLongDouble): New procedure.
1120         (GetIBMLongDouble): New procedure function.
1121         (SetIEEELongDouble): New procedure.
1122         (GetIEEELongDouble): New procedure function.
1123         * gm2-compiler/M2Options.mod (SetIBMLongDouble): New procedure.
1124         (GetIBMLongDouble): New procedure function.
1125         (SetIEEELongDouble): New procedure.
1126         (GetIEEELongDouble): New procedure function.
1127         (InitializeLongDoubleFlags): New procedure called during
1128         module block initialization.
1129         * gm2-gcc/m2configure.cc: Remove duplicate includes.
1130         (m2configure_M2CLongRealFloat128): Remove.
1131         (m2configure_M2CLongRealIBM128): Remove.
1132         (m2configure_M2CLongRealLongDouble): Remove.
1133         (m2configure_M2CLongRealLongDoublePPC64LE): Remove.
1134         (m2configure_TargetIEEEQuadDefault): New function.
1135         * gm2-gcc/m2configure.def (M2CLongRealFloat128): Remove.
1136         (M2CLongRealIBM128): Remove.
1137         (M2CLongRealLongDouble): Remove.
1138         (M2CLongRealLongDoublePPC64LE): Remove.
1139         (TargetIEEEQuadDefault): New function.
1140         * gm2-gcc/m2configure.h (m2configure_M2CLongRealFloat128): Remove.
1141         (m2configure_M2CLongRealIBM128): Remove.
1142         (m2configure_M2CLongRealLongDouble): Remove.
1143         (m2configure_M2CLongRealLongDoublePPC64LE): Remove.
1144         (m2configure_TargetIEEEQuadDefault): New function.
1145         * gm2-gcc/m2options.h (M2Options_SetIBMLongDouble): New prototype.
1146         (M2Options_GetIBMLongDouble): New prototype.
1147         (M2Options_SetIEEELongDouble): New prototype.
1148         (M2Options_GetIEEELongDouble): New prototype.
1149         * gm2-gcc/m2type.cc (build_m2_long_real_node): Re-implement using
1150         results of M2Options_GetIBMLongDouble and M2Options_GetIEEELongDouble.
1151         * gm2-lang.cc (gm2_langhook_handle_option): Add case
1152         OPT_mabi_ibmlongdouble and call M2Options_SetIBMLongDouble.
1153         Add case OPT_mabi_ieeelongdouble and call M2Options_SetIEEELongDouble.
1154         * gm2config.aci.in: Regenerate.
1155         * gm2spec.cc (lang_specific_driver): Remove block defined by
1156         M2C_LONGREAL_PPC64LE.
1157         Remove case OPT_mabi_ibmlongdouble.
1158         Remove case OPT_mabi_ieeelongdouble.
1160 2024-01-11  Gaius Mulley  <gaiusmod2@gmail.com>
1162         PR modula2/112946
1163         * gm2-compiler/M2GenGCC.mod (IsExpressionCompatible): Import.
1164         (ExpressionTypeCompatible): Import.
1165         (CodeStatement): Remove op1, op2, op3 parameters from CodeSetOr,
1166         CodeSetAnd, CodeSetSymmetricDifference, CodeSetLogicalDifference.
1167         (checkArrayElements): Rename op1 to des and op3 to expr.
1168         Use despos and exprpos instead of CurrentQuadToken.
1169         (checkRecordTypes): Rename op1 to des and op2 to expr.
1170         Use virtpos instead of CurrentQuadToken.
1171         (checkIncorrectMeta): Ditto.
1172         (checkBecomes): Rename op1 to des and op3 to expr.
1173         Use virtpos instead of CurrentQuadToken.
1174         (NoWalkProcedure): New procedure stub.
1175         (CheckBinaryExpressionTypes): New procedure function.
1176         (CheckElementSetTypes): New procedure function.
1177         (CodeBinarySet): Re-write.
1178         (FoldBinarySet): Re-write.
1179         (CodeSetOr): Remove parameters op1, op2 and op3.
1180         (CodeSetAnd): Ditto.
1181         (CodeSetLogicalDifference): Ditto.
1182         (CodeSetSymmetricDifference): Ditto.
1183         (CodeIfIn): Call CheckBinaryExpressionTypes and
1184         CheckElementSetTypes.
1185         * gm2-compiler/M2Quads.mod (BuildRotateFunction): Correct
1186         parameters to MakeVirtualTok to reflect parameter block
1187         passed to Rotate.
1189 2024-01-09  Gaius Mulley  <gaiusmod2@gmail.com>
1191         PR modula2/112920
1192         * gm2-compiler/M2GCCDeclare.mod (Group): New declaration.
1193         Import MakeSubrange, MakeConstVar, MakeConstLit and DivTrunc.
1194         (FreeGroup): New declaration.
1195         (GlobalGroup): New declaration.
1196         (ToBeSolvedByQuads): Remove.
1197         (NilTypedArrays): Remove.
1198         (PartiallyDeclared): Remove.
1199         (HeldByAlignment): Remove.
1200         (FinishedAlignment): Remove.
1201         (ToDoList): Remove.
1202         (DebugSet): Re-format.
1203         (DebugNumber): Re-format.
1204         (DebugSetNumbers): Reference sets using GlobalGroup.
1205         (AddSymToWatch): Re-format.
1206         (WatchIncludeList): Reference sets using GlobalGroup.
1207         (WatchRemoveList): Reference sets using GlobalGroup.
1208         (NewGroup): New procedure.
1209         (DisposeGroup): New procedure.
1210         (InitGroup): New procedure.
1211         (KillGroup): New procedure.
1212         (DupGroup): New procedure.
1213         (EqualGroup): New procedure.
1214         (LookupSet): New procedure.
1215         (CanDeclareTypePartially): Reference sets using GlobalGroup.
1216         (CompletelyResolved): Reference sets using GlobalGroup.
1217         (IsNilTypedArrays): Reference sets using GlobalGroup.
1218         (IsFullyDeclared): Reference sets using GlobalGroup.
1219         (IsPartiallyDeclared): Reference sets using GlobalGroup.
1220         (IsPartiallyOrFullyDeclared): Reference sets using GlobalGroup.
1221         (DeclareTypeConstFully): Reference sets using GlobalGroup.
1222         (bodyl): Remove.
1223         (Body): Use bodyt and to lookup the required set.
1224         (ForeachTryDeclare): Remove parameter l.  Lookup set instead.
1225         (DeclareOutstandingTypes): Add new rules setarraynul and setfully.
1226         Reference sets using GlobalGroup.
1227         (ActivateWatch): New procedure.
1228         (DeclareTypesConstantsProceduresInRange): Re-written to check
1229         group change.
1230         (DeclareTypesConstantsProcedures): Re-written to check
1231         group change.
1232         (DeclareBoolean): Reference sets using GlobalGroup.
1233         (DeclarePackedBoolean): Ditto.
1234         (DeclareDefaultConstants): Ditto.
1235         (FreeGroup): Initialized.
1236         (GlobalGroup): Ditto.
1237         * gm2-compiler/Sets.def (EqualSet): New procedure function.
1238         Remove export qualified list of identifiers.
1239         * gm2-compiler/Sets.mod (EqualSet): New procedure function.
1241 2024-01-04  David Malcolm  <dmalcolm@redhat.com>
1243         * lang.opt.urls: New file, autogenerated by
1244         regenerate-opt-urls.py.
1246 2023-12-15  Gaius Mulley  <gaiusmod2@gmail.com>
1248         PR modula2/112946
1249         * gm2-compiler/M2Check.mod (checkConstMeta): New procedure
1250         function.
1251         (checkConstEquivalence): New procedure function.
1252         (doCheckPair): Add call to checkConstEquivalence.
1253         * gm2-compiler/M2GenGCC.mod (ResolveConstantExpressions): Call
1254         FoldBecomes with reduced parameters.
1255         (FoldBecomes): Re-write.
1256         (TryDeclareConst): New procedure.
1257         (RemoveQuads): New procedure.
1258         (DeclaredOperandsBecomes): New procedure function.
1259         (TypeCheckBecomes): New procedure function.
1260         (PerformFoldBecomes): New procedure.
1261         * gm2-compiler/M2Range.mod (FoldAssignment): Call
1262         AssignmentTypeCompatible to check des expr compatibility.
1263         * gm2-compiler/M2SymInit.mod (CheckReadBeforeInitQuad): Remove
1264         parameter lst.
1265         (FilterCheckReadBeforeInitQuad): Remove parameter lst.
1266         (CheckReadBeforeInitFirstBasicBlock): Remove parameter lst.
1267         Call FilterCheckReadBeforeInitQuad without lst.
1269 2023-12-13  Gaius Mulley  <gaiusmod2@gmail.com>
1271         PR modula2/112921
1272         * gm2-libs-iso/ConvStringShort.def: New file.
1273         * gm2-libs-iso/ConvStringShort.mod: New file.
1274         * gm2-libs-iso/ShortConv.def: New file.
1275         * gm2-libs-iso/ShortConv.mod: New file.
1276         * gm2-libs-iso/ShortMath.def: New file.
1277         * gm2-libs-iso/ShortMath.mod: New file.
1278         * gm2-libs-iso/ShortStr.def: New file.
1279         * gm2-libs-iso/ShortStr.mod: New file.
1281 2023-12-12  Gaius Mulley  <gaiusmod2@gmail.com>
1283         PR modula2/112984
1284         * gm2-libs-coroutines/SYSTEM.mod: Remove redundant import of memcpy.
1285         * gm2-libs-iso/ClientSocket.mod: Remove redundant import of IOConsts.
1286         * gm2-libs-iso/IOChan.mod: Remove redundant import of IOConsts.
1287         * gm2-libs-iso/IOLink.mod: Remove redundant import of IOChan and SYSTEM.
1288         * gm2-libs-iso/IOResult.mod: Remove redundant import of IOChan.
1289         * gm2-libs-iso/LongIO.mod: Remove redundant import of writeString.
1290         * gm2-libs-iso/LongWholeIO.mod: Remove redundant import of IOChan.
1291         * gm2-libs-iso/M2RTS.mod: Remove redundant import of ADDRESS.
1292         * gm2-libs-iso/MemStream.mod: Remove redundant import of ADDRESS.
1293         * gm2-libs-iso/RTdata.mod: Remove redundant import of DeviceTablePtr.
1294         * gm2-libs-iso/RTfio.mod: Remove redundant import of DeviceTablePtr.
1295         * gm2-libs-iso/RTgen.mod: Remove redundant import of DeviceTablePtr.
1296         * gm2-libs-iso/RealIO.mod: Remove redundant import of writeString.
1297         * gm2-libs-iso/RndFile.mod: Remove redundant import of SYSTEM.
1298         * gm2-libs-iso/SYSTEM.mod: Remove redundant import of memcpy.
1299         * gm2-libs-iso/ShortWholeIO.mod: Remove redundant import of IOConsts.
1300         * gm2-libs-iso/TextIO.mod: Remove redundant import of IOChan.
1301         * gm2-libs-iso/TextUtil.mod: Remove redundant import of IOChan.
1302         * gm2-libs-iso/WholeIO.mod: Remove redundant import of IOChan.
1303         * gm2-libs-log/BitByteOps.mod: Remove redundant import of BYTE.
1304         * gm2-libs-log/FileSystem.mod: Remove redundant import of BYTE and ADDRESS.
1305         * gm2-libs-log/InOut.mod: Remove redundant import of String.
1306         * gm2-libs-log/RealConversions.mod: Remove redundant import of StringToLongreal.
1307         * gm2-libs/FIO.mod: Remove redundant import of SIZE.
1308         * gm2-libs/FormatStrings.mod: Remove redundant import of String
1309         and ConCatChar.
1310         * gm2-libs/IO.mod: Remove redundant import of SIZE.
1311         * gm2-libs/Indexing.mod: Remove redundant import of ADDRESS.
1312         * gm2-libs/M2Dependent.mod: Remove redundant import of SIZE.
1313         * gm2-libs/M2RTS.mod: Remove redundant import of ADDRESS.
1314         * gm2-libs/OptLib.mod: Remove redundant import of DynamicStrings.
1315         * gm2-libs/SYSTEM.mod: Remove redundant import of memcpy.
1316         * gm2-libs/StringConvert.mod: Remove redundant import of String.
1318 2023-12-07  Gaius Mulley  <gaiusmod2@gmail.com>
1320         PR modula2/112893
1321         * gm2-compiler/M2Base.mod (Ass): Extend array to include proc row
1322         and column.  Allow PIM to assign cardinal variables to address
1323         variables.
1324         (Expr): Ditto.
1325         (Comp): Ditto.
1326         * gm2-compiler/M2Check.mod (getSType): New procedure function.
1327         Replace all occurances of GetSType with getSType.
1328         * gm2-compiler/M2GenGCC.mod (CodeParam): Rewrite format specifier
1329         error message.
1330         * gm2-compiler/M2Quads.mod (CheckProcTypeAndProcedure): Add tokno
1331         parameter.
1332         * gm2-compiler/M2Range.def (InitTypesParameterCheck): Add tokno
1333         parameter.
1334         (InitParameterRangeCheck): Add tokno parameter.
1335         Remove EXPORT QUALIFIED list.
1336         (InitParameterRangeCheck): Add tokno parameter.
1337         * gm2-compiler/M2Range.mod (InitTypesParameterCheck): Add tokno
1338         parameter and pass tokno to PutRangeParam.
1339         (InitParameterRangeCheck): Add tokno parameter and pass tokno to
1340         PutRangeParam.
1341         (PutRangeParam): Add tokno parameter and assign to tokenNo.
1342         (FoldTypeParam): Rewrite format string.
1344 2023-12-06  Thomas Schwinge  <thomas@codesourcery.com>
1346         * lang.opt (-isysroot): New.
1348 2023-12-05  Gaius Mulley  <gaiusmod2@gmail.com>
1350         PR modula2/112865
1351         * gm2-compiler/M2Quads.mod (BuildReFunction): Use
1352         GetDType to retrieve the type of the operand when
1353         converting the complex type to its scalar equivalent.
1354         (BuildImFunction): Use GetDType to retrieve the type of the
1355         operand when converting the complex type to its scalar
1356         equivalent.
1358 2023-12-05  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1360         * mc/mc.flex [__GNUC__]: Define alloca as __builtin_alloca.
1361         (handleDate): Use strchr instead of index.
1363 2023-12-04  Gaius Mulley  <gaiusmod2@gmail.com>
1365         PR modula2/112825
1366         * tools-src/makeSystem: Change all occurrences of -c to -S.
1368 2023-11-01  Gaius Mulley  <gaiusmod2@gmail.com>
1370         PR modula2/102989
1371         * gm2-compiler/SymbolTable.mod (OverflowZType): Import from m2expr.
1372         (ConstantStringExceedsZType): Remove import.
1373         (GetConstLitType): Replace ConstantStringExceedsZType with OverflowZType.
1374         * gm2-gcc/m2decl.cc (m2decl_ConstantStringExceedsZType): Remove.
1375         (m2decl_BuildConstLiteralNumber): Re-write.
1376         * gm2-gcc/m2decl.def (ConstantStringExceedsZType): Remove.
1377         * gm2-gcc/m2decl.h (m2decl_ConstantStringExceedsZType): Remove.
1378         * gm2-gcc/m2expr.cc (m2expr_StrToWideInt): Rewrite to check overflow.
1379         (m2expr_OverflowZType): New function.
1380         (ToWideInt): New function.
1381         * gm2-gcc/m2expr.def (OverflowZType): New procedure function declaration.
1382         * gm2-gcc/m2expr.h (m2expr_OverflowZType): New prototype.
1384 2023-10-27  Gaius Mulley  <gaiusmod2@gmail.com>
1386         PR modula2/111530
1387         * gm2-libs-ch/cgetopt.c (cgetopt_cgetopt_long): Re-format.
1388         (cgetopt_cgetopt_long_only): Re-format.
1389         (cgetopt_SetOption):  Re-format and assign flag to NULL
1390         if name is also NULL.
1391         * gm2-libs/GetOpt.def (AddLongOption): Add index parameter
1392         and change flag to be a VAR parameter rather than a pointer.
1393         (GetOptLong): Re-format.
1394         (GetOpt): Correct comment.
1395         * gm2-libs/GetOpt.mod: Re-write to rely on cgetopt rather
1396         than implement long option creation in GetOpt.
1397         * gm2-libs/cgetopt.def (SetOption): has_arg type is INTEGER.
1399 2023-10-25  Gaius Mulley  <gaiusmod2@gmail.com>
1401         PR modula2/111955
1402         * gm2-gcc/m2builtins.cc (gm2_isnan_node): New tree.
1403         (DoBuiltinIsnan): New function.
1404         (m2builtins_BuiltInIsnan): New function.
1405         (m2builtins_init): Initialize gm2_isnan_node.
1406         (list_of_builtins): Add define for __builtin_isnan.
1407         * gm2-libs-ch/wrapc.c (wrapc_isnan): New function.
1408         (wrapc_isnanf): New function.
1409         (wrapc_isnanl): New function.
1410         * gm2-libs/Builtins.def (isnanf): New procedure function.
1411         (isnan): New procedure function.
1412         (isnanl): New procedure function.
1413         * gm2-libs/Builtins.mod:
1414         * gm2-libs/wrapc.def (isnan): New function.
1415         (isnanf): New function.
1416         (isnanl): New function.
1418 2023-10-24  Gaius Mulley  <gaiusmod2@gmail.com>
1420         * gm2-libs/M2Dependent.mod (InitDependencyList): New
1421         procedure.
1422         (CreateModule): Call InitDependencyList to initialize
1423         all fields of DependencyList.
1425 2023-10-24  Gaius Mulley  <gaiusmod2@gmail.com>
1427         * gm2-libs/M2Dependent.mod (CreateModule): Initialize all
1428         dependency fields for DependencyList.
1430 2023-10-17  Gaius Mulley  <gaiusmod2@gmail.com>
1432         PR modula2/111756
1433         * Make-lang.in (CM2DEP): New define conditionally set if
1434         ($(CXXDEPMODE),depmode=gcc3).
1435         (GM2_1): Use $(CM2DEP).
1436         (m2/gm2-gcc/%.o): Ensure $(@D)/$(DEPDIR) is created.
1437         Add $(CM2DEP) to the $(COMPILER) command and use $(POSTCOMPILE).
1438         (m2/gm2-gcc/m2configure.o): Ditto.
1439         (m2/gm2-lang.o): Ditto.
1440         (m2/m2pp.o): Ditto.
1441         (m2/gm2-gcc/rtegraph.o): Ditto.
1442         (m2/mc-boot/$(SRC_PREFIX)%.o): Ditto.
1443         (m2/mc-boot-ch/$(SRC_PREFIX)%.o): Ditto.
1444         (m2/mc-boot-ch/$(SRC_PREFIX)%.o): Ditto.
1445         (m2/mc-boot/main.o): Ditto.
1446         (mcflex.o): Ditto.
1447         (m2/gm2-libs-boot/M2RTS.o): Ditto.
1448         (m2/gm2-libs-boot/%.o): Ditto.
1449         (m2/gm2-libs-boot/%.o): Ditto.
1450         (m2/gm2-libs-boot/RTcodummy.o): Ditto.
1451         (m2/gm2-libs-boot/RTintdummy.o): Ditto.
1452         (m2/gm2-libs-boot/wrapc.o): Ditto.
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-libs-boot/SysStorage.o): Ditto.
1461         (m2/gm2-compiler-boot/M2GCCDeclare.o): Ditto.
1462         (m2/gm2-compiler-boot/M2Error.o): Ditto.
1463         (m2/gm2-compiler-boot/%.o): Ditto.
1464         (m2/gm2-compiler-boot/%.o): Ditto.
1465         (m2/gm2-compiler-boot/m2flex.o): Ditto.
1466         (m2/gm2-compiler/%.o): Ditto.
1467         (m2/gm2-compiler/m2flex.o): Ditto.
1468         (m2/gm2-libs-iso/%.o): Ditto.
1469         (m2/gm2-libs/%.o): Ditto.
1470         (m2/gm2-libs/%.o): Ditto.
1471         (m2/gm2-libs/choosetemp.o): Ditto.
1472         (m2/boot-bin/mklink$(exeext)): Ditto.
1473         (m2/pge-boot/%.o): Ditto.
1474         (m2/pge-boot/%.o): Ditto.
1475         (m2/gm2-compiler/%.o): Ensure $(@D)/$(DEPDIR) is created and use
1476         $(POSTCOMPILE).
1477         (m2/gm2-compiler/%.o): Ditto.
1478         (m2/gm2-libs-iso/%.o): Ditto.
1479         (m2/gm2-libs/%.o): Ditto.
1480         * README: Purge out of date info.
1481         * gm2-compiler/M2Comp.mod (MakeSaveTempsFileNameExt): Import.
1482         (OnExitDelete): Import.
1483         (GetModuleDefImportStatementList): Import.
1484         (GetModuleModImportStatementList): Import.
1485         (GetImportModule): Import.
1486         (IsImportStatement): Import.
1487         (IsImport): Import.
1488         (GetImportStatementList): Import.
1489         (File): Import.
1490         (Close): Import.
1491         (EOF): Import.
1492         (IsNoError): Import.
1493         (WriteLine): Import.
1494         (WriteChar): Import.
1495         (FlushOutErr): Import.
1496         (WriteS): Import.
1497         (OpenToRead): Import.
1498         (OpenToWrite): Import.
1499         (ReadS): Import.
1500         (WriteS): Import.
1501         (GetM): Import.
1502         (GetMM): Import.
1503         (GetDepTarget): Import.
1504         (GetMF): Import.
1505         (GetMP): Import.
1506         (GetObj): Import.
1507         (GetMD): Import.
1508         (GetMMD): Import.
1509         (GenerateDefDependency): New procedure.
1510         (GenerateDependenciesFromImport): New procedure.
1511         (GenerateDependenciesFromList): New procedure.
1512         (GenerateDependencies): New procedure.
1513         (Compile): Re-write.
1514         (compile): Re-format.
1515         (CreateFileStem): New procedure function.
1516         (DoPass0): Re-write.
1517         (IsLibrary): New procedure function.
1518         (IsUnique): New procedure function.
1519         (Append): New procedure.
1520         (MergeDep): New procedure.
1521         (GetRuleTarget): New procedure function.
1522         (ReadDepContents): New procedure function.
1523         (WriteDep): New procedure.
1524         (WritePhonyDep): New procedure.
1525         (WriteDepContents): New procedure.
1526         (CreateDepFilename): New procedure function.
1527         (Pass0CheckDef): New procedure function.
1528         (Pass0CheckMod): New procedure function.
1529         (DoPass0): Re-write.
1530         (DepContent): New variable.
1531         (DepOutput): New variable.
1532         (BaseName): New procedure function.
1533         * gm2-compiler/M2GCCDeclare.mod (PrintTerse): Handle IsImport.
1534         Replace IsGnuAsmVolatile with IsGnuAsm.
1535         * gm2-compiler/M2Options.def (EXPORT QUALIFIED): Remove list.
1536         (SetM): New procedure.
1537         (GetM): New procedure function.
1538         (SetMM): New procedure.
1539         (GetMM): New procedure function.
1540         (SetMF): New procedure.
1541         (GetMF): New procedure function.
1542         (SetPPOnly): New procedure.
1543         (GetB): New procedure function.
1544         (SetMD): New procedure.
1545         (GetMD): New procedure function.
1546         (SetMMD): New procedure.
1547         (GetMMD): New procedure function.
1548         (SetMQ): New procedure.
1549         (SetMT): New procedure.
1550         (GetMT): New procedure function.
1551         (GetDepTarget): New procedure function.
1552         (SetMP): New procedure.
1553         (GetMP): New procedure function.
1554         (SetObj): New procedure.
1555         (SetSaveTempsDir): New procedure.
1556         * gm2-compiler/M2Options.mod (SetM): New procedure.
1557         (GetM): New procedure function.
1558         (SetMM): New procedure.
1559         (GetMM): New procedure function.
1560         (SetMF): New procedure.
1561         (GetMF): New procedure function.
1562         (SetPPOnly): New procedure.
1563         (GetB): New procedure function.
1564         (SetMD): New procedure.
1565         (GetMD): New procedure function.
1566         (SetMMD): New procedure.
1567         (GetMMD): New procedure function.
1568         (SetMQ): New procedure.
1569         (SetMT): New procedure.
1570         (GetMT): New procedure function.
1571         (GetDepTarget): New procedure function.
1572         (SetMP): New procedure.
1573         (GetMP): New procedure function.
1574         (SetObj): New procedure.
1575         (SetSaveTempsDir): New procedure.
1576         * gm2-compiler/M2Preprocess.def (PreprocessModule): New parameters
1577         topSource and outputDep.  Re-write.
1578         (MakeSaveTempsFileNameExt): New procedure function.
1579         (OnExitDelete): New procedure function.
1580         * gm2-compiler/M2Preprocess.mod (GetM): Import.
1581         (GetMM): Import.
1582         (OnExitDelete): Add debugging message.
1583         (RemoveFile): Add debugging message.
1584         (BaseName): Remove.
1585         (BuildCommandLineExecute): New procedure function.
1586         * gm2-compiler/M2Search.def (SetDefExtension): Remove unnecessary
1587         spacing.
1588         * gm2-compiler/SymbolTable.mod (GetSymName): Handle ImportSym and
1589         ImportStatementSym.
1590         * gm2-gcc/m2options.h (M2Options_SetMD): New function.
1591         (M2Options_GetMD): New function.
1592         (M2Options_SetMMD): New function.
1593         (M2Options_GetMMD): New function.
1594         (M2Options_SetM): New function.
1595         (M2Options_GetM): New function.
1596         (M2Options_SetMM): New function.
1597         (M2Options_GetMM): New function.
1598         (M2Options_GetMQ): New function.
1599         (M2Options_SetMF): New function.
1600         (M2Options_GetMF): New function.
1601         (M2Options_SetMT): New function.
1602         (M2Options_SetMP): New function.
1603         (M2Options_GetMP): New function.
1604         (M2Options_GetDepTarget): New function.
1605         * gm2-lang.cc (gm2_langhook_init): Correct comment case.
1606         (gm2_langhook_init_options): Add case OPT_M and
1607         OPT_MM.
1608         (gm2_langhook_post_options): Add case OPT_MF, OPT_MT,
1609         OPT_MD and OPT_MMD.
1610         * lang-specs.h (M2CPP): Pass though MF option.
1611         (MDMMD): New define.  Add MDMMD to "@modula-2".
1613 2023-10-15  Gaius Mulley  <gaiusmod2@gmail.com>
1615         * Make-lang.in (m2.tags): New rule.
1617 2023-10-11  Gaius Mulley  <gaiusmod2@gmail.com>
1619         * gm2-compiler/M2GCCDeclare.mod (DeclareSubrange): Check
1620         the base type of the subrange against the ZTYPE and call
1621         DeclareSubrangeNarrow if necessary.
1622         (DeclareSubrangeNarrow): New procedure function.
1624 2023-10-11  Gaius Mulley  <gaiusmod2@gmail.com>
1626         PR modula2/111675
1627         * gm2-compiler/M2CaseList.mod (appendTree): Replace
1628         InitStringCharStar with InitString.
1629         * gm2-compiler/M2GCCDeclare.mod: Import AreConstantsEqual.
1630         (DeclareSubrange): Add zero alignment test and call
1631         BuildSmallestTypeRange if necessary.
1632         (WalkSubrangeDependants): Walk the align expression.
1633         (IsSubrangeDependants): Test the align expression.
1634         * gm2-compiler/M2Quads.mod (BuildStringAdrParam): Correct end name.
1635         * gm2-compiler/P2SymBuild.mod (BuildTypeAlignment): Allow subranges
1636         to be zero aligned (packed).
1637         * gm2-compiler/SymbolTable.mod (Subrange): Add Align field.
1638         (MakeSubrange): Set Align to NulSym.
1639         (PutAlignment): Assign Subrange.Align to align.
1640         (GetAlignment): Return Subrange.Align.
1641         * gm2-gcc/m2expr.cc (noBitsRequired): Rewrite.
1642         (calcNbits): Rename ...
1643         (m2expr_calcNbits): ... to this and test for negative values.
1644         (m2expr_BuildTBitSize): Replace calcNBits with m2expr_calcNbits.
1645         * gm2-gcc/m2expr.def (calcNbits): Export.
1646         * gm2-gcc/m2expr.h (m2expr_calcNbits): New prototype.
1647         * gm2-gcc/m2type.cc (noBitsRequired): Remove.
1648         (m2type_BuildSmallestTypeRange): Call m2expr_calcNbits.
1649         (m2type_BuildSubrangeType): Create range_type from
1650         build_range_type (type, lowval, highval).
1652 2023-09-29  Gaius Mulley  <gaiusmod2@gmail.com>
1654         * gm2-compiler/M2Quads.mod (EndBuildFor): Improve
1655         block comments.
1656         * gm2-libs-iso/SysClock.mod (ExtractDate): Replace
1657         testDays with yearOfDays.  New local variable monthOfDays.
1659 2023-09-26  Gaius Mulley  <gaiusmod2@gmail.com>
1661         PR modula2/111510
1662         * gm2-compiler/M2GenGCC.mod (IsExportedGcc): Minor spacing changes.
1663         (BuildTrashTreeFromInterface): Minor spacing changes.
1664         * gm2-compiler/M2Options.mod (GetRuntimeModuleOverride): Call
1665         string to generate a nul terminated C style string.
1666         * gm2-compiler/M2Quads.mod (BuildStringAdrParam): New procedure.
1667         (BuildM2InitFunction): Replace inline parameter generation with
1668         calls to BuildStringAdrParam.
1670 2023-09-19  Gaius Mulley  <gaiusmod2@gmail.com>
1672         * Make-lang.in (host_mc_longreal): Detect hosting on powerpc64le
1673         and if so use __float128 for longreal in mc.
1674         (MC_ARGS): Append host_mc_longreal.
1675         * config-make.in (TEST_TARGET_CPU_DEFAULT): New variable.
1676         (TEST_HOST_CPU_DEFAULT): New variable.
1677         * configure: Regenerate.
1678         * configure.ac (M2C_LONGREAL_FLOAT128): New define set if target
1679         is powerpc64le.
1680         (M2C_LONGREAL_PPC64LE): New define set if target is powerpc64le.
1681         * gm2-compiler/M2GCCDeclare.mod: Correct comment case.
1682         * gm2-compiler/M2GenGCC.mod (MaybeDebugBuiltinAlloca): Call
1683         SetLastFunction for the builtin function call.
1684         (MaybeDebugBuiltinMemcpy): Call SetLastFunction for the builtin
1685         function call.
1686         (MaybeDebugBuiltinMemset): New procedure function.
1687         (MakeCopyUse): Use GNU formatting.
1688         (UseBuiltin): Rewrite to check BuiltinExists.
1689         (CodeDirectCall): Rewrite to check BuiltinExists and call
1690         SetLastFunction.
1691         (CodeMakeAdr): Re-format.
1692         * gm2-compiler/M2Options.def (SetDebugBuiltins): New procedure.
1693         * gm2-compiler/M2Options.mod (SetUninitVariableChecking): Allow
1694         "cond" to switch UninitVariableConditionalChecking separately.
1695         (SetDebugBuiltins): New procedure.
1696         * gm2-compiler/M2Quads.def (BuildFunctionCall): Add parameter
1697         ConstExpr.
1698         * gm2-compiler/M2Quads.mod (BuildRealProcedureCall): Add parameter
1699         to BuildRealFuncProcCall.
1700         (BuildRealFuncProcCall): Add ConstExpr parameter.  Pass ConstExpr
1701         to BuildFunctionCall.
1702         (BuildFunctionCall): Add parameter ConstExpr.  Pass ConstExpr to
1703         BuildRealFunctionCall.
1704         (BuildConstFunctionCall): Add parameter ConstExpr.  Pass ConstExpr to
1705         BuildFunctionCall.
1706         (BuildRealFunctionCall): Add parameter ConstExpr.  Pass ConstExpr to
1707         BuildRealFuncProcCall.
1708         * gm2-compiler/P3Build.bnf (SetOrDesignatorOrFunction): Pass FALSE
1709         to BuildFunctionCall.
1710         (AssignmentOrProcedureCall): Pass FALSE to BuildFunctionCall.
1711         * gm2-compiler/SymbolTable.def (IsProcedureBuiltinAvailable): New
1712         procedure function.
1713         * gm2-compiler/SymbolTable.mod (CanUseBuiltin): New procedure
1714         function.
1715         (IsProcedureBuiltinAvailable): New procedure function.
1716         * gm2-gcc/m2builtins.cc (DEBUGGING): Undef.
1717         (bf_category): New enum type.
1718         (struct builtin_function_entry): New field function_avail.
1719         (m2builtins_BuiltInMemCopy): Rename from ...
1720         (m2builtins_BuiltinMemCopy): ... this.
1721         (DoBuiltinMemSet): New function.
1722         (m2builtins_BuiltinMemSet): New function.
1723         (do_target_support_exists): New function.
1724         (target_support_exists): New function.
1725         (m2builtins_BuiltinExists): Return true or false.
1726         (m2builtins_BuildBuiltinTree): Rename local variables.
1727         Replace long_double_type_node with GetM2LongRealType.
1728         (m2builtins_init): Use GetM2LongRealType rather than
1729         long_double_type_node.
1730         * gm2-gcc/m2builtins.def (BuiltInMemCopy): Rename to ...
1731         (BuiltinMemCopy): ... this.
1732         (BuiltinMemSet): New procedure function.
1733         * gm2-gcc/m2builtins.h (m2builtins_BuiltInMemCopy): Rename to ...
1734         (m2builtins_BuiltinMemCopy): ... this.
1735         (m2builtins_BuiltinMemSet): New procedure function.
1736         * gm2-gcc/m2configure.cc (m2configure_M2CLongRealFloat128): New
1737         procedure function.
1738         (m2configure_M2CLongRealIBM128): New procedure function.
1739         (m2configure_M2CLongRealLongDouble): New procedure function.
1740         (m2configure_M2CLongRealLongDoublePPC64LE): New procedure function.
1741         * gm2-gcc/m2configure.def (M2CLongRealFloat128): New procedure function.
1742         (M2CLongRealIBM128): New procedure function.
1743         (M2CLongRealLongDouble): New procedure function.
1744         (M2CLongRealLongDoublePPC64LE): New procedure function.
1745         * gm2-gcc/m2configure.h (m2configure_FullPathCPP): New procedure function.
1746         (m2configure_M2CLongRealFloat128): New procedure function.
1747         (m2configure_M2CLongRealIBM128): New procedure function.
1748         (m2configure_M2CLongRealLongDouble): New procedure function.
1749         (m2configure_M2CLongRealLongDoublePPC64LE): New procedure function.
1750         * gm2-gcc/m2convert.cc (m2convert_BuildConvert): Use convert_loc.
1751         * gm2-gcc/m2options.h (M2Options_SetDebugBuiltins): New function.
1752         * gm2-gcc/m2statement.cc (m2statement_BuildAssignmentTree): Set
1753         TREE_USED to true.
1754         (m2statement_BuildGoto):Set TREE_USED to true.
1755         (m2statement_BuildParam): Set TREE_USED to true.
1756         (m2statement_BuildBuiltinCallTree): New function.
1757         (m2statement_BuildFunctValue): Set TREE_USED to true.
1758         * gm2-gcc/m2statement.def (BuildBuiltinCallTree): New procedure function.
1759         * gm2-gcc/m2statement.h (m2statement_BuildBuiltinCallTree): New
1760         procedure function.
1761         * gm2-gcc/m2treelib.cc (m2treelib_DoCall0): Remove spacing.
1762         (m2treelib_DoCall1): Remove spacing.
1763         (m2treelib_DoCall2): Remove spacing.
1764         (m2treelib_DoCall3): Remove spacing.
1765         (add_stmt): Rename parameter.
1766         * gm2-gcc/m2type.cc (build_set_type): Remove spacing.
1767         (build_m2_specific_size_type): Remove spacing.
1768         (finish_build_pointer_type): Remove spacing.
1769         (m2type_BuildVariableArrayAndDeclare): Remove spacing.
1770         (build_m2_short_real_node): Remove spacing.
1771         (build_m2_real_node): Remove spacing.
1772         (build_m2_long_real_node): Use float128_type_node if
1773         M2CLongRealFloat128 is set.
1774         (build_m2_ztype_node): Remove spacing.
1775         (build_m2_long_int_node): Remove spacing.
1776         (build_m2_long_card_node): Remove spacing.
1777         (build_m2_short_int_node): Remove spacing.
1778         (build_m2_short_card_node): Remove spacing.
1779         (build_m2_iso_loc_node): Remove spacing.
1780         (m2type_SameRealType): New function.
1781         (m2type_InitBaseTypes): Create m2_c_type_node using
1782         m2_long_complex_type_node.
1783         (m2type_SetAlignment): Tidy up comment.
1784         * gm2-gcc/m2type.def (SameRealType):  New procedure function.
1785         * gm2-gcc/m2type.h (m2type_SameRealType): New procedure function.
1786         * gm2-lang.cc (gm2_langhook_type_for_mode): Build long complex
1787         node from m2 language specific long double node.
1788         * gm2-libs-log/RealConversions.mod (IsNan): New procedure
1789         function.
1790         (doPowerOfTen): Re-implement.
1791         * gm2-libs/Builtins.mod: Add newline.
1792         * gm2-libs/DynamicStrings.def (ReplaceChar): New procedure function.
1793         * gm2-libs/DynamicStrings.mod (ReplaceChar): New procedure function.
1794         * gm2config.aci.in (M2C_LONGREAL_FLOAT128): New config value.
1795         (M2C_LONGREAL_PPC64LE): New config value.
1796         * gm2spec.cc (lang_specific_driver): New local variable
1797         need_default_mabi set to default value depending upon
1798         M2C_LONGREAL_PPC64LE and M2C_LONGREAL_FLOAT128.
1799         * lang.opt (Wcase-enum): Moved to correct section.
1800         * m2pp.cc (m2pp_real_type): New function.
1801         (m2pp_type): Call m2pp_real_type.
1802         (m2pp_print_mode): New function.
1803         (m2pp_simple_type): Call m2pp_simple_type.
1804         (m2pp_float): New function.
1805         (m2pp_expression): Call m2pp_float.
1806         * mc-boot/GDynamicStrings.cc: Rebuild.
1807         * mc-boot/GDynamicStrings.h: Rebuild.
1808         * mc-boot/GFIO.cc: Rebuild.
1809         * mc-boot/GFIO.h: Rebuild.
1810         * mc-boot/GIO.cc: Rebuild.
1811         * mc-boot/GRTint.cc: Rebuild.
1812         * mc-boot/Gdecl.cc: Rebuild.
1813         * mc-boot/GmcOptions.cc: Rebuild.
1814         * mc-boot/GmcOptions.h: Rebuild.
1815         * mc/decl.mod: Rebuild.
1816         * mc/mcOptions.def (getCRealType): New procedure function.
1817         (getCLongRealType): New procedure function.
1818         (getCShortRealType): New procedure function.
1819         * mc/mcOptions.mod (getCRealType): New procedure function.
1820         (getCLongRealType): New procedure function.
1821         (getCShortRealType): New procedure function.
1823 2023-09-14  Gaius Mulley  <gaiusmod2@gmail.com>
1825         * gm2-compiler/M2CaseList.mod (NewRanges): Add block
1826         comment.
1827         (NewSet): Add block comment.
1828         (DisplayRanges): Add block comment.
1829         (IncludeElement): Add block comment.
1830         (IncludeElements): Add block comment.
1831         (appendString): Add block comment.
1832         (appendEnum): Add block comment.
1833         (appendTree): Add block comment.
1834         (SubrangeErrors): Add block comment.
1836 2023-09-14  Gaius Mulley  <gaiusmod2@gmail.com>
1838         * gm2-compiler/M2CaseList.mod (appendString): New procedure.
1839         (appendEnum): Re-implement.
1840         (NoOfSetElements): New procedure function.
1841         (isPrintableChar): New procedure function.
1842         (appendTree): New procedure.
1843         (SubrangeErrors): New procedure.
1844         (EmitMissingRangeErrors): Call SubrangeErrors if appropriate.
1845         * gm2-compiler/M2SymInit.mod (SetFieldInitializedNo): Avoid
1846         using a temporary variable once.
1847         (IsLocalVar): Comment out.
1848         (RecordContainsVarient): Remove fieldtype.
1849         (GenerateNoteFlow): Remove lst parameter.
1850         (CheckDeferredRecordAccess): Remove lst parameter.
1851         (CheckUnary): Remove lst parameter.  Remove procSym.
1852         (CheckBinary): Remove lst parameter.  Remove procSym.
1853         (CheckIndrX): Remove lst parameter.  Remove procSym.
1854         (CheckXIndr): Remove bblst and procSym parameters.
1855         (CheckRecordField): Remove procSym, op1tok, op2tok and op2.
1856         (CheckBecomes): Remove procSym and bblst.
1857         (CheckComparison): Remove procSym and bblst.
1858         (CheckAddr): Remove procSym parameter.
1859         * gm2-gcc/m2expr.cc (m2expr_CSTIntToString): New function.
1860         (m2expr_CSTIntToChar): New function.
1861         * gm2-gcc/m2expr.def (CSTIntToString): New procedure function
1862         declaration.
1863         (CSTIntToChar): New procedure function declaration.
1864         * gm2-gcc/m2expr.h (m2expr_CSTIntToChar): New prototype.
1865         (m2expr_CSTIntToString): New prototype.
1867 2023-09-13  Gaius Mulley  <gaiusmod2@gmail.com>
1869         * Make-lang.in (GM2_FLAGS): Add -Wcase-enum.
1870         (GM2_ISO_FLAGS): Add -Wcase-enum.
1871         * gm2-compiler/M2CaseList.mod (EnumerateErrors): Issue
1872         singular or plural start text prior to the enum list.
1873         Remove unused parameter tokenno.
1874         (EmitMissingRangeErrors): New procedure.
1875         (MissingCaseBounds): Call EmitMissingRangeErrors.
1876         (MissingCaseStatementBounds): Call EmitMissingRangeErrors.
1877         * gm2-libs-iso/TextIO.mod: Fix spacing.
1879 2023-09-12  Gaius Mulley  <gaiusmod2@gmail.com>
1881         * gm2-compiler/M2CaseList.def (PushCase): Rename parameters
1882         r to rec and v to va.  Add expr parameter.
1883         (MissingCaseStatementBounds): New procedure function.
1884         * gm2-compiler/M2CaseList.mod (RangePair): Add expression.
1885         (PushCase): Rename parameters r to rec and v to va.  Add
1886         expr parameter.
1887         (RemoveRange): New procedure function.
1888         (SubBitRange): Detect the case when the range in the set matches
1889         lo..hi.
1890         (CheckLowHigh): New procedure.
1891         (ExcludeCaseRanges): Rename parameter c to cd.  Rename local
1892         variables q to cl and r to rp.
1893         (High): Remove.
1894         (Low): Remove.
1895         (DoEnumValues): Remove.
1896         (IncludeElement): New procedure.
1897         (IncludeElements): New procedure.
1898         (ErrorRangeEnum): New procedure.
1899         (ErrorRange): Remove.
1900         (ErrorRanges): Remove.
1901         (appendEnum): New procedure.
1902         (appendStr): New procedure.
1903         (EnumerateErrors): New procedure.
1904         (MissingCaseBounds): Re-implement.
1905         (InRangeList): Remove.
1906         (MissingCaseStatementBounds): New procedure function.
1907         (checkTypes): Re-format.
1908         (inRange): Re-format.
1909         (TypeCaseBounds): Re-format.
1910         * gm2-compiler/M2Error.mod (GetAnnounceScope): Add noscope to
1911         case label list.
1912         * gm2-compiler/M2GCCDeclare.mod: Replace ForeachFieldEnumerationDo
1913         with ForeachLocalSymDo.
1914         * gm2-compiler/M2Options.def (SetCaseEnumChecking): New procedure.
1915         (CaseEnumChecking): New variable.
1916         * gm2-compiler/M2Options.mod (SetCaseEnumChecking): New procedure.
1917         (Module initialization): set CaseEnumChecking to FALSE.
1918         * gm2-compiler/M2Quads.def (QuadOperator): Alphabetically ordered.
1919         * gm2-compiler/M2Quads.mod (IsBackReferenceConditional): Add else
1920         clause.
1921         (BuildCaseStart): Pass selector expression to InitCaseBounds.
1922         (CheckUninitializedVariablesAreUsed): Remove.
1923         (IsInlineWithinBlock): Remove.
1924         (AsmStatementsInBlock): Remove.
1925         (CheckVariablesInBlock): Remove commented code.
1926         (BeginVarient): Pass NulSym to InitCaseBounds.
1927         * gm2-compiler/M2Range.mod (FoldCaseBounds): New local variable
1928         errorGenerated.  Add call to MissingCaseStatementBounds.
1929         * gm2-compiler/P3Build.bnf (CaseEndStatement): Call ElseCase.
1930         * gm2-compiler/PCSymBuild.mod (InitDesExpr): Add else clause.
1931         (InitFunction): Add else clause.
1932         (InitConvert): Add else clause.
1933         (InitLeaf): Add else clause.
1934         (InitBinary): Add else clause.
1935         (InitUnary): Add else clause.
1936         * gm2-compiler/SymbolTable.def (GetNth): Re-write comment.
1937         (ForeachFieldEnumerationDo): Re-write comment stating alphabetical
1938         traversal.
1939         * gm2-compiler/SymbolTable.mod (GetNth): Re-write comment.
1940         Add case label for EnumerationSym and call GetItemFromList.
1941         (ForeachFieldEnumerationDo): Re-write comment stating alphabetical
1942         traversal.
1943         (SymEnumeration): Add ListOfFields used for declaration order.
1944         (MakeEnumeration): Initialize ListOfFields.
1945         (PutFieldEnumeration): Include Field in ListOfFields.
1946         * gm2-gcc/m2options.h (M2Options_SetCaseEnumChecking): New
1947         function.
1948         * gm2-lang.cc (gm2_langhook_handle_option): Add
1949         OPT_Wcase_enum case and call M2Options_SetCaseEnumChecking.
1950         * lang.opt (Wcase-enum): Add.
1952 2023-09-11  Gaius Mulley  <gaiusmod2@gmail.com>
1954         PR modula2/111330
1955         * gm2-compiler/M2SymInit.mod (CheckReadBeforeInitQuad): Add
1956         case labels LogicalDiffOp, DummyOp, OptParamOp and
1957         InitAddressOp.
1959 2023-08-20  Gaius Mulley  <gaiusmod2@gmail.com>
1961         PR modula2/111085
1962         * gm2-libs/Builtins.def (nexttoward): Alter the second
1963         parameter to LONGREAL.
1964         (nexttowardf): Alter the second parameter to LONGREAL.
1965         * gm2-libs/Builtins.mod (nexttoward): Alter the second
1966         parameter to LONGREAL.
1967         (nexttowardf): Alter the second parameter to LONGREAL.
1968         * gm2-libs/cbuiltin.def (nexttoward): Alter the second
1969         parameter to LONGREAL.
1970         (nexttowardf): Alter the second parameter to LONGREAL.
1972 2023-08-13  Iain Sandoe  <iain@sandoe.co.uk>
1974         * Make-lang.in: Update suffix spellings to use 'soext'.
1975         Add libc to the plugin link.
1977 2023-08-12  Gaius Mulley  <gaiusmod2@gmail.com>
1979         PR modula2/110779
1980         * gm2-libs-iso/SysClock.mod (EpochTime): New procedure.
1981         (GetClock): Call EpochTime if the C time functions are
1982         unavailable.
1983         * gm2-libs-iso/wrapclock.def (istimezone): New function
1984         definition.
1986 2023-08-12  Gaius Mulley  <gaiusmod2@gmail.com>
1988         PR modula2/108119
1989         * Make-lang.in (M2RTE_PLUGIN_SO): Assigned to
1990         plugin/m2rte$(exeext).so if enable_plugin is yes.
1991         (m2.all.cross): Replace plugin/m2rte$(soext) with
1992         $(M2RTE_PLUGIN_SO).
1993         (m2.all.encap): Replace plugin/m2rte$(soext) with
1994         $(M2RTE_PLUGIN_SO).
1995         (m2.install-plugin): Add dummy rule when enable_plugin
1996         is not yes.
1997         (plugin/m2rte$(exeext).so): Add dummy rule when enable_plugin
1998         is not yes.
1999         (m2/stage2/cc1gm2$(exeext)): Replace plugin/m2rte$(soext) with
2000         $(M2RTE_PLUGIN_SO).
2001         (m2/stage1/cc1gm2$(exeext)): Replace plugin/m2rte$(soext) with
2002         $(M2RTE_PLUGIN_SO).
2003         * gm2spec.cc (lang_specific_driver): Set need_plugin to false
2004         by default.
2006 2023-08-09  Gaius Mulley  <gaiusmod2@gmail.com>
2008         PR modula2/110779
2009         * gm2-libs-iso/SysClock.mod (GetClock): Test GetTimespec
2010         return value.
2011         (SetClock): Test SetTimespec return value.
2012         * gm2-libs-iso/wrapclock.def (GetTimespec): Add integer
2013         return type.
2014         (SetTimespec): Add integer return type.
2016 2023-08-05  Gaius Mulley  <gaiusmod2@gmail.com>
2018         PR modula2/110779
2019         * gm2-libs-iso/SysClock.mod: Re-implement using wrapclock.
2020         * gm2-libs-iso/wrapclock.def: New file.
2022 2023-08-01  Gaius Mulley  <gaiusmod2@gmail.com>
2024         PR modula2/110161
2025         * gm2-compiler/M2Check.mod (checkProcTypeEquivalence): New
2026         procedure function.
2027         (checkTypeKindEquivalence): Call checkProcTypeEquivalence
2028         if either left or right is a proc type.
2029         * gm2-compiler/M2Quads.mod (BuildRelOp): Create
2030         combinedTok prior to creating the range check quadruple.
2031         Use combinedTok when creating the range check quadruple.
2033 2023-08-01  Gaius Mulley  <gaiusmod2@gmail.com>
2035         PR modula2/110865
2036         * gm2-compiler/M2Quads.mod (BuildDesignatorArray):
2037         Rename t as type and d as dim.  New variable result.
2038         Allow constants of an array type to be indexed.
2040 2023-07-25  Gaius Mulley  <gaiusmod2@gmail.com>
2042         PR modula2/110174
2043         * gm2-compiler/M2GCCDeclare.def (PromoteToCString): New procedure
2044         function.
2045         * gm2-compiler/M2GCCDeclare.mod (PromoteToCString): New procedure
2046         function.
2047         * gm2-compiler/M2GenGCC.mod (BuildTreeFromInterface): Call
2048         skip_const_decl before chaining the parameter value.
2049         Use PromoteToCString to ensure the string is nul terminated.
2050         (CodeInline): Remove all parameters and replace with quad.
2051         Use GetQuadOtok to get operand token numbers.
2052         Remove call to DeclareConstant and replace it with PromoteToCString.
2053         * gm2-compiler/M2Quads.def (BuildInline): Rename into ...
2054         (BuildAsm): ... this.
2055         * gm2-compiler/M2Quads.mod: (BuildInline): Rename into ...
2056         (BuildAsm): ... this.
2057         (BuildAsmElement): Add debugging.
2058         * gm2-compiler/P1Build.bnf: Remove import of BuildInline.
2059         * gm2-compiler/P2Build.bnf: Remove import of BuildInline.
2060         * gm2-compiler/P3Build.bnf: Remove import of BuildInline and
2061         import BuildAsm.
2062         * gm2-compiler/PHBuild.bnf: Remove import of BuildInline.
2063         * gm2-libs-iso/SysClock.mod (foo): Remove.
2064         * gm2-libs/FIO.mod (BufferedRead): Rename parameter a to dest.
2065         Rename variable t to src.
2066         * m2pp.cc (pf): Correct block comment.
2067         (pe): Correct block comment.
2068         (m2pp_asm_expr): New function.
2069         (m2pp_statement): Call m2pp_asm_expr.
2071 2023-07-22  Gaius Mulley  <gaiusmod2@gmail.com>
2073         PR modula2/110631
2074         * gm2-libs/FIO.def (ReadAny): Correct comment as
2075         HIGH (a) + 1 is number of bytes.
2076         (WriteAny): Correct comment as HIGH (a) + 1 is number of
2077         bytes.
2078         * gm2-libs/FIO.mod (ReadAny): Correct comment as
2079         HIGH (a) + 1 is number of bytes.  Also pass HIGH (a) + 1
2080         to BufferedRead.
2081         (WriteAny): Correct comment as HIGH (a) + 1 is number of
2082         bytes.  Also pass HIGH (a) + 1 to BufferedWrite.
2083         (BufferedWrite): Rename parameter a to src, rename variable
2084         t to dest.  Correct parameter order to memcpy.
2086 2023-07-20  Gaius Mulley  <gaiusmod2@gmail.com>
2088         * gm2-compiler/M2SymInit.mod (IsExempt): Remove parameter exemption.
2089         (CheckIndrX): Call SetupLAlias between lhs and content.
2090         (trashParam): Re-write.
2091         (SetVarLRInitialized): Indicate shadow and heap are initialized.
2092         Call SetupIndr between shadow and heap.
2093         * gm2-compiler/P2SymBuild.mod: Import
2094         PutProcedureParameterHeapVars.
2095         (EndBuildProcedure): Call PutProcedureParameterHeapVars.
2096         * gm2-compiler/SymbolTable.def (GetParameterHeapVar): New
2097         procedure function.
2098         (PutProcedureParameterHeapVars): New procedure function.
2099         * gm2-compiler/SymbolTable.mod (MakeParameterHeapVar): New
2100         procedure function.
2101         (GetParameterHeapVar): New procedure function.
2102         (PuttParameterHeapVar): New procedure function.
2103         (PutProcedureParameterHeapVars): New procedure.
2104         (VarParam): HeapVar new record field.
2105         (PutVarParam): HeapVar assigned to NulSym.
2107 2023-07-19  Gaius Mulley  <gaiusmod2@gmail.com>
2109         PR modula2/110284
2110         * Make-lang.in (m2_OBJS): Add m2/gm2-gcc/rtegraph.o and
2111         m2/gm2-compiler-boot/m2flex.o.
2112         (c-family/m2pp.o): Remove.
2113         * Make-maintainer.in (c-family/m2pp.o): Add.
2115 2023-07-19  Gaius Mulley  <gaiusmod2@gmail.com>
2117         * gm2-compiler/M2Quads.mod (BuildDifAdrFunction): Removed
2118         unnecessary in error message.  Use vartok for location.
2119         (BuildOddFunction): Use optok for location.
2120         (BuildAbsFunction): Use vartok for location.  Bugfix set vartok.
2121         (BuildCapFunction): Use optok for location.
2122         (BuildOrdFunction): Use optok for location and correct format
2123         specifier.
2124         (BuildShiftFunction): Use vartok for location.
2125         (BuildRotateFunction): Use vartok for location.
2126         (BuildTruncFunction): Use vartok for location.
2127         (BuildFloatFunction): Use vartok for location.
2128         (BuildReFunction): Use vartok for location.
2129         (BuildImFunction): Use vartok for location.
2130         * gm2-compiler/M2SymInit.mod (trashParam): Remove commented code.
2132 2023-07-19  Gaius Mulley  <gaiusmod2@gmail.com>
2134         * gm2-compiler/M2Quads.mod (BuildRealFuncProcCall): Set the trash
2135         parameter value to NIL if DEALLOCATE is detected.
2136         * gm2-compiler/M2SymInit.mod (CheckDeferredRecordAccess): Pass
2137         tok to SetVarInitialized.  Pass tok to GetVarComponentInitialized.
2138         (ComponentFindVar): Add tok parameter.  Check aliased pointer
2139         against Nil and generate warning if necessary.
2140         (deRefComponent): Add tok and sym parameters and pass them to
2141         getContent.
2142         (SetVarComponentInitialized): Add tok parameter.  Pass tok to
2143         ComponentFindVar.  Pass tok and sym to deRefComponent.
2144         (GetVarComponentInitialized): Add tok parameter.  Pass tok to
2145         ComponentFindVar.  Pass tok to deRefComponent.
2146         (SetVarInitialized): Add tok parameter.  Pass tok to
2147         SetVarComponentInitialized.
2148         (doGetVarInitialized): Add tok parameter.  Pass tok to
2149         GetVarComponentInitialized.
2150         (CheckXIndr): Pass lhs and lhstok to getContent.
2151         (CheckIndrX): Pass rhs and rhstok to getContent.
2152         (CheckBecomes): Pass destok to ComponentFindVar.  Pass des and
2153         destok to deRefComponent.
2154         (CheckAddr): Pass contenttok to GetVarInitialized.  Pass ptrtok
2155         to SetVarInitialized.
2156         (CheckReadBeforeInitQuad): Pass op1tok to SetVarInitialized for
2157         op1 cases and op3tok for op3 cases.
2158         (trashParam): Get operand tokens.  Pass op3tok to
2159         SetVarInitialized.  Pass op3 and op3tok to getContent.
2160         Alias ptr to NIL if procedure is DEALLOCATE.  Pass op3tok to
2161         SetVarInitialized.
2162         (IsDeallocate): New procedure function.
2163         (DetectTrash): Use IsDeallocate.
2164         (SetupLAlias): Allow exp to be Nil.
2165         (getContent): Generate warning message if ptr is Nil.
2167 2023-07-18  Gaius Mulley  <gaiusmod2@gmail.com>
2169         * Make-lang.in: Minor formatting change.
2170         * gm2-compiler/M2GCCDeclare.mod
2171         (DeclareUnboundedProcedureParameters): Rename local variables.
2172         (WalkUnboundedProcedureParameters): Rename local variables.
2173         (DoVariableDeclaration): Avoid declaration of a variable if
2174         it is on the heap (used by static analysis only).
2175         * gm2-compiler/M2GenGCC.mod: Formatting.
2176         * gm2-compiler/M2Quads.def (GetQuadTrash): New procedure function.
2177         * gm2-compiler/M2Quads.mod (GetQuadTrash): New procedure function.
2178         (QuadFrame): Add Trash field.
2179         (BuildRealFuncProcCall): Detect ALLOCATE and DEALLOCATE and create
2180         a heap variable for parameter 1 saving it as the trashed variable
2181         for static analysis.
2182         (GenQuadOTrash): New procedure.
2183         (DisplayQuadRange): Bugfix.  Write the scope number.
2184         * gm2-compiler/M2SymInit.mod: Rewritten to separate LValue
2185         equivalence from LValue to RValue pairings.  Comprehensive
2186         detection of variant record implemented.  Allow dereferencing
2187         of pointers through LValue/RValue chains.
2188         * gm2-compiler/SymbolTable.def (PutVarHeap): New procedure.
2189         (IsVarHeap): New procedure function.
2190         (ForeachParamSymDo): New procedure.
2191         * gm2-compiler/SymbolTable.mod (PutVarHeap): New procedure.
2192         (IsVarHeap): New procedure function.
2193         (ForeachParamSymDo): New procedure.
2194         (MakeVariableForParam): Reformatted.
2195         (CheckForUnknownInModule): Reformatted.
2196         (SymVar): Add field Heap.
2197         (MakeVar): Assign Heap to FALSE.
2199 2023-07-13  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
2201         * Make-lang.in (m2/boot-bin/mklink$(exeext)): Add $(LDFLAGS).
2203 2023-07-11  Gaius Mulley  <gaiusmod2@gmail.com>
2205         * gm2-compiler/M2BasicBlock.def (InitBasicBlocksFromRange): New
2206         parameter ScopeSym.
2207         * gm2-compiler/M2BasicBlock.mod (ConvertQuads2BasicBlock): New
2208         parameter ScopeSym.
2209         (InitBasicBlocksFromRange): New parameter ScopeSym.  Call
2210         ConvertQuads2BasicBlock with ScopeSym.
2211         (DisplayBasicBlocks): Uncomment.
2212         * gm2-compiler/M2Code.mod: Replace VariableAnalysis with
2213         ScopeBlockVariableAnalysis.
2214         (InitialDeclareAndOptiomize): Add parameter scope.
2215         (SecondDeclareAndOptimize): Add parameter scope.
2216         * gm2-compiler/M2GCCDeclare.mod (DeclareConstructor): Add scope
2217         parameter to DeclareTypesConstantsProceduresInRange.
2218         (DeclareTypesConstantsProceduresInRange): New parameter scope.
2219         Pass scope to DisplayQuadRange.  Reformatted.
2220         * gm2-compiler/M2GenGCC.def (ConvertQuadsToTree): New parameter
2221         scope.
2222         * gm2-compiler/M2GenGCC.mod (ConvertQuadsToTree): New parameter
2223         scope.
2224         * gm2-compiler/M2Optimize.mod (KnownReachable): New parameter
2225         scope.
2226         * gm2-compiler/M2Options.def (SetUninitVariableChecking): Add
2227         arg parameter.
2228         * gm2-compiler/M2Options.mod (SetUninitVariableChecking): Add
2229         arg parameter and set boolean UninitVariableChecking and
2230         UninitVariableConditionalChecking.
2231         (UninitVariableConditionalChecking): New boolean set to FALSE.
2232         * gm2-compiler/M2Quads.def (IsGoto): New procedure function.
2233         (DisplayQuadRange): Add scope parameter.
2234         (LoopAnalysis): Add scope parameter.
2235         * gm2-compiler/M2Quads.mod: Import PutVarArrayRef.
2236         (IsGoto): New procedure function.
2237         (LoopAnalysis): Add scope parameter and use MetaErrorT1 instead
2238         of WarnStringAt.
2239         (BuildStaticArray): Call PutVarArrayRef.
2240         (BuildDynamicArray): Call PutVarArrayRef.
2241         (DisplayQuadRange): Add scope parameter.
2242         (GetM2OperatorDesc): Add relational condition cases.
2243         * gm2-compiler/M2Scope.def (ScopeProcedure): Add parameter.
2244         * gm2-compiler/M2Scope.mod (DisplayScope): Pass scopeSym to
2245         DisplayQuadRange.
2246         (ForeachScopeBlockDo): Pass scopeSym to p.
2247         * gm2-compiler/M2SymInit.def (VariableAnalysis): Rename to ...
2248         (ScopeBlockVariableAnalysis): ... this.
2249         * gm2-compiler/M2SymInit.mod (ScopeBlockVariableAnalysis): Add
2250         scope parameter.
2251         (bbEntry): New pointer to record.
2252         (bbArray): New array.
2253         (bbFreeList): New variable.
2254         (errorList): New list.
2255         (IssueConditional): New procedure.
2256         (GenerateNoteFlow): New procedure.
2257         (IssueWarning): New procedure.
2258         (IsUniqueWarning): New procedure.
2259         (CheckDeferredRecordAccess): Re-implement.
2260         (CheckBinary): Add warning and lst parameters.
2261         (CheckUnary): Add warning and lst parameters.
2262         (CheckXIndr): Add warning and lst parameters.
2263         (CheckIndrX): Add warning and lst parameters.
2264         (CheckBecomes): Add warning and lst parameters.
2265         (CheckComparison): Add warning and lst parameters.
2266         (CheckReadBeforeInitQuad): Add warning and lst parameters to all
2267         Check procedures.  Add all case quadruple clauses.
2268         (FilterCheckReadBeforeInitQuad): Add warning and lst parameters.
2269         (CheckReadBeforeInitFirstBasicBlock): Add warning and lst parameters.
2270         (bbArrayKill): New procedure.
2271         (DumpBBEntry): New procedure.
2272         (DumpBBArray): New procedure.
2273         (DumpBBSequence): New procedure.
2274         (TestBBSequence): New procedure.
2275         (CreateBBPermultations): New procedure.
2276         (ScopeBlockVariableAnalysis): New procedure.
2277         (GetOp3): New procedure.
2278         (GenerateCFG): New procedure.
2279         (NewEntry): New procedure.
2280         (AppendEntry): New procedure.
2281         (init): Initialize bbFreeList and errorList.
2282         * gm2-compiler/SymbolTable.def (PutVarArrayRef): New procedure.
2283         (IsVarArrayRef): New procedure function.
2284         * gm2-compiler/SymbolTable.mod (SymVar): ArrayRef new field.
2285         (MakeVar): Set ArrayRef to FALSE.
2286         (PutVarArrayRef): New procedure.
2287         (IsVarArrayRef): New procedure function.
2288         * gm2-gcc/init.cc (_M2_M2SymInit_init): New prototype.
2289         (init_PerCompilationInit): Add call to _M2_M2SymInit_init.
2290         * gm2-gcc/m2options.h (M2Options_SetUninitVariableChecking):
2291         New definition.
2292         * gm2-lang.cc (gm2_langhook_handle_option): Add new case
2293         OPT_Wuninit_variable_checking_.
2294         * lang.opt: Wuninit-variable-checking= new entry.
2296 2023-07-03  Gaius Mulley  <gaiusmod2@gmail.com>
2298         PR modula2/110125
2299         * Make-lang.in (GM2-COMP-BOOT-DEFS): Add M2SymInit.def.
2300         (GM2-COMP-BOOT-MODS): Add M2SymInit.mod.
2301         * gm2-compiler/M2BasicBlock.mod: Formatting changes.
2302         * gm2-compiler/M2Code.mod: Remove import of VariableAnalysis from
2303         M2Quads.  Import VariableAnalysis from M2SymInit.mod.
2304         * gm2-compiler/M2GCCDeclare.mod (PrintVerboseFromList):
2305         Add debugging print for a component.
2306         (TypeConstFullyDeclared): Call RememberType for every type.
2307         * gm2-compiler/M2GenGCC.mod (CodeReturnValue): Add parameter to
2308         GetQuadOtok.
2309         (CodeBecomes): Add parameter to GetQuadOtok.
2310         (CodeXIndr): Add parameter to GetQuadOtok.
2311         * gm2-compiler/M2Optimize.mod (ReduceBranch): Reformat and
2312         preserve operand token positions when reducing the branch
2313         quadruples.
2314         (ReduceGoto): Reformat.
2315         (FoldMultipleGoto): Reformat.
2316         (KnownReachable): Reformat.
2317         * gm2-compiler/M2Options.def (UninitVariableChecking): New
2318         variable declared and exported.
2319         (SetUninitVariableChecking): New procedure.
2320         * gm2-compiler/M2Options.mod (SetWall): Set
2321         UninitVariableChecking.
2322         (SetUninitVariableChecking): New procedure.
2323         * gm2-compiler/M2Quads.def (PutQuadOtok): Exported and declared.
2324         (VariableAnalysis): Removed.
2325         * gm2-compiler/M2Quads.mod (PutQuadOtok): New procedure.
2326         (doVal): Reformatted.
2327         (MarkAsWrite): Reformatted.
2328         (MarkArrayAsWritten): Reformatted.
2329         (doIndrX): Use PutQuadOtok.
2330         (MakeRightValue): Use GenQuadOtok.
2331         (MakeLeftValue): Use GenQuadOtok.
2332         (CheckReadBeforeInitialized): Remove.
2333         (IsNeverAltered): Reformat.
2334         (DebugLocation): New procedure.
2335         (BuildDesignatorPointer): Use GenQuadO to preserve operand token
2336         position.
2337         (BuildRelOp): Use GenQuadOtok ditto.
2338         * gm2-compiler/SymbolTable.def (VarCheckReadInit): New procedure.
2339         (VarInitState): New procedure.
2340         (PutVarInitialized): New procedure.
2341         (PutVarFieldInitialized): New procedure function.
2342         (GetVarFieldInitialized): New procedure function.
2343         (PrintInitialized): New procedure.
2344         * gm2-compiler/SymbolTable.mod (VarCheckReadInit): New procedure.
2345         (VarInitState): New procedure.
2346         (PutVarInitialized): New procedure.
2347         (PutVarFieldInitialized): New procedure function.
2348         (GetVarFieldInitialized): New procedure function.
2349         (PrintInitialized): New procedure.
2350         (LRInitDesc): New type.
2351         (SymVar): InitState new field.
2352         (MakeVar): Initialize InitState.
2353         * gm2-gcc/m2options.h (M2Options_SetUninitVariableChecking):
2354         New function declaration.
2355         * gm2-lang.cc (gm2_langhook_handle_option): Detect
2356         OPT_Wuninit_variable_checking and call SetUninitVariableChecking.
2357         * lang.opt: Add Wuninit-variable-checking.
2358         * gm2-compiler/M2SymInit.def: New file.
2359         * gm2-compiler/M2SymInit.mod: New file.
2361 2023-06-30  Iain Sandoe  <iain@sandoe.co.uk>
2363         PR testsuite/108835
2364         * gm2-libs/RTint.mod: Do not use NIL timeout setting on select,
2365         test failures sequentially, finishing on the first success.
2367 2023-06-18  Gaius Mulley  <gaiusmod2@gmail.com>
2369         PR modula2/110284
2370         * Make-lang.in (m2_OBJS): Assign $(GM2_C_OBJS).
2371         (GM2_C_OBJS): Remove m2/stor-layout.o.
2372         (m2/stor-layout.o): Remove rule.
2373         * gm2-gcc/gcc-consolidation.h (rtl.h): Remove include.
2374         (df.h): Remove include.
2375         (except.h): Remove include.
2377 2023-06-15  Marek Polacek  <polacek@redhat.com>
2379         * Make-lang.in: New var, GM2_PICFLAGS.  Use it.
2381 2023-06-13  Gaius Mulley  <gaiusmod2@gmail.com>
2383         * Make-lang.in (check-format-error): New rule.
2384         * gm2-compiler/M2MetaError.mod (op): Add calls InternalError if
2385         digits are detected.
2386         * gm2-compiler/M2Quads.mod (BuildForToByDo): Bugfix to format
2387         specifier.
2388         (BuildLengthFunction): Bugfix to format specifiers.
2389         (BuildOddFunction): Bugfix to format specifiers.
2390         (BuildAbsFunction): Bugfix to format specifiers.
2391         (BuildCapFunction): Bugfix to format specifiers.
2392         (BuildChrFunction): Bugfix to format specifiers.
2393         (BuildOrdFunction): Bugfix to format specifiers.
2394         (BuildMakeAdrFunction): Bugfix to format specifiers.
2395         (BuildSizeFunction): Bugfix to format specifiers.
2396         (BuildBitSizeFunction): Bugfix to format specifiers.
2397         * tools-src/checkmeta.py: New file.
2399 2023-06-12  Gaius Mulley  <gaiusmod2@gmail.com>
2401         PR modula2/110189
2402         * gm2-compiler/M2Quads.mod (BuildAbsFunction): Replace abort
2403         format specifier.
2404         (BuildValFunction): Replace abort format specifier.
2405         (BuildCastFunction): Replace abort format specifier.
2406         (BuildMinFunction): Replace abort format specifier.
2407         (BuildMaxFunction): Replace abort format specifier.
2408         (BuildTruncFunction): Replace abort format specifier.
2409         * gm2-compiler/P3Build.bnf (Pass1): Remove.
2410         (Pass2): Remove.
2411         (Pass3): Remove.
2412         (Expect): Add Pass1.
2413         (AsmStatement): Remove Pass3.
2414         (AsmOperands): Remove Pass3.
2415         (AsmOperandSpec): Remove Pass3.
2416         (AsmInputElement): Remove Pass3.
2417         (AsmOutputElement): Remove Pass3.
2418         (AsmTrashList): Remove Pass3.
2420 2023-06-12  Gaius Mulley  <gaiusmod2@gmail.com>
2422         PR modula2/110126
2423         * gm2-compiler/M2Quads.def (BuildAsmElement): Remove
2424         trash parameter.
2425         (BuildAsmTrash): New procedure.
2426         * gm2-compiler/M2Quads.mod (BuildAsmTrash): New procedure.
2427         (BuildAsmElement): Remove trash parameter.
2428         * gm2-compiler/P3Build.bnf (AsmTrashList): Rewrite.
2430 2023-06-08  Gaius Mulley  <gaiusmod2@gmail.com>
2432         PR modula2/110126
2433         * gm2-compiler/M2GenGCC.mod (BuildTreeFromInterface): Remove
2434         tokenno parameter.  Use object tok instead of tokenno.
2435         (BuildTrashTreeFromInterface): Use object tok instead of
2436         GetDeclaredMod.
2437         (CodeInline): Remove tokenno from parameter list to BuildTreeFromInterface.
2438         * gm2-compiler/M2Quads.def (BuildAsmElement): Exported and
2439         defined.
2440         * gm2-compiler/M2Quads.mod (BuildOptimizeOff): Reformatted.
2441         (BuildInline): Reformatted.
2442         (BuildLineNo): Reformatted.
2443         (UseLineNote): Reformatted.
2444         (BuildAsmElement): New procedure.
2445         * gm2-compiler/P0SyntaxCheck.bnf (AsmOperands): Use
2446         ConstExpression instead of string.
2447         (AsmElement): Use ConstExpression instead of string.
2448         (TrashList): Use ConstExpression instead of string.
2449         * gm2-compiler/P1Build.bnf (AsmOperands): Use
2450         ConstExpression instead of string.
2451         (AsmElement): Use ConstExpression instead of string.
2452         (TrashList): Use ConstExpression instead of string.
2453         * gm2-compiler/P2Build.bnf (AsmOperands): Use
2454         ConstExpression instead of string.
2455         (AsmElement): Use ConstExpression instead of string.
2456         (TrashList): Use ConstExpression instead of string.
2457         * gm2-compiler/P3Build.bnf (AsmOperands): Rewrite.
2458         (AsmOperandSpec): Rewrite.
2459         (AsmOutputList): New rule.
2460         (AsmInputList): New rule.
2461         (TrashList): Rewrite.
2462         * gm2-compiler/PCBuild.bnf (AsmOperands): Use
2463         ConstExpression instead of string.
2464         (AsmElement): Use ConstExpression instead of string.
2465         (TrashList): Use ConstExpression instead of string.
2466         * gm2-compiler/PHBuild.bnf (AsmOperands): Use
2467         ConstExpression instead of string.
2468         (AsmElement): Use ConstExpression instead of string.
2469         (TrashList): Use ConstExpression instead of string.
2470         * gm2-compiler/SymbolTable.def (PutRegInterface):
2471         Rewrite interface.
2472         (GetRegInterface): Rewrite interface.
2473         * gm2-compiler/SymbolTable.mod (SetFirstUsed): New procedure.
2474         (PutFirstUsed): New procedure.
2475         (PutRegInterface): Rewrite.
2476         (GetRegInterface): Rewrite.
2478 2023-06-07  Jakub Jelinek  <jakub@redhat.com>
2480         * Make-lang.in: Build $(generated_files) before building
2481         all $(GM2_C_OBJS).
2483 2023-06-07  Gaius Mulley  <gaiusmod2@gmail.com>
2485         PR modula2/110019
2486         * gm2-compiler/SymbolKey.mod (SearchAndDo): Reformatted.
2487         (ForeachNodeDo): Reformatted.
2488         * gm2-compiler/SymbolTable.mod (AddListify): Join list
2489         with "," or "and" if more than one word is in the list.
2490         * m2.flex: Remove -1 from atoi(yytext) line number.
2492 2023-06-03  Gaius Mulley  <gaiusmod2@gmail.com>
2494         PR modula2/110003
2495         * gm2-compiler/P2SymBuild.mod (GetParameterShadowVar): Import.
2496         (CheckFormalParameterSection): Call PutDeclared for the shadow
2497         variable associated with the parameter.
2499 2023-05-24  Gaius Mulley  <gaiusmod2@gmail.com>
2501         PR modula2/109952
2502         * Make-maintainer.in: Change header to include emacs file mode.
2503         * gm2-compiler/M2GenGCC.mod (BuildHighFromChar): Check whether
2504         operand is a constant string and is nul terminated then return one.
2505         * gm2-compiler/PCSymBuild.mod (WalkFunction): Add default return
2506         TRUE.  Static analysis missing return path fix.
2507         * gm2-libs/IO.mod (Init): Rewrite to help static analysis.
2508         * target-independent/m2/gm2-libs.texi: Rebuild.
2510 2023-05-19  Gaius Mulley  <gaiusmod2@gmail.com>
2512         PR modula2/109908
2513         * gm2-libs-iso/Strings.mod (Delete): Re-implement.
2515 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
2517         * gm2-gcc/m2builtins.cc (doradix): Use _P defines from tree.h.
2518         (doplaces): Ditto.
2519         (doexponentmin): Ditto.
2520         (doexponentmax): Ditto.
2521         (dolarge): Ditto.
2522         (dosmall): Ditto.
2523         (dogUnderflow): Ditto.
2524         * gm2-gcc/m2convert.cc (unsafe_conversion_p): Ditto.
2525         * gm2-gcc/m2expr.cc (m2expr_build_unary_op_check): Ditto.
2526         (m2expr_build_binary_op_check): Ditto.
2527         * gm2-gcc/m2tree.cc (m2tree_is_var): Ditto.
2528         * gm2-gcc/m2treelib.cc (build_modify_expr): Ditto.
2529         * gm2-gcc/m2type.cc (gm2_finish_decl): Ditto.
2530         * m2pp.cc (hextree): Ditto.
2531         (m2pp_call_expr): Ditto.
2533 2023-05-17  Gaius Mulley  <gaiusmod2@gmail.com>
2535         * gm2-libs-iso/LongWholeIO.mod (WriteInt): Only request a
2536         sign if the value is < 0.
2537         * gm2-libs-iso/ShortWholeIO.mod (WriteInt): Only request a
2538         sign if the value is < 0.
2539         * gm2-libs-iso/WholeIO.mod (WriteInt): Only request a sign
2540         if the value is < 0.
2541         * gm2-libs-iso/WholeStr.mod (WriteInt): Only request a sign
2542         if the value is < 0.
2544 2023-05-16  Gaius Mulley  <gaiusmod2@gmail.com>
2546         PR modula2/109879
2547         * gm2-libs-iso/LongIO.mod (ReadReal): Call SkipSpaces.
2548         * gm2-libs-iso/LongWholeIO.mod (ReadInt): Call SkipSpaces.
2549         (ReadCard): Call SkipSpaces.
2550         * gm2-libs-iso/RealIO.mod (ReadReal): Call SkipSpaces.
2551         * gm2-libs-iso/ShortWholeIO.mod: (ReadInt): Call SkipSpaces.
2552         (ReadCard): Call SkipSpaces.
2553         * gm2-libs-iso/TextIO.mod: Import SkipSpaces.
2554         * gm2-libs-iso/WholeIO.mod (ReadInt): Call SkipSpaces.
2555         (ReadCard): Call SkipSpaces.
2556         * gm2-libs-iso/TextUtil.def: New file.
2557         * gm2-libs-iso/TextUtil.mod: New file.
2559 2023-05-16  Gaius Mulley  <gaiusmod2@gmail.com>
2561         PR modula2/108344
2562         * gm2-libs-coroutines/TimerHandler.mod (EnableLED): New constant.
2563         (Timer): Test EnableLED before switching on the scroll LED.
2565 2023-05-12  Gaius Mulley  <gaiusmod2@gmail.com>
2567         PR modula2/109830
2568         * gm2-libs-iso/SeqFile.mod (newCid): New parameter toAppend
2569         used to select FIO.OpenForRandom.
2570         (OpenRead): Pass extra parameter to newCid.
2571         (OpenWrite): Pass extra parameter to newCid.
2572         (OpenAppend): Pass extra parameter to newCid.
2574 2023-05-11  Gaius Mulley  <gaiusmod2@gmail.com>
2576         PR modula2/109810
2577         * gm2-compiler/M2ALU.mod (ConvertConstToType): Use
2578         PrepareCopyString in place of DoCopyString.
2579         * gm2-compiler/M2GenGCC.def (DoCopyString): Rename to ...
2580         (PrepareCopyString): ... this.
2581         * gm2-compiler/M2GenGCC.mod (CodeStatement): Call CodeReturnValue
2582         with a single parameter.  Call CodeXIndr with a single parameter.
2583         (CodeReturnValue): Remove parameters and replace with a single
2584         quadno.  Reimplement using PrepareCopyString.  Issue error
2585         if the string exceeds designator space.
2586         (DoCopyString): Reimplement and rename to ...
2587         (PrepareCopyString): ... this.
2588         (CodeXIndr): Remove parameters and replace with a single
2589         quadno.  Reimplement using PrepareCopyString.  Issue error
2590         if the string exceeds designator space.
2591         (CodeBecomes): Remove parameters and replace with a single
2592         quadno.  Reimplement using PrepareCopyString.  Issue error
2593         if the string exceeds designator space.
2594         * gm2-compiler/M2Quads.def (BuildReturn): Rename parameter to
2595         tokreturn.
2596         * gm2-compiler/M2Quads.mod (BuildReturn): Rename parameter to
2597         tokreturn.  Rename tokno to tokcombined.
2599 2023-05-09  Gaius Mulley  <gaiusmod2@gmail.com>
2601         PR modula2/109779
2602         * gm2-libs-iso/RTgen.mod (doLook): Remove old.
2603         Remove re-assignment of result.
2604         * gm2-libs-iso/TextIO.mod (CanRead): Rename into ...
2605         (CharAvailable): ... this.
2606         (DumpState): New procedure.
2607         (SetResult): Rename as SetNul.
2608         (WasGoodChar): Rename into ...
2609         (EofOrEoln): ... this.
2610         (SkipLine): Skip over the newline.
2611         (ReadString): Flip THEN ELSE statements after testing for
2612         EofOrEoln.
2613         (ReadRestLine): Flip THEN ELSE statements after testing for
2614         EofOrEoln.
2616 2023-05-04  Gaius Mulley  <gaiusmod2@gmail.com>
2618         PR modula2/109729
2619         * gm2-compiler/M2GenGCC.mod (CodeStatement): Detect
2620         ArithAddOp and call CodeAddChecked.
2621         (ResolveConstantExpressions): Detect ArithAddOp and call
2622         FoldArithAdd.
2623         (FoldArithAdd): New procedure.
2624         (FoldAdd): Refactor to use FoldArithAdd.
2625         * gm2-compiler/M2Quads.def (QuadOperator): Add ArithAddOp.
2626         * gm2-compiler/M2Quads.mod: Remove commented imports.
2627         (QuadFrame): Changed comments to use GNU coding standards.
2628         (ArithPlusTok): New global variable.
2629         (BuildForToByDo): Use ArithPlusTok instead of PlusTok.
2630         (MakeOp): Detect ArithPlusTok and return ArithAddOp.
2631         (WriteQuad): Add ArithAddOp clause.
2632         (WriteOperator): Add ArithAddOp clause.
2633         (Init): Initialize ArithPlusTok.
2635 2023-05-04  Gaius Mulley  <gaiusmod2@gmail.com>
2637         PR modula2/109675
2638         * Make-lang.in (MC-LIB-DEFS): Remove M2LINK.def.
2639         (BUILD-PGE-O): Remove GM2LINK.o.
2640         * Make-maintainer.in (PPG-DEFS): New define.
2641         (PPG-LIB-DEFS): Remove M2LINK.def.
2642         (BUILD-BOOT-PPG-H): Add PPGDEF .h files.
2643         (m2/ppg$(exeext)): Remove M2LINK.o
2644         (PGE-DEPS): New define.
2645         (m2/pg$(exeext)): Remove M2LINK.o.
2646         (m2/gm2-pge-boot/$(SRC_PREFIX)%.o): Add -Im2/gm2-pge-boot.
2647         (m2/pge$(exeext)): Remove M2LINK.o.
2648         (pge-maintainer): Re-implement.
2649         (pge-libs-push): Re-implement.
2650         (m2/m2obj3/cc1gm2$(exeext)): Remove M2LINK.o.
2651         * gm2-libs/DynamicStrings.mod (writeAddress): Re-implement
2652         using snprintf.
2653         * gm2-libs/M2Dependent.mod: Remove commented out imports.
2654         * mc-boot/GDynamicStrings.cc: Rebuild.
2655         * mc-boot/GFIO.cc: Rebuild.
2656         * mc-boot/GFormatStrings.cc: Rebuild.
2657         * mc-boot/GM2Dependent.cc: Rebuild.
2658         * mc-boot/GM2Dependent.h: Rebuild.
2659         * mc-boot/GM2RTS.cc: Rebuild.
2660         * mc-boot/GM2RTS.h: Rebuild.
2661         * mc-boot/GRTExceptions.cc: Rebuild.
2662         * mc-boot/GRTint.cc: Rebuild.
2663         * mc-boot/GSFIO.cc: Rebuild.
2664         * mc-boot/GStringConvert.cc: Rebuild.
2665         * mc-boot/Gdecl.cc: Rebuild.
2666         * pge-boot/GASCII.cc: Rebuild.
2667         * pge-boot/GASCII.h: Rebuild.
2668         * pge-boot/GArgs.cc: Rebuild.
2669         * pge-boot/GArgs.h: Rebuild.
2670         * pge-boot/GAssertion.cc: Rebuild.
2671         * pge-boot/GAssertion.h: Rebuild.
2672         * pge-boot/GBreak.h: Rebuild.
2673         * pge-boot/GCmdArgs.h: Rebuild.
2674         * pge-boot/GDebug.cc: Rebuild.
2675         * pge-boot/GDebug.h: Rebuild.
2676         * pge-boot/GDynamicStrings.cc: Rebuild.
2677         * pge-boot/GDynamicStrings.h: Rebuild.
2678         * pge-boot/GEnvironment.h: Rebuild.
2679         * pge-boot/GFIO.cc: Rebuild.
2680         * pge-boot/GFIO.h: Rebuild.
2681         * pge-boot/GFormatStrings.h:: Rebuild.
2682         * pge-boot/GFpuIO.h:: Rebuild.
2683         * pge-boot/GIO.cc: Rebuild.
2684         * pge-boot/GIO.h: Rebuild.
2685         * pge-boot/GIndexing.cc: Rebuild.
2686         * pge-boot/GIndexing.h: Rebuild.
2687         * pge-boot/GLists.cc: Rebuild.
2688         * pge-boot/GLists.h: Rebuild.
2689         * pge-boot/GM2Dependent.cc: Rebuild.
2690         * pge-boot/GM2Dependent.h: Rebuild.
2691         * pge-boot/GM2EXCEPTION.cc: Rebuild.
2692         * pge-boot/GM2EXCEPTION.h: Rebuild.
2693         * pge-boot/GM2RTS.cc: Rebuild.
2694         * pge-boot/GM2RTS.h: Rebuild.
2695         * pge-boot/GNameKey.cc: Rebuild.
2696         * pge-boot/GNameKey.h: Rebuild.
2697         * pge-boot/GNumberIO.cc: Rebuild.
2698         * pge-boot/GNumberIO.h: Rebuild.
2699         * pge-boot/GOutput.cc: Rebuild.
2700         * pge-boot/GOutput.h: Rebuild.
2701         * pge-boot/GPushBackInput.cc: Rebuild.
2702         * pge-boot/GPushBackInput.h: Rebuild.
2703         * pge-boot/GRTExceptions.cc: Rebuild.
2704         * pge-boot/GRTExceptions.h: Rebuild.
2705         * pge-boot/GSArgs.h: Rebuild.
2706         * pge-boot/GSEnvironment.h: Rebuild.
2707         * pge-boot/GSFIO.cc: Rebuild.
2708         * pge-boot/GSFIO.h: Rebuild.
2709         * pge-boot/GSYSTEM.h: Rebuild.
2710         * pge-boot/GScan.h: Rebuild.
2711         * pge-boot/GStdIO.cc: Rebuild.
2712         * pge-boot/GStdIO.h: Rebuild.
2713         * pge-boot/GStorage.cc: Rebuild.
2714         * pge-boot/GStorage.h: Rebuild.
2715         * pge-boot/GStrCase.cc: Rebuild.
2716         * pge-boot/GStrCase.h: Rebuild.
2717         * pge-boot/GStrIO.cc: Rebuild.
2718         * pge-boot/GStrIO.h: Rebuild.
2719         * pge-boot/GStrLib.cc: Rebuild.
2720         * pge-boot/GStrLib.h: Rebuild.
2721         * pge-boot/GStringConvert.h: Rebuild.
2722         * pge-boot/GSymbolKey.cc: Rebuild.
2723         * pge-boot/GSymbolKey.h: Rebuild.
2724         * pge-boot/GSysExceptions.h: Rebuild.
2725         * pge-boot/GSysStorage.cc: Rebuild.
2726         * pge-boot/GSysStorage.h: Rebuild.
2727         * pge-boot/GTimeString.h: Rebuild.
2728         * pge-boot/GUnixArgs.h: Rebuild.
2729         * pge-boot/Gbnflex.cc: Rebuild.
2730         * pge-boot/Gbnflex.h: Rebuild.
2731         * pge-boot/Gdtoa.h: Rebuild.
2732         * pge-boot/Gerrno.h: Rebuild.
2733         * pge-boot/Gldtoa.h: Rebuild.
2734         * pge-boot/Glibc.h: Rebuild.
2735         * pge-boot/Glibm.h: Rebuild.
2736         * pge-boot/Gpge.cc: Rebuild.
2737         * pge-boot/Gtermios.h: Rebuild.
2738         * pge-boot/Gwrapc.h: Rebuild.
2739         * mc-boot/GM2LINK.h: Removed.
2740         * pge-boot/GM2LINK.cc: Removed.
2741         * pge-boot/GM2LINK.h: Removed.
2743 2023-04-30  Gaius Mulley  <gaiusmod2@gmail.com>
2745         * gm2-compiler/SymbolTable.mod (ConstLitPoolEntry): New
2746         pointer to record.
2747         (ConstLitSym): New field RangeError.
2748         (ConstLitPoolTree): New SymbolTree representing name to
2749         index.
2750         (ConstLitArray): New dynamic array containing pointers
2751         to a ConstLitPoolEntry.
2752         (CreateConstLit): New procedure function.
2753         (LookupConstLitPoolEntry): New procedure function.
2754         (AddConstLitPoolEntry): New procedure function.
2755         (MakeConstLit): Re-implemented to check the constant lit
2756         pool before calling CreateConstLit.
2757         * m2.flex: Add ability to decode binary constant literals.
2759 2023-04-26  Gaius Mulley  <gaiusmod2@gmail.com>
2761         PR modula2/108121
2762         * gm2-compiler/M2ALU.mod (Less): Reformatted.
2763         * gm2-compiler/SymbolTable.mod (DetermineSizeOfConstant): Remove
2764         from import.
2765         (ConstantStringExceedsZType): Import.
2766         (GetConstLitType): Re-implement using ConstantStringExceedsZType.
2767         * gm2-gcc/m2decl.cc (m2decl_DetermineSizeOfConstant): Remove.
2768         (m2decl_ConstantStringExceedsZType): New function.
2769         (m2decl_BuildConstLiteralNumber): Re-implement.
2770         * gm2-gcc/m2decl.def (DetermineSizeOfConstant): Remove.
2771         (ConstantStringExceedsZType): New function.
2772         * gm2-gcc/m2decl.h (m2decl_DetermineSizeOfConstant): Remove.
2773         (m2decl_ConstantStringExceedsZType): New function.
2774         * gm2-gcc/m2expr.cc (append_digit): Remove.
2775         (m2expr_interpret_integer): Remove.
2776         (append_m2_digit): Remove.
2777         (m2expr_StrToWideInt): New function.
2778         (m2expr_interpret_m2_integer): Remove.
2779         * gm2-gcc/m2expr.def (CheckConstStrZtypeRange): New function.
2780         * gm2-gcc/m2expr.h (m2expr_StrToWideInt): New function.
2781         * gm2-gcc/m2type.cc (build_m2_word64_type_node): New function.
2782         (build_m2_ztype_node): New function.
2783         (m2type_InitBaseTypes): Call build_m2_ztype_node.
2784         * gm2-lang.cc (gm2_type_for_size): Re-write using early returns.
2786 2023-04-21  Arsen Arsenović  <arsen@aarsen.me>
2788         * Make-lang.in: Remove references to $(P).
2789         * Make-maintainer.in: Ditto.
2791 2023-04-21  Gaius Mulley  <gaiusmod2@gmail.com>
2793         PR modula2/109586
2794         * gm2-gcc/m2tree.cc (m2tree_IsAConstant): Add (TREE_CODE
2795         (t) == CONSTRUCTOR) to expression.
2797 2023-04-13  Gaius Mulley  <gaiusmod2@gmail.com>
2799         PR modula2/109488
2800         * lang.opt: Fix typo "maybe" to "may be".
2802 2023-04-13  Gaius Mulley  <gaiusmod2@gmail.com>
2804         * gm2-compiler/M2ALU.def (PopChar): New procedure function.
2805         * gm2-compiler/M2ALU.mod (PopChar): New procedure function.
2806         * gm2-compiler/M2GCCDeclare.mod (PromoteToString): Detect
2807         a single constant char and build a C string.
2808         * gm2-compiler/M2GenGCC.mod (IsConstStr): New procedure
2809         function.
2810         (GetStr): New procedure function.
2811         (FoldAdd): Use IsConstStr.
2812         * gm2-compiler/M2Quads.mod: Formatting changes.
2813         * gm2-gcc/m2expr.cc (m2expr_GetCstInteger): New function.
2814         * gm2-gcc/m2expr.def (GetCstInteger): New procedure function.
2815         * gm2-gcc/m2expr.h (m2expr_GetCstInteger): New prototype.
2817 2023-04-05  Gaius Mulley  <gaiusmod2@gmail.com>
2819         PR modula2/109423
2820         * gm2-compiler/M2Base.def (Unbounded): Remove.
2821         * gm2-compiler/M2Error.def (ErrorAbort0): Add noreturn
2822         attribute.
2823         * gm2-compiler/M2Quads.mod (BuildInclProcedure): Correct
2824         error format string.
2825         (BuildExceptProcedure): Correct error format string.
2826         (BuildAdrFunction): Call PutWriteQuad when taking the
2827         address of a variable.
2828         * gm2-libs-ch/SysExceptions.c (_M2_SysExceptions_init): Add
2829         parameters.
2830         * gm2-libs-ch/wrapc.c (_M2_wrapc_init): Add parameters.
2831         * gm2-libs/DynamicStrings.mod (DumpStringInfo): Remove t.
2832         (PopAllocationExemption): Remove f.
2833         * gm2-libs/FIO.mod (BufferedWrite): Remove result.
2834         * gm2-libs/FormatStrings.mod (Copy): Remove endpos and
2835         afterperc.
2836         (HandlePercent): Remove result.
2837         * gm2-libs/Indexing.mod (RemoveIndiceFromIndex): Remove k.
2838         * gm2-libs/M2Dependent.mod (CreateModule): Remove p0
2839         and p1.
2840         (DumpModuleData): Remove mptr.
2841         (ConstructModules): Remove nulp.
2842         * gm2-libs/RTExceptions.mod (PopHandler): Remove i.
2843         * gm2-libs/RTint.mod (Listen): Remove b4s, b4m, afs
2844         and afm.
2845         * gm2-libs/SFIO.mod (ReadS): Remove c.
2846         * gm2-libs/StringConvert.mod (doDecimalPlaces): Remove
2847         whole and fraction.
2849 2023-04-03  Gaius Mulley  <gaiusmod2@gmail.com>
2851         PR modula2/109388
2852         * gm2-compiler/M2GCCDeclare.mod (DoVariableDeclaration):
2853         Remove second parameter module.  Adjust all callers to
2854         remove the second parameter.
2855         * gm2-compiler/PHBuild.bnf (CheckAndInsert): Remove.
2856         (InStopSet): Remove.
2857         (PeepToken): Remove.
2858         (PushQualident): Remove.
2859         (SimpleDes): Remove.
2860         (ActualParameters): Remove.
2862 2023-04-02  Gaius Mulley  <gaiusmod2@gmail.com>
2864         PR modula2/109336
2865         * Make-lang.in (GM2_O): Set to -O0.
2866         (GM2_LIBS): Remove target libraries and replace with build libs.
2867         (BUILD-LIBS): New declaration.
2868         (m2/gm2-libs/libgm2.a): New rule.
2869         (m2/gm2-libs/%.o): New rule.
2870         (m2/gm2-libs/choosetemp.o): New rule.
2871         * gm2-compiler/M2ColorString.mod (append): Use ADR rather than
2872         implicit conversion.
2873         * gm2-compiler/M2Comp.mod (Compile): Add qprintf messages for when
2874         a source file is not found.  Improve comments and formatting.
2875         * gm2-libs-ch/cgetopt.c (cgetopt_cgetopt_long): Remove
2876         ansi-decl.h.  Add getopt.h.
2877         (cgetopt_cgetopt_long_only): Change cgetopt_ to getopt_.
2878         * gm2spec.cc (lang_specific_driver): Do not skip -fmod=.
2879         Remove comment.
2881 2023-03-29  Gaius Mulley  <gaiusmod2@gmail.com>
2883         PR modula2/109336
2884         PR modula2/109315
2885         * gm2-compiler/M2FileName.mod (CalculateFileName): Simplified by
2886         ensuring the extension contains the ".".
2887         (CalculateStemName): Re-formatted.
2888         (ExtractExtension): Re-formatted.
2889         (ExtractModule): Re-formatted.
2890         * gm2-compiler/M2Options.def (setdefextension): Add block comment.
2891         (setmodextension): Add block comment.  Re-formatted.
2892         * gm2-compiler/M2Options.mod (setdefextension): Add block comment.
2893         (setmodextension): Add block comment.  Re-formatted.
2894         * gm2-compiler/M2Search.mod (FindSourceDefFile): Use
2895         DefaultDefExt.
2896         (DefaultDefExt): New constant.
2897         (DefaultModExt): New constant.
2898         (FindSourceModFile): Use DefaultModExt.
2899         * gm2-gcc/m2decl.cc (m2decl_DeclareKnownVariable): Correct
2900         spelling.
2901         * gm2spec.cc (M2SOURCE): New constant.
2902         (LANGSPEC): New value.
2903         (MATHLIB): New value.
2904         (WITHLIBC): New value.
2905         (SKIPOPT): New value.
2906         (lang_specific_driver): Replace seen_module_extension bool with
2907         module_extension char *.  Detect -fmod= and remember extension.
2908         Use the extension to detect modula-2 source and mark it as such.
2910 2023-03-23  Gaius Mulley  <gaiusmod2@gmail.com>
2912         PR modula2/109264
2913         * gm2-compiler/M2Quads.mod (BuildConstFunctionCall): Comment
2914         out ErrorString in debugging block.
2915         (BuildConstructorStart): Replace Assert with a call to
2916         MetaErrorT3.  Import MetaErrorT3.
2917         * gm2-compiler/PCSymBuild.mod (buildConstFunction): Rename
2918         local variables.
2919         (WalkFunctionParam): Remove test for IsEnumeration when
2920         resolving MIN or MAX parameters.
2921         * gm2-compiler/PHBuild.bnf (BlockAssert): New procedure.
2922         (ErrorArrayat): New procedure.
2923         (Expect): Renamed parameter t to tok.
2924         (PushQualident): New rule.
2925         (ConstSetOrQualidentOrFunction): Force AutoOn.
2926         (TypeDeclaration): Add debugging assert.
2927         (SimpleType): Add debugging assert.
2928         (DefaultRecordAttributes): New rule (and bugfix).
2929         (FieldPragmaExpression): New rule (and bugfix).
2930         (PragmaConstExpression): New rule (and bugfix).
2931         (SetOrDesignatorOrFunction): Add debugging assert.
2932         (Block): Add debugging assert.
2933         * gm2-gcc/m2expr.cc (m2expr_ConstantExpressionWarning): int
2934         to bool.
2935         * gm2-gcc/m2expr.h (m2expr_TreeOverflow): int to bool.
2936         (m2expr_GetBooleanTrue): Remove.
2937         (m2expr_GetBooleanFalse): Remove.
2938         * gm2-gcc/m2options.h (M2Options_SetStatistics): Replace
2939         int with bool.
2941 2023-03-22  Gaius Mulley  <gaiusmod2@gmail.com>
2943         PR modula2/109248
2944         * Make-lang.in (m2/pge-boot/%.o): Add CFLAGS and CXXFLAGS for C
2945         and C++ compiles.
2946         * gm2spec.cc (add_m2_I_path): Indentation.
2947         (lang_specific_driver): New variable seen_pathname.
2948         Detect -fm2-pathname.  If not seen then push_back_Ipath (".").
2949         Change non iso library path to "m2cor,m2log,m2pim,m2iso".
2951 2023-03-22  Gaius Mulley  <gaiusmod2@gmail.com>
2953         PR modula2/107630
2954         * Make-lang.in (m2/stage2/cc1gm2$(exeext)): Remove
2955         m2/gm2-libs-boot/M2LINK.o.
2956         (m2/stage1/cc1gm2$(exeext)): Ditto.
2957         (GM2-LIBS-BOOT-DEFS): Remove M2LINK.def.
2958         (GM2-LIBS-DEFS): Ditto.
2959         (m2/mc-boot/$(SRC_PREFIX)%.o): Replace CXX_FLAGS with CXXFLAGS.
2960         (m2/mc-boot-ch/$(SRC_PREFIX)%.o): Ditto.
2961         (m2/mc-boot/main.o): Ditto.
2962         (mcflex.o): Add $(CFLAGS).
2963         (m2/gm2-libs-boot/M2LINK.o): Remove rule.
2964         * gm2-compiler/M2GCCDeclare.def (DeclareM2linkGlobals): Remove.
2965         * gm2-compiler/M2GCCDeclare.mod: (M2LinkEntry): Remove.
2966         (M2LinkIndex): Remove.
2967         (DoVariableDeclaration): Remove initial and call to
2968         AddEntryM2Link.
2969         (AddEntryM2Link): Remove.
2970         (GetEntryM2Link): Remove.
2971         (DeclareM2linkGlobals): Remove.
2972         (DetectM2LinkInitial): Remove.
2973         (InitM2LinkModule): Remove.
2974         * gm2-compiler/M2GenGCC.mod (CodeFinallyEnd): Remove call to
2975         DeclareM2linkGlobals.
2976         * gm2-compiler/M2Quads.mod (BuildM2InitFunction): Add extra
2977         parameter containing runtime module override to ConstructModules.
2978         * gm2-compiler/M2Scaffold.mod: Update comment describing
2979         ConstructModules.
2980         * gm2-gcc/m2decl.cc (m2decl_DeclareM2linkForcedModuleInitOrder):
2981         Remove.
2982         * gm2-libs-iso/M2RTS.def (ConstructModules): Add overrideliborder
2983         parameter.
2984         * gm2-libs-iso/M2RTS.mod: Add overrideliborder parameter.
2985         * gm2-libs/M2Dependent.def (ConstructModules): Add overrideliborder
2986         parameter.
2987         * gm2-libs/M2Dependent.mod (ConstructModules): Add overrideliborder
2988         parameter.
2989         * gm2-libs/M2RTS.def (ConstructModules): Add overrideliborder parameter.
2990         * gm2-libs/M2RTS.mod (ConstructModules): Add overrideliborder
2991         parameter.
2992         * gm2-libs/M2LINK.def: Removed.
2994 2023-03-21  Gaius Mulley  <gaiusmod2@gmail.com>
2996         * Make-lang.in (m2/mc-boot/$(SRC_PREFIX)%.o): Add $(CXXFLAGS).
2997         (m2/mc-boot-ch/$(SRC_PREFIX)%.o): Add $(CXXFLAGS).
2998         (m2/mc-boot-ch/$(SRC_PREFIX)%.o): Add $(CXXFLAGS).
2999         (m2/mc-boot/main.o): Add $(CXXFLAGS).
3001 2023-03-19  Gaius Mulley  <gaiusmod2@gmail.com>
3003         * Make-maintainer.in (gm2.maintainer-clean): Remove.
3004         (gm2.maintainer-help): Add gm2.maintainer-tools,
3005         gm2.maintainer-doc.  Remove gm2.maintainer-clean.
3006         Change target-independent directory to target-independent/m2.
3007         * gm2-compiler/ppg.mod: Correct __FILE_ typo to __FILE__.
3008         * gm2-compiler/M2Options.def (SetAutoInit): Update comment.
3009         * gm2-compiler/M2Options.mod (SetAutoInit): Update comment.
3010         * gm2-gcc/m2color.cc (m2color_colorize_start): Rename name_len
3011         to _name_high.
3012         * gm2-gcc/m2color.def (colorize_start): change ARRAY OF CHAR to
3013         ADDRESS and add _name_high.
3014         * gm2-gcc/m2decl.cc (m2decl_BuildStartFunctionDeclaration): Change
3015         int to bool.
3016         * gm2-gcc/m2decl.h (m2decl_BuildStartFunctionDeclaration): Change
3017         int to bool.
3018         * gm2-gcc/m2expr.cc (m2expr_BuildBinarySetDo): Change int to bool.
3019         (m2expr_BuildIfConstInVar): Change int to bool.
3020         (m2expr_BuildIfNotConstInVar): Change int to bool.
3021         (m2expr_BuildIfVarInVar): Change int to bool.
3022         (m2expr_BuildIfNotVarInVar): Change int to bool.
3023         (m2expr_BuildForeachWordInSetDoIfExpr): Change int to bool.
3024         * gm2-gcc/m2expr.h (m2expr_BuildIfNotVarInVar): Change int to bool.
3025         (m2expr_BuildIfVarInVar): Change int to bool.
3026         (m2expr_BuildIfNotConstInVar): Change int to bool.
3027         (m2expr_BuildIfConstInVar): Change int to bool.
3028         * gm2-gcc/m2options.h (M2Options_SetAutoInit): Change int to bool.
3029         (M2Options_SetNilCheck): Change int to bool.
3030         (M2Options_SetReturnCheck): Change int to bool.
3031         (M2Options_SetCaseCheck): Change int to bool.
3032         (M2Options_SetCheckAll): Change int to bool.
3033         (M2Options_SetVerboseUnbounded): Change int to bool.
3034         (M2Options_SetUnboundedByReference): Change int to bool.
3035         (M2Options_SetOptimizing): Change int to bool.
3036         (M2Options_SetQuiet): Change int to bool.
3037         (M2Options_SetCpp): Change int to bool.
3038         (M2Options_SetM2g): Change int to bool.
3039         (M2Options_SetLowerCaseKeywords): Change int to bool.
3040         (M2Options_SetVerbose): Change int to bool.
3041         * gm2-gcc/m2treelib.cc (m2treelib_get_rvalue): Change int to bool.
3042         (m2treelib_get_field_no): Change int to bool.
3043         (m2treelib_get_set_value): Change int to bool.
3044         (m2treelib_get_set_address): Change int to bool.
3045         (m2treelib_get_set_address_if_var): Change int to bool.
3046         * gm2-gcc/m2treelib.def (get_set_address_if_var): Change int to bool.
3047         (get_set_address): Change int to bool.
3048         (get_set_value): Change int to bool.
3049         (get_field_no): Change int to bool.
3050         (get_rvalue): Change int to bool.
3051         * gm2-gcc/m2treelib.h (m2treelib_get_field_no): Change int to bool.
3052         (m2treelib_get_set_value): Change int to bool.
3053         (m2treelib_get_set_address): Change int to bool.
3054         (m2treelib_get_set_address_if_var): Change int to bool.
3055         * gm2-gcc/m2type.cc (m2type_BuildEndFunctionType): Change int to bool.
3056         * gm2-gcc/m2type.h (m2type_BuildEndFunctionType): Change int to bool.
3057         * gm2-libs-ch/dtoa.cc (dtoa_calcsign): Change int to bool.
3058         * gm2-libs-ch/ldtoa.cc (dtoa_calcsign): Change int to bool.
3059         (ldtoa_ldtoa): Change int to bool.
3060         * m2.flex (functionInfo): Change int to bool.
3061         (pushFunction): Change parameter from int to bool.
3062         * mc-boot/GDebug.cc (Debug_Halt): Rebuild.
3063         * mc-boot/GDebug.h (Debug_Halt): Rebuild.
3064         * mc-boot/GDynamicStrings.cc: Rebuild.
3065         * mc-boot/GDynamicStrings.h: Rebuild.
3066         * mc-boot/GFIO.cc: Rebuild.
3067         * mc-boot/GM2RTS.cc: Rebuild.
3068         * mc-boot/GM2RTS.h: Rebuild.
3069         * mc-boot/GPushBackInput.cc: Rebuild.
3070         * mc-boot/GRTExceptions.cc: Rebuild.
3071         * mc-boot/GRTint.cc: Rebuild.
3072         * mc-boot/GSysStorage.cc: Rebuild.
3073         * mc-boot/Gdecl.cc: Rebuild.
3074         * mc-boot/GsymbolKey.cc: Rebuild.
3075         * mc/symbolKey.mod: Rebuild.
3076         * target-independent/m2/Builtins.texi: Rebuild.
3077         * target-independent/m2/SYSTEM-iso.texi: Rebuild.
3078         * target-independent/m2/SYSTEM-pim.texi: Rebuild.
3079         * target-independent/m2/gm2-libs.texi: Rebuild.
3080         * tools-src/def2doc.py (PIM_Log): Change gm2-libs-pim to
3081         gm2-lib-log.
3083 2023-03-17  Gaius Mulley  <gaiusmod2@gmail.com>
3085         PR modula2/109032
3086         * gm2-gcc/m2expr.cc: Correct ? : order in comments.
3087         (m2expr_BuildDivM2): Improve comment.
3088         * lang.opt: Improve option descriptions.
3090 2023-03-17  Gaius Mulley  <gaiusmod2@gmail.com>
3092         PR modula2/109102
3093         * gm2-gcc/m2builtins.cc (ASSERT): Change format specifier to
3094         use %qs rather than quotes.
3096 2023-03-17  Gaius Mulley  <gaiusmod2@gmail.com>
3098         * gm2-compiler/M2AsmUtil.mod (SymNeedsModulePrefix):
3099         Re-implemented.
3100         * gm2-libs/SysStorage.mod (enableTrace): Disable tracing.
3102 2023-03-16  Gaius Mulley  <gaiusmod2@gmail.com>
3104         * gm2-compiler/SymbolKey.mod (PutSymKey): Halt parameters
3105         reordered.
3106         (DelSymKey): Ditto.
3107         * gm2-compiler/ppg.mod (GetEpsilon): Ditto.
3108         (GetReachEnd): Ditto.
3109         (GetFollow): Ditto.
3110         (CodeCondition): Ditto.
3111         (CodeThenDo): Ditto.
3112         (CodeEnd): Ditto.
3113         (RecoverCondition): Ditto.
3114         (ConditionIndent): Ditto.
3115         * gm2-libs-ch/m2rts.h (M2RTS_Halt): Ditto.
3116         * gm2-libs-coroutines/Executive.mod (Assert): Ditto.
3117         (Resume): Remove redundant comments.
3118         (Wait): Remove redundant comments.
3119         * gm2-libs-coroutines/SYSTEM.mod (TRANSFER): Halt parameters
3120         reordered.
3121         (IOTransferHandler): Ditto.
3122         (Finished): Ditto.
3123         (localInit): Ditto.
3124         * gm2-libs-coroutines/TimerHandler.mod (WaitOn): Halt parameters
3125         reordered.
3126         (Cancel): Ditto.
3127         (ReArmEvent): Ditto.
3128         (OnActiveQueue): Ditto.
3129         * gm2-libs-iso/COROUTINES.mod (NEWCOROUTINE): Ditto.
3130         (Transfer): Ditto.
3131         (IOTRANSFER): Ditto.
3132         * gm2-libs-iso/EXCEPTIONS.mod (RAISE): Correct Halt parameters.
3133         * gm2-libs-iso/M2RTS.def (Halt): Halt parameters reordered.
3134         (HaltC): Ditto.
3135         * gm2-libs-iso/M2RTS.mod: Ditto.
3136         * gm2-libs-iso/RTentity.mod (PutKey): Ditto.
3137         (DelKey): Ditto.
3138         (findChildAndParent): Ditto.
3139         (assert): Ditto.
3140         * gm2-libs-iso/Storage.mod (ALLOCATE): Add DebugTrace.
3141         Add UseMallocFree test.
3142         (DEALLOCATE): Add DebugTrace.  Add UseMallocFree test.
3143         (assert): Halt parameters reordered.
3144         * gm2-libs-log/Termbase.mod (Read): Ditto.
3145         (KeyPressed): Ditto.
3146         (Write): Ditto.
3147         (Init): Ditto.
3148         * gm2-libs/Debug.def (Halt): Halt parameters reordered.
3149         * gm2-libs/Debug.mod (Halt): Ditto.
3150         * gm2-libs/DynamicStrings.def (PopAllocation): Improve comment.
3151         * gm2-libs/DynamicStrings.mod (PopAllocation): Improve comment.
3152         Halt parameters reordered.
3153         * gm2-libs/M2RTS.def (Halt): Ditto.
3154         (HaltC): Ditto.
3155         * gm2-libs/M2RTS.mod (Halt): Ditto.
3156         (HaltC): Ditto.
3157         * gm2-libs/PushBackInput.mod (PutStr): Ditto.
3158         (PutString): Ditto.
3159         (PutCh): Ditto.
3160         * gm2-libs/RTExceptions.mod (GetBaseExceptionBlock): Ditto.
3161         * gm2-libs/RTint.mod (ReArmTimeVector): Ditto.
3162         (GetTimeVector): Ditto.
3163         (AttachVector): Ditto.
3164         (IncludeVector): Ditto.
3165         (Listen): Ditto.
3166         * gm2-libs/SysStorage.mod (ALLOCATE): Ditto.
3167         (DEALLOCATE): Ditto.
3168         (REALLOCATE): Ditto.
3169         * gm2-libs-coroutines/Debug.def: Removed.
3170         * gm2-libs-coroutines/Debug.mod: Removed.
3172 2023-03-16  Gaius Mulley  <gaiusmod2@gmail.com>
3174         * Make-lang.in: Rename target-independent to
3175         target-independent/m2.
3176         * target-independent/readme.txt: Update.
3177         * target-independent/m2/gm2-ebnf.texi: New file.
3178         * target-independent/m2/gpl_v3_without_node.texi: New file.
3179         * target-independent/Builtins.texi: Rename ...
3180         * target-independent/m2/Builtins.texi: ... to this.
3181         * target-independent/SYSTEM-iso.texi: Rename ...
3182         * target-independent/m2/SYSTEM-iso.texi: ... to this.
3183         * target-independent/SYSTEM-pim.texi: Rename ...
3184         * target-independent/m2/SYSTEM-pim.texi: ... to this.
3185         * target-independent/gm2-libs.texi: Rename ...
3186         * target-independent/m2/gm2-libs.texi: ... to this.
3188 2023-03-15  Gaius Mulley  <gaiusmod2@gmail.com>
3190         PR modula2/109125
3191         * gm2-libs-ch/dtoa.cc (dtoa_strtod): Replace int with bool.
3192         * gm2-libs-ch/ldtoa.cc (ldtoa_strtold): Replace int with bool.
3194 2023-03-14  Gaius Mulley  <gaiusmod2@gmail.com>
3196         PR modula2/109125
3197         * gm2-libs-ch/cgetopt.c (cgetopt_SetOption): Replace int
3198         for bool.
3199         * gm2-libs-ch/termios.c (doSetUnset): Replace int for bool.
3200         * gm2-libs/Builtins.mod (isfinitef): Correct typo in return
3201         statement.
3203 2023-03-13  Gaius Mulley  <gaiusmod2@gmail.com>
3205         PR modula2/109103
3206         * gm2-compiler/M2ALU.def (PushString): New parameter issueError.
3207         * gm2-compiler/M2ALU.mod (PushString): New parameter issueError.
3208         * gm2-compiler/SymbolTable.mod (PushString): New parameter issueError.
3209         * gm2-gcc/m2decl.cc (m2decl_DetermineSizeOfConstant): Pass
3210         location to interpret_m2_integer.
3211         (m2decl_BuildConstLiteralNumber): New parameter issueError.
3212         * gm2-gcc/m2expr.cc (m2expr_IsTrue): Replace int with bool.
3213         (m2expr_IsFalse): Replace int with bool.
3214         (m2expr_AreConstantsEqual): Replace int with bool.
3215         (m2expr_BuildBinaryForeachWordDo): Call m2linemap_internal_error_at.
3216         (append_digit): Ditto.
3217         (m2expr_interpret_integer): Add location parameter.
3218         (append_m2_digit): Call m2linemap_internal_error_at.
3219         (m2expr_interpret_m2_integer): Add location parameter.
3220         (m2expr_GetSizeOf): Replace sizeof with SIZE in error message.
3221         * gm2-gcc/m2expr.h (m2expr_AreRealOrComplexConstantsEqual):
3222         Replace int with bool.
3223         (m2expr_AreConstantsEqual): Ditto.
3224         (m2expr_IsFalse): Ditto.
3225         (m2expr_IsTrue): Ditto.
3226         (m2expr_interpret_integer): Add location parameter.
3227         (m2expr_interpret_m2_integer): Add location parameter.
3228         * gm2-gcc/m2linemap.cc (mformat_value): New function.
3229         (expand_format): New function.
3230         (expand_message): New function.
3231         (gm2_internal_error_at): New function.
3232         (m2linemap_internal_error_at): New function.
3233         * gm2-gcc/m2linemap.h (m2linemap_internal_error_at): New function.
3234         * gm2-gcc/m2options.h (M2Options_SetISO): Replace int with bool.
3235         (M2Options_SetPIM): Ditto.
3236         (M2Options_SetPIM2): Ditto.
3237         (M2Options_SetPIM3): Ditto.
3238         (M2Options_SetPIM4): Ditto.
3239         (M2Options_SetFloatValueCheck): Ditto.
3240         (M2Options_SetWholeValueCheck): Ditto.
3241         (M2Options_GetISO): Ditto.
3242         (M2Options_GetPIM): Ditto.
3243         (M2Options_GetPIM2): Ditto.
3244         (M2Options_GetPIM3): Ditto.
3245         (M2Options_GetPIM4): Ditto.
3246         (M2Options_GetPositiveModFloor): Ditto.
3247         (M2Options_GetFloatValueCheck): Ditto.
3248         (M2Options_GetWholeValueCheck): Ditto.
3249         (M2Options_Setc): Ditto.
3250         (M2Options_Getc): Ditto.
3251         (M2Options_SetPPOnly): Ditto.
3252         (M2Options_GetPPOnly): Ditto.
3253         (M2Options_SetUselist): Ditto.
3254         (M2Options_SetAutoInit): Ditto.
3255         (M2Options_SetPositiveModFloor): Ditto.
3256         (M2Options_SetNilCheck): Ditto.
3257         (M2Options_SetWholeDiv): Ditto.
3258         (M2Options_SetIndex): Ditto.
3259         (M2Options_SetRange): Ditto.
3260         (M2Options_SetReturnCheck): Ditto.
3261         (M2Options_SetCaseCheck): Ditto.
3262         (M2Options_SetCheckAll): Ditto.
3263         (M2Options_SetExceptions): Ditto.
3264         (M2Options_SetStyle): Ditto.
3265         (M2Options_SetPedantic): Ditto.
3266         (M2Options_SetPedanticParamNames): Ditto.
3267         (M2Options_SetPedanticCast): Ditto.
3268         (M2Options_SetExtendedOpaque): Ditto.
3269         (M2Options_SetVerboseUnbounded): Ditto.
3270         (M2Options_SetXCode): Ditto.
3271         (M2Options_SetCompilerDebugging): Ditto.
3272         (M2Options_SetQuadDebugging): Ditto.
3273         (M2Options_SetDebugTraceQuad): Ditto.
3274         (M2Options_SetDebugTraceAPI): Ditto.
3275         (M2Options_SetSources): Ditto.
3276         (M2Options_SetUnboundedByReference): Ditto.
3277         (M2Options_SetDumpSystemExports): Ditto.
3278         (M2Options_SetOptimizing): Ditto.
3279         (M2Options_SetQuiet): Ditto.
3280         (M2Options_SetCC1Quiet): Ditto.
3281         (M2Options_SetCpp): Ditto.
3282         (M2Options_SetSwig): Ditto.
3283         (M2Options_SetWholeProgram): Ditto.
3284         (M2Options_SetDebugFunctionLineNumbers): Ditto.
3285         (M2Options_SetGenerateStatementNote): Ditto.
3286         (M2Options_GetCpp): Ditto.
3287         (M2Options_GetM2g): Ditto.
3288         (M2Options_SetM2g): Ditto.
3289         (M2Options_SetLowerCaseKeywords): Ditto.
3290         (M2Options_SetVerbose): Ditto.
3291         (M2Options_SetUnusedVariableChecking): Ditto.
3292         (M2Options_SetUnusedParameterChecking): Ditto.
3293         (M2Options_SetStrictTypeChecking): Ditto.
3294         (M2Options_SetWall): Ditto.
3295         (M2Options_SetSaveTemps): Ditto.
3296         (M2Options_GetSaveTemps): Ditto.
3297         (M2Options_SetScaffoldStatic): Ditto.
3298         (M2Options_SetScaffoldDynamic): Ditto.
3299         (M2Options_SetScaffoldMain): Ditto.
3300         (M2Options_SetGenModuleList): Ditto.
3301         (M2Options_SetShared): Ditto.
3302         * gm2-libs-ch/M2LINK.c: Ditto.
3303         * gm2-libs-ch/m2rts.h (M2RTS_RequestDependant): Replace
3304         const char * with const void *.
3305         (M2RTS_RegisterModule): Ditto.
3306         (M2RTS_ConstructModules): Ditto.
3307         * gm2-gcc/m2decl.def (DetermineSizeOfConstant): New parameter
3308         issueError.
3309         * gm2-gcc/m2decl.h (DetermineSizeOfConstant): New parameter
3310         issueError.
3312 2023-03-12  Gaius Mulley  <gaiusmod2@gmail.com>
3314         PR modula2/109089
3315         * gm2-compiler/M2GCCDeclare.mod (DeclareKnownType): Import.
3316         * gm2-gcc/gcc-consolidation.h (stdbool.h): Include.
3317         * gm2-gcc/init.h (defined): Change block start.
3318         * gm2-gcc/m2block.cc: Change FALSE to false, change TRUE to true.
3319         * gm2-gcc/m2block.h: Change int to bool.
3320         * gm2-gcc/m2builtins.cc: Ditto.
3321         * gm2-gcc/m2builtins.h: Ditto.
3322         * gm2-gcc/m2convert.cc: Change FALSE to false, TRUE to true and
3323         int to bool.
3324         * gm2-gcc/m2convert.h: Change int to bool.
3325         * gm2-gcc/m2decl.cc: Change int to bool.
3326         * gm2-gcc/m2decl.h: Change int to bool.
3327         * gm2-gcc/m2expr.cc: Change FALSE to false, TRUE to true and
3328         int to bool.
3329         * gm2-gcc/m2expr.h: Change int to bool.
3330         * gm2-gcc/m2statement.cc: Change FALSE to false, TRUE to true and
3331         int to bool.
3332         * gm2-gcc/m2statement.h: Change int to bool.
3333         * gm2-gcc/m2top.cc: Change int to bool.
3334         * gm2-gcc/m2top.h: Change int to bool.
3335         * gm2-gcc/m2tree.cc: Change int to bool.
3336         * gm2-gcc/m2tree.h: Change int to bool.
3337         * gm2-gcc/m2type.cc: Change int to bool.
3338         * gm2-gcc/m2type.h: Change int to bool.
3339         * gm2-lang.cc (convert_loc): Call convert_to_integer for BOOLEAN_TYPE.
3340         * gm2-libs/Builtins.def (isfinitef): Change return value from
3341         BOOLEAN to INTEGER.
3342         (isfinite): Ditto.
3343         (isfinitel): Ditto.
3344         * gm2-libs/Builtins.mod (isfinitef): Change return value from
3345         BOOLEAN to INTEGER.
3346         (isfinite): Ditto.
3347         (isfinitel): Ditto.
3348         * mc-boot/GASCII.cc: Rebuild.
3349         * mc-boot/GASCII.h: Rebuild.
3350         * mc-boot/GArgs.cc: Rebuild.
3351         * mc-boot/GArgs.h: Rebuild.
3352         * mc-boot/GAssertion.cc: Rebuild.
3353         * mc-boot/GAssertion.h: Rebuild.
3354         * mc-boot/GBreak.cc: Rebuild.
3355         * mc-boot/GBreak.h: Rebuild.
3356         * mc-boot/GCOROUTINES.h: Rebuild.
3357         * mc-boot/GCmdArgs.cc: Rebuild.
3358         * mc-boot/GCmdArgs.h: Rebuild.
3359         * mc-boot/GDebug.cc: Rebuild.
3360         * mc-boot/GDebug.h: Rebuild.
3361         * mc-boot/GDynamicStrings.cc: Rebuild.
3362         * mc-boot/GDynamicStrings.h: Rebuild.
3363         * mc-boot/GEnvironment.cc: Rebuild.
3364         * mc-boot/GEnvironment.h: Rebuild.
3365         * mc-boot/GFIO.cc: Rebuild.
3366         * mc-boot/GFIO.h: Rebuild.
3367         * mc-boot/GFormatStrings.cc: Rebuild.
3368         * mc-boot/GFormatStrings.h: Rebuild.
3369         * mc-boot/GFpuIO.cc: Rebuild.
3370         * mc-boot/GFpuIO.h: Rebuild.
3371         * mc-boot/GIO.cc: Rebuild.
3372         * mc-boot/GIO.h: Rebuild.
3373         * mc-boot/GIndexing.cc: Rebuild.
3374         * mc-boot/GIndexing.h: Rebuild.
3375         * mc-boot/GM2Dependent.cc: Rebuild.
3376         * mc-boot/GM2Dependent.h: Rebuild.
3377         * mc-boot/GM2EXCEPTION.cc: Rebuild.
3378         * mc-boot/GM2EXCEPTION.h: Rebuild.
3379         * mc-boot/GM2LINK.h: Rebuild.
3380         * mc-boot/GM2RTS.cc: Rebuild.
3381         * mc-boot/GM2RTS.h: Rebuild.
3382         * mc-boot/GMemUtils.cc: Rebuild.
3383         * mc-boot/GMemUtils.h: Rebuild.
3384         * mc-boot/GNumberIO.cc: Rebuild.
3385         * mc-boot/GNumberIO.h: Rebuild.
3386         * mc-boot/GPushBackInput.cc: Rebuild.
3387         * mc-boot/GPushBackInput.h: Rebuild.
3388         * mc-boot/GRTExceptions.cc: Rebuild.
3389         * mc-boot/GRTExceptions.h: Rebuild.
3390         * mc-boot/GRTco.h: Rebuild.
3391         * mc-boot/GRTentity.h: Rebuild.
3392         * mc-boot/GRTint.cc: Rebuild.
3393         * mc-boot/GRTint.h: Rebuild.
3394         * mc-boot/GSArgs.cc: Rebuild.
3395         * mc-boot/GSArgs.h: Rebuild.
3396         * mc-boot/GSFIO.cc: Rebuild.
3397         * mc-boot/GSFIO.h: Rebuild.
3398         * mc-boot/GSYSTEM.h: Rebuild.
3399         * mc-boot/GSelective.h: Rebuild.
3400         * mc-boot/GStdIO.cc: Rebuild.
3401         * mc-boot/GStdIO.h: Rebuild.
3402         * mc-boot/GStorage.cc: Rebuild.
3403         * mc-boot/GStorage.h: Rebuild.
3404         * mc-boot/GStrCase.cc: Rebuild.
3405         * mc-boot/GStrCase.h: Rebuild.
3406         * mc-boot/GStrIO.cc: Rebuild.
3407         * mc-boot/GStrIO.h: Rebuild.
3408         * mc-boot/GStrLib.cc: Rebuild.
3409         * mc-boot/GStrLib.h: Rebuild.
3410         * mc-boot/GStringConvert.cc: Rebuild.
3411         * mc-boot/GStringConvert.h: Rebuild.
3412         * mc-boot/GSysExceptions.h: Rebuild.
3413         * mc-boot/GSysStorage.cc: Rebuild.
3414         * mc-boot/GSysStorage.h: Rebuild.
3415         * mc-boot/GTimeString.cc: Rebuild.
3416         * mc-boot/GTimeString.h: Rebuild.
3417         * mc-boot/GUnixArgs.h: Rebuild.
3418         * mc-boot/Galists.cc: Rebuild.
3419         * mc-boot/Galists.h: Rebuild.
3420         * mc-boot/Gdecl.cc: Rebuild.
3421         * mc-boot/Gdecl.h: Rebuild.
3422         * mc-boot/Gdtoa.h: Rebuild.
3423         * mc-boot/Gerrno.h: Rebuild.
3424         * mc-boot/Gkeyc.cc: Rebuild.
3425         * mc-boot/Gkeyc.h: Rebuild.
3426         * mc-boot/Gldtoa.h: Rebuild.
3427         * mc-boot/Glibc.h: Rebuild.
3428         * mc-boot/Glibm.h: Rebuild.
3429         * mc-boot/Glists.cc: Rebuild.
3430         * mc-boot/Glists.h: Rebuild.
3431         * mc-boot/GmcComment.cc: Rebuild.
3432         * mc-boot/GmcComment.h: Rebuild.
3433         * mc-boot/GmcComp.cc: Rebuild.
3434         * mc-boot/GmcComp.h: Rebuild.
3435         * mc-boot/GmcDebug.cc: Rebuild.
3436         * mc-boot/GmcDebug.h: Rebuild.
3437         * mc-boot/GmcError.cc: Rebuild.
3438         * mc-boot/GmcError.h: Rebuild.
3439         * mc-boot/GmcFileName.cc: Rebuild.
3440         * mc-boot/GmcFileName.h: Rebuild.
3441         * mc-boot/GmcLexBuf.cc: Rebuild.
3442         * mc-boot/GmcLexBuf.h: Rebuild.
3443         * mc-boot/GmcMetaError.cc: Rebuild.
3444         * mc-boot/GmcMetaError.h: Rebuild.
3445         * mc-boot/GmcOptions.cc: Rebuild.
3446         * mc-boot/GmcOptions.h: Rebuild.
3447         * mc-boot/GmcPreprocess.cc: Rebuild.
3448         * mc-boot/GmcPreprocess.h: Rebuild.
3449         * mc-boot/GmcPretty.cc: Rebuild.
3450         * mc-boot/GmcPretty.h: Rebuild.
3451         * mc-boot/GmcPrintf.cc: Rebuild.
3452         * mc-boot/GmcPrintf.h: Rebuild.
3453         * mc-boot/GmcQuiet.cc: Rebuild.
3454         * mc-boot/GmcQuiet.h: Rebuild.
3455         * mc-boot/GmcReserved.cc: Rebuild.
3456         * mc-boot/GmcReserved.h: Rebuild.
3457         * mc-boot/GmcSearch.cc: Rebuild.
3458         * mc-boot/GmcSearch.h: Rebuild.
3459         * mc-boot/GmcStack.cc: Rebuild.
3460         * mc-boot/GmcStack.h: Rebuild.
3461         * mc-boot/GmcStream.cc: Rebuild.
3462         * mc-boot/GmcStream.h: Rebuild.
3463         * mc-boot/Gmcflex.h: Rebuild.
3464         * mc-boot/Gmcp1.cc: Rebuild.
3465         * mc-boot/Gmcp1.h: Rebuild.
3466         * mc-boot/Gmcp2.cc: Rebuild.
3467         * mc-boot/Gmcp2.h: Rebuild.
3468         * mc-boot/Gmcp3.cc: Rebuild.
3469         * mc-boot/Gmcp3.h: Rebuild.
3470         * mc-boot/Gmcp4.cc: Rebuild.
3471         * mc-boot/Gmcp4.h: Rebuild.
3472         * mc-boot/Gmcp5.cc: Rebuild.
3473         * mc-boot/Gmcp5.h: Rebuild.
3474         * mc-boot/GnameKey.cc: Rebuild.
3475         * mc-boot/GnameKey.h: Rebuild.
3476         * mc-boot/GsymbolKey.cc: Rebuild.
3477         * mc-boot/GsymbolKey.h: Rebuild.
3478         * mc-boot/Gtermios.h: Rebuild.
3479         * mc-boot/Gtop.cc: Rebuild.
3480         * mc-boot/Gvarargs.cc: Rebuild.
3481         * mc-boot/Gvarargs.h: Rebuild.
3482         * mc-boot/Gwlists.cc: Rebuild.
3483         * mc-boot/Gwlists.h: Rebuild.
3484         * mc-boot/Gwrapc.h: Rebuild.
3485         * mc/decl.mod (doBoolC): New procedure.
3486         (doBaseC): Call doBoolC.
3487         * mc/keyc.mod: Import useBool.
3488         (genBool): New procedure.
3489         (genDefs): Call genBool.
3490         * mc/mcOptions.def (useBool): New procedure.
3491         * mc/mcOptions.mod (useBool): New procedure.
3492         (useBoolType): New variable.
3493         (optionIs): Assign useBoolType to TRUE.
3495 2023-03-04  Gaius Mulley  <gaiusmod2@gmail.com>
3497         * mc-boot-ch/GBuiltins.cc: New file.
3498         * mc-boot-ch/Gdtoa.cc: New file.
3499         * mc-boot-ch/Gerrno.cc: New file.
3500         * mc-boot-ch/Gldtoa.cc: New file.
3501         * mc-boot-ch/Gm2rtsdummy.cc: New file.
3502         * mc-boot/GASCII.cc: New file.
3503         * mc-boot/GArgs.cc: New file.
3504         * mc-boot/GAssertion.cc: New file.
3505         * mc-boot/GBreak.cc: New file.
3506         * mc-boot/GCmdArgs.cc: New file.
3507         * mc-boot/GDebug.cc: New file.
3508         * mc-boot/GDynamicStrings.cc: New file.
3509         * mc-boot/GEnvironment.cc: New file.
3510         * mc-boot/GFIO.cc: New file.
3511         * mc-boot/GFormatStrings.cc: New file.
3512         * mc-boot/GFpuIO.cc: New file.
3513         * mc-boot/GIO.cc: New file.
3514         * mc-boot/GIndexing.cc: New file.
3515         * mc-boot/GM2Dependent.cc: New file.
3516         * mc-boot/GM2EXCEPTION.cc: New file.
3517         * mc-boot/GM2RTS.cc: New file.
3518         * mc-boot/GMemUtils.cc: New file.
3519         * mc-boot/GNumberIO.cc: New file.
3520         * mc-boot/GPushBackInput.cc: New file.
3521         * mc-boot/GRTExceptions.cc: New file.
3522         * mc-boot/GRTint.cc: New file.
3523         * mc-boot/GSArgs.cc: New file.
3524         * mc-boot/GSFIO.cc: New file.
3525         * mc-boot/GStdIO.cc: New file.
3526         * mc-boot/GStorage.cc: New file.
3527         * mc-boot/GStrCase.cc: New file.
3528         * mc-boot/GStrIO.cc: New file.
3529         * mc-boot/GStrLib.cc: New file.
3530         * mc-boot/GStringConvert.cc: New file.
3531         * mc-boot/GSysStorage.cc: New file.
3532         * mc-boot/GTimeString.cc: New file.
3533         * mc-boot/Galists.cc: New file.
3534         * mc-boot/Gdecl.cc: New file.
3535         * mc-boot/Gkeyc.cc: New file.
3536         * mc-boot/Glists.cc: New file.
3537         * mc-boot/GmcComment.cc: New file.
3538         * mc-boot/GmcComp.cc: New file.
3539         * mc-boot/GmcDebug.cc: New file.
3540         * mc-boot/GmcError.cc: New file.
3541         * mc-boot/GmcFileName.cc: New file.
3542         * mc-boot/GmcLexBuf.cc: New file.
3543         * mc-boot/GmcMetaError.cc: New file.
3544         * mc-boot/GmcOptions.cc: New file.
3545         * mc-boot/GmcPreprocess.cc: New file.
3546         * mc-boot/GmcPretty.cc: New file.
3547         * mc-boot/GmcPrintf.cc: New file.
3548         * mc-boot/GmcQuiet.cc: New file.
3549         * mc-boot/GmcReserved.cc: New file.
3550         * mc-boot/GmcSearch.cc: New file.
3551         * mc-boot/GmcStack.cc: New file.
3552         * mc-boot/GmcStream.cc: New file.
3553         * mc-boot/Gmcp1.cc: New file.
3554         * mc-boot/Gmcp2.cc: New file.
3555         * mc-boot/Gmcp3.cc: New file.
3556         * mc-boot/Gmcp4.cc: New file.
3557         * mc-boot/Gmcp5.cc: New file.
3558         * mc-boot/GnameKey.cc: New file.
3559         * mc-boot/GsymbolKey.cc: New file.
3560         * mc-boot/Gtop.cc: New file.
3561         * mc-boot/Gvarargs.cc: New file.
3562         * mc-boot/Gwlists.cc: New file.
3563         * pge-boot/GASCII.cc: New file.
3564         * pge-boot/GArgs.cc: New file.
3565         * pge-boot/GAssertion.cc: New file.
3566         * pge-boot/GBuiltins.cc: New file.
3567         * pge-boot/GDebug.cc: New file.
3568         * pge-boot/GDynamicStrings.cc: New file.
3569         * pge-boot/GFIO.cc: New file.
3570         * pge-boot/GIO.cc: New file.
3571         * pge-boot/GIndexing.cc: New file.
3572         * pge-boot/GLists.cc: New file.
3573         * pge-boot/GM2Dependent.cc: New file.
3574         * pge-boot/GM2EXCEPTION.cc: New file.
3575         * pge-boot/GM2LINK.cc: New file.
3576         * pge-boot/GM2RTS.cc: New file.
3577         * pge-boot/GNameKey.cc: New file.
3578         * pge-boot/GNumberIO.cc: New file.
3579         * pge-boot/GOutput.cc: New file.
3580         * pge-boot/GPushBackInput.cc: New file.
3581         * pge-boot/GRTExceptions.cc: New file.
3582         * pge-boot/GRTco.cc: New file.
3583         * pge-boot/GSFIO.cc: New file.
3584         * pge-boot/GSYSTEM.cc: New file.
3585         * pge-boot/GSelective.cc: New file.
3586         * pge-boot/GStdIO.cc: New file.
3587         * pge-boot/GStorage.cc: New file.
3588         * pge-boot/GStrCase.cc: New file.
3589         * pge-boot/GStrIO.cc: New file.
3590         * pge-boot/GStrLib.cc: New file.
3591         * pge-boot/GSymbolKey.cc: New file.
3592         * pge-boot/GSysExceptions.cc: New file.
3593         * pge-boot/GSysStorage.cc: New file.
3594         * pge-boot/Gabort.cc: New file.
3595         * pge-boot/Gbnflex.cc: New file.
3596         * pge-boot/Gcbuiltin.cc: New file.
3597         * pge-boot/Gdtoa.cc: New file.
3598         * pge-boot/Gerrno.cc: New file.
3599         * pge-boot/Gldtoa.cc: New file.
3600         * pge-boot/Glibc.cc: New file.
3601         * pge-boot/Glibm.cc: New file.
3602         * pge-boot/Gmcrts.cc: New file.
3603         * pge-boot/Gpge.cc: New file.
3604         * pge-boot/Gwrapc.cc: New file.
3605         * pge-boot/main.cc: New file.
3606         * pge-boot/network.cc: New file.
3608 2023-03-04  Gaius Mulley  <gaiusmod2@gmail.com>
3610         * Make-lang.in (MC-LIB-BOOT-C): Rename to MC-LIB-BOOT-CC.
3611         (MC-BOOT-C): Rename to MC-BOOT-CC.
3612         (BUILD-MC-BOOT-C): Rename to BUILD-MC-BOOT-CC.
3613         (BUILD-MC-BOOT-AUTO-C): Rename to BUILD-MC-BOOT-AUTO-CC.
3614         (m2/mc-boot/$(SRC_PREFIX)%.o): Change source file extension to .cc.
3615         (m2/mc-boot-ch/$(SRC_PREFIX)%.o): Ditto.
3616         * Make-maintainer.in (m2/gm2-ppg-boot/$(SRC_PREFIX)%.o): Change
3617         source file extension to .cc.
3618         (m2/gm2-ppg-boot/main.o): Ditto.
3619         (m2/gm2-ppg-boot/$(SRC_PREFIX)%.o): Ditto.
3620         to .cc.
3621         (m2/gm2-pg-boot/main.o): Ditto.
3622         (m2/gm2-pge-boot/$(SRC_PREFIX)ldtoa.o): Ditto.
3623         (m2/gm2-pge-boot/$(SRC_PREFIX)dtoa.o): Ditto.
3624         (m2/gm2-pge-boot/$(SRC_PREFIX)errno.o): Ditto.
3625         (m2/gm2-pge-boot/$(SRC_PREFIX)M2RTS.o): Ditto.
3626         (m2/gm2-pge-boot/$(SRC_PREFIX)%.o): Ditto.
3627         (m2/gm2-pge-boot/$(SRC_PREFIX)%.o): Ditto.
3628         (m2/gm2-pge-boot/$(SRC_PREFIX)pge.o): Ditto.
3629         (m2/gm2-pge-boot/main.o): Ditto.
3630         (mc-push): Ditto.
3631         (mc-clean): Ditto.
3632         (mc-stage2): Ditto.
3633         ((objdir)/m2/mc-boot-gen): Ditto.
3634         (m2/mc-boot-gen/$(SRC_PREFIX)decl.c): Ditto.
3635         (m2/mc-boot-gen/$(SRC_PREFIX)%.c): Ditto.
3636         * mc-boot-ch/GBuiltins.c: Correct comment and rename.
3637         * mc-boot-ch/Gdtoa.c: Correct comment and rename.
3638         * mc-boot-ch/Gldtoa.c: Correct comment and rename
3639         * mc-boot-ch/Gtermios.cc: Rename from Gtermios.c.
3640         * mc-boot-ch/Gerrno.c: Rename.
3641         * mc-boot-ch/GRTco.c: Removed.
3642         * mc-boot/GASCII.c: Rename to mc-boot/GASCII.cc.
3643         * mc-boot/GArgs.c: Rename to mc-boot/GArgs.cc.
3644         * mc-boot/GAssertion.c: Rename to mc-boot/GAssertion.cc.
3645         * mc-boot/GBreak.c: Rename to mc-boot/GBreak.cc.
3646         * mc-boot/GCmdArgs.c: Rename to mc-boot/GCmdArgs.cc.
3647         * mc-boot/GDebug.c: Rename to mc-boot/GDebug.cc.
3648         * mc-boot/GDynamicStrings.c: Rename to mc-boot/GDynamicStrings.cc.
3649         * mc-boot/GEnvironment.c: Rename to mc-boot/GEnvironment.cc.
3650         * mc-boot/GFIO.c: Rename to mc-boot/GFIO.cc.
3651         * mc-boot/GFormatStrings.c: Rename to mc-boot/GFormatStrings.cc.
3652         * mc-boot/GFpuIO.c: Rename to mc-boot/GFpuIO.cc.
3653         * mc-boot/GIO.c: Rename to mc-boot/GIO.cc.
3654         * mc-boot/GIndexing.c: Rename to mc-boot/GIndexing.cc.
3655         * mc-boot/GM2Dependent.c: Rename to mc-boot/GM2Dependent.cc.
3656         * mc-boot/GM2EXCEPTION.c: Rename to mc-boot/GM2EXCEPTION.cc.
3657         * mc-boot/GM2RTS.c: Rename to mc-boot/GM2RTS.cc.
3658         * mc-boot/GMemUtils.c: Rename to mc-boot/GMemUtils.cc.
3659         * mc-boot/GNumberIO.c: Rename to mc-boot/GNumberIO.cc.
3660         * mc-boot/GPushBackInput.c: Rename to mc-boot/GPushBackInput.cc.
3661         * mc-boot/GRTExceptions.c: Rename to mc-boot/GRTExceptions.cc.
3662         * mc-boot/GRTint.c: Rename to mc-boot/GRTint.cc.
3663         * mc-boot/GSArgs.c: Rename to mc-boot/GSArgs.cc.
3664         * mc-boot/GSFIO.c: Rename to mc-boot/GSFIO.cc.
3665         * mc-boot/GStdIO.c: Rename to mc-boot/GStdIO.cc.
3666         * mc-boot/GStorage.c: Rename to mc-boot/GStorage.cc.
3667         * mc-boot/GStrCase.c: Rename to mc-boot/GStrCase.cc.
3668         * mc-boot/GStrIO.c: Rename to mc-boot/GStrIO.cc.
3669         * mc-boot/GStrLib.c: Rename to mc-boot/GStrLib.cc.
3670         * mc-boot/GStringConvert.c: Rename to mc-boot/GStringConvert.cc.
3671         * mc-boot/GSysStorage.c: Rename to mc-boot/GSysStorage.cc.
3672         * mc-boot/GTimeString.c: Rename to mc-boot/GTimeString.cc.
3673         * mc-boot/Galists.c: Rename to mc-boot/Galists.cc.
3674         * mc-boot/Gdecl.c: Rename to mc-boot/Gdecl.cc.
3675         * mc-boot/Gkeyc.c: Rename to mc-boot/Gkeyc.cc.
3676         * mc-boot/Glists.c: Rename to mc-boot/Glists.cc.
3677         * mc-boot/GmcComment.c: Rename to mc-boot/GmcComment.cc.
3678         * mc-boot/GmcComp.c: Rename to mc-boot/GmcComp.cc.
3679         * mc-boot/GmcDebug.c: Rename to mc-boot/GmcDebug.cc.
3680         * mc-boot/GmcError.c: Rename to mc-boot/GmcError.cc.
3681         * mc-boot/GmcFileName.c: Rename to mc-boot/GmcFileName.cc.
3682         * mc-boot/GmcLexBuf.c: Rename to mc-boot/GmcLexBuf.cc.
3683         * mc-boot/GmcMetaError.c: Rename to mc-boot/GmcMetaError.cc.
3684         * mc-boot/GmcOptions.c: Rename to mc-boot/GmcOptions.cc.
3685         * mc-boot/GmcPreprocess.c: Rename to mc-boot/GmcPreprocess.cc.
3686         * mc-boot/GmcPretty.c: Rename to mc-boot/GmcPretty.cc.
3687         * mc-boot/GmcPrintf.c: Rename to mc-boot/GmcPrintf.cc.
3688         * mc-boot/GmcQuiet.c: Rename to mc-boot/GmcQuiet.cc.
3689         * mc-boot/GmcReserved.c: Rename to mc-boot/GmcReserved.cc.
3690         * mc-boot/GmcSearch.c: Rename to mc-boot/GmcSearch.cc.
3691         * mc-boot/GmcStack.c: Rename to mc-boot/GmcStack.cc.
3692         * mc-boot/GmcStream.c: Rename to mc-boot/GmcStream.cc.
3693         * mc-boot/Gmcp1.c: Rename to mc-boot/Gmcp1.cc.
3694         * mc-boot/Gmcp2.c: Rename to mc-boot/Gmcp2.cc.
3695         * mc-boot/Gmcp3.c: Rename to mc-boot/Gmcp3.cc.
3696         * mc-boot/Gmcp4.c: Rename to mc-boot/Gmcp4.cc.
3697         * mc-boot/Gmcp5.c: Rename to mc-boot/Gmcp5.cc.
3698         * mc-boot/GnameKey.c: Rename to mc-boot/GnameKey.cc.
3699         * mc-boot/GsymbolKey.c: Rename to mc-boot/GsymbolKey.cc.
3700         * mc-boot/Gtop.c: Rename to mc-boot/Gtop.cc.
3701         * mc-boot/Gvarargs.c: Rename to mc-boot/Gvarargs.cc.
3702         * mc-boot/Gwlists.c: Rename to mc-boot/Gwlists.cc.
3703         * pge-boot/GASCII.c: Rename to pge-boot/GASCII.cc.
3704         * pge-boot/GArgs.c: Rename to pge-boot/GArgs.cc.
3705         * pge-boot/GAssertion.c: Rename to pge-boot/GAssertion.cc.
3706         * pge-boot/GBuiltins.c: Rename to pge-boot/GBuiltins.cc.
3707         * pge-boot/GDebug.c: Rename to pge-boot/GDebug.cc.
3708         * pge-boot/GDynamicStrings.c: Rename to pge-boot/GDynamicStrings.cc.
3709         * pge-boot/GFIO.c: Rename to pge-boot/GFIO.cc.
3710         * pge-boot/GIO.c: Rename to pge-boot/GIO.cc.
3711         * pge-boot/GIndexing.c: Rename to pge-boot/GIndexing.cc.
3712         * pge-boot/GLists.c: Rename to pge-boot/GLists.cc.
3713         * pge-boot/GM2Dependent.c: Rename to pge-boot/GM2Dependent.cc.
3714         * pge-boot/GM2EXCEPTION.c: Rename to pge-boot/GM2EXCEPTION.cc.
3715         * pge-boot/GM2LINK.c: Rename to pge-boot/GM2LINK.cc.
3716         * pge-boot/GM2RTS.c: Rename to pge-boot/GM2RTS.cc.
3717         * pge-boot/GNameKey.c: Rename to pge-boot/GNameKey.cc.
3718         * pge-boot/GNumberIO.c: Rename to pge-boot/GNumberIO.cc.
3719         * pge-boot/GOutput.c: Rename to pge-boot/GOutput.cc.
3720         * pge-boot/GPushBackInput.c: Rename to pge-boot/GPushBackInput.cc.
3721         * pge-boot/GRTExceptions.c: Rename to pge-boot/GRTExceptions.cc.
3722         * pge-boot/GRTco.c: Rename to pge-boot/GRTco.cc.
3723         * pge-boot/GSFIO.c: Rename to pge-boot/GSFIO.cc.
3724         * pge-boot/GSYSTEM.c: Rename to pge-boot/GSYSTEM.cc.
3725         * pge-boot/GSelective.c: Rename to pge-boot/GSelective.cc.
3726         * pge-boot/GStdIO.c: Rename to pge-boot/GStdIO.cc.
3727         * pge-boot/GStorage.c: Rename to pge-boot/GStorage.cc.
3728         * pge-boot/GStrCase.c: Rename to pge-boot/GStrCase.cc.
3729         * pge-boot/GStrIO.c: Rename to pge-boot/GStrIO.cc.
3730         * pge-boot/GStrLib.c: Rename to pge-boot/GStrLib.cc.
3731         * pge-boot/GSymbolKey.c: Rename to pge-boot/GSymbolKey.cc.
3732         * pge-boot/GSysExceptions.c: Rename to pge-boot/GSysExceptions.cc.
3733         * pge-boot/GSysStorage.c: Rename to pge-boot/GSysStorage.cc.
3734         * pge-boot/Gabort.c: Rename to pge-boot/Gabort.cc.
3735         * pge-boot/Gbnflex.c: Rename to pge-boot/Gbnflex.cc.
3736         * pge-boot/Gcbuiltin.c: Rename to pge-boot/Gcbuiltin.cc.
3737         * pge-boot/Gdtoa.c: Rename to pge-boot/Gdtoa.cc.
3738         * pge-boot/Gerrno.c: Rename to pge-boot/Gerrno.cc.
3739         * pge-boot/Gldtoa.c: Rename to pge-boot/Gldtoa.cc.
3740         * pge-boot/Glibc.c: Rename to pge-boot/Glibc.cc.
3741         * pge-boot/Glibm.c: Rename to pge-boot/Glibm.cc.
3742         * pge-boot/Gmcrts.c: Rename to pge-boot/Gmcrts.cc.
3743         * pge-boot/Gpge.c: Rename to pge-boot/Gpge.cc.
3744         * pge-boot/Gwrapc.c: Rename to pge-boot/Gwrapc.cc.
3745         * pge-boot/README: Correct description.
3746         * pge-boot/main.c: Rename to pge-boot/main.cc.
3747         * pge-boot/network.c: Rename to pge-boot/network.cc.
3749 2023-02-28  Gaius Mulley  <gaiusmod2@gmail.com>
3751         PR modula2/108956
3752         * Make-lang.in (m2/gm2-libs-boot/M2RTS.o): New specific rule to
3753         add the --suppress-noreturn option.
3754         * Make-maintainer.in (m2/gm2-ppg-boot/$(SRC_PREFIX)M2RTS.o): New
3755         specific rule to add the --suppress-noreturn option.
3756         (m2/gm2-pg-boot/$(SRC_PREFIX)M2RTS.o): New
3757         specific rule to add the --suppress-noreturn option.
3758         (m2/gm2-pg-boot/$(SRC_PREFIX)%.o): Add missing $(srcdir).
3759         (m2/gm2-pge-boot/$(SRC_PREFIX)M2RTS.o): New
3760         specific rule to add the --suppress-noreturn option.
3761         (m2/gm2-pge-boot/$(SRC_PREFIX)%.o): Add missing $(srcdir).
3762         * gm2-libs-ch/UnixArgs.cc (LIBNAME): New define.
3763         (_M2_UnixArgs_ctor): Add LIBNAME parameter to RegisterModule.
3764         * gm2-libs-ch/dtoa.cc (LIBNAME): New define.
3765         (_M2_dtoa_ctor): Add LIBNAME parameter to RegisterModule.
3766         * gm2-libs-ch/ldtoa.cc (LIBNAME): New define.
3767         (_M2_ldtoa_ctor): Add LIBNAME parameter to RegisterModule.
3768         * pge-boot/m2rts.h (M2RTS_RegisterModule): Add libname
3769         parameter.
3770         * gm2-libs-ch/m2rts.h (M2RTS_RegisterModule): Add libname
3771         parameter.
3772         * mc-boot-ch/GUnixArgs.cc (_M2_UnixArgs_ctor): Remove.
3773         * pge-boot/GUnixArgs.cc (LIBNAME): New define.
3774         (_M2_UnixArgs_ctor): Add LIBNAME parameter to RegisterModule.
3775         * gm2-libs/RTint.def (AttachVector): Rename parameter.
3776         * mc-boot/GDynamicStrings.c: Rebuilt.
3777         * mc-boot/GFIO.c: Rebuilt.
3778         * mc-boot/GIndexing.c: Rebuilt.
3779         * mc-boot/GM2EXCEPTION.c: Rebuilt.
3780         * mc-boot/GPushBackInput.c: Rebuilt.
3781         * mc-boot/GRTExceptions.c: Rebuilt.
3782         * mc-boot/GRTint.c: Rebuilt.
3783         * mc-boot/GRTint.h: Rebuilt.
3784         * mc-boot/GStdIO.c: Rebuilt.
3785         * mc-boot/GStringConvert.c: Rebuilt.
3786         * mc-boot/GSysStorage.c: Rebuilt.
3787         * mc-boot/Gdecl.c: Rebuilt.
3788         * mc-boot/Gkeyc.c: Rebuilt.
3789         * mc-boot/GmcComment.c: Rebuilt.
3790         * mc-boot/GmcComp.c: Rebuilt.
3791         * mc-boot/GmcDebug.c: Rebuilt.
3792         * mc-boot/GmcMetaError.c: Rebuilt.
3793         * mc-boot/GmcOptions.c: Rebuilt.
3794         * mc-boot/GmcOptions.h: Rebuilt.
3795         * mc-boot/GmcStack.c: Rebuilt.
3796         * mc-boot/GnameKey.c: Rebuilt.
3797         * mc-boot/GsymbolKey.c: Rebuilt.
3798         * mc/decl.mod:: Rebuilt.
3799         * mc/mcOptions.def: Rebuilt.
3800         * mc/mcOptions.mod:: Rebuilt.
3801         * pge-boot/GDynamicStrings.c: Rebuilt.
3802         * pge-boot/GFIO.c: Rebuilt.
3803         * pge-boot/GIndexing.c: Rebuilt.
3804         * pge-boot/GM2EXCEPTION.c: Rebuilt.
3805         * pge-boot/GM2RTS.c: Rebuilt.
3806         * pge-boot/GNameKey.c: Rebuilt.
3807         * pge-boot/GPushBackInput.c: Rebuilt.
3808         * pge-boot/GRTExceptions.c: Rebuilt.
3809         * pge-boot/GStdIO.c: Rebuilt.
3810         * pge-boot/GSymbolKey.c: Rebuilt.
3811         * pge-boot/GSysStorage.c: Rebuilt.
3813 2023-02-25  Gaius Mulley  <gaiusmod2@gmail.com>
3815         PR modula2/108261
3816         * Make-lang.in (GM2-COMP-BOOT-DEFS): DynamicStringPath.def
3817         remove.  DynamicPath.def add.
3818         (GM2-COMP-BOOT-MODS): DynamicStringPath.mod remove.
3819         DynamicPath.mod add.
3820         * Make-maintainer.in (BUILD-BOOT-PPG-H): New dependency.
3821         (m2/gm2-ppg-boot/$(SRC_PREFIX)%.o): $(BUILD-BOOT-PPG-H) Add
3822         dependency.
3823         (PGE-DEF): New definition.
3824         (BUILD-BOOT-PG-H): New dependency.
3825         (m2/gm2-pg-boot/$(SRC_PREFIX)%.o): $(BUILD-BOOT-PG-H) Add
3826         dependency.
3827         (BUILD-BOOT-PGE-H): New dependency.
3828         (m2/gm2-pge-boot/$(SRC_PREFIX)%.o): $(BUILD-BOOT-PGE-H) Add
3829         dependency.
3830         (GM2PATH): Add pathname entries.
3831         (m2/boot-bin/mc-devel$(exeext)): Add m2/mc-boot-ch/Gm2rtsdummy.o
3832         dependency.
3833         (m2/boot-bin/mc-opt$(exeext)): Fix -I path.
3834         * gm2-compiler/DynamicStringPath.def: Renamed module to
3835         DynamicPath.
3836         (GetUserPath): Remove.
3837         (GetSystemPath): Remove.
3838         (SetUserPath): Remove.
3839         (SetSystemPath): Remove.
3840         (DumpPath): New procedure definition.
3841         * gm2-compiler/DynamicStringPath.mod: Renamed module to
3842         DynamicPath.
3843         (GetUserPath): Remove.
3844         (GetSystemPath): Remove.
3845         (SetUserPath): Remove.
3846         (SetSystemPath): Remove.
3847         (DumpPath): Remove Debugging conditional.
3848         * gm2-compiler/M2AsmUtil.mod: Import EqualArray, NulName and
3849         GetLibName.
3850         (Debugging): New declaration.
3851         (GetFullSymName): Re-implemented to prefix (mange) libname
3852         to any extern variable/procedure which is IsExportQualified.
3853         * gm2-compiler/M2Comp.mod (qprintLibName): New procedure.
3854         * gm2-compiler/M2Graph.mod (resolveImports): Add libname.
3855         * gm2-compiler/M2Options.def (SetM2Prefix): New procedure.
3856         (GetM2Prefix): New procedure function.
3857         (SetM2PathName): New procedure.
3858         (GetM2PathName): New procedure function.
3859         * gm2-compiler/M2Options.mod: (SetM2Prefix): New procedure implemented.
3860         (GetM2Prefix): New procedure function implemented.
3861         (SetM2PathName): New procedure implemented.
3862         (GetM2PathName): New procedure function implemented.
3863         (RuntimeModuleOverride): Set to DefaultRuntimeModuleOverride.
3864         * gm2-compiler/M2Quads.mod: Import GetLibName.
3865         (SafeRequestSym) Pass result of GetLibName to RequestDependant.
3866         (callRequestDependant): Add libname as a parameter.
3867         (BuildM2InitFunction): Add libname as a parameter.
3868         (BuildM2FiniFunction): Add libname as a parameter.
3869         (BuildM2CtorFunction): Add libname as a parameter.
3870         * gm2-compiler/M2Scaffold.mod (LookupModuleSym): Set LibName
3871         if a definition source was found.
3872         * gm2-compiler/M2Search.def (FindSourceFile): Add named library parameter.
3873         (FindSourceDefFile): Add named library parameter.
3874         (FindSourceModFile): Add named library parameter.
3875         * gm2-compiler/M2Search.mod (FindSourceFile): Reimplement.
3876         (FindSourceDefFile): Add named library parameter.
3877         (FindSourceModFile): Add named library parameter.
3878         * gm2-compiler/SymbolTable.def (MakeProcedureCtorExtern): Add
3879         libname parameter.
3880         (PutLibName): New procedure.
3881         (GetLibName): New procedure function.
3882         * gm2-compiler/SymbolTable.mod (MakeProcedureCtorExtern): Add
3883         libname parameter.
3884         (GenName): Add libname parameter.
3885         (InitCtorFields): Add moduleSym as a parameter.
3886         (PutCtorExtern): Add libname parameter to GenName.
3887         * gm2-gcc/init.cc (_M2_DynamicStringPath_init): Rename function...
3888         (_M2_DynamicPath_init): ...to this.
3889         (_M2_PathName_init): Added.
3890         * gm2-gcc/m2decl.cc (m2decl_DeclareM2linkStaticInitialization):
3891         Add m2pim as the manged component of the exported symbol.
3892         (m2decl_DeclareM2linkForcedModuleInitOrder): Add m2pim mangle prefix.
3893         * gm2-gcc/m2options.h (M2Options_SetM2Prefix): New function.
3894         (M2Options_GetM2Prefix): New function.
3895         (M2Options_SetM2PathName): New function.
3896         (M2Options_GetM2PathName): New function.
3897         * gm2-lang.cc (push_back_Ipath): New function.
3898         (add_one_import_path): New function.
3899         (gm2_langhook_handle_option): Record -I component.  Call
3900         SetM2PathName when -fm2-pathname= is seen.  Record -fm2-pathnameI
3901         component.  Call SetM2Prefix when -fm2-prefix= is seen.
3902         (gm2_langhook_post_options): Iterative over pathname entries
3903         and call SetM2PathName, SetSearchPath as appropriate.
3904         * gm2-libs-iso/M2RTS.def (ConstructModules): Add libname parameter.
3905         (DeconstructModules): Add libname parameter.
3906         (RegisterModule): Add libname parameter.
3907         (RequestDependant): Add libname parameter.
3908         * gm2-libs-iso/M2RTS.mod (ConstructModules): Add libname parameter.
3909         (DeconstructModules): Add libname parameter.
3910         (RegisterModule): Add libname parameter.
3911         (RequestDependant): Add libname parameter.
3912         * gm2-libs-min/M2RTS.def (ConstructModules): Add libname parameter.
3913         (DeconstructModules): Add libname parameter.
3914         (RegisterModule): Add libname parameter.
3915         (RequestDependant): Add libname parameter.
3916         * gm2-libs-min/M2RTS.mod (ConstructModules): Add libname parameter.
3917         (DeconstructModules): Add libname parameter.
3918         (RegisterModule): Add libname parameter.
3919         (RequestDependant): Add libname parameter.
3920         * gm2-libs/M2Dependent.def (ConstructModules): Add libname parameter.
3921         (DeconstructModules): Add libname parameter.
3922         (RegisterModule): Add libname parameter.
3923         (RequestDependant): Add libname parameter.
3924         * gm2-libs/M2Dependent.mod (ConstructModules): Add libname parameter.
3925         (DeconstructModules): Add libname parameter.
3926         (RegisterModule): Add libname parameter.
3927         (RequestDependant): Add libname parameter.
3928         * gm2-libs/M2RTS.def (ConstructModules): Add libname parameter.
3929         (DeconstructModules): Add libname parameter.
3930         (RegisterModule): Add libname parameter.
3931         (RequestDependant): Add libname parameter.
3932         * gm2-libs/M2RTS.mod (ConstructModules): Add libname parameter.
3933         (DeconstructModules): Add libname parameter.
3934         (RegisterModule): Add libname parameter.
3935         (RequestDependant): Add libname parameter.
3936         * gm2-libs/RTint.mod (FindVector): Rename variables.
3937         (initInputVector): Rename variables.
3938         (initOutputVector): Rename variables.
3939         (InitTimeVector): Rename variables.
3940         (FindVectorNo): Rename variables.
3941         (FindPendingVector): Rename variables.
3942         (ReArmTimeVector): Rename variables.
3943         (GetTimeVector): Rename variables.
3944         (AttachVector): Rename variables.
3945         (AttachVector): Rename variables.
3946         (IncludeVector): Rename variables.
3947         (ExcludeVector): Rename variables.
3948         (AddFd): Rename variables.
3949         (AddFd): Rename variables.
3950         (DumpPendingQueue): Rename variables.
3951         (stop): Remove.
3952         (activatePending): Rename variables.
3953         (Listen): Rename variables.
3954         * gm2-libs/libc.def (snprintf): New function.
3955         * gm2-libs/sckt.def: Change all exported identifiers to be
3956         export qualified.
3957         * gm2spec.cc (push_back_Ipath): New function.
3958         (add_m2_I_path): New function.
3959         (lang_specific_driver): Skip -fm2-pathname= and remember pathname.
3960         Skip -I and record the path and current pathname.  Call add_m2_I_path.
3961         * lang-specs.h: Replace %{I*} with %{fm2-pathname*}.
3962         * lang.opt (-fm2-pathname=): New entry.
3963         (-fm2-pathname): New entry.
3964         (-fm2-prefix=): New entry.
3965         * mc-boot-ch/GUnixArgs.cc (_M2_UnixArgs_dep): New function.
3966         (_M2_UnixArgs_ctor::_M2_UnixArgs_ctor): New method.
3967         * mc-boot-ch/Glibc.c (libc_snprintf): New function.
3968         * mc-boot-ch/m2rts.h (M2RTS_RequestDependant): Changed prototype.
3969         (M2RTS_RegisterModule): Changed prototype.
3970         * mc-boot/GDynamicStrings.c: Rebuild.
3971         * mc-boot/GFIO.c: Rebuild.
3972         * mc-boot/GIndexing.c: Rebuild.
3973         * mc-boot/GM2Dependent.c: Rebuild.
3974         * mc-boot/GM2Dependent.h: Rebuild.
3975         * mc-boot/GM2EXCEPTION.c: Rebuild.
3976         * mc-boot/GM2RTS.c: Rebuild.
3977         * mc-boot/GM2RTS.h: Rebuild.
3978         * mc-boot/GPushBackInput.c: Rebuild.
3979         * mc-boot/GRTExceptions.c: Rebuild.
3980         * mc-boot/GRTint.c: Rebuild.
3981         * mc-boot/GStdIO.c: Rebuild.
3982         * mc-boot/GStringConvert.c: Rebuild.
3983         * mc-boot/GSysStorage.c: Rebuild.
3984         * mc-boot/Gdecl.c: Rebuild.
3985         * mc-boot/Gkeyc.c: Rebuild.
3986         * mc-boot/Glibc.h: Rebuild.
3987         * mc-boot/GmcComment.c: Rebuild.
3988         * mc-boot/GmcComp.c: Rebuild.
3989         * mc-boot/GmcDebug.c: Rebuild.
3990         * mc-boot/GmcMetaError.c: Rebuild.
3991         * mc-boot/GmcStack.c: Rebuild.
3992         * mc-boot/GnameKey.c: Rebuild.
3993         * mc-boot/GsymbolKey.c: Rebuild.
3994         * pge-boot/GASCII.c: Rebuild.
3995         * pge-boot/GArgs.c: Rebuild.
3996         * pge-boot/GAssertion.c: Rebuild.
3997         * pge-boot/GDebug.c: Rebuild.
3998         * pge-boot/GDynamicStrings.c: Rebuild.
3999         * pge-boot/GFIO.c: Rebuild.
4000         * pge-boot/GIO.c: Rebuild.
4001         * pge-boot/GIndexing.c: Rebuild.
4002         * pge-boot/GLists.c: Rebuild.
4003         * pge-boot/GM2Dependent.c: Rebuild.
4004         * pge-boot/GM2Dependent.h: Rebuild.
4005         * pge-boot/GM2EXCEPTION.c: Rebuild.
4006         * pge-boot/GM2RTS.c: Rebuild.
4007         * pge-boot/GM2RTS.h: Rebuild.
4008         * pge-boot/GNameKey.c: Rebuild.
4009         * pge-boot/GNumberIO.c: Rebuild.
4010         * pge-boot/GOutput.c: Rebuild.
4011         * pge-boot/GPushBackInput.c: Rebuild.
4012         * pge-boot/GRTExceptions.c: Rebuild.
4013         * pge-boot/GSFIO.c: Rebuild.
4014         * pge-boot/GStdIO.c: Rebuild.
4015         * pge-boot/GStorage.c: Rebuild.
4016         * pge-boot/GStrCase.c: Rebuild.
4017         * pge-boot/GStrIO.c: Rebuild.
4018         * pge-boot/GStrLib.c: Rebuild.
4019         * pge-boot/GSymbolKey.c: Rebuild.
4020         * pge-boot/GSysExceptions.c (_M2_SysExceptions_finish): Rename this...
4021         (_M2_SysExceptions_fini): ... to this.
4022         * pge-boot/GSysStorage.c: Rebuild.
4023         (_M2_SysStorage_finish): Rename this...
4024         (_M2_SysStorage_fini): ... to this.
4025         * pge-boot/GUnixArgs.cc: New file.
4026         * pge-boot/Gbnflex.c (_M2_bnflex_finish): Rename this...
4027         (_M2_bnflex_fini): ... to this.
4028         * pge-boot/Gerrno.c (_M2_errno_finish): Rename this...
4029         (_M2_errno_fini): ... to this.
4030         * pge-boot/Glibc.c (libc_snprintf): New function.
4031         * pge-boot/Glibc.h (libc_snprintf): New prototype.
4032         * pge-boot/Gpge.c (_M2_pge_finish): Rename this...
4033         (_M2_pge_fini): ... to this.
4034         * pge-boot/Gtermios.cc (_M2_termios_finish): Rename this...
4035         (_M2_termios_fini): ... to this.
4036         * pge-boot/main.c (_M2_RTExceptions_finish): Rename this...
4037         (_M2_RTExceptions_fini): ... to this.
4038         (_M2_M2EXCEPTION_finish): Rename this...
4039         (_M2_M2EXCEPTION_fini): ... to this.
4040         (_M2_M2RTS_finish): Rename this...
4041         (_M2_M2RTS_fini): ... to this.
4042         (_M2_SysExceptions_finish): Rename this...
4043         (_M2_SysExceptions_fini): ... to this.
4044         (_M2_StrLib_finish): Rename this...
4045         (_M2_StrLib_fini): ... to this.
4046         (_M2_errno_finish): Rename this...
4047         (_M2_errno_fini): ... to this.
4048         (_M2_termios_finish): Rename this...
4049         (_M2_termios_fini): ... to this.
4050         (_M2_IO_finish): Rename this...
4051         (_M2_IO_fini): ... to this.
4052         (_M2_StdIO_finish): Rename this...
4053         (_M2_StdIO_fini): ... to this.
4054         (_M2_Debug_finish): Rename this...
4055         (_M2_Debug_fini): ... to this.
4056         (_M2_SysStorage_finish): Rename this...
4057         (_M2_SysStorage_fini): ... to this.
4058         (_M2_Storage_finish): Rename this...
4059         (_M2_Storage_fini): ... to this.
4060         (_M2_StrIO_finish): Rename this...
4061         (_M2_StrIO_fini): ... to this.
4062         (_M2_DynamicStrings_finish): Rename this...
4063         (_M2_DynamicStrings_fini): ... to this.
4064         (_M2_Assertion_finish): Rename this...
4065         (_M2_Assertion_fini): ... to this.
4066         (_M2_Indexing_finish): Rename this...
4067         (_M2_Indexing_fini): ... to this.
4068         (_M2_NameKey_finish): Rename this...
4069         (_M2_NameKey_fini): ... to this.
4070         (_M2_NumberIO_finish): Rename this...
4071         (_M2_NumberIO_fini): ... to this.
4072         (_M2_PushBackInput_finish): Rename this...
4073         (_M2_PushBackInput_fini): ... to this.
4074         (_M2_SymbolKey_finish): Rename this...
4075         (_M2_SymbolKey_fini): ... to this.
4076         (_M2_UnixArgs_finish): Rename this...
4077         (_M2_UnixArgs_fini): ... to this.
4078         (_M2_FIO_finish): Rename this...
4079         (_M2_FIO_fini): ... to this.
4080         (_M2_SFIO_finish): Rename this...
4081         (_M2_SFIO_fini): ... to this.
4082         (_M2_StrCase_finish): Rename this...
4083         (_M2_StrCase_fini): ... to this.
4084         (_M2_bnflex_finish): Rename this...
4085         (_M2_bnflex_fini): ... to this.
4086         (_M2_Lists_finish): Rename this...
4087         (_M2_Lists_fini): ... to this.
4088         (_M2_Args_finish): Rename this...
4089         (_M2_Args_fini): ... to this.
4090         (_M2_Output_finish): Rename this...
4091         (_M2_Output_fini): ... to this.
4092         (_M2_pge_finish): Rename this...
4093         (_M2_pge_fini): ... to this.
4094         * plugin/m2rte.cc (m2_runtime_error_calls): Change all runtime
4095         procedure names to their name mangled counterparts.
4096         * gm2-libs-iso/wrapsock.c: Removed.
4097         * gm2-libs-iso/wraptime.c: Removed.
4098         * mc-boot/Gpth.h: Removed.
4099         * gm2-compiler/PathName.def: New file.
4100         * gm2-compiler/PathName.mod: New file.
4101         * gm2-compiler/DynamicPath.def: New file.
4102         * gm2-compiler/DynamicPath.mod: New file.
4104 2023-02-06  Gaius Mulley  <gaiusmod2@gmail.com>
4106         PR modula2/108135
4107         * gm2-compiler/M2Search.mod (DSdbEnter): Comment out.
4108         (DSdbExit): Comment out.
4110 2023-02-06  Co-Authored by: Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
4112         PR modula2/107234
4113         * m2pp.cc (m2pp_integer_cst): Use
4114         HOST_WIDE_INT_PRINT_UNSIGNED as the format specifier.
4116 2023-02-06  Gaius Mulley  <gaiusmod2@gmail.com>
4118         * gm2-compiler/M2Preprocess.mod (BaseName): Comment out.
4119         * gm2-lang.cc (opt): Remove.
4120         * gm2spec.cc (add_include): Remove.
4121         (full_libraries): Remove.
4122         (concat_option): Remove.
4124 2023-02-03  Gaius Mulley  <gaiusmod2@gmail.com>
4126         * Make-lang.in (TEXISRC): Remove m2/images/gnu.eps.
4127         (RSTSRC): Remove m2/images/gnu.eps.
4128         (doc/m2.dvi): Add $(objdir)/m2/images/gnu.eps.
4129         (doc/m2.pdf): Add $(objdir)/m2/images/gnu.eps.
4130         (M2_PDFFILES): New definition.
4131         (m2.install-pdf): New rule.
4132         (m2.pod): Add $(objdir)/m2/images/gnu.eps.
4133         (m2.info): Add $(objdir)/m2/images/gnu.eps.
4134         (m2.html): New rule.
4135         (m2/gpl_v3_without_node.texi): New rule.
4136         (plugin/m2rte$(soext)): Simplify mkinstalldirs.
4137         (cc1gm2$(exeext)): Ditto.
4138         (m2/stage1/cc1gm2$(exeext)): Ditto.
4139         (m2/gm2-gcc/%.o): Ditto.
4140         (m2/gm2-gcc/rtegraph.o): Ditto.
4141         (m2/gm2-gcc/$(SRC_PREFIX)%.h): Ditto.
4142         (m2/mc-boot/$(SRC_PREFIX)%.o):Ditto.
4143         (m2/mc-boot-ch/$(SRC_PREFIX)%.o): Ditto.
4144         (m2/mc-boot/main.o): Ditto.
4145         (m2/gm2-libs-boot/%.o): Ditto.
4146         (m2/gm2-libs-boot/$(SRC_PREFIX)%.h): Ditto.
4147         (m2/gm2-libs-boot/RTcodummy.o): Ditto.
4148         (m2/gm2-libs-boot/wrapc.o): Ditto.
4149         (m2/gm2-libs-boot/M2LINK.o): Ditto.
4150         (m2/gm2-libs-boot/UnixArgs.o): Ditto.
4151         (m2/gm2-libs-boot/choosetemp.o): Ditto.
4152         (m2/gm2-libs-boot/errno.o): Ditto.
4153         (m2/gm2-libs-boot/dtoa.o): Ditto.
4154         (m2/gm2-libs-boot/ldtoa.o): Ditto.
4155         (m2/gm2-libs-boot/termios.o): Ditto.
4156         (m2/gm2-libs-boot/SysExceptions.o): Ditto.
4157         (m2/gm2-libs-boot/SysStorage.o): Ditto.
4158         (m2/gm2-compiler-boot/M2GCCDeclare.o): Ditto.
4159         (m2/gm2-compiler-boot/M2Error.o): Ditto.
4160         (m2/gm2-compiler-boot/%.o): Ditto.
4161         (m2/gm2-compiler-boot/$(SRC_PREFIX)%.h): Ditto.
4162         (m2/gm2-compiler-boot/m2flex.o): Ditto.
4163         (m2/gm2-compiler/m2flex.c): Ditto.
4164         (m2/gm2-libiberty/$(SRC_PREFIX)%.h): Ditto.
4165         (m2/gm2-compiler/%.o): Ditto.
4166         (m2/gm2-compiler/m2flex.o): Ditto.
4167         (m2/gm2-compiler/%.o): Ditto.
4168         (m2/gm2-libs-iso/%.o): Ditto.
4169         (m2/gm2-libs/gm2-libs-host.h): Ditto.
4170         ($(objdir)/m2/gm2-libs-min/SYSTEM.def): Ditto.
4171         ($(objdir)/m2/gm2-libs/SYSTEM.def): Ditto.
4172         ($(objdir)/m2/gm2-libs-iso/SYSTEM.def): Ditto.
4173         ($(objdir)/m2/gm2-libs-coroutines/SYSTEM.def): Ditto.
4174         (m2/gm2-compiler/gm2.a): Ditto.
4175         (m2/gm2-libs-boot/libgm2.a): Ditto.
4176         (m2/gm2-compiler-boot/gm2.a): Ditto.
4177         (m2/boot-bin/mklink$(exeext)): Ditto.
4178         (m2/gm2-compiler-boot/$(SRC_PREFIX)%.h): Ditto.
4179         (m2/gm2-compiler/%.mod): Ditto.
4180         (m2/gm2-compiler-boot/%.mod): Ditto.
4181         (m2/pge-boot/%.o): Ditto.
4183 2023-02-01  Gaius Mulley  <gaiusmod2@gmail.com>
4185         * Make-lang.in (GM2_FLAGS): Add -fno-return -Wreturn-type.
4186         (GM2_ISO_FLAGS): Add -fno-return -Wreturn-type.
4187         * Make-maintainer.in (GM2PATH): Split into separate -I components.
4188         (MC-LIB-DEFS): Add RTentity.def.
4189         (m2/boot-bin/mc-devel$(exeext)): Changed -I$(GM2PATH) to
4190         $(GM2PATH).
4191         (m2/boot-bin/mc-opt$(exeext)): Separate -I paths.
4192         (m2/mc/decl.o): Separate -I paths.
4193         (gm2-bootstrap): Separate -I paths.
4194         (m2/mc-boot-gen/$(SRC_PREFIX)%.h): Separate -I paths.
4195         (m2/mc-boot-gen/$(SRC_PREFIX)decl.c): Separate -I paths.
4196         (m2/mc-boot-gen/$(SRC_PREFIX)%.c): Separate -I paths.
4197         (gm2.verifyparanoid): Separate -I paths.
4198         (gm2.verifystage12): Separate -I paths.
4199         * gm2-compiler/M2ALU.mod (GetConstructorElement): Add default
4200         Return NulSym.  Remove return from the error case.
4201         * gm2-compiler/M2Base.mod (ComplexToScalar): Return RType
4202         from the error case.
4203         (MixMetaTypes):  Return MakeError as a default.
4204         * gm2-compiler/M2GCCDeclare.mod (GetTypeMin): Return NulSym
4205         from the error case.
4206         (GetTypeMax): Return NulSym from the error case.
4207         * gm2-compiler/M2GenGCC.mod (IsExportedGcc): Replace Assert
4208         by InternalError.
4209         * gm2-compiler/M2Quads.mod (GetItemPointedTo): Add InternalError.
4210         (GetTypeMin): Add InternalError.
4211         (GetTypeMax): Add InternalError.
4212         * gm2-compiler/M2System.mod (InitSystem): Call
4213         PutProcedureNoReturn on Throw.
4214         * gm2-gcc/m2except.cc (m2except_InitExceptions): fn_throw_tree
4215         declare as noreturn.  fn_rethrow_tree declare as noreturn.
4216         * gm2-libs-coroutines/Debug.def (Halt): Add noreturn attribute.
4217         * gm2-libs-coroutines/SYSTEM.def (THROW): Add noreturn attribute.
4218         * gm2-libs-iso/ClientSocket.mod (dorbytes): Add return FALSE.
4219         * gm2-libs-iso/EXCEPTIONS.def (RAISE): Add noreturn attribute.
4220         * gm2-libs-iso/IOLink.def (RAISEdevException): Add noreturn attribute.
4221         * gm2-libs-iso/M2RTS.def (HALT): Add noreturn attribute.
4222         (Halt): Ditto.
4223         (HaltC): Ditto.
4224         (ErrorMessage): Ditto.
4225         (AssignmentException): Ditto.
4226         (ReturnException): Ditto.
4227         (IncException): Ditto.
4228         (DecException): Ditto.
4229         (InclException): Ditto.
4230         (ExclException): Ditto.
4231         (ShiftException): Ditto.
4232         (RotateException): Ditto.
4233         (StaticArraySubscriptException): Ditto.
4234         (DynamicArraySubscriptException): Ditto.
4235         (ForLoopBeginException): Ditto.
4236         (ForLoopToException): Ditto.
4237         (ForLoopEndException): Ditto.
4238         (PointerNilException): Ditto.
4239         (NoReturnException): Ditto.
4240         (CaseException): Ditto.
4241         (WholeNonPosDivException): Ditto.
4242         (WholeNonPosModException): Ditto.
4243         (WholeZeroDivException): Ditto.
4244         (WholeZeroRemException): Ditto.
4245         (WholeValueException): Ditto.
4246         (RealValueException): Ditto.
4247         (ParameterException): Ditto.
4248         (NoException): Ditto.
4249         * gm2-libs-iso/SYSTEM.def (THROW): Ditto.
4250         * gm2-libs-iso/TermFile.mod (dorbytes): Add default return FALSE.
4251         * gm2-libs-min/M2RTS.def: Add noreturn attribute.
4252         * gm2-libs/FIO.mod (BufferedRead): Return -1.
4253         (getFileName): Return NIL.
4254         (getFileNameLength): Return 0.
4255         * gm2-libs/M2RTS.def (HaltC): Add noreturn attribute.
4256         (AssignmentException): Ditto.
4257         (ReturnException): Ditto.
4258         (IncException): Ditto.
4259         (DecException): Ditto.
4260         (InclException): Ditto.
4261         (ExclException): Ditto.
4262         (ShiftException): Ditto.
4263         (RotateException): Ditto.
4264         (StaticArraySubscriptException): Ditto.
4265         (DynamicArraySubscriptException): Ditto.
4266         (ForLoopBeginException): Ditto.
4267         (ForLoopToException): Ditto.
4268         (ForLoopEndException): Ditto.
4269         (PointerNilException): Ditto.
4270         (NoReturnException): Ditto.
4271         (CaseException): Ditto.
4272         (WholeNonPosDivException): Ditto.
4273         (WholeNonPosModException): Ditto.
4274         (WholeZeroDivException): Ditto.
4275         (WholeZeroRemException): Ditto.
4276         (WholeValueException): Ditto.
4277         (RealValueException): Ditto.
4278         (ParameterException): Ditto.
4279         (NoException): Ditto.
4280         * gm2-libs/RTExceptions.def (Raise): Ditto.
4281         * gm2-libs/RTExceptions.mod (InvokeHandler): Ditto.
4282         * gm2-libs/SYSTEM.def (THROW): Ditto.
4283         * m2.flex (_M2_m2flex_fini): Remamed to...
4284         (_M2_m2flex_finish): ...here.
4285         * mc-boot-ch/GBuiltins.c (_M2_Builtins_finish): Remamed to...
4286         (_M2_Builtins_fini): ...this.
4287         * mc-boot-ch/GRTco.c (_M2_RTco_finish): Remamed to...
4288         (_M2_RTco_fini): ...this.
4289         * mc-boot-ch/GSYSTEM.c (_M2_SYSTEM_finish): Remamed to...
4290         (_M2_SYSTEM_fini): ...this.
4291         * mc-boot-ch/GSelective.c (_M2_Selective_finish): Remamed to...
4292         (_M2_Selective_fini): ...this.
4293         * mc-boot-ch/GSysExceptions.c (_M2_SysExceptions_init): Add
4294         parameters.
4295         (_M2_SysExceptions_finish): Remamed to...
4296         (_M2_SysExceptions_fini): ...this.
4297         * mc-boot-ch/GUnixArgs.cc (_M2_UnixArgs_finish): Remamed to...
4298         (_M2_UnixArgs_fini): ...this.
4299         (_M2_UnixArgs_ctor::_M2_UnixArgs_ctor): Change parameter
4300         to _M2_UnixArgs_fini.
4301         * mc-boot-ch/Gdtoa.c (_M2_dtoa_finish): Remamed to...
4302         (_M2_dtoa_fini): ...this.
4303         * mc-boot-ch/Gerrno.c (_M2_errno_finish): Remamed to...
4304         (_M2_errno_fini): ...this.
4305         * mc-boot-ch/Gldtoa.c (_M2_ldtoa_finish): Remamed to...
4306         (_M2_ldtoa_fini): ...this.
4307         * mc-boot-ch/Gtermios.cc (_M2_termios_init): Add parameters.
4308         (_M2_termios_finish): Remamed to...
4309         (_M2_termios_fini): ...this.
4310         * mc-boot-ch/Gwrapc.c (_M2_wrapc_init): Add parameters.
4311         (_M2_wrapc_finish): Remamed to...
4312         (_M2_wrapc_fini): ...this.
4313         * mc-boot/GASCII.c: Rebuild.
4314         * mc-boot/GArgs.c: Rebuild.
4315         * mc-boot/GAssertion.c: Rebuild.
4316         * mc-boot/GBreak.c: Rebuild.
4317         * mc-boot/GCmdArgs.c: Rebuild.
4318         * mc-boot/GDebug.c: Rebuild.
4319         * mc-boot/GDynamicStrings.c: Rebuild.
4320         * mc-boot/GEnvironment.c: Rebuild.
4321         * mc-boot/GFIO.c: Rebuild.
4322         * mc-boot/GFormatStrings.c: Rebuild.
4323         * mc-boot/GFpuIO.c: Rebuild.
4324         * mc-boot/GIO.c: Rebuild.
4325         * mc-boot/GIndexing.c: Rebuild.
4326         * mc-boot/GM2Dependent.c: Rebuild.
4327         * mc-boot/GM2EXCEPTION.c: Rebuild.
4328         * mc-boot/GM2RTS.c: Rebuild.
4329         * mc-boot/GM2RTS.h: Rebuild.
4330         * mc-boot/GMemUtils.c: Rebuild.
4331         * mc-boot/GNumberIO.c: Rebuild.
4332         * mc-boot/GPushBackInput.c: Rebuild.
4333         * mc-boot/GRTExceptions.c: Rebuild.
4334         * mc-boot/GRTExceptions.h: Rebuild.
4335         * mc-boot/GRTco.h: Rebuild.
4336         * mc-boot/GRTint.c: Rebuild.
4337         * mc-boot/GSArgs.c: Rebuild.
4338         * mc-boot/GSFIO.c: Rebuild.
4339         * mc-boot/GStdIO.c: Rebuild.
4340         * mc-boot/GStorage.c: Rebuild.
4341         * mc-boot/GStrCase.c: Rebuild.
4342         * mc-boot/GStrIO.c: Rebuild.
4343         * mc-boot/GStrLib.c: Rebuild.
4344         * mc-boot/GStringConvert.c: Rebuild.
4345         * mc-boot/GSysStorage.c: Rebuild.
4346         * mc-boot/GTimeString.c: Rebuild.
4347         * mc-boot/Galists.c: Rebuild.
4348         * mc-boot/Gdecl.c: Rebuild.
4349         * mc-boot/Gkeyc.c: Rebuild.
4350         * mc-boot/Glists.c: Rebuild.
4351         * mc-boot/GmcComment.c: Rebuild.
4352         * mc-boot/GmcComp.c: Rebuild.
4353         * mc-boot/GmcDebug.c: Rebuild.
4354         * mc-boot/GmcError.c: Rebuild.
4355         * mc-boot/GmcFileName.c: Rebuild.
4356         * mc-boot/GmcLexBuf.c: Rebuild.
4357         * mc-boot/GmcMetaError.c: Rebuild.
4358         * mc-boot/GmcOptions.c: Rebuild.
4359         * mc-boot/GmcPreprocess.c: Rebuild.
4360         * mc-boot/GmcPretty.c: Rebuild.
4361         * mc-boot/GmcPrintf.c: Rebuild.
4362         * mc-boot/GmcQuiet.c: Rebuild.
4363         * mc-boot/GmcReserved.c: Rebuild.
4364         * mc-boot/GmcSearch.c: Rebuild.
4365         * mc-boot/GmcStack.c: Rebuild.
4366         * mc-boot/GmcStream.c: Rebuild.
4367         * mc-boot/Gmcp1.c: Rebuild.
4368         * mc-boot/Gmcp2.c: Rebuild.
4369         * mc-boot/Gmcp3.c: Rebuild.
4370         * mc-boot/Gmcp4.c: Rebuild.
4371         * mc-boot/Gmcp5.c: Rebuild.
4372         * mc-boot/GnameKey.c: Rebuild.
4373         * mc-boot/GsymbolKey.c: Rebuild.
4374         * mc-boot/Gtop.c: Rebuild.
4375         * mc-boot/Gvarargs.c: Rebuild.
4376         * mc-boot/Gwlists.c: Rebuild.
4377         * mc-boot/GRTentity.h: New file.
4378         * mc/decl.mod (scaffoldStatic): Change _finish to _fini.
4379         * mc/mc.flex (_M2_mcflex_fini): New function.
4380         (_M2_mcflex_finish): Remove function.
4381         * tools-src/mklink.c (GenerateFinishCalls): Change
4382         _finish to _fini.
4383         (GeneratePrototypes): Change _finish to _fini.
4385 2023-01-31  Gaius Mulley  <gaiusmod2@gmail.com>
4387         * Make-lang.in (gm2-libs.texi-check): Rename
4388         m2/gm2-libs-pim to m2/gm2-libs-log.
4389         * gm2-libs-pim/BitBlockOps.def: Moved to...
4390         * gm2-libs-log/BitBlockOps.def: ...here.
4391         * gm2-libs-pim/BitBlockOps.mod: Moved to...
4392         * gm2-libs-log/BitBlockOps.mod: ...here.
4393         * gm2-libs-pim/BitByteOps.def: Moved to...
4394         * gm2-libs-log/BitByteOps.def: ...here.
4395         * gm2-libs-pim/BitByteOps.mod: Moved to...
4396         * gm2-libs-log/BitByteOps.mod: ...here.
4397         * gm2-libs-pim/BitWordOps.def: Moved to...
4398         * gm2-libs-log/BitWordOps.def: ...here.
4399         * gm2-libs-pim/BitWordOps.mod: Moved to...
4400         * gm2-libs-log/BitWordOps.mod: ...here.
4401         * gm2-libs-pim/BlockOps.def: Moved to...
4402         * gm2-libs-log/BlockOps.def: ...here.
4403         * gm2-libs-pim/BlockOps.mod: Moved to...
4404         * gm2-libs-log/BlockOps.mod: ...here.
4405         * gm2-libs-pim/Break.c: Moved to...
4406         * gm2-libs-log/Break.c: ...here.
4407         * gm2-libs-pim/Break.def: Moved to...
4408         * gm2-libs-log/Break.def: ...here.
4409         * gm2-libs-pim/CardinalIO.def: Moved to...
4410         * gm2-libs-log/CardinalIO.def: ...here.
4411         * gm2-libs-pim/CardinalIO.mod: Moved to...
4412         * gm2-libs-log/CardinalIO.mod: ...here.
4413         * gm2-libs-pim/Conversions.def: Moved to...
4414         * gm2-libs-log/Conversions.def: ...here.
4415         * gm2-libs-pim/Conversions.mod: Moved to...
4416         * gm2-libs-log/Conversions.mod: ...here.
4417         * gm2-libs-pim/DebugPMD.def: Moved to...
4418         * gm2-libs-log/DebugPMD.def: ...here.
4419         * gm2-libs-pim/DebugPMD.mod: Moved to...
4420         * gm2-libs-log/DebugPMD.mod: ...here.
4421         * gm2-libs-pim/DebugTrace.def: Moved to...
4422         * gm2-libs-log/DebugTrace.def: ...here.
4423         * gm2-libs-pim/DebugTrace.mod: Moved to...
4424         * gm2-libs-log/DebugTrace.mod: ...here.
4425         * gm2-libs-pim/Delay.def: Moved to...
4426         * gm2-libs-log/Delay.def: ...here.
4427         * gm2-libs-pim/Delay.mod: Moved to...
4428         * gm2-libs-log/Delay.mod: ...here.
4429         * gm2-libs-pim/Display.def: Moved to...
4430         * gm2-libs-log/Display.def: ...here.
4431         * gm2-libs-pim/Display.mod: Moved to...
4432         * gm2-libs-log/Display.mod: ...here.
4433         * gm2-libs-pim/ErrorCode.def: Moved to...
4434         * gm2-libs-log/ErrorCode.def: ...here.
4435         * gm2-libs-pim/ErrorCode.mod: Moved to...
4436         * gm2-libs-log/ErrorCode.mod: ...here.
4437         * gm2-libs-pim/FileSystem.def: Moved to...
4438         * gm2-libs-log/FileSystem.def: ...here.
4439         * gm2-libs-pim/FileSystem.mod: Moved to...
4440         * gm2-libs-log/FileSystem.mod: ...here.
4441         * gm2-libs-pim/FloatingUtilities.def: Moved to...
4442         * gm2-libs-log/FloatingUtilities.def: ...here.
4443         * gm2-libs-pim/FloatingUtilities.mod: Moved to...
4444         * gm2-libs-log/FloatingUtilities.mod: ...here.
4445         * gm2-libs-pim/InOut.def: Moved to...
4446         * gm2-libs-log/InOut.def: ...here.
4447         * gm2-libs-pim/InOut.mod: Moved to...
4448         * gm2-libs-log/InOut.mod: ...here.
4449         * gm2-libs-pim/Keyboard.def: Moved to...
4450         * gm2-libs-log/Keyboard.def: ...here.
4451         * gm2-libs-pim/Keyboard.mod: Moved to...
4452         * gm2-libs-log/Keyboard.mod: ...here.
4453         * gm2-libs-pim/LongIO.def: Moved to...
4454         * gm2-libs-log/LongIO.def: ...here.
4455         * gm2-libs-pim/LongIO.mod: Moved to...
4456         * gm2-libs-log/LongIO.mod: ...here.
4457         * gm2-libs-pim/NumberConversion.def: Moved to...
4458         * gm2-libs-log/NumberConversion.def: ...here.
4459         * gm2-libs-pim/NumberConversion.mod: Moved to...
4460         * gm2-libs-log/NumberConversion.mod: ...here.
4461         * gm2-libs-pim/README.texi: Moved to...
4462         * gm2-libs-log/README.texi: ...here.
4463         * gm2-libs-pim/Random.def: Moved to...
4464         * gm2-libs-log/Random.def: ...here.
4465         * gm2-libs-pim/Random.mod: Moved to...
4466         * gm2-libs-log/Random.mod: ...here.
4467         * gm2-libs-pim/RealConversions.def: Moved to...
4468         * gm2-libs-log/RealConversions.def: ...here.
4469         * gm2-libs-pim/RealConversions.mod: Moved to...
4470         * gm2-libs-log/RealConversions.mod: ...here.
4471         * gm2-libs-pim/RealInOut.def: Moved to...
4472         * gm2-libs-log/RealInOut.def: ...here.
4473         * gm2-libs-pim/RealInOut.mod: Moved to...
4474         * gm2-libs-log/RealInOut.mod: ...here.
4475         * gm2-libs-pim/Strings.def: Moved to...
4476         * gm2-libs-log/Strings.def: ...here.
4477         * gm2-libs-pim/Strings.mod: Moved to...
4478         * gm2-libs-log/Strings.mod: ...here.
4479         * gm2-libs-pim/Termbase.def: Moved to...
4480         * gm2-libs-log/Termbase.def: ...here.
4481         * gm2-libs-pim/Termbase.mod: Moved to...
4482         * gm2-libs-log/Termbase.mod: ...here.
4483         * gm2-libs-pim/Terminal.def: Moved to...
4484         * gm2-libs-log/Terminal.def: ...here.
4485         * gm2-libs-pim/Terminal.mod: Moved to...
4486         * gm2-libs-log/Terminal.mod: ...here.
4487         * gm2-libs-pim/TimeDate.def: Moved to...
4488         * gm2-libs-log/TimeDate.def: ...here.
4489         * gm2-libs-pim/TimeDate.mod: Moved to...
4490         * gm2-libs-log/TimeDate.mod: ...here.
4492 2023-01-28  Iain Sandoe  <iain@sandoe.co.uk>
4494         * lang.opt: Claim Wreturn-type.
4496 2023-01-27  Gaius Mulley  <gaiusmod2@gmail.com>
4498         * gm2-compiler/M2Comp.mod:  Import MetaString0.
4499         (ExamineCompilationUnit): New variable Message.
4500         Create and format error string.
4501         * gm2-compiler/M2LexBuf.mod: New variable SeenEof.
4502         (GetNonEofToken): New procedure.
4503         (Init): Set SeenEof to FALSE.
4504         (GetToken): Use GetNonEofToken instead of calls to
4505         m2flex.GetToken and GetToken.
4506         (AddTok): Detect eoftok and set SeenEof.
4508 2023-01-27  Gaius Mulley  <gaiusmod2@gmail.com>
4510         * gm2-compiler/M2Options.def: Export GetMQ, SetMQ.
4511         * gm2-compiler/M2Preprocess.mod: (MakeSaveTempsFileName):
4512         Test NewDir against NIL.  Test Dumpdir against NIL.
4513         Test GetMD () against NIL.  Test GetMMD () against NIL.
4514         Test GetMQ () against NIL.  Test GetObj () against NIL.
4515         Test tempfile against NIL.
4516         * gm2-compiler/P2SymBuild.def: Export
4517         BuildNoReturnAttribute.
4519 2023-01-27  Iain Sandoe  <iain@sandoe.co.uk>
4521         PR modula2/108555
4522         PR modula2/108182
4523         PR modula2/102343
4524         * gm2-lang.cc (gm2_langhook_option_lang_mask): Do not claim CL_C
4525         or CL_DRIVER.
4526         (gm2_langhook_init_options): Handle options that we want to pass
4527         to the preprocessor.
4528         * lang-specs.h: Pass -B and -save-temps to regular compile lines.
4529         * lang.opt: Add C and Driver options that Modula-2 intercepts for
4530         internal use. Reorder options into two sections and to collate.
4532 2023-01-26  Gaius Mulley  <gaiusmod2@gmail.com>
4534         * gm2-compiler/M2GCCDeclare.mod: Import IsProcedureNoReturn.
4535         (DeclareProcedureToGccWholeProgram): New variable declared and set
4536         returnType.  Pass returnType to BuildEndFunctionDeclaration.
4537         Extra parameter IsProcedureNoReturn passed to
4538         BuildEndFunctionDeclaration.
4539         * gm2-compiler/M2Quads.mod (BuildM2MainFunction): Correct
4540         scaffold comment and add extra return 0.
4541         * gm2-compiler/P2Build.bnf: Import BuildNoReturnAttribute.
4542         (ProcedureHeading): Process EndBuildFormalParameters before
4543         parsing AttributeNoReturn.
4544         (DefProcedureHeading): Process EndBuildFormalParameters before
4545         parsing AttributeNoReturn.
4546         (AttributeNoReturn): Call BuildNoReturnAttribute.
4547         * gm2-compiler/P2SymBuild.def (BuildNoReturnAttribute): New
4548         procedure.
4549         * gm2-compiler/P2SymBuild.mod (BuildNoReturnAttribute): New
4550         procedure.
4551         * gm2-compiler/SymbolTable.def (PutProcedureInline): Corrected
4552         comment.
4553         (PutProcedureNoReturn): New procedure.
4554         (IsProcedureNoReturn): New procedure function.
4555         * gm2-compiler/SymbolTable.mod (SymProcedure): IsNoReturn
4556         new field.
4557         (MakeProcedure): Initialize IsNoReturn to FALSE.
4558         (PutProcedureNoReturn): New procedure.
4559         (IsProcedureNoReturn): New procedure function.
4560         * gm2-gcc/m2decl.cc (m2decl_BuildEndFunctionDeclaration):
4561         Add extra parameter isnoreturn.  Set TREE_THIS_VOLATILE
4562         to isnoreturn.
4563         * gm2-gcc/m2decl.def (BuildEndFunctionDeclaration): Add
4564         extra parameter isnoreturn.
4565         * gm2-gcc/m2decl.h (m2decl_BuildEndFunctionDeclaration): Add
4566         extra parameter isnoreturn.
4567         * gm2-gcc/m2except.cc (m2except_InitExceptions): Change all
4568         function decl to pass an extra parameter isnoreturn.
4570 2023-01-26  Gaius Mulley  <gaiusmod2@gmail.com>
4572         * m2.flex (splitSlashStar): Fix comment so that /* does not
4573         appear inside the comment.
4575 2023-01-26  Iain Sandoe  <iain@sandoe.co.uk>
4577         PR modula2/108553
4578         * gm2-lang.cc (gm2_langhook_init_options): Remove debug code.
4580 2023-01-26  Gaius Mulley  <gaiusmod2@gmail.com>
4582         * Make-lang.in (m2/gm2config.h): Rewrite rule to be
4583         dependent upon m2/gm2config.aci.
4584         (m2/gm2config.aci): Newrule.
4585         * configure.ac (AC_CONFIG_HEADERS): Change destination
4586         to gm2config.aci.
4587         * configure: Regenerate.
4588         * gm2-libs/config-host: Regenerate.
4589         * gm2-compiler/M2GCCDeclare.mod (AddSymToWatch): Comment
4590         out.
4591         * gm2-compiler/M2Quads.mod (BuildConstHighFromSym): Remove
4592         Dim.
4593         (StartBuildWith): Call BuildStmtNoteTok.
4594         (BuildStmtNoteTok): New procedure.
4595         (BuildStmtNote): Re-implement re-factor into two
4596         procedures and call BuildStmtNoteTok.
4597         * gm2config.h.in: Remove.
4598         * gm2config.aci.in: New file.
4600 2023-01-25  Iain Sandoe  <iain@sandoe.co.uk>
4602         PR modula2/102343
4603         PR modula2/108182
4604         * gm2-compiler/M2Comp.mod: Early exit for pre-processor-only jobs.
4605         * gm2-compiler/M2Options.def (SetPPOnly, GetPPOnly, SetMD, GetMD,
4606         SetMMD, GetMMD, SetMQ, GetMQ, SetObj, GetObj, SetDumpDir,
4607         GetDumpDir):New.
4608         * gm2-compiler/M2Options.mod:(SetPPOnly, GetPPOnly, SetMD, GetMD,
4609         SetMMD, GetMMD, SetMQ, GetMQ, SetObj, GetObj, SetDumpDir,
4610         GetDumpDir):New.
4611         * gm2-compiler/M2Preprocess.def (PreprocessModule): Add flag to
4612         indicate the main file.
4613         * gm2-compiler/M2Preprocess.mod: Handle Preprocess-only jobs,
4614         handle MD, MMD and MQ options.
4615         * gm2-gcc/m2options.h (M2Options_SetPPOnly, M2Options_GetPPOnly,
4616         M2Options_SetDumpDir, M2Options_SetMD, M2Options_GetMD,
4617         M2Options_SetMMD, M2Options_GetMMD, M2Options_SetMQ, M2Options_GetMQ,
4618         M2Options_SetObj, M2Options_GetObj): New.
4619         * gm2-gcc/m2type.cc (m2type_InitBaseTypes): Early exit for pre-
4620         processor-only jobs.
4621         * gm2-lang.cc (gm2_langhook_init): Handle preprocess-only commands.
4622         (gm2_langhook_option_lang_mask): Claim C and Driver options so that
4623         we can intercept them for building pre-processor commands.
4624         (gm2_langhook_init_options): Collect the preprocessor line here.
4625         Save options that have different actions for preprocessor and compile
4626         commands.
4627         (gm2_langhook_handle_option): Only handle the modula-2 options here.
4628         (gm2_langhook_post_options): Do not create a back-end for pre-
4629         processor-only jobs.
4630         * gm2spec.cc (lang_specific_driver): Ignore PCH options, append a
4631         scaffold-main for cases where we are building a main module with
4632         -c.
4633         * lang-specs.h: Revise to handle preprocessor-only jobs and to
4634         consume pre-processed files.
4635         * lang.opt: Remove Driver and C options copies (we claim these
4636         separately).
4638 2023-01-24  Co-Authored by: Iain Sandoe  <iain@sandoe.co.uk>
4640         * Make-lang.in (GM2-COMP-BOOT-DEFS): Add
4641         DynamicStringPath.def.
4642         (GM2-COMP-BOOT-MODS): Add DynamicStringPath.mod.
4643         (GM2-COMP-DEFS): Add DynamicStringPath.def.
4644         (GM2-COMP-MODS): Add DynamicStringPath.mod.
4645         ($(objdir)/m2/gm2-libs-min/SYSTEM.def): Split path into
4646         multiple -I components.
4647         ($(objdir)/m2/gm2-libs/SYSTEM.def): Ditto.
4648         ($(objdir)/m2/gm2-libs-coroutines/SYSTEM.def): Ditto.
4649         * gm2-compiler/M2Options.mod: Import DynamicStringPath.
4650         (SetSearchPath): Reimplement using DynamicStringPath
4651         procedures.
4652         * gm2-compiler/M2Search.def (InitSearchPath): Remove.
4653         (PrependSearchPath): Remove.
4654         * gm2-compiler/M2Search.mod (SFIO): Remove import.
4655         (DynamicStringPath): Add import.
4656         (Directory): Remove.
4657         (UserPath): Remove.
4658         (InitialPath): Remove.
4659         (InitSearchPath): Remove.
4660         (PrependSearchPath): Remove.
4661         (FindSourceFile): Re-implement.
4662         (FindSourceDefFile): Re-implement.
4663         (FindSourceModFile): Re-implement.
4664         * gm2-gcc/init.cc (_M2_DynamicStringPath_init):
4665         New prototype.
4666         (init_FrontEndInit): Call _M2_DynamicStringPath_init.
4667         * tools-src/makeSystem: Allow multiple -I paths.
4668         * gm2-compiler/DynamicStringPath.def: New file.
4669         * gm2-compiler/DynamicStringPath.mod: New file.
4670         * gm2-gcc/m2options.h (M2Options_SetMakeIncludePath): Add
4671         prototype.
4673 2023-01-24  Gaius Mulley  <gaiusmod2@gmail.com>
4675         * m2.flex (cpreprocessor): Add temporary variable
4676         which is initialized to 0.
4677         (commentCLevel): New variable.
4678         (endOfCComment): New function.
4679         (splitSlashStar): New function to split /* into / and *
4680         tokens.
4681         (COMMENTC): New flex state.
4682         ("/*"): New rule to test whether we should treat /*
4683         as a single token or as two tokens.
4684         (<COMMENTC>.): New rule to skip a character.
4685         (<COMMENTC>\n.*): New rule to consume the line.
4686         (<COMMENTC>"*/"): New rule to call endOfCComment.
4688 2023-01-24  Gaius Mulley  <gaiusmod2@gmail.com>
4690         * gm2-libs-iso/RTco.def: Import RTentity.
4691         Declare RTco as a definition for C module.
4693 2023-01-23  Iain Sandoe  <iain@sandoe.co.uk>
4695         PR modula2/108182
4696         PR modula2/108480
4697         * Make-lang.in: Pass libsubdir to the language init
4698         build.
4699         * gm2-lang.cc (INCLUDE_VECTOR): Define.
4700         (add_one_import_path): New.
4701         (add_m2_import_paths): New.
4702         (gm2_langhook_post_options): Arrange to add the include
4703         paths (and add the system ones) in the same order as C
4704         uses.
4705         * gm2spec.cc (build_archive_path): Remove.
4706         (add_default_combination): Remove.
4707         (add_default_archives): Remove.
4708         (add_default_libs): We no longer need a '-L' option, just
4709         emit the -l and each library in use.
4710         (build_include_path): Remove.
4711         (add_include): Remove.
4712         (add_default_includes): Remove.
4713         (library_installed): Remove.
4714         (check_valid_library): Remove.
4715         (check_valid_list): Remove.
4716         (convert_abbreviation): Diagnose unhandled cases.
4717         (lang_specific_driver): Skip options where we will add back
4718         a validated version.
4719         * lang-specs.h (M2CPP): Reformat, append %I when -fcpp is not
4720         in use.  Revise the cc1gm2 spec to omit mentioning options that
4721         are handled in the c pre-processor line.
4722         * lang.opt: Allow preprocessing and path options as input to the
4723         cc1gm2 invocation, so that they can be passed to the preprocessor
4724         invocation.
4726 2023-01-23  Iain Sandoe  <iain@sandoe.co.uk>
4728         PR modula2/108405
4729         * gm2-libs-iso/Preemptive.mod (initPreemptive): Use a value for
4730         extra space that is divisible by common OS pagesizes.
4732 2023-01-20  Gaius Mulley  <gaiusmod2@gmail.com>
4734         * gm2-libs/Args.mod (GetArg): Check index before
4735         accessing array.
4736         * gm2-libs/M2Dependent.mod (toCString): Check index
4737         before accessing array.
4738         * mc-boot/GArgs.c: Rebuilt.
4739         * mc-boot/GM2Dependent.c: Rebuilt.
4740         * mc-boot/Gkeyc.c: Rebuilt.
4741         * mc/keyc.mod (seenUIntMin): Initialize once.
4742         (seenUIntMax): Initialize once.
4743         (checkLimits): Only test seenUIntMin and seenUIntMax
4744         once.
4745         * pge-boot/GArgs.c:  Rebuilt.
4746         * pge-boot/GM2Dependent.c: Rebuilt.
4748 2023-01-20  Gaius Mulley  <gaiusmod2@gmail.com>
4750         * gm2-gcc/m2statement.cc (gm2_gimplify_function_node):
4751         Remove.
4752         * gm2-libs/DynamicStrings.mod (Equal): Remove dead code.
4753         * m2.flex (<COMMENT>"<*"): Add {} for else statement.
4754         * m2pp.cc (hextree): Add conditional #ifdef DEBUGGING.
4755         * mc-boot/GDynamicStrings.c: Rebuild.
4756         * pge-boot/GDynamicStrings.c: Rebuild.
4757         * pge-boot/GFIO.c: Rebuild.
4758         * pge-boot/GIndexing.c: Rebuild.
4759         * pge-boot/GM2EXCEPTION.c: Rebuild.
4760         * pge-boot/GM2RTS.c: Rebuild.
4761         * pge-boot/GNameKey.c: Rebuild.
4762         * pge-boot/GPushBackInput.c: Rebuild.
4763         * pge-boot/GRTExceptions.c: Rebuild.
4764         * pge-boot/GStdIO.c: Rebuild.
4765         * pge-boot/GSymbolKey.c: Rebuild.
4766         * pge-boot/GSysStorage.c: Rebuild.
4768 2023-01-17  Gaius Mulley  <gaiusmod2@gmail.com>
4770         * mc-boot/GM2RTS.c: Rebuilt.
4771         * mc-boot/GM2RTS.h: Rebuilt.
4772         * mc-boot/Gdecl.c: Rebuilt.
4773         * mc-boot/GmcOptions.c: Rebuilt.
4774         * mc/mcOptions.mod (displayVersion):
4775         Split first printf into three components
4777 2023-01-17  Gaius Mulley  <gaiusmod2@gmail.com>
4779         * gm2-libs-iso/M2RTS.def (Halt): Parameter file renamed to filename.
4780         (HaltC): New procedure declaration.
4781         (ErrorMessage): Parameter file renamed to filename.
4782         * gm2-libs-iso/M2RTS.mod (Halt): Parameter file renamed to
4783         filename.
4784         (HaltC): New procedure implementation.
4785         (ErrorStringC): New procedure implementation.
4786         (ErrorMessageC): New procedure implementation.
4787         * gm2-libs/M2RTS.def (Halt): Parameter file renamed to filename.
4788         (HaltC): New procedure declaration.
4789         (ErrorMessage): Parameter file renamed to filename.
4790         * gm2-libs/M2RTS.mod (Halt): Parameter file renamed to filename.
4791         (HaltC): New procedure implementation.
4792         (ErrorStringC): New procedure implementation.
4793         (ErrorMessageC): New procedure implementation.
4795 2023-01-16  Gaius Mulley  <gaiusmod2@gmail.com>
4797         * mc-boot-ch/Glibc.c (libc_time): New function.
4798         (libc_localtime): New function.
4799         * mc-boot/GDynamicStrings.c: Regenerate.
4800         * mc-boot/GFIO.c: Regenerate.
4801         * mc-boot/GFormatStrings.c: Regenerate.
4802         * mc-boot/GIndexing.c: Regenerate.
4803         * mc-boot/GM2Dependent.c: Regenerate.
4804         * mc-boot/GM2EXCEPTION.c: Regenerate.
4805         * mc-boot/GPushBackInput.c: Regenerate.
4806         * mc-boot/GRTExceptions.c: Regenerate.
4807         * mc-boot/GRTint.c: Regenerate.
4808         * mc-boot/GStdIO.c: Regenerate.
4809         * mc-boot/GStringConvert.c: Regenerate.
4810         * mc-boot/GSysStorage.c: Regenerate.
4811         * mc-boot/Gdecl.c: Regenerate.
4812         * mc-boot/GmcComment.c: Regenerate.
4813         * mc-boot/GmcComp.c: Regenerate.
4814         * mc-boot/GmcDebug.c: Regenerate.
4815         * mc-boot/GmcMetaError.c: Regenerate.
4816         * mc-boot/GmcOptions.c: Regenerate.
4817         * mc-boot/GmcStack.c: Regenerate.
4818         * mc-boot/GnameKey.c: Regenerate.
4819         * mc-boot/GsymbolKey.c: Regenerate.
4820         * mc-boot/Gkeyc.c: Regenerate.
4821         * mc/decl.mod (putFieldRecord): Change NulName to NulKey
4822         and fix type comparision.
4823         * mc/mcOptions.mod (YEAR): Remove.
4824         (getYear): New procedure function.
4825         (displayVersion): Use result from getYear instead of YEAR.
4826         Emit boilerplate for GPL v3.
4827         (gplBody): Use result from getYear instead of YEAR.
4828         (glplBody): Use result from getYear instead of YEAR.
4830 2023-01-16  Gaius Mulley  <gaiusmod2@gmail.com>
4832         * gm2-compiler/M2Quads.mod (AssignUnboundedVar): Check Type
4833         against NulSym and call MetaErrorT1 if necessary.
4834         (AssignUnboundedNonVar): Check Type against NulSym and
4835         call MetaErrorT1 if necessary.
4836         (BuildDesignatorPointer): Check Type1 against NulSym and
4837         call MetaErrorT1 if necessary.
4839 2023-01-16  Gaius Mulley  <gaiusmod2@gmail.com>
4841         * mc/mcOptions.mod (displayVersion): Change GPLv2 to GPLv3.
4842         (YEAR) set to 2023.
4844 2023-01-15  Gaius Mulley  <gaiusmod2@gmail.com>
4846         * gm2-compiler/M2LexBuf.mod (isSrcToken): Add block comment.
4847         Remove dead code.
4848         * gm2-compiler/M2Quads.def (BuildNot): Add notTokPos parameter.
4849         * gm2-compiler/M2Quads.mod (BuildNot): Add notTokPos parameter.
4850         Create and push virtual token.
4851         (PopBooltok): New procedure.
4852         (PushBooltok): New procedure.
4853         (PushBool): Re-implement using PushBooltok.
4854         (PopBool): Re-implement using PopBooltok.
4855         * gm2-compiler/P3Build.bnf (ConstFactor): Record token
4856         position of NOT.
4857         (Factor): Record token position of NOT.
4858         * gm2-compiler/PHBuild.bnf (ConstFactor): Record token
4859         position of NOT.
4860         (Relation): Push token position.
4861         (UnaryOrConstTerm): Push token position.
4862         (AddOperator): Push token position.
4863         (MulOperator): Push token position.
4865 2023-01-13  Iain Sandoe  <iain@sandoe.co.uk>
4867         * gm2-gcc/m2options.h (M2Options_SetVerbose): Export the
4868         function.
4869         * gm2-lang.cc: Handle OPT_v, passing it to the compiler.
4870         * lang-specs.h: Pass -v to cc1gm2.
4872 2023-01-13  Gaius Mulley  <gaiusmod2@gmail.com>
4874         * mc-boot-ch/GRTco.c (RTco_select): Add return 0.
4875         * pge-boot/GRTco.c (RTco_select): Add return 0.
4877 2023-01-10  Gaius Mulley  <gaiusmod2@gmail.com>
4879         * Make-lang.in (m2/mc-boot/$(SRC_PREFIX)%.o): Add
4880         m2/gm2-libs/gm2-libs-host.h dependency.
4881         (m2/mc-boot-ch/$(SRC_PREFIX)%.o): Add
4882         m2/gm2-libs/gm2-libs-host.h dependency.
4884 2023-01-10  Gaius Mulley  <gaiusmod2@gmail.com>
4886         * Make-lang.in (GM2_1): Change -B path to m2/stage1.
4887         ($(objdir)/m2/images/gnu.eps): Check and create dest dir
4888         if necessary.
4889         (gm2-libs.texi-check): Check and create dir m2/gm2-libs-pim,
4890         m2/gm2-libs-iso and m2/gm2-libs if necessary.
4891         ($(objdir)/m2/gm2-compiler-boot): Remove.
4892         ($(objdir)/m2/gm2-libs-boot): Remove.
4893         ($(objdir)/m2/gm2-libs-libiberty): Remove.
4894         ($(objdir)/m2/gm2-libiberty): Remove.
4895         ($(objdir)/m2/gm2-gcc): Remove.
4896         ($(objdir)/m2/gm2-compiler): Remove.
4897         ($(objdir)/m2/gm2-libs): Remove.
4898         ($(objdir)/m2/gm2-libs-iso): Remove.
4899         ($(objdir)/m2/gm2-libs-min): Remove.
4900         ($(objdir)/m2/gm2-compiler-paranoid): Remove.
4901         ($(objdir)/m2/gm2-libs-paranoid): Remove.
4902         ($(objdir)/m2/gm2-compiler-verify): Remove.
4903         ($(objdir)/m2/boot-bin): Remove.
4904         ($(objdir)/m2/gm2-libs-pim): Remove.
4905         ($(objdir)/m2/gm2-libs-coroutines): Remove.
4906         (stage1/m2): Remove.
4907         (stage2/m2): Remove.
4908         (stage3/m2): Remove.
4909         (m2.stageprofile): New rule.
4910         (m2.stagefeedback): New rule.
4911         (cc1gm2$(exeext)): Change dependent name.
4912         (m2/stage2/cc1gm2$(exeext)): Change dependent name.
4913         Check and create dest dir.
4914         (m2/stage1/cc1gm2$(exeext)): Check and create dest dir
4915         if necessary.
4916         (m2/gm2-gcc/%.o): Ditto.
4917         (m2/gm2-gcc/rtegraph.o): Ditto.
4918         (m2/gm2-gcc/$(SRC_PREFIX)%.h): Ditto.
4919         (m2/gm2-gcc/$(SRC_PREFIX)%.h): Ditto.
4920         (m2/mc-boot): Ditto.
4921         (m2/mc-boot-ch): Ditto.
4922         (m2/gm2-libs-boot): Ditto.
4923         (m2/gm2-compiler-boot): Ditto.
4924         (m2/gm2-compiler): Ditto.
4925         (m2/gm2-libiberty): Ditto.
4926         (m2/gm2-compiler): Ditto.
4927         (m2/gm2-libs-iso): Ditto.
4928         (m2/gm2-libs): Ditto.
4929         (m2/gm2-libs-min): Ditto.
4930         (m2/gm2-libs-coroutines): Ditto.
4931         (m2/boot-bin): Ditto.
4932         (m2/pge-boot): Ditto.
4933         (m2/pge-boot): Ditto.
4934         * Make-maintainer.in (m2/gm2-ppg-boot): Check and create
4935         dest dir if necessary.
4936         (m2): Ditto.
4937         (m2/gm2-ppg-boot): Ditto.
4938         (m2/gm2-pg-boot): Ditto.
4939         (m2/gm2-auto): Ditto.
4940         (m2/gm2-pg-boot): Ditto.
4941         (m2/gm2-pge-boot): Ditto.
4942         ($(objdir)/plugin): Ditto.
4943         ($(objdir)/m2/mc-boot-ch): Ditto.
4944         ($(objdir)/m2/mc-boot-gen): Ditto.
4945         (m2/boot-bin): Ditto.
4946         (m2/mc): Ditto.
4947         (m2/mc-obj): Ditto.
4948         ($(objdir)/m2/gm2-ppg-boot): Ditto.
4949         ($(objdir)/m2/gm2-pg-boot): Ditto.
4950         ($(objdir)/m2/gm2-pge-boot): Ditto.
4951         (m2/mc-boot-gen): Ditto.
4952         (m2/m2obj3): Ditto.
4953         (m2/gm2-libs-paranoid): Ditto.
4954         (m2/gm2-compiler-paranoid): Ditto.
4955         (m2/gm2-libs-paranoid): Ditto.
4956         (m2/gm2-compiler-paranoid): Ditto.
4957         (m2/gm2-libs-paranoid): Ditto.
4958         (m2/gm2-compiler-paranoid): Ditto.
4959         * config-lang.in (m2/gm2-compiler-boot): Remove mkdir.
4960         (m2/gm2-libs-boot): Ditto.
4961         (m2/gm2-ici-boot): Ditto.
4962         (m2/gm2-libiberty): Ditto.
4963         (m2/gm2-gcc): Ditto.
4964         (m2/gm2-compiler): Ditto.
4965         (m2/gm2-libs): Ditto.
4966         (m2/gm2-libs-iso): Ditto.
4967         (m2/gm2-compiler-paranoid): Ditto.
4968         (m2/gm2-libs-paranoid): Ditto.
4969         (m2/gm2-compiler-verify): Ditto.
4970         (m2/boot-bin): Ditto.
4971         (m2/gm2-libs-pim): Ditto.
4972         (m2/gm2-libs-coroutines): Ditto.
4973         (m2/gm2-libs-min): Ditto.
4974         (m2/pge-boot): Ditto.
4975         (plugin): Ditto.
4976         (stage1/m2): Ditto.
4977         (stage2/m2): Ditto.
4978         (stage3/m2): Ditto.
4979         (stage4/m2): Ditto.
4980         (m2/gm2-auto): Ditto.
4981         (m2/gm2-pg-boot): Ditto.
4982         (m2/gm2-pge-boot): Ditto.
4983         (m2/gm2-ppg-boot): Ditto.
4984         (m2/mc-boot): Ditto.
4985         (m2/mc-boot-ch): Ditto.
4986         (m2/mc-boot-gen): Ditto.
4988 2023-01-09  Gaius Mulley  <gaiusmod2@gmail.com>
4990         * Make-lang.in (m2/pge-boot/%.o): Add m2/gm2config.h.
4991         * gm2-libs/config-host: Regenerate.
4993 2023-01-07  Iain Sandoe  <iain@sandoe.co.uk>
4995         * gm2-libs-min/libc.c (abort): Update declaration to match the
4996         expected form, add no-return attribute.
4997         (exit): Add no-return attribute.
4999 2023-01-05  Iain Sandoe  <iain@sandoe.co.uk>
5001         PR modula2/107631
5002         * gm2-gcc/m2builtins.cc: Remove scalb, scalbf, scalbl,
5003         significand, significandf, significandl.
5004         * gm2-libs/Builtins.def (significand): Likewise.
5005         * gm2-libs/Builtins.mod: Likewise.
5006         * target-independent/Builtins.texi: Likewise.
5007         * gm2-libs-iso/LowLong.mod: Implement fraction with scalbn*() and
5008         ilogb*().
5009         * gm2-libs-iso/LowReal.mod: Likewise.
5010         * gm2-libs-iso/LowShort.mod: Likewise.
5012 2023-01-05  Gaius Mulley  <gaiusmod2@gmail.com>
5014         * gm2-libs-min/M2RTS.def (ConstructModules): New procedure
5015         declaration.
5016         (DeconstructModules): New procedure declaration.
5017         * gm2-libs-min/M2RTS.mod (ConstructModules): New procedure
5018         dummy implementation.
5019         (DeconstructModules): New procedure dummy implementation.
5021 2023-01-05  Iain Sandoe  <iain@sandoe.co.uk>
5023         * gm2spec.cc (lang_specific_driver): Handle static-libgm2.
5024         * lang.opt: Add static-libgm2.
5026 2023-01-05  Iain Sandoe  <iain@sandoe.co.uk>
5028         * gm2spec.cc (lang_specific_driver): Pass -static-libstdc++ on to
5029         the target driver if the linker does not support Bstatic/dynamic.
5031 2023-01-04  Iain Sandoe  <iain@sandoe.co.uk>
5033         PR modula2/108183
5034         * gm2-libs-ch/UnixArgs.cc (_M2_UnixArgs_ctor): Rework to use
5035         an extern "C" function with 'constructor' attribute.
5036         * gm2-libs-ch/dtoa.cc (_M2_dtoa_ctor): Likewise.
5037         * gm2-libs-ch/ldtoa.cc (_M2_ldtoa_ctor): Likewise.
5039 2023-01-04  Iain Sandoe  <iain@sandoe.co.uk>
5041         PR modula2/108259
5042         * gm2-gcc/m2decl.cc (m2decl_DeclareModuleCtor): Make module
5043         registration constructors visible.
5045 2023-01-04  Iain Sandoe  <iain@sandoe.co.uk>
5047         * Make-lang.in (dvi, ps, pdf): Build in the gcc/doc directory, also
5048         use the configured tools for texi -> dvi and texi -> pdf.
5050 2023-01-01  Iain Sandoe  <iain@sandoe.co.uk>
5051             Gaius Mulley  <gaiusmod2@gmail.com>
5053         PR modula2/108183
5054         * gm2-compiler/M2GCCDeclare.mod: Module registration constructors are
5055         externs to the builder of m2_link.
5057 2022-12-31  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
5058             Iain Sandoe  <iain@sandoe.co.uk>
5060         PR modula2/107612
5061         * Make-lang.in (soext): Use .dylib for Darwin.
5062         (PLUGINLDFLAGS): Use dynmic lookup, set the plugin name, and append
5063         -nodefaultlibs to suppress the linking of libstdc++.
5064         Use INCINTL in compile lines for the plugin.
5066 2022-12-21  Jakub Jelinek  <jakub@redhat.com>
5068         PR modula2/108153
5069         * gm2-gcc/m2linemap.def (location_t): Use CARDINAL instead of INTEGER.
5071 2022-12-19  Jakub Jelinek  <jakub@redhat.com>
5073         * gm2-gcc/m2linemap.cc (m2linemap_ErrorAt, m2linemap_ErrorAtf,
5074         m2linemap_WarningAtf, m2linemap_NoteAtf, m2linemap_internal_error):
5075         Call functions with "%s", message rather than just message, so that
5076         % chars in message aren't treated as format specifiers.
5078 2022-12-19  Jakub Jelinek  <jakub@redhat.com>
5080         PR modula2/108147
5081         * gm2-gcc/m2linemap.def (ErrorAtf, WarningAtf, NoteAtf):
5082         Comment out prototypes with varargs.
5083         * gm2-gcc/m2linemap.h (m2linemap_ErrorAtf, m2linemap_WarningAtf,
5084         m2linemap_NoteAtf): No longer varargs.
5085         * gm2-gcc/m2linemap.cc (m2linemap_ErrorAtf): Turned into a
5086         non-varargs wrapper around ...
5087         (m2linemap_ErrorAtf_1): ... this.  New static function.
5088         (m2linemap_WarningAtf): Turned into a non-varargs wrapper around ...
5089         (m2linemap_WarningAtf_1): ... this.  New static function.
5090         (m2linemap_NoteAtf): Turned into a non-varargs wrapper around ...
5091         (m2linemap_NoteAtf_1): ... this.  New static function.
5093 2022-12-15  Gaius Mulley  <gaiusmod2@gmail.com>
5095         * configure.ac: Stop probing for realpath.
5096         * tools-src/calcpath: Break dependency on realpath, cut
5097         and echo.
5098         * configure: Rebuilt.
5100 2022-12-15  Gaius Mulley  <gaiusmod2@gmail.com>
5102         * gm2config.h.in: Rebuilt.
5104 2022-12-14  Gaius Mulley  <gaiusmod2@gmail.com>
5106         * COPYING.FDL: New file.
5107         * COPYING.RUNTIME: New file.
5108         * COPYING3: New file.
5109         * COPYING3.LIB: New file.
5110         * Make-lang.in: New file.
5111         * Make-maintainer.in: New file.
5112         * NEWS: New file.
5113         * README: New file.
5114         * config-lang.in: New file.
5115         * config-make.in: New file.
5116         * configure.ac: New file.
5117         * gm2-compiler/CLexBuf.def: New file.
5118         * gm2-compiler/CLexBuf.mod: New file.
5119         * gm2-compiler/FifoQueue.def: New file.
5120         * gm2-compiler/FifoQueue.mod: New file.
5121         * gm2-compiler/Lists.def: New file.
5122         * gm2-compiler/Lists.mod: New file.
5123         * gm2-compiler/M2ALU.def: New file.
5124         * gm2-compiler/M2ALU.mod: New file.
5125         * gm2-compiler/M2AsmUtil.def: New file.
5126         * gm2-compiler/M2AsmUtil.mod: New file.
5127         * gm2-compiler/M2Base.def: New file.
5128         * gm2-compiler/M2Base.mod: New file.
5129         * gm2-compiler/M2BasicBlock.def: New file.
5130         * gm2-compiler/M2BasicBlock.mod: New file.
5131         * gm2-compiler/M2Batch.def: New file.
5132         * gm2-compiler/M2Batch.mod: New file.
5133         * gm2-compiler/M2Bitset.def: New file.
5134         * gm2-compiler/M2Bitset.mod: New file.
5135         * gm2-compiler/M2CaseList.def: New file.
5136         * gm2-compiler/M2CaseList.mod: New file.
5137         * gm2-compiler/M2Check.def: New file.
5138         * gm2-compiler/M2Check.mod: New file.
5139         * gm2-compiler/M2Code.def: New file.
5140         * gm2-compiler/M2Code.mod: New file.
5141         * gm2-compiler/M2ColorString.def: New file.
5142         * gm2-compiler/M2ColorString.mod: New file.
5143         * gm2-compiler/M2Comp.def: New file.
5144         * gm2-compiler/M2Comp.mod: New file.
5145         * gm2-compiler/M2Const.def: New file.
5146         * gm2-compiler/M2Const.mod: New file.
5147         * gm2-compiler/M2Debug.def: New file.
5148         * gm2-compiler/M2Debug.mod: New file.
5149         * gm2-compiler/M2DebugStack.def: New file.
5150         * gm2-compiler/M2DebugStack.mod: New file.
5151         * gm2-compiler/M2Defaults.def: New file.
5152         * gm2-compiler/M2Defaults.mod: New file.
5153         * gm2-compiler/M2DriverOptions.def: New file.
5154         * gm2-compiler/M2DriverOptions.mod: New file.
5155         * gm2-compiler/M2Emit.def: New file.
5156         * gm2-compiler/M2Emit.mod: New file.
5157         * gm2-compiler/M2Error.def: New file.
5158         * gm2-compiler/M2Error.mod: New file.
5159         * gm2-compiler/M2EvalSym.def: New file.
5160         * gm2-compiler/M2FileName.def: New file.
5161         * gm2-compiler/M2FileName.mod: New file.
5162         * gm2-compiler/M2GCCDeclare.def: New file.
5163         * gm2-compiler/M2GCCDeclare.mod: New file.
5164         * gm2-compiler/M2GenGCC.def: New file.
5165         * gm2-compiler/M2GenGCC.mod: New file.
5166         * gm2-compiler/M2Graph.def: New file.
5167         * gm2-compiler/M2Graph.mod: New file.
5168         * gm2-compiler/M2Lex.def: New file.
5169         * gm2-compiler/M2Lex.mod: New file.
5170         * gm2-compiler/M2LexBuf.def: New file.
5171         * gm2-compiler/M2LexBuf.mod: New file.
5172         * gm2-compiler/M2MetaError.def: New file.
5173         * gm2-compiler/M2MetaError.mod: New file.
5174         * gm2-compiler/M2Optimize.def: New file.
5175         * gm2-compiler/M2Optimize.mod: New file.
5176         * gm2-compiler/M2Options.def: New file.
5177         * gm2-compiler/M2Options.mod: New file.
5178         * gm2-compiler/M2Pass.def: New file.
5179         * gm2-compiler/M2Pass.mod: New file.
5180         * gm2-compiler/M2Preprocess.def: New file.
5181         * gm2-compiler/M2Preprocess.mod: New file.
5182         * gm2-compiler/M2Printf.def: New file.
5183         * gm2-compiler/M2Printf.mod: New file.
5184         * gm2-compiler/M2Quads.def: New file.
5185         * gm2-compiler/M2Quads.mod: New file.
5186         * gm2-compiler/M2Quiet.def: New file.
5187         * gm2-compiler/M2Quiet.mod: New file.
5188         * gm2-compiler/M2Range.def: New file.
5189         * gm2-compiler/M2Range.mod: New file.
5190         * gm2-compiler/M2Reserved.def: New file.
5191         * gm2-compiler/M2Reserved.mod: New file.
5192         * gm2-compiler/M2SSA.def: New file.
5193         * gm2-compiler/M2SSA.mod: New file.
5194         * gm2-compiler/M2Scaffold.def: New file.
5195         * gm2-compiler/M2Scaffold.mod: New file.
5196         * gm2-compiler/M2Scope.def: New file.
5197         * gm2-compiler/M2Scope.mod: New file.
5198         * gm2-compiler/M2Search.def: New file.
5199         * gm2-compiler/M2Search.mod: New file.
5200         * gm2-compiler/M2Size.def: New file.
5201         * gm2-compiler/M2Size.mod: New file.
5202         * gm2-compiler/M2StackAddress.def: New file.
5203         * gm2-compiler/M2StackAddress.mod: New file.
5204         * gm2-compiler/M2StackWord.def: New file.
5205         * gm2-compiler/M2StackWord.mod: New file.
5206         * gm2-compiler/M2Students.def: New file.
5207         * gm2-compiler/M2Students.mod: New file.
5208         * gm2-compiler/M2Swig.def: New file.
5209         * gm2-compiler/M2Swig.mod: New file.
5210         * gm2-compiler/M2System.def: New file.
5211         * gm2-compiler/M2System.mod: New file.
5212         * gm2-compiler/M2Version.def: New file.
5213         * gm2-compiler/NameKey.def: New file.
5214         * gm2-compiler/NameKey.mod: New file.
5215         * gm2-compiler/ObjectFiles.def: New file.
5216         * gm2-compiler/ObjectFiles.mod: New file.
5217         * gm2-compiler/Output.def: New file.
5218         * gm2-compiler/Output.mod: New file.
5219         * gm2-compiler/P0SymBuild.def: New file.
5220         * gm2-compiler/P0SymBuild.mod: New file.
5221         * gm2-compiler/P0SyntaxCheck.bnf: New file.
5222         * gm2-compiler/P0SyntaxCheck.def: New file.
5223         * gm2-compiler/P1Build.bnf: New file.
5224         * gm2-compiler/P1Build.def: New file.
5225         * gm2-compiler/P1SymBuild.def: New file.
5226         * gm2-compiler/P1SymBuild.mod: New file.
5227         * gm2-compiler/P2Build.bnf: New file.
5228         * gm2-compiler/P2Build.def: New file.
5229         * gm2-compiler/P2SymBuild.def: New file.
5230         * gm2-compiler/P2SymBuild.mod: New file.
5231         * gm2-compiler/P3Build.bnf: New file.
5232         * gm2-compiler/P3Build.def: New file.
5233         * gm2-compiler/P3SymBuild.def: New file.
5234         * gm2-compiler/P3SymBuild.mod: New file.
5235         * gm2-compiler/PCBuild.bnf: New file.
5236         * gm2-compiler/PCBuild.def: New file.
5237         * gm2-compiler/PCSymBuild.def: New file.
5238         * gm2-compiler/PCSymBuild.mod: New file.
5239         * gm2-compiler/PHBuild.bnf: New file.
5240         * gm2-compiler/PHBuild.def: New file.
5241         * gm2-compiler/README: New file.
5242         * gm2-compiler/Sets.def: New file.
5243         * gm2-compiler/Sets.mod: New file.
5244         * gm2-compiler/SymbolConversion.def: New file.
5245         * gm2-compiler/SymbolConversion.mod: New file.
5246         * gm2-compiler/SymbolKey.def: New file.
5247         * gm2-compiler/SymbolKey.mod: New file.
5248         * gm2-compiler/SymbolTable.def: New file.
5249         * gm2-compiler/SymbolTable.mod: New file.
5250         * gm2-compiler/bnflex.def: New file.
5251         * gm2-compiler/bnflex.mod: New file.
5252         * gm2-compiler/cflex.def: New file.
5253         * gm2-compiler/gm2.mod: New file.
5254         * gm2-compiler/gm2lcc.mod: New file.
5255         * gm2-compiler/gm2lgen.mod: New file.
5256         * gm2-compiler/gm2lorder.mod: New file.
5257         * gm2-compiler/m2flex.def: New file.
5258         * gm2-compiler/ppg.mod: New file.
5259         * gm2-gcc/README: New file.
5260         * gm2-gcc/dynamicstrings.h: New file.
5261         * gm2-gcc/gcc-consolidation.h: New file.
5262         * gm2-gcc/init.cc: New file.
5263         * gm2-gcc/init.def: New file.
5264         * gm2-gcc/init.h: New file.
5265         * gm2-gcc/m2assert.cc: New file.
5266         * gm2-gcc/m2assert.h: New file.
5267         * gm2-gcc/m2block.cc: New file.
5268         * gm2-gcc/m2block.def: New file.
5269         * gm2-gcc/m2block.h: New file.
5270         * gm2-gcc/m2builtins.cc: New file.
5271         * gm2-gcc/m2builtins.def: New file.
5272         * gm2-gcc/m2builtins.h: New file.
5273         * gm2-gcc/m2color.cc: New file.
5274         * gm2-gcc/m2color.def: New file.
5275         * gm2-gcc/m2color.h: New file.
5276         * gm2-gcc/m2configure.cc: New file.
5277         * gm2-gcc/m2configure.def: New file.
5278         * gm2-gcc/m2configure.h: New file.
5279         * gm2-gcc/m2convert.cc: New file.
5280         * gm2-gcc/m2convert.def: New file.
5281         * gm2-gcc/m2convert.h: New file.
5282         * gm2-gcc/m2decl.cc: New file.
5283         * gm2-gcc/m2decl.def: New file.
5284         * gm2-gcc/m2decl.h: New file.
5285         * gm2-gcc/m2except.cc: New file.
5286         * gm2-gcc/m2except.def: New file.
5287         * gm2-gcc/m2except.h: New file.
5288         * gm2-gcc/m2expr.cc: New file.
5289         * gm2-gcc/m2expr.def: New file.
5290         * gm2-gcc/m2expr.h: New file.
5291         * gm2-gcc/m2linemap.cc: New file.
5292         * gm2-gcc/m2linemap.def: New file.
5293         * gm2-gcc/m2linemap.h: New file.
5294         * gm2-gcc/m2misc.cc: New file.
5295         * gm2-gcc/m2misc.def: New file.
5296         * gm2-gcc/m2misc.h: New file.
5297         * gm2-gcc/m2options.h: New file.
5298         * gm2-gcc/m2range.h: New file.
5299         * gm2-gcc/m2search.h: New file.
5300         * gm2-gcc/m2statement.cc: New file.
5301         * gm2-gcc/m2statement.def: New file.
5302         * gm2-gcc/m2statement.h: New file.
5303         * gm2-gcc/m2top.cc: New file.
5304         * gm2-gcc/m2top.def: New file.
5305         * gm2-gcc/m2top.h: New file.
5306         * gm2-gcc/m2tree.cc: New file.
5307         * gm2-gcc/m2tree.def: New file.
5308         * gm2-gcc/m2tree.h: New file.
5309         * gm2-gcc/m2treelib.cc: New file.
5310         * gm2-gcc/m2treelib.def: New file.
5311         * gm2-gcc/m2treelib.h: New file.
5312         * gm2-gcc/m2type.cc: New file.
5313         * gm2-gcc/m2type.def: New file.
5314         * gm2-gcc/m2type.h: New file.
5315         * gm2-gcc/rtegraph.cc: New file.
5316         * gm2-gcc/rtegraph.h: New file.
5317         * gm2-ici/M2Emit.mod: New file.
5318         * gm2-ici/README: New file.
5319         * gm2-ici/m2linemap.c: New file.
5320         * gm2-internals.texi: New file.
5321         * gm2-lang.cc: New file.
5322         * gm2-lang.h: New file.
5323         * gm2-libiberty/README: New file.
5324         * gm2-libiberty/choosetemp.def: New file.
5325         * gm2-libiberty/pexecute.def: New file.
5326         * gm2-libs-ch/M2LINK.c: New file.
5327         * gm2-libs-ch/README: New file.
5328         * gm2-libs-ch/RTcodummy.c: New file.
5329         * gm2-libs-ch/RTintdummy.c: New file.
5330         * gm2-libs-ch/Selective.c: New file.
5331         * gm2-libs-ch/SysExceptions.c: New file.
5332         * gm2-libs-ch/UnixArgs.cc: New file.
5333         * gm2-libs-ch/cgetopt.c: New file.
5334         * gm2-libs-ch/choosetemp.c: New file.
5335         * gm2-libs-ch/dtoa.cc: New file.
5336         * gm2-libs-ch/errno.c: New file.
5337         * gm2-libs-ch/host.c: New file.
5338         * gm2-libs-ch/ldtoa.cc: New file.
5339         * gm2-libs-ch/m2rts.h: New file.
5340         * gm2-libs-ch/termios.c: New file.
5341         * gm2-libs-ch/tools.c: New file.
5342         * gm2-libs-ch/wrapc.c: New file.
5343         * gm2-libs-ch/xlibc.c: New file.
5344         * gm2-libs-coroutines/Debug.def: New file.
5345         * gm2-libs-coroutines/Debug.mod: New file.
5346         * gm2-libs-coroutines/Executive.def: New file.
5347         * gm2-libs-coroutines/Executive.mod: New file.
5348         * gm2-libs-coroutines/KeyBoardLEDs.def: New file.
5349         * gm2-libs-coroutines/README.texi: New file.
5350         * gm2-libs-coroutines/SYSTEM.def: New file.
5351         * gm2-libs-coroutines/SYSTEM.mod: New file.
5352         * gm2-libs-coroutines/TimerHandler.def: New file.
5353         * gm2-libs-coroutines/TimerHandler.mod: New file.
5354         * gm2-libs-iso/COROUTINES.def: New file.
5355         * gm2-libs-iso/COROUTINES.mod: New file.
5356         * gm2-libs-iso/ChanConsts.def: New file.
5357         * gm2-libs-iso/ChanConsts.h: New file.
5358         * gm2-libs-iso/ChanConsts.mod: New file.
5359         * gm2-libs-iso/CharClass.def: New file.
5360         * gm2-libs-iso/CharClass.mod: New file.
5361         * gm2-libs-iso/ClientSocket.def: New file.
5362         * gm2-libs-iso/ClientSocket.mod: New file.
5363         * gm2-libs-iso/ComplexMath.def: New file.
5364         * gm2-libs-iso/ComplexMath.mod: New file.
5365         * gm2-libs-iso/ConvStringLong.def: New file.
5366         * gm2-libs-iso/ConvStringLong.mod: New file.
5367         * gm2-libs-iso/ConvStringReal.def: New file.
5368         * gm2-libs-iso/ConvStringReal.mod: New file.
5369         * gm2-libs-iso/ConvTypes.def: New file.
5370         * gm2-libs-iso/ConvTypes.mod: New file.
5371         * gm2-libs-iso/EXCEPTIONS.def: New file.
5372         * gm2-libs-iso/EXCEPTIONS.mod: New file.
5373         * gm2-libs-iso/ErrnoCategory.def: New file.
5374         * gm2-libs-iso/GeneralUserExceptions.def: New file.
5375         * gm2-libs-iso/GeneralUserExceptions.mod: New file.
5376         * gm2-libs-iso/IOChan.def: New file.
5377         * gm2-libs-iso/IOChan.mod: New file.
5378         * gm2-libs-iso/IOConsts.def: New file.
5379         * gm2-libs-iso/IOConsts.mod: New file.
5380         * gm2-libs-iso/IOLink.def: New file.
5381         * gm2-libs-iso/IOLink.mod: New file.
5382         * gm2-libs-iso/IOResult.def: New file.
5383         * gm2-libs-iso/IOResult.mod: New file.
5384         * gm2-libs-iso/LongComplexMath.def: New file.
5385         * gm2-libs-iso/LongComplexMath.mod: New file.
5386         * gm2-libs-iso/LongConv.def: New file.
5387         * gm2-libs-iso/LongConv.mod: New file.
5388         * gm2-libs-iso/LongIO.def: New file.
5389         * gm2-libs-iso/LongIO.mod: New file.
5390         * gm2-libs-iso/LongMath.def: New file.
5391         * gm2-libs-iso/LongMath.mod: New file.
5392         * gm2-libs-iso/LongStr.def: New file.
5393         * gm2-libs-iso/LongStr.mod: New file.
5394         * gm2-libs-iso/LongWholeIO.def: New file.
5395         * gm2-libs-iso/LongWholeIO.mod: New file.
5396         * gm2-libs-iso/LowLong.def: New file.
5397         * gm2-libs-iso/LowLong.mod: New file.
5398         * gm2-libs-iso/LowReal.def: New file.
5399         * gm2-libs-iso/LowReal.mod: New file.
5400         * gm2-libs-iso/LowShort.def: New file.
5401         * gm2-libs-iso/LowShort.mod: New file.
5402         * gm2-libs-iso/M2EXCEPTION.def: New file.
5403         * gm2-libs-iso/M2EXCEPTION.mod: New file.
5404         * gm2-libs-iso/M2RTS.def: New file.
5405         * gm2-libs-iso/M2RTS.mod: New file.
5406         * gm2-libs-iso/MemStream.def: New file.
5407         * gm2-libs-iso/MemStream.mod: New file.
5408         * gm2-libs-iso/Preemptive.def: New file.
5409         * gm2-libs-iso/Preemptive.mod: New file.
5410         * gm2-libs-iso/Processes.def: New file.
5411         * gm2-libs-iso/Processes.mod: New file.
5412         * gm2-libs-iso/ProgramArgs.def: New file.
5413         * gm2-libs-iso/ProgramArgs.mod: New file.
5414         * gm2-libs-iso/README.texi: New file.
5415         * gm2-libs-iso/RTco.def: New file.
5416         * gm2-libs-iso/RTdata.def: New file.
5417         * gm2-libs-iso/RTdata.mod: New file.
5418         * gm2-libs-iso/RTentity.def: New file.
5419         * gm2-libs-iso/RTentity.mod: New file.
5420         * gm2-libs-iso/RTfio.def: New file.
5421         * gm2-libs-iso/RTfio.mod: New file.
5422         * gm2-libs-iso/RTgen.def: New file.
5423         * gm2-libs-iso/RTgen.mod: New file.
5424         * gm2-libs-iso/RTgenif.def: New file.
5425         * gm2-libs-iso/RTgenif.mod: New file.
5426         * gm2-libs-iso/RTio.def: New file.
5427         * gm2-libs-iso/RTio.mod: New file.
5428         * gm2-libs-iso/RandomNumber.def: New file.
5429         * gm2-libs-iso/RandomNumber.mod: New file.
5430         * gm2-libs-iso/RawIO.def: New file.
5431         * gm2-libs-iso/RawIO.mod: New file.
5432         * gm2-libs-iso/RealConv.def: New file.
5433         * gm2-libs-iso/RealConv.mod: New file.
5434         * gm2-libs-iso/RealIO.def: New file.
5435         * gm2-libs-iso/RealIO.mod: New file.
5436         * gm2-libs-iso/RealMath.def: New file.
5437         * gm2-libs-iso/RealMath.mod: New file.
5438         * gm2-libs-iso/RealStr.def: New file.
5439         * gm2-libs-iso/RealStr.mod: New file.
5440         * gm2-libs-iso/RndFile.def: New file.
5441         * gm2-libs-iso/RndFile.mod: New file.
5442         * gm2-libs-iso/SIOResult.def: New file.
5443         * gm2-libs-iso/SIOResult.mod: New file.
5444         * gm2-libs-iso/SLongIO.def: New file.
5445         * gm2-libs-iso/SLongIO.mod: New file.
5446         * gm2-libs-iso/SLongWholeIO.def: New file.
5447         * gm2-libs-iso/SLongWholeIO.mod: New file.
5448         * gm2-libs-iso/SRawIO.def: New file.
5449         * gm2-libs-iso/SRawIO.mod: New file.
5450         * gm2-libs-iso/SRealIO.def: New file.
5451         * gm2-libs-iso/SRealIO.mod: New file.
5452         * gm2-libs-iso/SShortIO.def: New file.
5453         * gm2-libs-iso/SShortIO.mod: New file.
5454         * gm2-libs-iso/SShortWholeIO.def: New file.
5455         * gm2-libs-iso/SShortWholeIO.mod: New file.
5456         * gm2-libs-iso/STextIO.def: New file.
5457         * gm2-libs-iso/STextIO.mod: New file.
5458         * gm2-libs-iso/SWholeIO.def: New file.
5459         * gm2-libs-iso/SWholeIO.mod: New file.
5460         * gm2-libs-iso/SYSTEM.def: New file.
5461         * gm2-libs-iso/SYSTEM.mod: New file.
5462         * gm2-libs-iso/Semaphores.def: New file.
5463         * gm2-libs-iso/Semaphores.mod: New file.
5464         * gm2-libs-iso/SeqFile.def: New file.
5465         * gm2-libs-iso/SeqFile.mod: New file.
5466         * gm2-libs-iso/ShortComplexMath.def: New file.
5467         * gm2-libs-iso/ShortComplexMath.mod: New file.
5468         * gm2-libs-iso/ShortIO.def: New file.
5469         * gm2-libs-iso/ShortIO.mod: New file.
5470         * gm2-libs-iso/ShortWholeIO.def: New file.
5471         * gm2-libs-iso/ShortWholeIO.mod: New file.
5472         * gm2-libs-iso/SimpleCipher.def: New file.
5473         * gm2-libs-iso/SimpleCipher.mod: New file.
5474         * gm2-libs-iso/StdChans.def: New file.
5475         * gm2-libs-iso/StdChans.mod: New file.
5476         * gm2-libs-iso/Storage.def: New file.
5477         * gm2-libs-iso/Storage.mod: New file.
5478         * gm2-libs-iso/StreamFile.def: New file.
5479         * gm2-libs-iso/StreamFile.mod: New file.
5480         * gm2-libs-iso/StringChan.def: New file.
5481         * gm2-libs-iso/StringChan.mod: New file.
5482         * gm2-libs-iso/Strings.def: New file.
5483         * gm2-libs-iso/Strings.mod: New file.
5484         * gm2-libs-iso/SysClock.def: New file.
5485         * gm2-libs-iso/SysClock.mod: New file.
5486         * gm2-libs-iso/TERMINATION.def: New file.
5487         * gm2-libs-iso/TERMINATION.mod: New file.
5488         * gm2-libs-iso/TermFile.def: New file.
5489         * gm2-libs-iso/TermFile.mod: New file.
5490         * gm2-libs-iso/TextIO.def: New file.
5491         * gm2-libs-iso/TextIO.mod: New file.
5492         * gm2-libs-iso/WholeConv.def: New file.
5493         * gm2-libs-iso/WholeConv.mod: New file.
5494         * gm2-libs-iso/WholeIO.def: New file.
5495         * gm2-libs-iso/WholeIO.mod: New file.
5496         * gm2-libs-iso/WholeStr.def: New file.
5497         * gm2-libs-iso/WholeStr.mod: New file.
5498         * gm2-libs-iso/wrapsock.c: New file.
5499         * gm2-libs-iso/wrapsock.def: New file.
5500         * gm2-libs-iso/wraptime.c: New file.
5501         * gm2-libs-iso/wraptime.def: New file.
5502         * gm2-libs-min/M2RTS.def: New file.
5503         * gm2-libs-min/M2RTS.mod: New file.
5504         * gm2-libs-min/SYSTEM.def: New file.
5505         * gm2-libs-min/SYSTEM.mod: New file.
5506         * gm2-libs-min/libc.c: New file.
5507         * gm2-libs-min/libc.def: New file.
5508         * gm2-libs-pim/BitBlockOps.def: New file.
5509         * gm2-libs-pim/BitBlockOps.mod: New file.
5510         * gm2-libs-pim/BitByteOps.def: New file.
5511         * gm2-libs-pim/BitByteOps.mod: New file.
5512         * gm2-libs-pim/BitWordOps.def: New file.
5513         * gm2-libs-pim/BitWordOps.mod: New file.
5514         * gm2-libs-pim/BlockOps.def: New file.
5515         * gm2-libs-pim/BlockOps.mod: New file.
5516         * gm2-libs-pim/Break.c: New file.
5517         * gm2-libs-pim/Break.def: New file.
5518         * gm2-libs-pim/CardinalIO.def: New file.
5519         * gm2-libs-pim/CardinalIO.mod: New file.
5520         * gm2-libs-pim/Conversions.def: New file.
5521         * gm2-libs-pim/Conversions.mod: New file.
5522         * gm2-libs-pim/DebugPMD.def: New file.
5523         * gm2-libs-pim/DebugPMD.mod: New file.
5524         * gm2-libs-pim/DebugTrace.def: New file.
5525         * gm2-libs-pim/DebugTrace.mod: New file.
5526         * gm2-libs-pim/Delay.def: New file.
5527         * gm2-libs-pim/Delay.mod: New file.
5528         * gm2-libs-pim/Display.def: New file.
5529         * gm2-libs-pim/Display.mod: New file.
5530         * gm2-libs-pim/ErrorCode.def: New file.
5531         * gm2-libs-pim/ErrorCode.mod: New file.
5532         * gm2-libs-pim/FileSystem.def: New file.
5533         * gm2-libs-pim/FileSystem.mod: New file.
5534         * gm2-libs-pim/FloatingUtilities.def: New file.
5535         * gm2-libs-pim/FloatingUtilities.mod: New file.
5536         * gm2-libs-pim/InOut.def: New file.
5537         * gm2-libs-pim/InOut.mod: New file.
5538         * gm2-libs-pim/Keyboard.def: New file.
5539         * gm2-libs-pim/Keyboard.mod: New file.
5540         * gm2-libs-pim/LongIO.def: New file.
5541         * gm2-libs-pim/LongIO.mod: New file.
5542         * gm2-libs-pim/NumberConversion.def: New file.
5543         * gm2-libs-pim/NumberConversion.mod: New file.
5544         * gm2-libs-pim/README.texi: New file.
5545         * gm2-libs-pim/Random.def: New file.
5546         * gm2-libs-pim/Random.mod: New file.
5547         * gm2-libs-pim/RealConversions.def: New file.
5548         * gm2-libs-pim/RealConversions.mod: New file.
5549         * gm2-libs-pim/RealInOut.def: New file.
5550         * gm2-libs-pim/RealInOut.mod: New file.
5551         * gm2-libs-pim/Strings.def: New file.
5552         * gm2-libs-pim/Strings.mod: New file.
5553         * gm2-libs-pim/Termbase.def: New file.
5554         * gm2-libs-pim/Termbase.mod: New file.
5555         * gm2-libs-pim/Terminal.def: New file.
5556         * gm2-libs-pim/Terminal.mod: New file.
5557         * gm2-libs-pim/TimeDate.def: New file.
5558         * gm2-libs-pim/TimeDate.mod: New file.
5559         * gm2-libs/ASCII.def: New file.
5560         * gm2-libs/ASCII.mod: New file.
5561         * gm2-libs/Args.def: New file.
5562         * gm2-libs/Args.mod: New file.
5563         * gm2-libs/Assertion.def: New file.
5564         * gm2-libs/Assertion.mod: New file.
5565         * gm2-libs/Break.def: New file.
5566         * gm2-libs/Break.mod: New file.
5567         * gm2-libs/Builtins.def: New file.
5568         * gm2-libs/Builtins.mod: New file.
5569         * gm2-libs/COROUTINES.def: New file.
5570         * gm2-libs/COROUTINES.mod: New file.
5571         * gm2-libs/CmdArgs.def: New file.
5572         * gm2-libs/CmdArgs.mod: New file.
5573         * gm2-libs/Debug.def: New file.
5574         * gm2-libs/Debug.mod: New file.
5575         * gm2-libs/DynamicStrings.def: New file.
5576         * gm2-libs/DynamicStrings.mod: New file.
5577         * gm2-libs/Environment.def: New file.
5578         * gm2-libs/Environment.mod: New file.
5579         * gm2-libs/FIO.def: New file.
5580         * gm2-libs/FIO.mod: New file.
5581         * gm2-libs/FormatStrings.def: New file.
5582         * gm2-libs/FormatStrings.mod: New file.
5583         * gm2-libs/FpuIO.def: New file.
5584         * gm2-libs/FpuIO.mod: New file.
5585         * gm2-libs/GetOpt.def: New file.
5586         * gm2-libs/GetOpt.mod: New file.
5587         * gm2-libs/IO.def: New file.
5588         * gm2-libs/IO.mod: New file.
5589         * gm2-libs/Indexing.def: New file.
5590         * gm2-libs/Indexing.mod: New file.
5591         * gm2-libs/LMathLib0.def: New file.
5592         * gm2-libs/LMathLib0.mod: New file.
5593         * gm2-libs/LegacyReal.def: New file.
5594         * gm2-libs/LegacyReal.mod: New file.
5595         * gm2-libs/M2Dependent.def: New file.
5596         * gm2-libs/M2Dependent.mod: New file.
5597         * gm2-libs/M2EXCEPTION.def: New file.
5598         * gm2-libs/M2EXCEPTION.mod: New file.
5599         * gm2-libs/M2LINK.def: New file.
5600         * gm2-libs/M2RTS.def: New file.
5601         * gm2-libs/M2RTS.mod: New file.
5602         * gm2-libs/MathLib0.def: New file.
5603         * gm2-libs/MathLib0.mod: New file.
5604         * gm2-libs/MemUtils.def: New file.
5605         * gm2-libs/MemUtils.mod: New file.
5606         * gm2-libs/NumberIO.def: New file.
5607         * gm2-libs/NumberIO.mod: New file.
5608         * gm2-libs/OptLib.def: New file.
5609         * gm2-libs/OptLib.mod: New file.
5610         * gm2-libs/PushBackInput.def: New file.
5611         * gm2-libs/PushBackInput.mod: New file.
5612         * gm2-libs/README.texi: New file.
5613         * gm2-libs/RTExceptions.def: New file.
5614         * gm2-libs/RTExceptions.mod: New file.
5615         * gm2-libs/RTint.def: New file.
5616         * gm2-libs/RTint.mod: New file.
5617         * gm2-libs/SArgs.def: New file.
5618         * gm2-libs/SArgs.mod: New file.
5619         * gm2-libs/SCmdArgs.def: New file.
5620         * gm2-libs/SCmdArgs.mod: New file.
5621         * gm2-libs/SEnvironment.def: New file.
5622         * gm2-libs/SEnvironment.mod: New file.
5623         * gm2-libs/SFIO.def: New file.
5624         * gm2-libs/SFIO.mod: New file.
5625         * gm2-libs/SMathLib0.def: New file.
5626         * gm2-libs/SMathLib0.mod: New file.
5627         * gm2-libs/SYSTEM.def: New file.
5628         * gm2-libs/SYSTEM.mod: New file.
5629         * gm2-libs/Scan.def: New file.
5630         * gm2-libs/Scan.mod: New file.
5631         * gm2-libs/Selective.def: New file.
5632         * gm2-libs/StdIO.def: New file.
5633         * gm2-libs/StdIO.mod: New file.
5634         * gm2-libs/Storage.def: New file.
5635         * gm2-libs/Storage.mod: New file.
5636         * gm2-libs/StrCase.def: New file.
5637         * gm2-libs/StrCase.mod: New file.
5638         * gm2-libs/StrIO.def: New file.
5639         * gm2-libs/StrIO.mod: New file.
5640         * gm2-libs/StrLib.def: New file.
5641         * gm2-libs/StrLib.mod: New file.
5642         * gm2-libs/StringConvert.def: New file.
5643         * gm2-libs/StringConvert.mod: New file.
5644         * gm2-libs/SysExceptions.def: New file.
5645         * gm2-libs/SysStorage.def: New file.
5646         * gm2-libs/SysStorage.mod: New file.
5647         * gm2-libs/TimeString.def: New file.
5648         * gm2-libs/TimeString.mod: New file.
5649         * gm2-libs/UnixArgs.def: New file.
5650         * gm2-libs/cbuiltin.def: New file.
5651         * gm2-libs/cgetopt.def: New file.
5652         * gm2-libs/config-host: New file.
5653         * gm2-libs/config-host.in: New file.
5654         * gm2-libs/cxxabi.def: New file.
5655         * gm2-libs/dtoa.def: New file.
5656         * gm2-libs/errno.def: New file.
5657         * gm2-libs/gdbif.def: New file.
5658         * gm2-libs/gdbif.mod: New file.
5659         * gm2-libs/gm2-libs-host.h.in: New file.
5660         * gm2-libs/ldtoa.def: New file.
5661         * gm2-libs/libc.def: New file.
5662         * gm2-libs/libm.def: New file.
5663         * gm2-libs/sckt.def: New file.
5664         * gm2-libs/termios.def: New file.
5665         * gm2-libs/wrapc.def: New file.
5666         * gm2config.h.in: New file.
5667         * gm2spec.cc: New file.
5668         * gm2version.h: New file.
5669         * init/README: New file.
5670         * init/mcinit: New file.
5671         * init/ppginit: New file.
5672         * lang-specs.h: New file.
5673         * lang.opt: New file.
5674         * m2-tree.def: New file.
5675         * m2-tree.h: New file.
5676         * m2.flex: New file.
5677         * m2pp.cc: New file.
5678         * m2pp.h: New file.
5679         * mc-boot-ch/GBuiltins.c: New file.
5680         * mc-boot-ch/GM2LINK.c: New file.
5681         * mc-boot-ch/GRTco.c: New file.
5682         * mc-boot-ch/GSYSTEM.c: New file.
5683         * mc-boot-ch/GSelective.c: New file.
5684         * mc-boot-ch/GSysExceptions.c: New file.
5685         * mc-boot-ch/GUnixArgs.cc: New file.
5686         * mc-boot-ch/Gabort.c: New file.
5687         * mc-boot-ch/Gcbuiltin.c: New file.
5688         * mc-boot-ch/Gdtoa.c: New file.
5689         * mc-boot-ch/Gerrno.c: New file.
5690         * mc-boot-ch/Gldtoa.c: New file.
5691         * mc-boot-ch/Glibc.c: New file.
5692         * mc-boot-ch/Glibm.c: New file.
5693         * mc-boot-ch/Gmcrts.c: New file.
5694         * mc-boot-ch/Gmcrts.h: New file.
5695         * mc-boot-ch/Gnetwork.h: New file.
5696         * mc-boot-ch/Gtermios.cc: New file.
5697         * mc-boot-ch/Gwrapc.c: New file.
5698         * mc-boot-ch/README: New file.
5699         * mc-boot-ch/m2rts.h: New file.
5700         * mc-boot-ch/network.c: New file.
5701         * mc-boot/GASCII.c: New file.
5702         * mc-boot/GASCII.h: New file.
5703         * mc-boot/GArgs.c: New file.
5704         * mc-boot/GArgs.h: New file.
5705         * mc-boot/GAssertion.c: New file.
5706         * mc-boot/GAssertion.h: New file.
5707         * mc-boot/GBreak.c: New file.
5708         * mc-boot/GBreak.h: New file.
5709         * mc-boot/GCOROUTINES.h: New file.
5710         * mc-boot/GCmdArgs.c: New file.
5711         * mc-boot/GCmdArgs.h: New file.
5712         * mc-boot/GDebug.c: New file.
5713         * mc-boot/GDebug.h: New file.
5714         * mc-boot/GDynamicStrings.c: New file.
5715         * mc-boot/GDynamicStrings.h: New file.
5716         * mc-boot/GEnvironment.c: New file.
5717         * mc-boot/GEnvironment.h: New file.
5718         * mc-boot/GFIO.c: New file.
5719         * mc-boot/GFIO.h: New file.
5720         * mc-boot/GFormatStrings.c: New file.
5721         * mc-boot/GFormatStrings.h: New file.
5722         * mc-boot/GFpuIO.c: New file.
5723         * mc-boot/GFpuIO.h: New file.
5724         * mc-boot/GIO.c: New file.
5725         * mc-boot/GIO.h: New file.
5726         * mc-boot/GIndexing.c: New file.
5727         * mc-boot/GIndexing.h: New file.
5728         * mc-boot/GM2Dependent.c: New file.
5729         * mc-boot/GM2Dependent.h: New file.
5730         * mc-boot/GM2EXCEPTION.c: New file.
5731         * mc-boot/GM2EXCEPTION.h: New file.
5732         * mc-boot/GM2LINK.h: New file.
5733         * mc-boot/GM2RTS.c: New file.
5734         * mc-boot/GM2RTS.h: New file.
5735         * mc-boot/GMemUtils.c: New file.
5736         * mc-boot/GMemUtils.h: New file.
5737         * mc-boot/GNumberIO.c: New file.
5738         * mc-boot/GNumberIO.h: New file.
5739         * mc-boot/GPushBackInput.c: New file.
5740         * mc-boot/GPushBackInput.h: New file.
5741         * mc-boot/GRTExceptions.c: New file.
5742         * mc-boot/GRTExceptions.h: New file.
5743         * mc-boot/GRTco.h: New file.
5744         * mc-boot/GRTint.c: New file.
5745         * mc-boot/GRTint.h: New file.
5746         * mc-boot/GSArgs.c: New file.
5747         * mc-boot/GSArgs.h: New file.
5748         * mc-boot/GSFIO.c: New file.
5749         * mc-boot/GSFIO.h: New file.
5750         * mc-boot/GSYSTEM.h: New file.
5751         * mc-boot/GSelective.h: New file.
5752         * mc-boot/GStdIO.c: New file.
5753         * mc-boot/GStdIO.h: New file.
5754         * mc-boot/GStorage.c: New file.
5755         * mc-boot/GStorage.h: New file.
5756         * mc-boot/GStrCase.c: New file.
5757         * mc-boot/GStrCase.h: New file.
5758         * mc-boot/GStrIO.c: New file.
5759         * mc-boot/GStrIO.h: New file.
5760         * mc-boot/GStrLib.c: New file.
5761         * mc-boot/GStrLib.h: New file.
5762         * mc-boot/GStringConvert.c: New file.
5763         * mc-boot/GStringConvert.h: New file.
5764         * mc-boot/GSysExceptions.h: New file.
5765         * mc-boot/GSysStorage.c: New file.
5766         * mc-boot/GSysStorage.h: New file.
5767         * mc-boot/GTimeString.c: New file.
5768         * mc-boot/GTimeString.h: New file.
5769         * mc-boot/GUnixArgs.h: New file.
5770         * mc-boot/Galists.c: New file.
5771         * mc-boot/Galists.h: New file.
5772         * mc-boot/Gdecl.c: New file.
5773         * mc-boot/Gdecl.h: New file.
5774         * mc-boot/Gdtoa.h: New file.
5775         * mc-boot/Gerrno.h: New file.
5776         * mc-boot/Gkeyc.c: New file.
5777         * mc-boot/Gkeyc.h: New file.
5778         * mc-boot/Gldtoa.h: New file.
5779         * mc-boot/Glibc.h: New file.
5780         * mc-boot/Glibm.h: New file.
5781         * mc-boot/Glists.c: New file.
5782         * mc-boot/Glists.h: New file.
5783         * mc-boot/GmcComment.c: New file.
5784         * mc-boot/GmcComment.h: New file.
5785         * mc-boot/GmcComp.c: New file.
5786         * mc-boot/GmcComp.h: New file.
5787         * mc-boot/GmcDebug.c: New file.
5788         * mc-boot/GmcDebug.h: New file.
5789         * mc-boot/GmcError.c: New file.
5790         * mc-boot/GmcError.h: New file.
5791         * mc-boot/GmcFileName.c: New file.
5792         * mc-boot/GmcFileName.h: New file.
5793         * mc-boot/GmcLexBuf.c: New file.
5794         * mc-boot/GmcLexBuf.h: New file.
5795         * mc-boot/GmcMetaError.c: New file.
5796         * mc-boot/GmcMetaError.h: New file.
5797         * mc-boot/GmcOptions.c: New file.
5798         * mc-boot/GmcOptions.h: New file.
5799         * mc-boot/GmcPreprocess.c: New file.
5800         * mc-boot/GmcPreprocess.h: New file.
5801         * mc-boot/GmcPretty.c: New file.
5802         * mc-boot/GmcPretty.h: New file.
5803         * mc-boot/GmcPrintf.c: New file.
5804         * mc-boot/GmcPrintf.h: New file.
5805         * mc-boot/GmcQuiet.c: New file.
5806         * mc-boot/GmcQuiet.h: New file.
5807         * mc-boot/GmcReserved.c: New file.
5808         * mc-boot/GmcReserved.h: New file.
5809         * mc-boot/GmcSearch.c: New file.
5810         * mc-boot/GmcSearch.h: New file.
5811         * mc-boot/GmcStack.c: New file.
5812         * mc-boot/GmcStack.h: New file.
5813         * mc-boot/GmcStream.c: New file.
5814         * mc-boot/GmcStream.h: New file.
5815         * mc-boot/Gmcflex.h: New file.
5816         * mc-boot/Gmcp1.c: New file.
5817         * mc-boot/Gmcp1.h: New file.
5818         * mc-boot/Gmcp2.c: New file.
5819         * mc-boot/Gmcp2.h: New file.
5820         * mc-boot/Gmcp3.c: New file.
5821         * mc-boot/Gmcp3.h: New file.
5822         * mc-boot/Gmcp4.c: New file.
5823         * mc-boot/Gmcp4.h: New file.
5824         * mc-boot/Gmcp5.c: New file.
5825         * mc-boot/Gmcp5.h: New file.
5826         * mc-boot/GnameKey.c: New file.
5827         * mc-boot/GnameKey.h: New file.
5828         * mc-boot/Gpth.h: New file.
5829         * mc-boot/GsymbolKey.c: New file.
5830         * mc-boot/GsymbolKey.h: New file.
5831         * mc-boot/Gtermios.h: New file.
5832         * mc-boot/Gtop.c: New file.
5833         * mc-boot/Gvarargs.c: New file.
5834         * mc-boot/Gvarargs.h: New file.
5835         * mc-boot/Gwlists.c: New file.
5836         * mc-boot/Gwlists.h: New file.
5837         * mc-boot/Gwrapc.h: New file.
5838         * mc-boot/README: New file.
5839         * mc/Indexing.def: New file.
5840         * mc/Indexing.mod: New file.
5841         * mc/README: New file.
5842         * mc/alists.def: New file.
5843         * mc/alists.mod: New file.
5844         * mc/decl.def: New file.
5845         * mc/decl.mod: New file.
5846         * mc/decl.mod-extra: New file.
5847         * mc/keyc.def: New file.
5848         * mc/keyc.mod: New file.
5849         * mc/lists.def: New file.
5850         * mc/lists.mod: New file.
5851         * mc/m2flex.def: New file.
5852         * mc/mc.flex: New file.
5853         * mc/mcComment.def: New file.
5854         * mc/mcComment.h: New file.
5855         * mc/mcComment.mod: New file.
5856         * mc/mcComp.def: New file.
5857         * mc/mcComp.mod: New file.
5858         * mc/mcDebug.def: New file.
5859         * mc/mcDebug.mod: New file.
5860         * mc/mcError.def: New file.
5861         * mc/mcError.mod: New file.
5862         * mc/mcFileName.def: New file.
5863         * mc/mcFileName.mod: New file.
5864         * mc/mcLexBuf.def: New file.
5865         * mc/mcLexBuf.h: New file.
5866         * mc/mcLexBuf.mod: New file.
5867         * mc/mcMetaError.def: New file.
5868         * mc/mcMetaError.mod: New file.
5869         * mc/mcOptions.def: New file.
5870         * mc/mcOptions.mod: New file.
5871         * mc/mcPreprocess.def: New file.
5872         * mc/mcPreprocess.mod: New file.
5873         * mc/mcPretty.def: New file.
5874         * mc/mcPretty.mod: New file.
5875         * mc/mcPrintf.def: New file.
5876         * mc/mcPrintf.mod: New file.
5877         * mc/mcQuiet.def: New file.
5878         * mc/mcQuiet.mod: New file.
5879         * mc/mcReserved.def: New file.
5880         * mc/mcReserved.h: New file.
5881         * mc/mcReserved.mod: New file.
5882         * mc/mcSearch.def: New file.
5883         * mc/mcSearch.mod: New file.
5884         * mc/mcStack.def: New file.
5885         * mc/mcStack.mod: New file.
5886         * mc/mcStream.def: New file.
5887         * mc/mcStream.mod: New file.
5888         * mc/mcflex.def: New file.
5889         * mc/mcp1.bnf: New file.
5890         * mc/mcp1.def: New file.
5891         * mc/mcp2.bnf: New file.
5892         * mc/mcp2.def: New file.
5893         * mc/mcp3.bnf: New file.
5894         * mc/mcp3.def: New file.
5895         * mc/mcp4.bnf: New file.
5896         * mc/mcp4.def: New file.
5897         * mc/mcp5.bnf: New file.
5898         * mc/mcp5.def: New file.
5899         * mc/nameKey.def: New file.
5900         * mc/nameKey.mod: New file.
5901         * mc/symbolKey.def: New file.
5902         * mc/symbolKey.mod: New file.
5903         * mc/top.mod: New file.
5904         * mc/varargs.def: New file.
5905         * mc/varargs.mod: New file.
5906         * mc/wlists.def: New file.
5907         * mc/wlists.mod: New file.
5908         * pge-boot/GASCII.c: New file.
5909         * pge-boot/GASCII.h: New file.
5910         * pge-boot/GArgs.c: New file.
5911         * pge-boot/GArgs.h: New file.
5912         * pge-boot/GAssertion.c: New file.
5913         * pge-boot/GAssertion.h: New file.
5914         * pge-boot/GBreak.h: New file.
5915         * pge-boot/GBuiltins.c: New file.
5916         * pge-boot/GCmdArgs.h: New file.
5917         * pge-boot/GDebug.c: New file.
5918         * pge-boot/GDebug.h: New file.
5919         * pge-boot/GDynamicStrings.c: New file.
5920         * pge-boot/GDynamicStrings.h: New file.
5921         * pge-boot/GEnvironment.h: New file.
5922         * pge-boot/GFIO.c: New file.
5923         * pge-boot/GFIO.h: New file.
5924         * pge-boot/GFormatStrings.h: New file.
5925         * pge-boot/GFpuIO.h: New file.
5926         * pge-boot/GIO.c: New file.
5927         * pge-boot/GIO.h: New file.
5928         * pge-boot/GIndexing.c: New file.
5929         * pge-boot/GIndexing.h: New file.
5930         * pge-boot/GLists.c: New file.
5931         * pge-boot/GLists.h: New file.
5932         * pge-boot/GM2Dependent.c: New file.
5933         * pge-boot/GM2Dependent.h: New file.
5934         * pge-boot/GM2EXCEPTION.c: New file.
5935         * pge-boot/GM2EXCEPTION.h: New file.
5936         * pge-boot/GM2LINK.c: New file.
5937         * pge-boot/GM2LINK.h: New file.
5938         * pge-boot/GM2RTS.c: New file.
5939         * pge-boot/GM2RTS.h: New file.
5940         * pge-boot/GNameKey.c: New file.
5941         * pge-boot/GNameKey.h: New file.
5942         * pge-boot/GNumberIO.c: New file.
5943         * pge-boot/GNumberIO.h: New file.
5944         * pge-boot/GOutput.c: New file.
5945         * pge-boot/GOutput.h: New file.
5946         * pge-boot/GPushBackInput.c: New file.
5947         * pge-boot/GPushBackInput.h: New file.
5948         * pge-boot/GRTExceptions.c: New file.
5949         * pge-boot/GRTExceptions.h: New file.
5950         * pge-boot/GRTco.c: New file.
5951         * pge-boot/GSArgs.h: New file.
5952         * pge-boot/GSEnvironment.h: New file.
5953         * pge-boot/GSFIO.c: New file.
5954         * pge-boot/GSFIO.h: New file.
5955         * pge-boot/GSYSTEM.c: New file.
5956         * pge-boot/GSYSTEM.h: New file.
5957         * pge-boot/GScan.h: New file.
5958         * pge-boot/GSelective.c: New file.
5959         * pge-boot/GStdIO.c: New file.
5960         * pge-boot/GStdIO.h: New file.
5961         * pge-boot/GStorage.c: New file.
5962         * pge-boot/GStorage.h: New file.
5963         * pge-boot/GStrCase.c: New file.
5964         * pge-boot/GStrCase.h: New file.
5965         * pge-boot/GStrIO.c: New file.
5966         * pge-boot/GStrIO.h: New file.
5967         * pge-boot/GStrLib.c: New file.
5968         * pge-boot/GStrLib.h: New file.
5969         * pge-boot/GStringConvert.h: New file.
5970         * pge-boot/GSymbolKey.c: New file.
5971         * pge-boot/GSymbolKey.h: New file.
5972         * pge-boot/GSysExceptions.c: New file.
5973         * pge-boot/GSysExceptions.h: New file.
5974         * pge-boot/GSysStorage.c: New file.
5975         * pge-boot/GSysStorage.h: New file.
5976         * pge-boot/GTimeString.h: New file.
5977         * pge-boot/GUnixArgs.cc: New file.
5978         * pge-boot/GUnixArgs.h: New file.
5979         * pge-boot/Gabort.c: New file.
5980         * pge-boot/Gbnflex.c: New file.
5981         * pge-boot/Gbnflex.h: New file.
5982         * pge-boot/Gcbuiltin.c: New file.
5983         * pge-boot/Gdtoa.c: New file.
5984         * pge-boot/Gdtoa.h: New file.
5985         * pge-boot/Gerrno.c: New file.
5986         * pge-boot/Gerrno.h: New file.
5987         * pge-boot/Gldtoa.c: New file.
5988         * pge-boot/Gldtoa.h: New file.
5989         * pge-boot/Glibc.c: New file.
5990         * pge-boot/Glibc.h: New file.
5991         * pge-boot/Glibm.c: New file.
5992         * pge-boot/Glibm.h: New file.
5993         * pge-boot/Gmcrts.c: New file.
5994         * pge-boot/Gmcrts.h: New file.
5995         * pge-boot/Gnetwork.h: New file.
5996         * pge-boot/Gpge.c: New file.
5997         * pge-boot/Gtermios.cc: New file.
5998         * pge-boot/Gtermios.h: New file.
5999         * pge-boot/Gwrapc.c: New file.
6000         * pge-boot/Gwrapc.h: New file.
6001         * pge-boot/README: New file.
6002         * pge-boot/m2rts.h: New file.
6003         * pge-boot/main.c: New file.
6004         * pge-boot/network.c: New file.
6005         * plugin/README: New file.
6006         * plugin/m2rte.cc: New file.
6007         * tools-src/README: New file.
6008         * tools-src/boilerplate.py: New file.
6009         * tools-src/buildpg: New file.
6010         * tools-src/calcpath: New file.
6011         * tools-src/def2doc.py: New file.
6012         * tools-src/makeSystem: New file.
6013         * tools-src/mklink.c: New file.
6014         * tools-src/tidydates.py: New file.
6015         * images/LICENSE.IMG: New file.
6016         * images/gnupng: New file.
6017         * images/gnu.eps: New file.
6018         * version.c: New file.
6019         * configure: Rebuilt.
6020         * target-independent/Builtins.texi: New file.
6021         * target-independent/SYSTEM-iso.texi: New file.
6022         * target-independent/SYSTEM-pim.texi: New file.
6023         * target-independent/gm2-libs.texi: New file.
6024         * target-independent/readme.txt: New file.