blob: d69b800e0328ab9e69ec1d9271e953a072c4c1bf [file] [log] [blame]
2018-07-30 Gaius Mulley <gaius.mulley@southwales.ac.uk>
* gm2/gm2spec.c: (fe_generate_option) do not duplicate the old
argument. free up a string after use. (build_include_path)
start the new string with a strcpy not strcat!
(insert_option) create a new vector with an extra entry.
(no_link) return a string which can be free'd.
(add_exec_name) return a string which can be free'd.
2018-07-18 Gaius Mulley <gaius.mulley@southwales.ac.uk>
* gm2/gm2spec.c: reformatted according to GNU coding standards.
2018-07-17 Gaius Mulley <gaius.mulley@southwales.ac.uk>
* gm2/gm2-compiler/ObjectFiles.mod: import ALLOCATE
and DEALLOCATE from Storage. Collect return results
from close and KillIndex.
* gm2/gm2spec.c: reformatted and tidied up code.
* gm2/gm2-libs/GetOpt.mod: remove declaration of PtrToInteger.
* gm2/gm2-libs/GetOpt.mod: corrected record/pointer reference.
2018-07-16 Gaius Mulley <gaius.mulley@southwales.ac.uk>
* gm2/bnf/gm2l.bnf: reformatted to gnu standards.
* gm2/el/gm2-mode.el: minor formatting change.
* gm2/gm2-libs/DynamicStrings.mod: reformatted to gnu standards.
* gm2/gm2-compiler/ObjectFiles.def: (New file).
2018-07-14 Gaius Mulley <gaius.mulley@southwales.ac.uk>
* gm2/Make-lang.in: remove the target configure scripts from
gm2/gm2-libs.
* gm2/configure: rebuilt.
* gm2/examples/callingC/Makefile.in: use multiple -I flags.
* gm2/examples/hello/Makefile.in: use multiple -I flags.
* gm2/gm2-compiler/gm2lcc.mod: reformatted. Archive
all object files, all Modula-2 objects and check for duplication.
* gm2/gm2-libs-ch/wrapc.c: remove unconfigured test for fileinode.
* gm2/gm2-libs/config-host: rebuilt.
* gm2/gm2-libs/config-target: removed.
* gm2/gm2-libs/gm2-libs-host.h.in: rebuilt.
* gm2/gm2-libs/gm2-libs-target.h.in: removed.
* gm2/gm2spec.c: reformatted. (add_env_option) New function.
(lang_specific_driver) call add_env_option.
* gm2/lang-specs.h: (lang_register_spec_functions) register
no_objects.
* gm2/patches/gcc/trunc/01-patches: rebuilt.
* gm2/patches/gcc/trunc/02-patches: rebuilt.
* gm2/patches/gcc/trunc/03-patches: rebuilt.
* gm2/patches/gcc/trunc/04-patches: rebuilt.
* gm2/patches/gcc/trunc/05-patches: rebuilt.
* gm2/patches/gcc/trunc/06-patches: rebuilt.
* gm2/patches/gcc/trunc/07-patches: rebuilt.
* gm2/patches/gcc/trunc/08-patches: rebuilt.
* gm2/patches/gcc/trunc/09-patches: rebuilt.
* gm2/patches/gcc/trunc/10-patches: rebuilt.
* testsuite/gm2/pim/run/pass/testaddr2.mod: reformatted.
* gm2/gm2spec.c: removed unused variable and reformatted.
* gm2/tools-src/makeversion: remove reference to config-target.in.
2018-07-10 Gaius Mulley <gaius.mulley@southwales.ac.uk>
* gm2/gm2-compiler/ObjectFiles.def: New file.
* gm2/gm2-compiler/ObjectFiles.mod: New file.
* gm2/Make-lang.in: added ObjectFiles to be built and linked
into the compiler and tools.
* gm2/gm2-compiler/gm2lcc.mod: use ObjectFiles to remember each
object file so duplicates are not accidentally linked both in
the Modula-2 link and command line list of objects. Much code
was tidied up.
* gm2/gm2-libs-ch/wrapc.c: (fileinode) New function.
* gm2/gm2-libs/libc.def: corrected dates.
* gm2/gm2-libs/wrapc.def: (fileinode) New procedure function.
* libgm2/libpim/wrapc.c: (fileinode) New function. Tidied up
formatting.
2018-07-07 Gaius Mulley <gaius.mulley@southwales.ac.uk>
* gm2/bnf/gm2l.bnf: import Verbose and use. (RegisterImport)
reformatted. (ScanSources) display the module name if Verbose.
(ScanArgs) handle long options and also concatenated arguments.
(-I, --verbose, --M2RTS).
* gm2/gm2-compiler/M2DriverOptions.mod: (CppArgument) New procedure
function. (ScanCppArgs) reformatted and also call CppArgument.
* gm2/gm2-compiler/M2Options.mod: updated dates.
* gm2/gm2-compiler/M2Preprocess.mod: reformatted and changed some of the
Verbose output.
* gm2/gm2-libs-ch/getopt.c: implement long options.
* gm2/gm2-libs/GetOpt.def: provide access to the long options in getopt.
* gm2/gm2-libs/GetOpt.mod: implement long option procedures necessary for getopt.
* gm2/gm2-libs/Storage.def: updated dates.
* gm2/gm2-libs/getopt.def: provide access to the long options in getopt.
* gm2/gm2.texi: corrected docuentation surrounding
* gm2/gm2spec.c: removed GM2IPATH and GM2OPATH temporarily and changed
all include and object paths to avoid using the ":" separator.
(which does not exist for -I). In turn this forces a reimplementation
of the GM2IPATH and GM2OPATH.
* gm2/lang-specs.h: changed all references to gm2l to use the GM2L macro.
Fixed many preprocessor invocation problems which occur when linking
an application which uses the preprocessor.
2018-07-02 Gaius Mulley <gaius.mulley@southwales.ac.uk>
* gm2/Make-lang.in: changes to build stage2/gm2/gm2l
* gm2/bnf/gm2l.bnf: remove FORWARD references.
* gm2/gm2-compiler/M2GenGCC.mod: (GetAddressOfUnbounded)
reformatted. (BuildHighFromStaticArray) bug fixes
and reformatted.
* gm2/gm2-libs/GetOpt.def: introduce long options.
* gm2/iso/run/pass/constructor2.mod: reformatted.
2018-06-27 Gaius Mulley <gaius.mulley@southwales.ac.uk>
* gm2/gm2-compiler/M2GenGCC.mod: (GetHighFromUnbounded)
check to see if the unbounded array has static array
data type and follow the dimension into the static array
to obtain the correct HIGH value.
(BuildHighFromStaticArray) New procedure function.
* gm2/gm2-compiler/M2Range.mod: add missing case clause.
2018-06-23 Gaius Mulley <gaius.mulley@southwales.ac.uk>
* gm2/el/g-mode.el: bug fixes to the m2-tag feature.
* gm2/el/g-mode.el: allow . before a type, keyword,
function and const.
2018-06-22 Gaius Mulley <gaius.mulley@southwales.ac.uk>
* gm2/el/g-mode.el: generate types and builtin functions
dependant upon the dialect chosen.
2018-06-21 Gaius Mulley <gaius.mulley@southwales.ac.uk>
* gm2/el/g-mode.el: fixed m2-tag (find declaration
understands the path and also works in algol keyword mode.
* gm2/el/g-mode.el: fixed visual parenthesis balancing.
* gm2/el/g-mode.el: removed some debugging statements.
2018-06-20 Gaius Mulley <gaius.mulley@southwales.ac.uk>
* gm2/el/g-mode.el: fixed traditional mode. Both algol
mode and traditional are now usable and user selectable.
2018-06-13 Gaius Mulley <gaius.mulley@southwales.ac.uk>
* gm2/el/g-mode.el: added ability to turn on/off
lowercase algol style keyword transformation.
Fixed compile-command.
* gm2/el/gm2-mode.el: renamed from g-mode.el.
Changed internal variables from g-mode- to m2-auto-.
2018-06-11 Gaius Mulley <gaius.mulley@southwales.ac.uk>
* gm2/el/g-mode.el: added defcustom declarations
and fixed some regexp bugs. Applied some defcustom
implementation features.
* gm2/el/g-mode.el: fixed electric END, ELSE and THEN.
Added more defcustoms.
* gm2/el/g-mode.el: added many more defcustoms. Also
tidied up code and also tightened up types and introduced
radio buttons for language choice. Use inbuilt booleans
for binary choices. Fixed key binding for DEL and
Backspace.
2018-06-08 Gaius Mulley <gaius.mulley@southwales.ac.uk>
* gm2/el/g-mode.el: interim checkin, keyword editing
complete (minus delete key).
2018-06-07 Gaius Mulley <gaius.mulley@southwales.ac.uk>
* gm2/el/g-mode.el: interim checkin.
* gm2/el/g-mode.el: another interim checkin in
the development of lowercase keywords.
2018-05-24 Gaius Mulley <gaius.mulley@southwales.ac.uk>
* gm2/gm2-gcc/m2expr.c: (BuildNotEqualToZero)
new function. (checkWholeNegateOverflow)
re-implemented and in the process fixed bug
and the test
testsuite/gm2/switches/check-all/run/fail/intrange5.mod
passes.
(m2expr_Build4LogicalAnd) New function.
* gm2/gm2-gcc/m2expr.c: renamed BuildLogicalAndIf
to BuildTruthAndIf and renamed BuildLogicalOrIf
to BuildTruthOrIf.
2018-05-23 Gaius Mulley <gaius.mulley@southwales.ac.uk>
* implement range checks on whole number multiply.
* gm2/gm2-compiler/M2GenGCC.mod: import BuildMultCheck.
Call CodeMultCheck in quadruple case statement.
(CodeMultChecked) New procedure. (CodeMultCheck)
New procedure.
* gm2/gm2-gcc/m2expr.c: (checkWholeNegateOverflow)
interm checkin. (checkWholeSubOverflow) corrected
comment. (m2expr_Build3LogicalAnd) New function.
(m2expr_Build4LogicalOr) New function.
(checkWholeMultOverflow) New function.
(checkWholeOverflow) New function.
(m2expr_BuildMultCheck) New function.
* gm2/gm2-gcc/m2expr.def: BuildMultCheck exported.
* gm2/gm2-gcc/m2expr.h: BuildMultCheck defined.
* gm2/gm2-gcc/m2expr.c: added missing semicolon.
2018-04-16 Gaius Mulley <gaius.mulley@southwales.ac.uk>
* gm2/Make-lang.in: changed the plugin directory to
plugin rather than gm2/plugin. Corrected .so typeos.
* gm2/gm2.texi: Semantic checking (New section).
* testsuite/gm2/iso/analysis/fail/gm2.exp: New file.
2018-04-14 Gaius Mulley <gaius.mulley@southwales.ac.uk>
* gm2/Make-lang.in: build plugin/m2rte.so and create
gm2/plugin directory.
* gm2/gm2-compiler/CLexBuf.mod: removed FORWARD prototype
definitions.
* gm2/gm2-compiler/M2ALU.mod: removed FORWARD prototype
definitions.
* gm2/gm2-compiler/M2AsmUtil.mod: removed FORWARD prototype
definitions.
* gm2/gm2-compiler/M2BasicBlock.mod: removed FORWARD prototype
definitions.
* gm2/gm2-compiler/M2BasicBlock.mod: removed FORWARD prototype
definitions.
* gm2/gm2-compiler/M2Batch.mod: removed FORWARD prototype
definitions.
* gm2/gm2-compiler/M2Const.mod: removed FORWARD prototype
definitions.
* gm2/gm2-compiler/M2Const.mod: removed FORWARD prototype
definitions.
* gm2/gm2-compiler/M2Depth.mod: removed FORWARD prototype
definitions.
* gm2/gm2-compiler/M2Lex.mod: removed FORWARD prototype
definitions.
* gm2/gm2-compiler/M2LexBuf.mod: removed FORWARD prototype
definitions.
* gm2/gm2-compiler/M2LexBuf.mod: removed FORWARD prototype
definitions.
* gm2/gm2-compiler/M2MetaError.mod: removed FORWARD prototype
definitions.
* gm2/gm2-compiler/M2MetaError.mod: removed FORWARD prototype
definitions.
* gm2/gm2-compiler/M2Optimize.mod: removed FORWARD prototype
definitions.
* gm2/gm2-compiler/M2Swig.mod: removed FORWARD prototype
definitions.
* gm2/gm2-compiler/NameKey.mod: removed FORWARD prototype
definitions.
* gm2/gm2-compiler/PCSymBuild.mod: removed FORWARD prototype
definitions.
* gm2/gm2-compiler/SymbolKey.mod: removed FORWARD prototype
definitions.
* gm2/gm2-compiler/SymbolTable.mod: removed FORWARD prototype
definitions.
* gm2/gm2-compiler/gm2lcc.mod: removed FORWARD prototype
definitions.
* gm2/gm2-compiler/gm2lgen.mod: removed FORWARD prototype
definitions.
* gm2/gm2-libs-ch/libc.c: removed FORWARD prototype
definitions.
* gm2/gm2-libs-coroutines/Debug.mod: removed FORWARD prototype
definitions.
* gm2/gm2-libs-coroutines/Debug.mod: removed FORWARD prototype
definitions.
* gm2/gm2-libs-min/libc.c: removed FORWARD prototype
definitions.
* gm2/gm2-libs/Args.mod: removed FORWARD prototype
definitions.
* gm2/gm2-libs/Args.mod: removed FORWARD prototype
definitions.
* gm2/gm2-libs/CmdArgs.mod: removed FORWARD prototype
definitions.
* gm2/gm2-libs/Debug.mod: removed FORWARD prototype
definitions.
* gm2/gm2-libs/DynamicStrings.mod: removed FORWARD prototype
definitions.
* gm2/gm2-libs/DynamicStrings.mod: removed FORWARD prototype
definitions.
* gm2/gm2-libs/FIO.mod: removed FORWARD prototype
definitions.
* gm2/gm2-libs/NumberIO.mod: removed FORWARD prototype
definitions.
* gm2/gm2-libs/PushBackInput.mod: removed FORWARD prototype
definitions.
* gm2/gm2-libs/RTExceptions.mod: removed FORWARD prototype
definitions.
* gm2/gm2-libs/Scan.mod: removed FORWARD prototype
definitions.
* gm2/gm2-libs/StrIO.mod: removed FORWARD prototype
definitions.
* gm2/gm2-libs/StrLib.mod: removed FORWARD prototype
definitions.
* gm2/gm2-libs/StringConvert.mod: removed FORWARD prototype
definitions.
* gm2/plugins/m2rte.c: renamed to gm2/plugin/m2rte.c.
* gm2/ulm-lib-gm2/std/RTExceptions.mod: removed FORWARD prototype
definitions.
2018-04-10 Gaius Mulley <gaius.mulley@southwales.ac.uk>
* gm2/Make-lang.in: build m2rte plugin, install m2rte plugin.
* gm2/gm2-compiler/M2Base.def: define new exception ExceptionReturn.
* gm2/gm2-compiler/M2Base.mod: implement new exception ExceptionReturn.
* gm2/gm2-compiler/M2Quads.mod: new call to InitReturnRangeCheck.
* gm2/gm2-compiler/M2Range.def: define InitReturnRangeCheck.
* gm2/gm2-compiler/M2Range.mod: (InitReturnRangeCheck),
(FoldReturn), (CodeReturn) New procedures.
* gm2/gm2-lang.c: detect -fno-m2-plugin option.
* gm2/gm2-libs-iso/M2RTS.def: ReturnException defined.
* gm2/gm2-libs-iso/M2RTS.mod: ReturnException implemented.
* gm2/gm2-libs/M2RTS.def: ReturnException defined.
* gm2/gm2-libs/M2RTS.mod: ReturnException implemented.
* gm2/gm2spec.c: detect -fno-m2-plugin and unset boolean if
present. Later insert the -fplugin=m2rte switch if plugins are true.
* gm2/lang-options.h: allow -fm2-plugin and -fno-m2-plugin.
* gm2/lang-specs.h: update dates.
* gm2/lang.opt: define -fm2-plugin and -fno-m2-plugin.
* gm2/m2pp.c: update dates.
* gm2/tools-src/makeSystem: use -fno-m2-plugin when creating system.
* gm2/ulm-lib-gm2/std/M2RTS.mod: ReturnException implemented.
* plugins/m2rte.c: New file.
2018-03-28 Gaius Mulley <gaius.mulley@southwales.ac.uk>
* gm2/bnf/m2-2.bnf: updated dates and trimmed end of
line spaces.
* gm2/bnf/m2-c.bnf: updated dates and trimmed end of
line spaces.
* gm2/gm2-compiler/M2Comp.mod: removed p2c forward
declarations.
* gm2/gm2-compiler/M2Quads.mod: (BuildRealFuncProcCall)
corrected comment title. Call SkipConst to skip over
a constant assigned to a procedure. Fixes a bug reported
by Michael Riedl <udo-michael.riedl@t-online.de>.
* gm2/gm2-compiler/P2SymBuild.mod: remove p2c
forward declarations.
* testsuite/gm2/iso/run/pass/constprocedure.mod:
New regression test to stress the bug reported (above).
* testsuite/gm2/iso/fail/constprocedure.mod: New
regression test to test standard functions are not
allowed to be referenced in a const expression.
(But they can be called).
2018-03-27 Gaius Mulley <gaius.mulley@southwales.ac.uk>
* gm2/el/g-mode.el: corrected dates and changed name
to help debugging.
* gm2/gm2-compiler/Indexing.mod: removed p2c related
comment.
* gm2/gm2-compiler/M2Error.mod: removed intemediate
record type as we are no longer bootstrapping using
p2c.
* gm2/gm2-compiler/M2GCCDeclare.mod: removed intemediate
record types as we are no longer bootstrapping using
p2c.
* gm2/gm2-compiler/M2Range.mod: removed intemediate
record type as we are no longer bootstrapping using
p2c.
* gm2/gm2-compiler/ppg.mod: removed intemediate
record types as we are no longer bootstrapping using
p2c.
2018-03-26 Gaius Mulley <gaius.mulley@southwales.ac.uk>
* gm2/gm2-lang.c: (gm2_langhook_type_for_mode) rewritten
(borrowed code from go-lang.c).
* gm2/gm2-compiler/M2Quads.mod: (BuildAdrFunction)
handle address of unbounded array and check the dimension
access.
2018-03-14 Gaius Mulley <gaius.mulley@southwales.ac.uk>
* gm2/gm2-compiler/SymbolTable.mod: (PutUnbounded)
ensure that all dimensions prior to the requested dimension
has an entry in the array. (NulSym is added).
* gm2/gm2-compiler/M2GCCDeclare.mod: (WalkFamilyOfUnbounded)
check that unbounded is not NulSym before calling unboundedp.
* gm2/gm2-compiler/M2Quads.mod: (UnboundedVarLinkToArray)
and (UnboundedNonVarLinkToArray) ensure that all
parameters to BuildAdrFunction propagate the array
and dimension operand stack.
Fixes bugs exposed in
testsuite/gm2/iso/run/pass/adrunbounded3.mod
2018-02-19 Gaius Mulley <gaius.mulley@southwales.ac.uk>
* gm2/gm2-compiler/M2Quads.mod: (AssignHighField)
check for ArraySym and use if actual parameter
has different number of dimensions to formal
parameter array.
* gm2/gm2-compiler/M2Quads.mod: (BuildConstHighFromSym)
only access the single dimension when building high
as the array will be referencing the desired dimension.
A temporary type will have been created.
2018-02-15 Gaius Mulley <gaius.mulley@southwales.ac.uk>
* gm2/gm2-compiler/M2GenGCC.mod: check and use lvalue op3
which points to the data for the unbounded quadruple.
2018-02-08 Gaius Mulley <gaius.mulley@southwales.ac.uk>
* gm2/gm2-compiler/M2Quads.mod: check open array actual
parameter which is indexed and check the dimension against
formal parameters.
2018-02-07 Gaius Mulley <gaius.mulley@southwales.ac.uk>
* gm2/Make-lang.in: added LDFLAGS to the link of mc.
2018-01-28 Gaius Mulley <gaius@gnu.org>
* gm2/bnf/mc-5.bnf: regenerated.
* gm2/mc-boot/GCmdArgs.c: regenerated.
* gm2/mc-boot/GFIO.c: regenerated.
* gm2/mc-boot/GStrIO.c: regenerated.
* gm2/mc-boot/GStringConvert.c: regenerated.
* gm2/mc-boot/Gdecl.c: regenerated.
* gm2/mc-boot/Gdecl.h: regenerated.
* gm2/mc-boot/GmcComp.c: regenerated.
* gm2/mc-boot/GmcLexBuf.c: regenerated.
* gm2/mc-boot/Gmcp1.c: regenerated.
* gm2/mc-boot/Gmcp2.c: regenerated.
* gm2/mc-boot/Gmcp3.c: regenerated.
* gm2/mc-boot/Gmcp4.c: regenerated.
* gm2/mc-boot/Gmcp5.c: regenerated.
* gm2/mc/decl.def: (addElseComments), (addIfEndComments),
(addWhileDoComment), (addWhileEndComment), (addRepeatComment),
(addUntilComment) defined and exported.
* gm2/mc/decl.mod: (commentPair) New record.
Used in funccallT, returnT, whileT, repeatT, ifT, elsifT,
assignmentT. (doAfterCommentC) New procedure.
(doReturnC) Use (doAfterCommentC).
(doAssignmentC) use (doAfterCommentC). (doIfC)
use (doAfterCommentC). (doRepeatC) use (doAfterCommentC).
(doWhileC) use (doAfterCommentC). (doFuncCallC) use
(doAfterCommentC). (addGenericBody) rewritten.
(addIfComments) rewritten. (addElseComments) New
procedure. (addIfEndComments) New procedure.
(addWhileDoComment) New procedure. (addWhileEndComment)
New procedure. (initPair) New procedure.
(addRepeatComment) New procedure.
(addUntilComment) New procedure.
* gm2/mc/mcLexBuf.mod: fixed an infinite loop bug hunting
for the next token on a buffer boundary case.
2018-01-26 Gaius Mulley <gaius@gnu.org>
* gm2/Make-lang.in: added extra commented definition for
bootstrapping under trunc.
* gm2/bnf/mc-1.bnf: changed comment interface.
* gm2/bnf/mc-2.bnf: removed unnecessary import.
* gm2/bnf/mc-5.bnf: rewritten the comment interface for
after and body comments.
* gm2/mc-boot/GCmdArgs.c: rebuilt.
* gm2/mc-boot/GDebug.c: rebuilt.
* gm2/mc-boot/GDynamicStrings.c: rebuilt.
* gm2/mc-boot/GFIO.c: rebuilt.
* gm2/mc-boot/GFormatStrings.c: rebuilt.
* gm2/mc-boot/GFpuIO.c: rebuilt.
* gm2/mc-boot/GIO.c: rebuilt.
* gm2/mc-boot/GIndexing.c: rebuilt.
* gm2/mc-boot/GM2EXCEPTION.c: rebuilt.
* gm2/mc-boot/GM2RTS.c: rebuilt.
* gm2/mc-boot/GM2RTS.h: rebuilt.
* gm2/mc-boot/GNumberIO.c: rebuilt.
* gm2/mc-boot/GRTExceptions.c: rebuilt.
* gm2/mc-boot/GRTint.c: rebuilt.
* gm2/mc-boot/GSFIO.c: rebuilt.
* gm2/mc-boot/GStorage.c: rebuilt.
* gm2/mc-boot/GStrIO.c: rebuilt.
* gm2/mc-boot/GStrLib.c: rebuilt.
* gm2/mc-boot/GStringConvert.c: rebuilt.
* gm2/mc-boot/GSysStorage.c: rebuilt.
* gm2/mc-boot/Gdecl.c: rebuilt.
* gm2/mc-boot/Gdecl.h: rebuilt.
* gm2/mc-boot/Gkeyc.c: rebuilt.
* gm2/mc-boot/Glibc.h: rebuilt.
* gm2/mc-boot/GmcComment.c: rebuilt.
* gm2/mc-boot/GmcComment.h: rebuilt.
* gm2/mc-boot/GmcComp.c: rebuilt.
* gm2/mc-boot/GmcComp.h: rebuilt.
* gm2/mc-boot/GmcError.c: rebuilt.
* gm2/mc-boot/GmcLexBuf.c: rebuilt.
* gm2/mc-boot/GmcLexBuf.h: rebuilt.
* gm2/mc-boot/GmcMetaError.c: rebuilt.
* gm2/mc-boot/GmcOptions.c: rebuilt.
* gm2/mc-boot/GmcPretty.c: rebuilt.
* gm2/mc-boot/GmcPrintf.c: rebuilt.
* gm2/mc-boot/GmcQuiet.c: rebuilt.
* gm2/mc-boot/GmcSearch.c: rebuilt.
* gm2/mc-boot/Gmcp1.c: rebuilt.
* gm2/mc-boot/Gmcp2.c: rebuilt.
* gm2/mc-boot/Gmcp3.c: rebuilt.
* gm2/mc-boot/Gmcp4.c: rebuilt.
* gm2/mc-boot/Gmcp5.c: rebuilt.
* gm2/mc-boot/GnameKey.c: rebuilt.
* gm2/mc-boot/GsymbolKey.c: rebuilt.
* gm2/mc-boot/Gvarargs.c: rebuilt.
* gm2/mc-boot/Gwrapc.h: rebuilt.
* gm2/mc/decl.def: (addCommentBody) New procedure.
(addCommentAfter) New procedure. (addIfComments)
New procedure. (makeCommentS) New procedure.
(getCommentCharStar) New procedure function.
(getContent) New procedure function.
(setProcedureComment) New procedure function.
(getProcedureComment) New procedure function.
(getAfterStatementComment) New procedure function.
(getInbodyStatementComment) New procedure function.
(isProcedureComment) New procedure function.
(isBodyComment) New procedure function.
(isAfterComment) New procedure function.
* gm2/mc/decl.mod: many alterations to allow per node
after and body comments.
* gm2/mc/keyc.mod: add free and malloc to the list of
names to avoid.
* gm2/mc/mc.flex: many alterations to allow per node
after and body comments.
* gm2/mc/mcComment.def: (commentDesc) New datatype.
(initComment) New procedure function. (addText)
New procedure. (getContent) New procedure function.
* gm2/mc/mcComment.h: updated with new interface.
* gm2/mc/mcComment.mod: (commentDesc) New datatype
implemented.
(initComment) New procedure function. (addText)
New procedure. (getContent) New procedure function.
* gm2/mc/mcComp.def: export getPassNo.
* gm2/mc/mcComp.mod: (getPassNo) New procedure function.
* gm2/mc/mcLexBuf.def: (getProcedureComment) New procedure
function. (getBodyComment) New procedure function.
(getAfterComment) New procedure function.
* gm2/mc/mcLexBuf.h: replicate .def functionality.
* gm2/mc/mcLexBuf.mod: (getProcedureComment) Implement new
procedure function. (getBodyComment) Implement new
procedure function.
2018-01-03 Gaius Mulley <gaius@gnu.org>
* gm2/gm2-compiler/M2GenGCC.mod: (BuildUnaryCheckProcedure)
imported. (BuildNegateCheck) imported. (CodeStatement)
use BuildNegateCheck. (CodeUnaryCheck) New procedure.
(CodeNegateChecked) New procedure.
* gm2/gm2-gcc/m2expr.c: (checkUnaryWholeOverflow) New
function. (m2expr_build_unary_op_check) New function.
(BuildEqualToZero) New function.
(checkWholeNegateOverflow) New function.
(BuildNegateCheck) New function. (BuildNegate)
reimplemented.
* gm2/gm2-gcc/m2expr.def: (BuildUnaryCheckProcedure)
Defined. (BuildNegateCheck) defined.
* gm2/gm2-gcc/m2expr.h: (BuildNegateCheck) added prototype.
2018-01-02 Gaius Mulley <gaius@gnu.org>
* gm2/gm2-compiler/M2GenGCC.mod: (CodeStatement) call
CodeAddChecked and call CodeSubChecked.
(CodeAddChecked) New procedure. (CodeSubChecked)
New procedure.
* gm2/gm2-compiler/M2Quads.mod: (BuildEndFor) suppress
overflow checking in the addition
of the loop variable. The explicit for loop check will
catch an overflow and this addition can overflow for
unsigned types counting down.
* gm2/gm2-gcc/m2expr.c: (BuildAddCheck) corrected
comments and strip results. (BuildSubCheck) corrected
comments and strip results.
* gm2/gm2-gcc/m2range.h: (New file).
* gm2/patches/gcc/trunc: (Regenerated).
2018-01-01 Gaius Mulley <gaius@gnu.org>
* gm2/gm2-compiler/M2GenGCC.mod: (CodeAddCheck) New procedure.
(CodeSubCheck) New procedure. (CodeBinaryCheck) New procedure.
Use CodeAddCheck and CodeSubCheck.
* gm2/gm2-compiler/M2Range.def: (GetMinMax) exported.
* gm2/gm2-gcc/m2expr.c: (BuildAddCheck) New function.
(BuildSubCheck) New function. (checkWholeAddOverflow)
parameters changed. (checkWholeSubOverflow) New function.
(checkWholeOverflow) updated parameters to include subrange min
and max. (build_binary_op_check) New function. (build_binary_op)
call build_binary_op_check.
* gm2/gm2-gcc/m2expr.def: (BuildBinCheckProcedure) New
definition. (BuildSubCheck) New procedure function.
(BuildAddCheck) New procedure function.
* gm2/gm2-gcc/m2expr.h: (BuildAddCheck) New prototype.
(BuildSubCheck) New prototype.
* gm2/gm2-compiler/M2GenGCC.mod: pass lowest into binop.
* gm2/gm2-gcc/m2expr.c: (BuildAddCheck) extra parameter lowest.
(BuildSubCheck) extra parameter lowest. Call build_binary_op
with extra parameter lowest. (BuildLessThanZero) New function.
(BuildGreaterThanZero) New function. (checkWholeAddOverflow)
extra parameter and use BuildLessThanZero and
BuildGreaterThanZero. (checkWholeSubOverflow)
extra parameter and use BuildLessThanZero and
BuildGreaterThanZero. (checkWholeOverflow) call
checkWholeAddOverflow and checkWholeSubOverflow with an extra
parameter.
* gm2/gm2-gcc/m2expr.def: (BuildBinCheckProcedure) extra
parameter. (BuildSubCheck) extra parameter lowest.
(BuildAddCheck) extra parameter lowest.
* gm2/gm2-gcc/m2expr.h: corrected prototype.