aboutsummaryrefslogtreecommitdiff
path: root/gcc/m2
AgeCommit message (Collapse)AuthorFilesLines
2023-01-27Modula-2: Add claimed command line options to lang.opt [PR108555].Iain Sandoe3-66/+177
This is a partial reversion of the changes in r13-5373-g80cf2c5e8f496b. As observed in the PR, handling the C and Driver options in the Modula-2 lang-specific code could be difficult to emulate; This reverts to adding the required options to the language-specific .opt file. Signed-off-by: Iain Sandoe <iain@sandoe.co.uk> PR modula2/108555 PR modula2/108182 PR modula2/102343 gcc/m2/ChangeLog: * gm2-lang.cc (gm2_langhook_option_lang_mask): Do not claim CL_C or CL_DRIVER. (gm2_langhook_init_options): Handle options that we want to pass to the preprocessor. * lang-specs.h: Pass -B and -save-temps to regular compile lines. * lang.opt: Add C and Driver options that Modula-2 intercepts for internal use. Reorder options into two sections and to collate.
2023-01-27Daily bump.GCC Administrator1-0/+68
2023-01-26PR-108551 gcc/m2/gm2-libs-pim/Termbase.mod:128:1 error end of non-voidGaius Mulley11-30/+120
cc1gm2 generates an error: control reaches end of non-void function when compiling Termbase.mod if -Werror=return-type is present. ../gcc/m2/gm2-libs-pim/Termbase.mod: In function 'Termbase_KeyPressed': ../gcc/m2/gm2-libs-pim/Termbase.mod:128:1: error: control reaches end of non-void function [-Werror=return-type] 128 | END KeyPressed ; | ^~~ This occurs as cc1gm2 does skips over the <* noreturn *> attribute. This patch records the <* noreturn *> attribute in the m2 symbol table and later on sets TREE_THIS_VOLATILE when creating the function decl. The patch also contains a fix for the main scaffold which also omitted a return 0 after the exception handler code. gcc/m2/ChangeLog: * gm2-compiler/M2GCCDeclare.mod: Import IsProcedureNoReturn. (DeclareProcedureToGccWholeProgram): New variable declared and set returnType. Pass returnType to BuildEndFunctionDeclaration. Extra parameter IsProcedureNoReturn passed to BuildEndFunctionDeclaration. * gm2-compiler/M2Quads.mod (BuildM2MainFunction): Correct scaffold comment and add extra return 0. * gm2-compiler/P2Build.bnf: Import BuildNoReturnAttribute. (ProcedureHeading): Process EndBuildFormalParameters before parsing AttributeNoReturn. (DefProcedureHeading): Process EndBuildFormalParameters before parsing AttributeNoReturn. (AttributeNoReturn): Call BuildNoReturnAttribute. * gm2-compiler/P2SymBuild.def (BuildNoReturnAttribute): New procedure. * gm2-compiler/P2SymBuild.mod (BuildNoReturnAttribute): New procedure. * gm2-compiler/SymbolTable.def (PutProcedureInline): Corrected comment. (PutProcedureNoReturn): New procedure. (IsProcedureNoReturn): New procedure function. * gm2-compiler/SymbolTable.mod (SymProcedure): IsNoReturn new field. (MakeProcedure): Initialize IsNoReturn to FALSE. (PutProcedureNoReturn): New procedure. (IsProcedureNoReturn): New procedure function. * gm2-gcc/m2decl.cc (m2decl_BuildEndFunctionDeclaration): Add extra parameter isnoreturn. Set TREE_THIS_VOLATILE to isnoreturn. * gm2-gcc/m2decl.def (BuildEndFunctionDeclaration): Add extra parameter isnoreturn. * gm2-gcc/m2decl.h (m2decl_BuildEndFunctionDeclaration): Add extra parameter isnoreturn. * gm2-gcc/m2except.cc (m2except_InitExceptions): Change all function decl to pass an extra parameter isnoreturn. gcc/testsuite/ChangeLog: * gm2/warnings/returntype/fail/badreturn.mod: New test. * gm2/warnings/returntype/fail/warnings-returntype-fail.exp: New test. * gm2/warnings/returntype/pass/Termbase.mod: New test. * gm2/warnings/returntype/pass/goodreturn.mod: New test. * gm2/warnings/returntype/pass/keypressedsimple.mod: New test. * gm2/warnings/returntype/pass/warnings-returntype-pass.exp: New test. Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
2023-01-26Fix comment so that /* does not appear inside a comment.Gaius Mulley1-2/+2
The block comment in m2.flex associated with splitSlashStar contains /* which causes a warning. This patch obfuscates the comment /* symbols. * m2.flex (splitSlashStar): Fix comment so that /* does not appear inside the comment. Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
2023-01-26Modula-2: Remove debug code [PR108553].Iain Sandoe1-5/+2
Remove debugging code accidentally left in place in r13-5373-g80cf2c5e8f496b. Signed-off-by: Iain Sandoe <iain@sandoe.co.uk> PR modula2/108553 gcc/m2/ChangeLog: * gm2-lang.cc (gm2_langhook_init_options): Remove debug code.
2023-01-26PR-108135 Remove PACKAGE_* definitions from gm2config.hGaius Mulley7-25/+39
PR-108135 gcc/m2/configure generates gm2config.h and automatically adds PACKAGE defines. gcc/m2/Make-lang.in now removes these PACKAGE definitions. The patch also contains fixes to remove an unused variable Dim from BuildConstHighFromSym and also uses withTok in StartBuildWith. StartBuildWith will generate a nop (for improved debugging) if requested. gcc/m2/ChangeLog: * Make-lang.in (m2/gm2config.h): Rewrite rule to be dependent upon m2/gm2config.aci. (m2/gm2config.aci): Newrule. * configure.ac (AC_CONFIG_HEADERS): Change destination to gm2config.aci. * configure: Regenerate. * gm2-libs/config-host: Regenerate. * gm2-compiler/M2GCCDeclare.mod (AddSymToWatch): Comment out. * gm2-compiler/M2Quads.mod (BuildConstHighFromSym): Remove Dim. (StartBuildWith): Call BuildStmtNoteTok. (BuildStmtNoteTok): New procedure. (BuildStmtNote): Re-implement re-factor into two procedures and call BuildStmtNoteTok. * gm2config.h.in: Remove. * gm2config.aci.in: New file. Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
2023-01-26Daily bump.GCC Administrator1-0/+38
2023-01-25modula-2: Fixes for preprocessing [PR102343, PR108182].Iain Sandoe11-225/+618
Modula-2 uses the C preprocessor to implement handling for conditional code and macros. However, this is not done directly, because the process is applied recursively to imported definitions and modules. The cc1gm2 executable records the parameters as a template command line needed to create a composite 'cc1 -E' for each file to be preprocessed starting with the main file from the original command line. This patch fixes the capture of the C preprocessor template to include the target information needed for correct multilib operation. In order to match the existing semantics of '-E, -M and -MM' these have to be handled as a 'pre-processor only' job (i.e. the recursion is omitted and only the main file is processed). Whereas C-family front ends always pre-process, Modula-2 only does so when specifically requested (via the -fcpp option). '-MD, -MMD and -MQ' also require special handling, since (in principle) these options can be applied to any command line (with -fcpp) providing dependency information as a by-product. TODO: the preprocessor is not able to determine def and mod dependencies for Modula-2 and so the output of this only shows the object to module dep. We should be able to append the .def and .mod dependencies. The patch amends save-temps handling to cater for the preprocessor recursion and to avoid writing saved files into the source directories. The patch changes the extension for Modula-2 preprocessed source to .m2i to avoid clashes with .i. The main driver code is amended to add default handlers for .mod and .m2i so that a useful error message will be emitted if the Modula-2 compiler is not built-in. The compiler will now also handle code generation from a .m2i preprocessed source. TODO: We should not need to pass the '-c' option to the compiler to alter the processing of init code. Signed-off-by: Iain Sandoe <iain@sandoe.co.uk> PR modula2/102343 PR modula2/108182 gcc/ChangeLog: * gcc.cc: Provide default specs for Modula-2 so that when the language is not built-in better diagnostics are emitted for attempts to use .mod or .m2i file extensions. gcc/m2/ChangeLog: * gm2-compiler/M2Comp.mod: Early exit for pre-processor-only jobs. * gm2-compiler/M2Options.def (SetPPOnly, GetPPOnly, SetMD, GetMD, SetMMD, GetMMD, SetMQ, GetMQ, SetObj, GetObj, SetDumpDir, GetDumpDir):New. * gm2-compiler/M2Options.mod:(SetPPOnly, GetPPOnly, SetMD, GetMD, SetMMD, GetMMD, SetMQ, GetMQ, SetObj, GetObj, SetDumpDir, GetDumpDir):New. * gm2-compiler/M2Preprocess.def (PreprocessModule): Add flag to indicate the main file. * gm2-compiler/M2Preprocess.mod: Handle Preprocess-only jobs, handle MD, MMD and MQ options. * gm2-gcc/m2options.h (M2Options_SetPPOnly, M2Options_GetPPOnly, M2Options_SetDumpDir, M2Options_SetMD, M2Options_GetMD, M2Options_SetMMD, M2Options_GetMMD, M2Options_SetMQ, M2Options_GetMQ, M2Options_SetObj, M2Options_GetObj): New. * gm2-gcc/m2type.cc (m2type_InitBaseTypes): Early exit for pre- processor-only jobs. * gm2-lang.cc (gm2_langhook_init): Handle preprocess-only commands. (gm2_langhook_option_lang_mask): Claim C and Driver options so that we can intercept them for building pre-processor commands. (gm2_langhook_init_options): Collect the preprocessor line here. Save options that have different actions for preprocessor and compile commands. (gm2_langhook_handle_option): Only handle the modula-2 options here. (gm2_langhook_post_options): Do not create a back-end for pre- processor-only jobs. * gm2spec.cc (lang_specific_driver): Ignore PCH options, append a scaffold-main for cases where we are building a main module with -c. * lang-specs.h: Revise to handle preprocessor-only jobs and to consume pre-processed files. * lang.opt: Remove Driver and C options copies (we claim these separately).
2023-01-25Daily bump.GCC Administrator1-0/+55
2023-01-24Introduce new module to create search paths of dynamic strings.Gaius Mulley9-147/+429
Introduce a simple DynamicStringPath module to allow the front end to create and modify a search path from dynamic strings. gcc/m2/ChangeLog: * Make-lang.in (GM2-COMP-BOOT-DEFS): Add DynamicStringPath.def. (GM2-COMP-BOOT-MODS): Add DynamicStringPath.mod. (GM2-COMP-DEFS): Add DynamicStringPath.def. (GM2-COMP-MODS): Add DynamicStringPath.mod. ($(objdir)/m2/gm2-libs-min/SYSTEM.def): Split path into multiple -I components. ($(objdir)/m2/gm2-libs/SYSTEM.def): Ditto. ($(objdir)/m2/gm2-libs-coroutines/SYSTEM.def): Ditto. * gm2-compiler/M2Options.mod: Import DynamicStringPath. (SetSearchPath): Reimplement using DynamicStringPath procedures. * gm2-compiler/M2Search.def (InitSearchPath): Remove. (PrependSearchPath): Remove. * gm2-compiler/M2Search.mod (SFIO): Remove import. (DynamicStringPath): Add import. (Directory): Remove. (UserPath): Remove. (InitialPath): Remove. (InitSearchPath): Remove. (PrependSearchPath): Remove. (FindSourceFile): Re-implement. (FindSourceDefFile): Re-implement. (FindSourceModFile): Re-implement. * gm2-gcc/init.cc (_M2_DynamicStringPath_init): New prototype. (init_FrontEndInit): Call _M2_DynamicStringPath_init. * tools-src/makeSystem: Allow multiple -I paths. * gm2-compiler/DynamicStringPath.def: New file. * gm2-compiler/DynamicStringPath.mod: New file. * gm2-gcc/m2options.h (M2Options_SetMakeIncludePath): Add prototype. Co-Authored by: Iain Sandoe <iain@sandoe.co.uk> libgm2/ChangeLog: * libm2cor/Makefile.am (SYSTEM.def): Split path into multiple -I components. * libm2cor/Makefile.in: Rebuild. * libm2min/Makefile.am (SYSTEM.def): Split path into multiple -I components. * libm2min/Makefile.in: Rebuild. * libm2iso/Makefile.am (SYSTEM.def): Split path into multiple -I components. * libm2iso/Makefile.in: Rebuild. Co-Authored by: Iain Sandoe <iain@sandoe.co.uk> Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
2023-01-24Change m2 lexical analysis to optionally consume C comments.Gaius Mulley1-1/+69
This patch allows a subsequent patch to turn on/off the consuming of C comments. gcc/m2/ChangeLog: * m2.flex (cpreprocessor): Add temporary variable which is initialized to 0. (commentCLevel): New variable. (endOfCComment): New function. (splitSlashStar): New function to split /* into / and * tokens. (COMMENTC): New flex state. ("/*"): New rule to test whether we should treat /* as a single token or as two tokens. (<COMMENTC>.): New rule to skip a character. (<COMMENTC>\n.*): New rule to consume the line. (<COMMENTC>"*/"): New rule to call endOfCComment. Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
2023-01-24Bugfix ensure RTentity is a dependent of RTco.ccGaius Mulley1-1/+3
RTco is a definition for C module and therefore there is no RTco.mod. The RTco.cc uses RTentity and the import in RTco.def ensures that cc1gm2 can build a graph of all dependencies should -fscaffold-static be used. gcc/m2/ChangeLog: * gm2-libs-iso/RTco.def: Import RTentity. Declare RTco as a definition for C module. Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
2023-01-24Daily bump.GCC Administrator1-0/+39
2023-01-23modula-2, driver, Front end: Revise handling of I and L paths [PR108182].Iain Sandoe5-270/+304
The adds the includes in the FE as done in other GCC languages. It also revises the library handling to avoid additional -L options from hiding LIBDIR. For the include/import paths as presented to the front end initialisation, we capture them and then arrange to emit the 'standard library' paths in the same order as specified for C. The specs are tidied up. The use of the internal prefix also fixes searching in a relocated compiler. Signed-off-by: Iain Sandoe <iain@sandoe.co.uk> PR modula2/108182 PR modula2/108480 gcc/m2/ChangeLog: * Make-lang.in: Pass libsubdir to the language init build. * gm2-lang.cc (INCLUDE_VECTOR): Define. (add_one_import_path): New. (add_m2_import_paths): New. (gm2_langhook_post_options): Arrange to add the include paths (and add the system ones) in the same order as C uses. * gm2spec.cc (build_archive_path): Remove. (add_default_combination): Remove. (add_default_archives): Remove. (add_default_libs): We no longer need a '-L' option, just emit the -l and each library in use. (build_include_path): Remove. (add_include): Remove. (add_default_includes): Remove. (library_installed): Remove. (check_valid_library): Remove. (check_valid_list): Remove. (convert_abbreviation): Diagnose unhandled cases. (lang_specific_driver): Skip options where we will add back a validated version. * lang-specs.h (M2CPP): Reformat, append %I when -fcpp is not in use. Revise the cc1gm2 spec to omit mentioning options that are handled in the c pre-processor line. * lang.opt: Allow preprocessing and path options as input to the cc1gm2 invocation, so that they can be passed to the preprocessor invocation.
2023-01-23modula-2: Fix stack size request in initPreemptive [PR108405]Iain Sandoe1-1/+4
As noted in the PR, the problem is that we make a request for additional stack that violates the constraints on some systems. This patch chooses a value that is divisible by common OS page sizes. TODO: the user value should be checked and then an exception thrown if it is not suitable. Signed-off-by: Iain Sandoe <iain@sandoe.co.uk> PR modula2/108405 gcc/m2/ChangeLog: * gm2-libs-iso/Preemptive.mod (initPreemptive): Use a value for extra space that is divisible by common OS pagesizes.
2023-01-21Daily bump.GCC Administrator1-0/+36
2023-01-20PR-108136 modula-2 meets cppcheck part 2Gaius Mulley8-13/+9
R-108136 modula-2 meets cppcheck part 2 This patch addresses the style warnings mentioned in the PR. The array high style fixes to mc/keyc.mod and gm2-libs/M2Dependent.mod provoke a rebuild of pge and mc. gcc/m2/ChangeLog: * gm2-libs/Args.mod (GetArg): Check index before accessing array. * gm2-libs/M2Dependent.mod (toCString): Check index before accessing array. * mc-boot/GArgs.c: Rebuilt. * mc-boot/GM2Dependent.c: Rebuilt. * mc-boot/Gkeyc.c: Rebuilt. * mc/keyc.mod (seenUIntMin): Initialize once. (seenUIntMax): Initialize once. (checkLimits): Only test seenUIntMin and seenUIntMax once. * pge-boot/GArgs.c: Rebuilt. * pge-boot/GM2Dependent.c: Rebuilt. Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
2023-01-20PR-108135 Modula2 meets clang (remove dead code and bugfix m2.flex)Gaius Mulley16-131/+164
These patches fix warnings (and a bug) discovered by clang. The patch set looks longer than the changes as pge and mc needed to be rebuilt (due to a change in the gcc/m2/gm2-libs/DynamicString.mod library). gcc/m2/ChangeLog: * gm2-gcc/m2statement.cc (gm2_gimplify_function_node): Remove. * gm2-libs/DynamicStrings.mod (Equal): Remove dead code. * m2.flex (<COMMENT>"<*"): Add {} for else statement. * m2pp.cc (hextree): Add conditional #ifdef DEBUGGING. * mc-boot/GDynamicStrings.c: Rebuild. * pge-boot/GDynamicStrings.c: Rebuild. * pge-boot/GFIO.c: Rebuild. * pge-boot/GIndexing.c: Rebuild. * pge-boot/GM2EXCEPTION.c: Rebuild. * pge-boot/GM2RTS.c: Rebuild. * pge-boot/GNameKey.c: Rebuild. * pge-boot/GPushBackInput.c: Rebuild. * pge-boot/GRTExceptions.c: Rebuild. * pge-boot/GStdIO.c: Rebuild. * pge-boot/GSymbolKey.c: Rebuild. * pge-boot/GSysStorage.c: Rebuild. Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
2023-01-18Daily bump.GCC Administrator1-0/+27
2023-01-17Obfuscate the copyright text in gcc/m2/mc/mcOptions.modGaius Mulley5-40/+131
Obfuscate the copyright text in gcc/m2/mc/mcOptions.mod so that the year change script does not attempt to modify the text. The year is determined at runtime and therefore the text requires no modification. The middle printf (C) can be replaced by a unicode character in the future. gcc/m2/ChangeLog: * mc-boot/GM2RTS.c: Rebuilt. * mc-boot/GM2RTS.h: Rebuilt. * mc-boot/Gdecl.c: Rebuilt. * mc-boot/GmcOptions.c: Rebuilt. * mc/mcOptions.mod (displayVersion): Split first printf into three components Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
2023-01-17PR-108404 M2RTS_Halt fails with a segvGaius Mulley4-33/+163
PR-108404 occurs because the C prototype does not match the Modula-2 procedure M2RTS_Halt. This patch provides a new procedure M2RTS_HaltC which avoids the C/C++ code from having to fabricate a Modula-2 string. gcc/m2/ChangeLog: * gm2-libs-iso/M2RTS.def (Halt): Parameter file renamed to filename. (HaltC): New procedure declaration. (ErrorMessage): Parameter file renamed to filename. * gm2-libs-iso/M2RTS.mod (Halt): Parameter file renamed to filename. (HaltC): New procedure implementation. (ErrorStringC): New procedure implementation. (ErrorMessageC): New procedure implementation. * gm2-libs/M2RTS.def (Halt): Parameter file renamed to filename. (HaltC): New procedure declaration. (ErrorMessage): Parameter file renamed to filename. * gm2-libs/M2RTS.mod (Halt): Parameter file renamed to filename. (HaltC): New procedure implementation. (ErrorStringC): New procedure implementation. (ErrorMessageC): New procedure implementation. libgm2/ChangeLog: * libm2iso/RTco.cc (_M2_RTco_fini): Call M2RTS_HaltC. (newSem): Call M2RTS_HaltC. (currentThread): Call M2RTS_HaltC. (never): Call M2RTS_HaltC. (defined): Call M2RTS_HaltC. (initThread): Call M2RTS_HaltC. (RTco_transfer): Call M2RTS_HaltC. * libm2iso/m2rts.h (M2RTS_Halt): Provide parameter names. (M2RTS_HaltC): New procedure declaration. Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
2023-01-17Daily bump.GCC Administrator1-0/+49
2023-01-16Remove YEAR const from mcOptions.mod and use result from timeGaius Mulley25-174/+286
This patch removes the hard coded constant YEAR and replaces its use by a call to a new procedure function getYear. It also emits a GPL v3 boilerplate. gcc/m2/ChangeLog: * mc-boot-ch/Glibc.c (libc_time): New function. (libc_localtime): New function. * mc-boot/GDynamicStrings.c: Regenerate. * mc-boot/GFIO.c: Regenerate. * mc-boot/GFormatStrings.c: Regenerate. * mc-boot/GIndexing.c: Regenerate. * mc-boot/GM2Dependent.c: Regenerate. * mc-boot/GM2EXCEPTION.c: Regenerate. * mc-boot/GPushBackInput.c: Regenerate. * mc-boot/GRTExceptions.c: Regenerate. * mc-boot/GRTint.c: Regenerate. * mc-boot/GStdIO.c: Regenerate. * mc-boot/GStringConvert.c: Regenerate. * mc-boot/GSysStorage.c: Regenerate. * mc-boot/Gdecl.c: Regenerate. * mc-boot/GmcComment.c: Regenerate. * mc-boot/GmcComp.c: Regenerate. * mc-boot/GmcDebug.c: Regenerate. * mc-boot/GmcMetaError.c: Regenerate. * mc-boot/GmcOptions.c: Regenerate. * mc-boot/GmcStack.c: Regenerate. * mc-boot/GnameKey.c: Regenerate. * mc-boot/GsymbolKey.c: Regenerate. * mc-boot/Gkeyc.c: Regenerate. * mc/decl.mod (putFieldRecord): Change NulName to NulKey and fix type comparision. * mc/mcOptions.mod (YEAR): Remove. (getYear): New procedure function. (displayVersion): Use result from getYear instead of YEAR. Emit boilerplate for GPL v3. (gplBody): Use result from getYear instead of YEAR. (glplBody): Use result from getYear instead of YEAR. Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
2023-01-16Detect errors when dereferencing an undeclared variable.Gaius Mulley1-3/+12
Attempting to dereference an undeclared variable will cause an ICE. Also attempting to pass an undeclared variable as an array of type will also cause an ICE. This patch detects both conditions and generates an appropriate error. gcc/m2/ChangeLog: * gm2-compiler/M2Quads.mod (AssignUnboundedVar): Check Type against NulSym and call MetaErrorT1 if necessary. (AssignUnboundedNonVar): Check Type against NulSym and call MetaErrorT1 if necessary. (BuildDesignatorPointer): Check Type1 against NulSym and call MetaErrorT1 if necessary. Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
2023-01-16Update gcc/m2/mc/mcOptions.mod copyright and datesGaius Mulley1-2/+2
Annual update of dates. Also change the GPL boilerplate emitted to GPL v3. gcc/m2/ChangeLog: * mc/mcOptions.mod (displayVersion): Change GPLv2 to GPLv3. (YEAR) set to 2023. Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
2023-01-16Update copyright years.Jakub Jelinek829-850/+850
2023-01-16Daily bump.GCC Administrator1-0/+21
2023-01-15Bugfix to allow testsuite/gm2/pim/pass/arraybool.mod to compile on ppc64leGaius Mulley5-51/+85
This bug is exposed on the ppc64le platform. The expression parser P3Build.bnf (and PHBuild.bnf) BuiltNot omitted to record the current token position on the quad stack. The patch changes all occurances of NEW to newBoolFrame to ensure that the tokenno recorded in the bool frame is set to a sensible value. BuildNot is fixed and improved to generate a virtual token recording the position of the subexpression. gcc/m2/ChangeLog: * gm2-compiler/M2LexBuf.mod (isSrcToken): Add block comment. Remove dead code. * gm2-compiler/M2Quads.def (BuildNot): Add notTokPos parameter. * gm2-compiler/M2Quads.mod (BuildNot): Add notTokPos parameter. Create and push virtual token. (PopBooltok): New procedure. (PushBooltok): New procedure. (PushBool): Re-implement using PushBooltok. (PopBool): Re-implement using PopBooltok. * gm2-compiler/P3Build.bnf (ConstFactor): Record token position of NOT. (Factor): Record token position of NOT. * gm2-compiler/PHBuild.bnf (ConstFactor): Record token position of NOT. (Relation): Push token position. (UnaryOrConstTerm): Push token position. (AddOperator): Push token position. (MulOperator): Push token position. Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
2023-01-15Daily bump.GCC Administrator1-0/+12
2023-01-13modula-2: Handle pass '-v' option to the compiler.Iain Sandoe3-1/+5
Somehow this setting had been missed, and we really need the verbose flag to enable useful debug output. Signed-off-by: Iain Sandoe <iain@sandoe.co.uk> gcc/m2/ChangeLog: * gm2-gcc/m2options.h (M2Options_SetVerbose): Export the function. * gm2-lang.cc: Handle OPT_v, passing it to the compiler. * lang-specs.h: Pass -v to cc1gm2.
2023-01-13PR-108136 Add return statement to mc-boot-ch/RTco.cc pge-boot/GRTco.ccGaius Mulley2-0/+2
Clang found an exit path from function with non-void return type that has missing return statement [missingReturn]. gcc/m2/ChangeLog: * mc-boot-ch/GRTco.c (RTco_select): Add return 0. * pge-boot/GRTco.c (RTco_select): Add return 0. Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
2023-01-11Daily bump.GCC Administrator1-0/+111
2023-01-10Adding missing dependencies to gcc/m2/Make-lang.inGaius Mulley1-2/+2
The dependency m2/gm2-libs/gm2-libs-host.h is missing from two m2/mc-boot rules. gcc/m2/ChangeLog: * Make-lang.in (m2/mc-boot/$(SRC_PREFIX)%.o): Add m2/gm2-libs/gm2-libs-host.h dependency. (m2/mc-boot-ch/$(SRC_PREFIX)%.o): Add m2/gm2-libs/gm2-libs-host.h dependency. Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
2023-01-10[PATCH, Modula2] PR-108142 Many empty directories created in the build directoryGaius Mulley3-125/+174
PR-108142 Modula-2 configure generates many subdirectories in the top build directory. This patch dynamically creates subdirectories under gcc/m2 if and when required. Bootstrapped on x86_64 gnu/linux, ok for master? gcc/m2/ChangeLog: * Make-lang.in (GM2_1): Change -B path to m2/stage1. ($(objdir)/m2/images/gnu.eps): Check and create dest dir if necessary. (gm2-libs.texi-check): Check and create dir m2/gm2-libs-pim, m2/gm2-libs-iso and m2/gm2-libs if necessary. ($(objdir)/m2/gm2-compiler-boot): Remove. ($(objdir)/m2/gm2-libs-boot): Remove. ($(objdir)/m2/gm2-libs-libiberty): Remove. ($(objdir)/m2/gm2-libiberty): Remove. ($(objdir)/m2/gm2-gcc): Remove. ($(objdir)/m2/gm2-compiler): Remove. ($(objdir)/m2/gm2-libs): Remove. ($(objdir)/m2/gm2-libs-iso): Remove. ($(objdir)/m2/gm2-libs-min): Remove. ($(objdir)/m2/gm2-compiler-paranoid): Remove. ($(objdir)/m2/gm2-libs-paranoid): Remove. ($(objdir)/m2/gm2-compiler-verify): Remove. ($(objdir)/m2/boot-bin): Remove. ($(objdir)/m2/gm2-libs-pim): Remove. ($(objdir)/m2/gm2-libs-coroutines): Remove. (stage1/m2): Remove. (stage2/m2): Remove. (stage3/m2): Remove. (m2.stageprofile): New rule. (m2.stagefeedback): New rule. (cc1gm2$(exeext)): Change dependent name. (m2/stage2/cc1gm2$(exeext)): Change dependent name. Check and create dest dir. (m2/stage1/cc1gm2$(exeext)): Check and create dest dir if necessary. (m2/gm2-gcc/%.o): Ditto. (m2/gm2-gcc/rtegraph.o): Ditto. (m2/gm2-gcc/$(SRC_PREFIX)%.h): Ditto. (m2/gm2-gcc/$(SRC_PREFIX)%.h): Ditto. (m2/mc-boot): Ditto. (m2/mc-boot-ch): Ditto. (m2/gm2-libs-boot): Ditto. (m2/gm2-compiler-boot): Ditto. (m2/gm2-compiler): Ditto. (m2/gm2-libiberty): Ditto. (m2/gm2-compiler): Ditto. (m2/gm2-libs-iso): Ditto. (m2/gm2-libs): Ditto. (m2/gm2-libs-min): Ditto. (m2/gm2-libs-coroutines): Ditto. (m2/boot-bin): Ditto. (m2/pge-boot): Ditto. (m2/pge-boot): Ditto. * Make-maintainer.in (m2/gm2-ppg-boot): Check and create dest dir if necessary. (m2): Ditto. (m2/gm2-ppg-boot): Ditto. (m2/gm2-pg-boot): Ditto. (m2/gm2-auto): Ditto. (m2/gm2-pg-boot): Ditto. (m2/gm2-pge-boot): Ditto. ($(objdir)/plugin): Ditto. ($(objdir)/m2/mc-boot-ch): Ditto. ($(objdir)/m2/mc-boot-gen): Ditto. (m2/boot-bin): Ditto. (m2/mc): Ditto. (m2/mc-obj): Ditto. ($(objdir)/m2/gm2-ppg-boot): Ditto. ($(objdir)/m2/gm2-pg-boot): Ditto. ($(objdir)/m2/gm2-pge-boot): Ditto. (m2/mc-boot-gen): Ditto. (m2/m2obj3): Ditto. (m2/gm2-libs-paranoid): Ditto. (m2/gm2-compiler-paranoid): Ditto. (m2/gm2-libs-paranoid): Ditto. (m2/gm2-compiler-paranoid): Ditto. (m2/gm2-libs-paranoid): Ditto. (m2/gm2-compiler-paranoid): Ditto. * config-lang.in (m2/gm2-compiler-boot): Remove mkdir. (m2/gm2-libs-boot): Ditto. (m2/gm2-ici-boot): Ditto. (m2/gm2-libiberty): Ditto. (m2/gm2-gcc): Ditto. (m2/gm2-compiler): Ditto. (m2/gm2-libs): Ditto. (m2/gm2-libs-iso): Ditto. (m2/gm2-compiler-paranoid): Ditto. (m2/gm2-libs-paranoid): Ditto. (m2/gm2-compiler-verify): Ditto. (m2/boot-bin): Ditto. (m2/gm2-libs-pim): Ditto. (m2/gm2-libs-coroutines): Ditto. (m2/gm2-libs-min): Ditto. (m2/pge-boot): Ditto. (plugin): Ditto. (stage1/m2): Ditto. (stage2/m2): Ditto. (stage3/m2): Ditto. (stage4/m2): Ditto. (m2/gm2-auto): Ditto. (m2/gm2-pg-boot): Ditto. (m2/gm2-pge-boot): Ditto. (m2/gm2-ppg-boot): Ditto. (m2/mc-boot): Ditto. (m2/mc-boot-ch): Ditto. (m2/mc-boot-gen): Ditto. Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
2023-01-10Daily bump.GCC Administrator1-0/+5
2023-01-09Subject: [committed, pushed, Modula2] Added missing dependency.Gaius Mulley2-396/+521
Add missing dependency m2/gm2config.h to the m2/pge-boot/%.o rules. Also regenerate gm2-libs/config-host with autoconf-2.69. gcc/m2/ChangeLog: * Make-lang.in (m2/pge-boot/%.o): Add m2/gm2config.h. * gm2-libs/config-host: Regenerate. Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
2023-01-08Daily bump.GCC Administrator1-0/+6
2023-01-07modula-2, libm2min: Declare abort and exit as expected.Iain Sandoe1-3/+3
The build is currently emitting a warning that abort() is declared differently from the built-in. This updates the declaration to match expectations. Signed-off-by: Iain Sandoe <iain@sandoe.co.uk> gcc/m2/ChangeLog: * gm2-libs-min/libc.c (abort): Update declaration to match the expected form, add no-return attribute. (exit): Add no-return attribute.
2023-01-06Daily bump.GCC Administrator1-0/+32
2023-01-05modula-2: Remove uses of scalb*() and significand*() [PR107631]Iain Sandoe7-71/+6
The scalb*() functions are obsolete in Posix from 2004 and removed in 2008. The significand*() functions are glibc-only and considered there to be obsolescent (not supported for types such as _Float128). We can remove them from Modula-2 since they are not required for ISO support, but we need to provide an implementation of significand* for the "fraction()" functions. PR modula2/107631 gcc/m2/ChangeLog: * gm2-gcc/m2builtins.cc: Remove scalb, scalbf, scalbl, significand, significandf, significandl. * gm2-libs/Builtins.def (significand): Likewise. * gm2-libs/Builtins.mod: Likewise. * target-independent/Builtins.texi: Likewise. * gm2-libs-iso/LowLong.mod: Implement fraction with scalbn*() and ilogb*(). * gm2-libs-iso/LowReal.mod: Likewise. * gm2-libs-iso/LowShort.mod: Likewise.
2023-01-05Add missing declarations to gcc/m2/gm2-libs-min/M2RTS.{def,mod}Gaius Mulley2-0/+16
This patch adds two missing procedures to gcc/m2/gm2-libs-min/M2RTS.{def,mod} required for linking. The patch also includes test code, changes to gcc/testsuite/lib/gm2.exp and an expect tcl script to test the min libraries. gcc/m2/ChangeLog: * gm2-libs-min/M2RTS.def (ConstructModules): New procedure declaration. (DeconstructModules): New procedure declaration. * gm2-libs-min/M2RTS.mod (ConstructModules): New procedure dummy implementation. (DeconstructModules): New procedure dummy implementation. gcc/testsuite: * lib/gm2.exp (gm2_init_minx): New procedure. (gm2_init_min): New procedure calls gm2_init_min with dialect flags. * gm2/link/min/pass/tiny.mod: New test case. * gm2/link/min/pass/link-min-pass.exp: New file. Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
2023-01-05modula-2, driver: Implement handling for -static-libgm2.Iain Sandoe2-1/+27
This was unimplemented so far. gcc/ChangeLog: * common.opt: Add -static-libgm2. * config/darwin.h (LINK_SPEC): Handle static-libgm2. * doc/gm2.texi: Document static-libgm2. * gcc.cc (driver_handle_option): Allow static-libgm2. gcc/m2/ChangeLog: * gm2spec.cc (lang_specific_driver): Handle static-libgm2. * lang.opt: Add static-libgm2.
2023-01-05modula-2, driver: Handle static-libstd++ for targets without static/dynamicIain Sandoe1-0/+5
The follows the pattern used in C++ and D drivers to pass -static-libstdc++ onto the target driver to allow spec substitution of static libraries. NOTE: The handling of Bstatic/dynamic and the possible use of static libgm2 libraries is unimplemented in this driver so far. Signed-off-by: Iain Sandoe <iain@sandoe.co.uk> gcc/m2/ChangeLog: * gm2spec.cc (lang_specific_driver): Pass -static-libstdc++ on to the target driver if the linker does not support Bstatic/dynamic.
2023-01-05Daily bump.GCC Administrator1-0/+19
2023-01-04modula-2: Fix registration of modules via constructors [PR108183].Iain Sandoe3-9/+6
This reworks the mechanism used for module registration to use init- time constructors. The order of registration is not important, the actual initialization dependency tree will be computed early in the execution (all that matters is that we have registered before that). This fixes a potential issue in which the external name known to the m2 system is of the form _M2_XXXXXX_ctor() but the C++ code was producing a static variable instance with the same name. Signed-off-by: Iain Sandoe <iain@sandoe.co.uk> PR modula2/108183 gcc/m2/ChangeLog: * gm2-libs-ch/UnixArgs.cc (_M2_UnixArgs_ctor): Rework to use an extern "C" function with 'constructor' attribute. * gm2-libs-ch/dtoa.cc (_M2_dtoa_ctor): Likewise. * gm2-libs-ch/ldtoa.cc (_M2_ldtoa_ctor): Likewise. libgm2/ChangeLog: * libm2cor/KeyBoardLEDs.cc (_M2_KeyBoardLEDs_ctor): Rework to use an extern "C" function with 'constructor' attribute. * libm2iso/ErrnoCategory.cc (_M2_ErrnoCategory_ctor): Likewise. * libm2iso/RTco.cc (_M2_RTco_ctor): Likewise. * libm2pim/Selective.cc (_M2_Selective_ctor): Likewise. * libm2pim/SysExceptions.cc (_M2_SysExceptions_ctor): Likewise. * libm2pim/UnixArgs.cc (_M2_UnixArgs_ctor): Likewise. * libm2pim/cgetopt.cc (_M2_cgetopt_ctor): Likewise. * libm2pim/dtoa.cc (_M2_dtoa_ctor): Likewise. * libm2pim/errno.cc (_M2_errno_ctor): Likewise. * libm2pim/ldtoa.cc (_M2_ldtoa_ctor): Likewise. * libm2pim/sckt.cc (_M2_sckt_ctor): Likewise. * libm2pim/termios.cc (_M2_termios_ctor): Likewise. * libm2pim/wrapc.c: Add a new line to the file end.
2023-01-04modula-2: Module registration constructors need to be visible [PR108259].Iain Sandoe1-1/+1
In the current design the main executable links explicitly to the module registration construtors that it uses. This means that they must be visible in shared libraries. PR modula2/108259 gcc/m2/ChangeLog: * gm2-gcc/m2decl.cc (m2decl_DeclareModuleCtor): Make module registration constructors visible.
2023-01-04modula-2, doc: Build dvi, ps and pdf doc in the gcc/doc directory.Iain Sandoe1-6/+10
This also uses the configured $(TEXI2DVI) and $(TEXI2PDF) to deal with those targets (since we cannot assume to know what the use might have installed). gcc/m2/ChangeLog: * Make-lang.in (dvi, ps, pdf): Build in the gcc/doc directory, also use the configured tools for texi -> dvi and texi -> pdf.
2023-01-02Daily bump.GCC Administrator1-0/+7
2023-01-01modula2: Ensure that module registration constructors are 'extern' [PR108183].Iain Sandoe1-0/+5
The symbols for module registration constructors need to be external or we get wrong code generated for targets that allow direct access to local symbol definitions. Signed-off-by: Iain Sandoe <iain@sandoe.co.uk> PR modula2/108183 gcc/m2/ChangeLog: * gm2-compiler/M2GCCDeclare.mod: Module registration constructors are externs to the builder of m2_link. Co-Authored-By: Gaius Mulley <gaiusmod2@gmail.com>
2023-01-01Daily bump.GCC Administrator1-0/+9