2016-12-31      Gaius Mulley <gaius@gnu.org>

	* gm2/gm2-gcc/m2builtins.c:  removed trailing spaces.  define_builtin
          (New procedure).  m2builtins_init use define_builtin to define
          internal (gimple) builtin BUILT_IN_TRAP.
	* gm2/gm2-gcc/m2except.c:  reformatted slightly.  Bugfix to do_throw
          to ensure that gm2_eh_int_type which is declared globally is
          unshared for each and every use.
	* gm2/gm2-gcc/m2expr.c:  corrected dates and removed trailing space.
	* gm2/gm2-gcc/m2statement.c:  Bugfix to allow nested functions to
          compile.  If a nested function is complete create a cgraph_node
	  (and it will be finalized later), else finalize_function now.
	* gm2/gm2builtins.c:  file changed (it is unused and will be purged).
	* gm2/gm2except.c:  file changed (it is unused and will be purged).

2016-12-29      Gaius Mulley <gaius@gnu.org>

	* gm2/gm2-compiler/M2Code.mod:  remove spaces and use StartGlobalContext
          and EndGlobalContext instead of InitGlobalContext.
	* gm2/gm2-gcc/m2top.c:  implement dummy procedures StartGlobalContext
          and EndGlobalContext.
	* gm2/gm2-gcc/m2top.def:  declare StartGlobalContext and
	  EndGlobalContext.
	* gm2/gm2-gcc/m2top.h:  declare StartGlobalContext and EndGlobalContext
          in the header.
	* gm2/gm2-lang.c:  (gm2_langhook_write_globals)  write all global
	  declarations and call finalize_compilation_unit.

2016-12-24      Gaius Mulley <gaius@gnu.org>

	* gm2/gm2-compiler/M2GenGCC.def:  GetHighFromUnbounded add location
          as the first parameter.
	* gm2/gm2-compiler/M2GenGCC.mod:  removed all forward declarations.
          Changed AddStatement to include a location first parameter.
          Change GetHighFromUnbounded to include a location first parameter.
          Change GetParamAddress to include a location first parameter.
          Change GetAddressOfUnbounded to include a location first parameter.
          Change BuildComponentRef to include a location first parameter.
          Removed commented code.
	* gm2/gm2-compiler/M2Range.mod:  changed all calls to the above
          to include the location parameter.
	* gm2-gcc/m2type.def:  changed AddStatement to include a location
	  first parameter.

2016-12-23      Gaius Mulley <gaius@gnu.org>

	* gm2/gm2-gcc/m2statement.c:  remove make_decl_rtl and use
          allocate_struct_function instead, assign DECL_SAVED_TREE (fndecl)
          to NULL_TREE.  Fixes to allow functions to be declared.
	* gm2/mc-boot/GStrIO.c:  rebuilt.
	* gm2/mc-boot/Gdecl.c:  rebuilt.
	* gm2/mc/decl.mod:  noIfElseChained (New procedure).  hasIfAndNoElse
	  use noIfElseChained to detect another dangling else bug.

2016-12-19      Gaius Mulley <gaius@gnu.org>

	* gm2/Make-lang.in:  build and link gm2l, gm2lcc using g++.
	* gm2/gm2-lang.c:  updated to reflect gcc-5.2.0 garbage collection
          of trees.
	* gm2/gm2-lang.h:  removed garbage collection info (moved into
          gm2-lang.c).
	* gm2/Make-lang.in:  add MC_LIBS to the library list when linking
          gm2l, gm2lcc, gm2lgen, gm2lorder and gm2m.
	* gm2/gm2-gcc/gcc-consolidation.h:  add conditional compilation
          to stop inclusion of gcc compiler internals if we are building
          a gm2tool program.
	* gm2/Make-lang.in:  remove h2def from being built.

2016-12-18      Gaius Mulley <gaius@gnu.org>

	* gm2/Make-lang.in:  create MC_LIBS and use them during link of
          cc1gm2.
 	* gm2/gm2-gcc/m2linemap.c:  use C style link symbols and correct
          prototype for StartFile.  Cast to char *.
	* gm2/gm2-gcc/m2linemap.h:  use __cplusplus rather than __GNUG__.
          move #include before defining EXTERN.
	* gm2/gm2-lang.c:  whitespace removal.
	* gm2/gm2-libs-ch/ldtoa.c:  removed #if surrounding _M2_ldtoa_init
          and _M2_ldtoa_finish.
	* gm2/m2.flex:  fixed to ensure external symbols are using C style.
          Use %option nounput to remove compiler warning.
	* gm2/mc-boot/Gdecl.c:  rebuilt.
	* gm2/mc/decl.mod:  bugfix, ensure that variables are declared as extern
	  when we are using getExtendedOpaque and if the variable is external.

2016-12-17      Gaius Mulley <gaius@gnu.org>

	* gm2/mc-boot/Gdecl.c:  rebuilt.
	* gm2/mc/decl.mod:  fixed bug regarding the expression type of an
          indirect funccall.  mc now builds all gm2 modules.

2016-12-16      Gaius Mulley <gaius@gnu.org>

	* gm2/Make-lang.in:  M2GCCDeclare.o dedicated rule.  mc-clean,
	  mc-maintainer mc-continue rules improved.
	* gm2/bnf/h2def.bnf:  removed usused import.
	* gm2/gm2-compiler/M2Base.mod:  remove unused global variables
	  and fixed typo (FloatS not SFloat).
	* gm2/gm2-compiler/M2GCCDeclare.mod:  changed none to norule.
	* gm2/gm2-compiler/P3SymBuild.mod:  remove unused local variables.
	* gm2/gm2-compiler/bnflex.mod:  EatChar new procedure.  Remove many
	  unused variables by using EatChar rather than ch := GetChar ().
	* gm2/mc-boot/Gdecl.c:
	* gm2/mc-boot/Gkeyc.c:
	* gm2/mc/decl.def:
	* gm2/mc/decl.mod:  write out subrange type, detect type address
          when emitting casts.  Work out arrayref type when more than
	  one dimension is used.
	* gm2/mc/keyc.mod:  avoid C++ keywords operator and complex.
	* gm2/mc-boot/Gdecl.c:  rebuilt.
	* gm2/mc/decl.mod:  detect an variable of an enumeration
          type in the INC/DEC.  Ensure that arrays can only be
	  complete if the type of the array has been emitted.

2016-12-14      Gaius Mulley <gaius@gnu.org>

	* gm2/Make-lang.in:  build cflex.c using the same rules as the
          m2flex.c.
	* gm2/c.flex:  include gm2-gcc/gcc-consolidation.h and use
          %option nounput to get a clean compilation with no warnings.
	  Declare linelen as unsigned int to avoid warnings.

2016-12-14      Gaius Mulley <gaius@gnu.org>

	* gm2/Make-lang.in:  changed flags when compiling cflex.c and
          M2Version.c
	* gm2/bnf/gm2l.bnf:  removed unused variable.  (SyntaxCheck)
          Removed unused variable.
	* gm2/gm2-compiler/M2DebugStack.mod:  (doNameLength) remove
          unused variable.  (doMaxInt) remove unused procedure function.
	* gm2/mc-boot/Gdecl.c:  rebuilt.
	* gm2/mc/decl.mod:  detect bitset in MAX/MIN and return ztype.
	  Add bitnumN to the list of completed types.

2016-12-12      Gaius Mulley <gaius@gnu.org>

	* gm2/Make-lang.in:  changed scaffold building rules
	  to use g++.
	* gm2/gm2-libs-ch/SysExceptions.c:  regenerated.
	* gm2/init/ppginit:  regenerated.
	* gm2/mc-boot-ch/Gmcrts.c:  regenerated.
	* gm2/mc-boot-ch/Gmcrts.h:  regenerated.
	* gm2/mc-boot/GASCII.h:  regenerated.
	* gm2/mc-boot/GArgs.h:  regenerated.
	* gm2/mc-boot/GAssertion.h:  regenerated.
	* gm2/mc-boot/GBreak.h:  regenerated.
	* gm2/mc-boot/GCOROUTINES.h:  regenerated.
	* gm2/mc-boot/GCmdArgs.h:  regenerated.
	* gm2/mc-boot/GDebug.h:  regenerated.
	* gm2/mc-boot/GDynamicStrings.c:  regenerated.
	* gm2/mc-boot/GDynamicStrings.h:  regenerated.
	* gm2/mc-boot/GEnvironment.h:  regenerated.
	* gm2/mc-boot/GFIO.c:  regenerated.
	* gm2/mc-boot/GFIO.h:  regenerated.
	* gm2/mc-boot/GFormatStrings.c:  regenerated.
	* gm2/mc-boot/GFormatStrings.h:  regenerated.
	* gm2/mc-boot/GFpuIO.h:  regenerated.
	* gm2/mc-boot/GIO.h:  regenerated.
	* gm2/mc-boot/GIndexing.h:  regenerated.
	* gm2/mc-boot/GM2EXCEPTION.c:  regenerated.
	* gm2/mc-boot/GM2EXCEPTION.h:  regenerated.
	* gm2/mc-boot/GM2RTS.c:  regenerated.
	* gm2/mc-boot/GM2RTS.h:  regenerated.
	* gm2/mc-boot/GMemUtils.h:  regenerated.
	* gm2/mc-boot/GNumberIO.h:  regenerated.
	* gm2/mc-boot/GPushBackInput.h:  regenerated.
	* gm2/mc-boot/GRTExceptions.c:  regenerated.
	* gm2/mc-boot/GRTExceptions.h:  regenerated.
	* gm2/mc-boot/GRTint.c:  regenerated.
	* gm2/mc-boot/GRTint.h:  regenerated.
	* gm2/mc-boot/GSArgs.h:  regenerated.
	* gm2/mc-boot/GSFIO.h:  regenerated.
	* gm2/mc-boot/GSYSTEM.h:  regenerated.
	* gm2/mc-boot/GSelective.h:  regenerated.
	* gm2/mc-boot/GStdIO.h:  regenerated.
	* gm2/mc-boot/GStorage.h:  regenerated.
	* gm2/mc-boot/GStrCase.h:  regenerated.
	* gm2/mc-boot/GStrIO.h:  regenerated.
	* gm2/mc-boot/GStrLib.h:  regenerated.
	* gm2/mc-boot/GStringConvert.c:  regenerated.
	* gm2/mc-boot/GStringConvert.h:  regenerated.
	* gm2/mc-boot/GSysExceptions.h:  regenerated.
	* gm2/mc-boot/GSysStorage.h:  regenerated.
	* gm2/mc-boot/GTimeString.h:  regenerated.
	* gm2/mc-boot/GUnixArgs.h:  regenerated.
	* gm2/mc-boot/Galists.h:  regenerated.
	* gm2/mc-boot/Gdecl.c:  regenerated.
	* gm2/mc-boot/Gdecl.h:  regenerated.
	* gm2/mc-boot/Gdtoa.h:  regenerated.
	* gm2/mc-boot/Gerrno.h:  regenerated.
	* gm2/mc-boot/Gkeyc.c:  regenerated.
	* gm2/mc-boot/Gkeyc.h:  regenerated.
	* gm2/mc-boot/Gldtoa.h:  regenerated.
	* gm2/mc-boot/Glibc.h:  regenerated.
	* gm2/mc-boot/Glibm.h:  regenerated.
	* gm2/mc-boot/Glists.h:  regenerated.
	* gm2/mc-boot/GmcComp.c:  regenerated.
	* gm2/mc-boot/GmcComp.h:  regenerated.
	* gm2/mc-boot/GmcDebug.h:  regenerated.
	* gm2/mc-boot/GmcError.h:  regenerated.
	* gm2/mc-boot/GmcFileName.c:  regenerated.
	* gm2/mc-boot/GmcFileName.h:  regenerated.
	* gm2/mc-boot/GmcLexBuf.h:  regenerated.
	* gm2/mc-boot/GmcMetaError.c:  regenerated.
	* gm2/mc-boot/GmcMetaError.h:  regenerated.
	* gm2/mc-boot/GmcOptions.c:  regenerated.
	* gm2/mc-boot/GmcOptions.h:  regenerated.
	* gm2/mc-boot/GmcPreprocess.h:  regenerated.
	* gm2/mc-boot/GmcPretty.c:  regenerated.
	* gm2/mc-boot/GmcPretty.h:  regenerated.
	* gm2/mc-boot/GmcPrintf.h:  regenerated.
	* gm2/mc-boot/GmcQuiet.h:  regenerated.
	* gm2/mc-boot/GmcReserved.h:  regenerated.
	* gm2/mc-boot/GmcSearch.h:  regenerated.
	* gm2/mc-boot/GmcStack.h:  regenerated.
	* gm2/mc-boot/GmcStream.h:  regenerated.
	* gm2/mc-boot/Gmcflex.h:  regenerated.
	* gm2/mc-boot/Gmcp1.h:  regenerated.
	* gm2/mc-boot/Gmcp2.h:  regenerated.
	* gm2/mc-boot/Gmcp3.h:  regenerated.
	* gm2/mc-boot/Gmcp4.h:  regenerated.
	* gm2/mc-boot/Gmcp5.h:  regenerated.
	* gm2/mc-boot/GnameKey.c:  regenerated.
	* gm2/mc-boot/GnameKey.h:  regenerated.
	* gm2/mc-boot/Gpth.h:  regenerated.
	* gm2/mc-boot/GsymbolKey.h:  regenerated.
	* gm2/mc-boot/Gtermios.h:  regenerated.
	* gm2/mc-boot/Gvarargs.c:  regenerated.
	* gm2/mc-boot/Gvarargs.h:  regenerated.
	* gm2/mc-boot/Gwlists.h:  regenerated.
	* gm2/mc-boot/Gwrapc.h:  regenerated.
	* gm2/mc/decl.mod:  change all external declarations as being
	  C declarations to provide linkage compatibility with C/M2.
	* gm2/tools-src/mklink.c:  allow the scaffold to be compiled
          with g++.
	* gm2/Make-lang.in:  MC_ARGS no longer include gm2/mc.  Use
          COMPILER rather than CC to compile gm2 related sources.
	  m2link uses --g++ on compiler related scaffolds.
	* gm2/c.flex:  remove reference to p2c.
	* gm2/gm2-compiler/ppg.mod:  increase MaxCodeHunkLength.
	* gm2/mc-boot-ch/GSYSTEM.c:  implement _finish function.
	* gm2/mc-boot-ch/Gerrno.c:  implement _finish function.
	* gm2/mc-boot/Gdecl.c:  rebuilt.
	* gm2/mc-boot/Gkeyc.c:  rebuilt.
	* gm2/mc/decl.mod:  detect and handle dangling else in an ELSIF.
	* gm2/mc/keyc.mod:  add try, catch and operator to the list of
	  unusable keywords.
	* gm2/tools-src/mklink.c:  New procedure (GenerateInitCalls),
          new procedure (GenerateFinishCalls) and new procedure
	  (GeneratePrototypes).

2016-12-06      Gaius Mulley <gaius@gnu.org>

	* gm2/Make-lang.in:  regenerated.
	* gm2/mc-boot/GCmdArgs.c:  regenerated.
	* gm2/mc-boot/GDebug.c:  regenerated.
	* gm2/mc-boot/GDynamicStrings.c:  regenerated.
	* gm2/mc-boot/GFIO.c:  regenerated.
	* gm2/mc-boot/GFormatStrings.c:  regenerated.
	* gm2/mc-boot/GIO.c:  regenerated.
	* gm2/mc-boot/GIndexing.c:  regenerated.
	* gm2/mc-boot/GStringConvert.c:  regenerated.
	* gm2/mc-boot/Gdecl.c:  regenerated.
	* gm2/mc-boot/Gkeyc.c:  regenerated.
	* gm2/mc-boot/GmcComp.c:  regenerated.
	* gm2/mc-boot/GmcOptions.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-boot/GnameKey.c:  regenerated.
	* gm2/mc/decl.mod:  fix bug in dangling else.
	* gm2/tools-src/mklink.c:  allow the link to occur with g++ and gcc.

2016-12-06      Gaius Mulley <gaius@gnu.org>

	* gm2/Make-lang.in:  improved verify rule.
	* gm2/bnf/mc-2.bnf:  fixed bug declaring variables of an enumerated type.
	* gm2/mc-boot/GArgs.c:  regenerated.
	* gm2/mc-boot/GCmdArgs.c:  regenerated.
	* gm2/mc-boot/GDynamicStrings.c:  regenerated.
	* gm2/mc-boot/GEnvironment.c:  regenerated.
	* gm2/mc-boot/GFIO.c:  regenerated.
	* gm2/mc-boot/GFormatStrings.c:  regenerated.
	* gm2/mc-boot/GIO.c:  regenerated.
	* gm2/mc-boot/GIndexing.c:  regenerated.
	* gm2/mc-boot/GM2EXCEPTION.c:  regenerated.
	* gm2/mc-boot/GM2RTS.c:  regenerated.
	* gm2/mc-boot/GPushBackInput.c:  regenerated.
	* gm2/mc-boot/GRTExceptions.c:  regenerated.
	* gm2/mc-boot/GRTint.c:  regenerated.
	* gm2/mc-boot/GSArgs.c:  regenerated.
	* gm2/mc-boot/GSFIO.c:  regenerated.
	* gm2/mc-boot/GStdIO.c:  regenerated.
	* gm2/mc-boot/GStorage.c:  regenerated.
	* gm2/mc-boot/GStrCase.c:  regenerated.
	* gm2/mc-boot/GStrIO.c:  regenerated.
	* gm2/mc-boot/GStrLib.c:  regenerated.
	* gm2/mc-boot/GStringConvert.c:  regenerated.
	* gm2/mc-boot/GSysStorage.c:  regenerated.
	* gm2/mc-boot/Galists.c:  regenerated.
	* gm2/mc-boot/Gdecl.c:  regenerated.
	* gm2/mc-boot/Gkeyc.c:  regenerated.
	* gm2/mc-boot/Glists.c:  regenerated.
	* gm2/mc-boot/GmcComp.c:  regenerated.
	* gm2/mc-boot/GmcError.c:  regenerated.
	* gm2/mc-boot/GmcFileName.c:  regenerated.
	* gm2/mc-boot/GmcLexBuf.c:  regenerated.
	* gm2/mc-boot/GmcMetaError.c:  regenerated.
	* gm2/mc-boot/GmcOptions.c:  regenerated.
	* gm2/mc-boot/GmcPreprocess.c:  regenerated.
	* gm2/mc-boot/GmcPretty.c:  regenerated.
	* gm2/mc-boot/GmcPrintf.c:  regenerated.
	* gm2/mc-boot/GmcSearch.c:  regenerated.
	* gm2/mc-boot/GmcStack.c:  regenerated.
	* gm2/mc-boot/GmcStream.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-boot/GnameKey.c:  regenerated.
	* gm2/mc-boot/GsymbolKey.c:  regenerated.
	* gm2/mc-boot/Gvarargs.c:  regenerated.
	* gm2/mc-boot/Gwlists.c:  regenerated.
	* gm2/mc/decl.mod:  fixed bugs in variables of enumerated type,
          multi-dimensional arrays and introduced runtime case
	  and return checking.

2016-12-02      Gaius Mulley <gaius@gnu.org>

	* gm2/Make-lang.in:  changed rules to include mc-boot-ch.
	* gm2/mc-boot-ch/Gmcrts.c:  regenerated.
	* gm2/mc-boot/GArgs.c:  regenerated.
	* gm2/mc-boot/GCmdArgs.c:  regenerated.
	* gm2/mc-boot/GDynamicStrings.c:  regenerated.
	* gm2/mc-boot/GEnvironment.c:  regenerated.
	* gm2/mc-boot/GFIO.c:  regenerated.
	* gm2/mc-boot/GFormatStrings.c:  regenerated.
	* gm2/mc-boot/GIO.c:  regenerated.
	* gm2/mc-boot/GIndexing.c:  regenerated.
	* gm2/mc-boot/GM2EXCEPTION.c:  regenerated.
	* gm2/mc-boot/GM2RTS.c:  regenerated.
	* gm2/mc-boot/GPushBackInput.c:  regenerated.
	* gm2/mc-boot/GRTExceptions.c:  regenerated.
	* gm2/mc-boot/GRTint.c:  regenerated.
	* gm2/mc-boot/GSArgs.c:  regenerated.
	* gm2/mc-boot/GSFIO.c:  regenerated.
	* gm2/mc-boot/GStdIO.c:  regenerated.
	* gm2/mc-boot/GStorage.c:  regenerated.
	* gm2/mc-boot/GStrCase.c:  regenerated.
	* gm2/mc-boot/GStrIO.c:  regenerated.
	* gm2/mc-boot/GStrLib.c:  regenerated.
	* gm2/mc-boot/GStringConvert.c:  regenerated.
	* gm2/mc-boot/GSysStorage.c:  regenerated.
	* gm2/mc-boot/Galists.c:  regenerated.
	* gm2/mc-boot/Gdecl.c:  regenerated.
	* gm2/mc-boot/Gkeyc.c:  regenerated.
	* gm2/mc-boot/Gkeyc.h:  regenerated.
	* gm2/mc-boot/Glists.c:  regenerated.
	* gm2/mc-boot/GmcComp.c:  regenerated.
	* gm2/mc-boot/GmcError.c:  regenerated.
	* gm2/mc-boot/GmcFileName.c:  regenerated.
	* gm2/mc-boot/GmcLexBuf.c:  regenerated.
	* gm2/mc-boot/GmcMetaError.c:  regenerated.
	* gm2/mc-boot/GmcOptions.c:  regenerated.
	* gm2/mc-boot/GmcPreprocess.c:  regenerated.
	* gm2/mc-boot/GmcPretty.c:  regenerated.
	* gm2/mc-boot/GmcPrintf.c:  regenerated.
	* gm2/mc-boot/GmcSearch.c:  regenerated.
	* gm2/mc-boot/GmcStack.c:  regenerated.
	* gm2/mc-boot/GmcStream.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-boot/GnameKey.c:  regenerated.
	* gm2/mc-boot/GsymbolKey.c:  regenerated.
	* gm2/mc-boot/Gvarargs.c:  regenerated.
	* gm2/mc-boot/Gwlists.c:  regenerated.
	* gm2/mc/decl.mod:  introduced runtime checking
	  for missing RETURN statements.
	* gm2/mc/keyc.def:  allow "Gmcrts.h" to be included.
	* gm2/mc/keyc.mod:  include "Gmcrts.h" if required.

2016-11-30      Gaius Mulley <gaius@gnu.org>

	* gm2/mc-boot/GDynamicStrings.c:  regenerated.
	* gm2/mc-boot/GFIO.c:  regenerated.
	* gm2/mc-boot/GIO.c:  regenerated.
	* gm2/mc-boot/GSFIO.c:  regenerated.
	* gm2/mc-boot/Gdecl.c:  regenerated.
	* gm2/mc-boot/GmcError.c:  regenerated.
	* gm2/mc-boot/GmcLexBuf.c:  regenerated.
	* gm2/mc-boot/GmcPreprocess.c:  regenerated.
	* gm2/mc-boot/GmcPrintf.c:  regenerated.
	* gm2/mc-boot/GmcStream.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-boot/GnameKey.c:  regenerated.
	* gm2/mc/decl.mod:  change empty statements from
	; to {} to avoid gcc compiler warning.  Fix parameter
	type cast for C++ parameter passing to type ADDRESS
	and other system types.

2016-11-29      Gaius Mulley <gaius@gnu.org>

	* gm2/mc-boot/GCmdArgs.c:  regenerated.
	* gm2/mc-boot/GDebug.c:  regenerated.
	* gm2/mc-boot/GDynamicStrings.c:  regenerated.
	* gm2/mc-boot/GDynamicStrings.c:  regenerated.
	* gm2/mc-boot/GFIO.c:  regenerated.
	* gm2/mc-boot/GFormatStrings.c:  regenerated.
	* gm2/mc-boot/GIndexing.c:  regenerated.
	* gm2/mc-boot/GStringConvert.c:  regenerated.
	* gm2/mc-boot/Gdecl.c:  regenerated.
	* gm2/mc-boot/GmcComp.c:  regenerated.
	* gm2/mc-boot/GmcOptions.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-boot/GnameKey.c:  regenerated.
	* gm2/mc/decl.mod:  (noIfElse)  New procedure function.  (hasIfElse)
          New procedure function.  (doIfC)  changed to issue braces to avoid
          a gcc warning.
	* gm2/mc-boot-ch:  New directory and files containing handbuilt
	  C and header files.

2016-11-24      Gaius Mulley <gaius@gnu.org>

	* gm2/Make-lang.in:  updated rules to build handbuilt modules to use
	  new path.  Attempt to build compiler using mc.
	* gm2/bnf/mc-3.bnf:  use putOptReturn rather than
	  putProcTypeOptReturn.
	* gm2/bnf/mc-4.bnf:  use putOptReturn rather than
	  putProcTypeOptReturn.
	* gm2/bnf/mc-5.bnf:  use putOptReturn rather than
	  putProcTypeOptReturn.
	* gm2/gm2-libs-ch/SysExceptions.c:  use header file gm2-libs-host.h.
	* gm2/gm2-libs-ch/dtoa.c:  use header file gm2-libs-host.h.
	* gm2/gm2-libs-ch/errno.c:  use header file gm2-libs-host.h.
	* gm2/gm2-libs-ch/ldtoa.c:  use header file gm2-libs-host.h.
	* gm2/gm2-libs-ch/termios.c:  use header file gm2-libs-host.h.
	* gm2/gm2-libs-ch/wrapc.c:  use header file gm2-libs-host.h.
	* gm2/gm2-libs/libc.def:  removed white space.
	* gm2/mc-boot/Gdecl.c:  rebuilt.
	* gm2/mc-boot/Gdecl.h:  rebuilt.
	* gm2/mc-boot/Gkeyc.c:  rebuilt.
	* gm2/mc-boot/Gkeyc.h:  rebuilt.
	* gm2/mc-boot/Gmcp3.c:  rebuilt.
	* gm2/mc-boot/GsymbolKey.c:  rebuilt.
	* gm2/mc-boot/Gwlists.c:  rebuilt.
	* gm2/mc-boot/Gwlists.h:  rebuilt.
	* gm2/mc/decl.def:  replace putProcTypeOptReturn with putReturnType.
	  New procedure putOptReturn.
	* gm2/mc/decl.mod:  implement putReturnType and putOptReturn.
          Fix bug in parameter declaration to use safe C names.
	  Also ensure that all variables are also safe from C names.
	* gm2/mc/keyc.def:  cnamen (New procedure function).  cp
	  (New procedure).
	* gm2/mc/keyc.mod:  implement cnamen (New procedure function).  cp
	  (New procedure).
	* gm2/mc/symbolKey.mod:  getSymKey returns NulKey if the tree is NIL.
	* gm2/mc/wlists.def:  replaceItemInList (New procedure).
	* gm2/mc/wlists.mod:  implement replaceItemInList.

2016-11-16      Gaius Mulley <gaius@gnu.org>

	* gm2/Make-lang.in:  New rules (mc-clean-libs) (mc-test)
          and (mc-help).
	* gm2/mc/decl.mod:  doInc, doDec, doIncDecCP (New procedures)
          which fix the pointer arithmetic in INC/DEC for C++.
	* gm2/mc-boot:  regenerated.

2016-11-15      Gaius Mulley <gaius@gnu.org>

	* gm2/Make-lang.in:  changes to mc rules so we use less
	  aggresive warning options for g++.
	* gm2/mc/decl.mod:  changes to the cpp backend to
	  implement casts.
	* gm2/mc-boot/GArgs.c:  regenerated.
	* gm2/mc-boot/GFIO.c:  regenerated.
	* gm2/mc-boot/Gdecl.c:  regenerated.

2016-11-11      Gaius Mulley <gaius@gnu.org>

	* updates for the shared library example pge.
	* gm2/examples/pge/Fractions.mod:  removed unnecessary spaces.
	* gm2/examples/pge/history.def:  major changes to history of collision.
	* gm2/examples/pge/history.mod:  major changes to history of collision.
	* gm2/examples/pge/roots.def:  new procedure function nearCoord.
	* gm2/examples/pge/roots.mod:  new procedure function nearCoord.
	* gm2/examples/pge/twoDsim.mod:  huge changes to include interpenetration
          testing.

2016-11-02      Gaius Mulley <gaius@gnu.org>

	* gm2/mc-boot/Gdecl.c:  regenerated.
	* gm2/mc/decl.mod:  generate a static_cast.  This fixes a
	  bug in the translation of Args.mod.

2016-11-01      Gaius Mulley <gaius@gnu.org>

	* gm2/gm2-gcc/m2linemap.h:  changed prototype of StartFile to
          use void * rather than char *.
	* gm2/m2.flex:  do not include p2c/p2c.h and m2linemap.h.

2016-10-20      Gaius Mulley <gaius@gnu.org>

	* gm2/examples/pge/MemStream.mod:  many changes and bug fixes to
	  shared library example.
	* gm2/examples/pge/MemStream.mod:  ditto.
	* gm2/examples/pge/NetworkOrder.mod:  ditto.
	* gm2/examples/pge/deviceIf.mod:  ditto.
	* gm2/examples/pge/examples/triangle.py:  ditto.
	* gm2/examples/pge/history.def:  ditto.
	* gm2/examples/pge/history.mod:  ditto.
	* gm2/examples/pge/pgeif.def:  ditto.
	* gm2/examples/pge/pgeif.mod:  ditto.
	* gm2/examples/pge/roots.def:  ditto.
	* gm2/examples/pge/roots.mod:  ditto.
	* gm2/examples/pge/twoDsim.def:  ditto.
	* gm2/examples/pge/twoDsim.mod:  ditto.
	* gm2/examples/pge/buffers.c:  ditto.
	* gm2/examples/pge/max2code.py:  fixed options.
	* gm2/examples/pge/mxmmaxima.py:  removed debugging trace.
	* gm2/examples/pge/mxmparser.py:  removed debugging trace.
	* gm2/examples/pge/mxmtree.py:  removed debugging trace.
	* gm2/examples/pge/pge.py:  huge number of changes.
	* gm2/examples/pge/pgeif.i:  changes to the python interface.
	* gm2/examples/pge/pgeplayback.py:  many bug fixes to allow
          single stepping.
	* gm2/examples/pge/pgepygame.py:  minor changes and removal
	  of spacing.

2016-10-03      Gaius Mulley <gaius@gnu.org>

	* gm2/Make-lang.in:  instruct mc to generate g++ compilient C code.
	* gm2/gm2-gcc/m2treelib.def:  remove multiple definition of
          get_set_field_rhs and import ADDRESS.
	* gm2/gm2.texi:  trimmed spaces.
	* gm2/m2.flex:  use __attribute__((unused)) in init/finish
	functions.
	* gm2/mc-boot:  rebuilt.
	* gm2/mc/decl.mod:  handle C char.  Strings of 1 character
          are encoded as C strings and also C chars.  (checkPtr)
          New procedure function.  (doExprCastC)  New procedure
          function.  init/finish functions all use __attribute__((unused)).
          (outCP) removed.
	* gm2/mc/mcOptions.mod:  fixed bug by rearranging order of option
	  processing.

2016-09-20      Gaius Mulley <gaius@gnu.org>

	* gm2/Make-lang.in:  removed all references to p2c.
          Use mc to build gm2 rather than p2c and replaced
          rules.  Also modified the list of the library modules
          required during bootstrapping gm2.  Many changes
	to all bootstrap rules.
	* gm2/gm2-libs-boot/SYSTEM.def:  removed file.
	* gm2/mc-boot/GAssertion.c:  rebuilt.
	* gm2/mc-boot/GDebug.c:  rebuilt.
	* gm2/mc-boot/GDynamicStrings.c:  rebuilt.
	* gm2/mc-boot/GDynamicStrings.c:  rebuilt.
	* gm2/mc-boot/GFIO.c:  rebuilt.
	* gm2/mc-boot/GFormatStrings.c:  rebuilt.
	* gm2/mc-boot/GIndexing.c:  rebuilt.
	* gm2/mc-boot/GNumberIO.c:  rebuilt.
	* gm2/mc-boot/GStdIO.c:  rebuilt.
	* gm2/mc-boot/Gdecl.c:  rebuilt.
	* gm2/mc-boot/Gkeyc.c:  rebuilt.
	* gm2/mc-boot/GmcComp.c:  rebuilt.
	* gm2/mc-boot/GmcError.c:  rebuilt.
	* gm2/mc-boot/GmcLexBuf.c:  rebuilt.
	* gm2/mc-boot/GmcMetaError.c:  rebuilt.
	* gm2/mc-boot/GmcPreprocess.c:  rebuilt.
	* gm2/mc-boot/GmcPrintf.c:  rebuilt.
	* gm2/mc-boot/GmcStack.c:  rebuilt.
	* gm2/mc-boot/GmcStream.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/Gvarargs.c:  rebuilt.
	* gm2/mc/Indexing.mod:  added assert.
	* gm2/mc/decl.mod:  fixed bug to allow comparison
	  of proctypes.
	* gm2/mc/mcMetaError.mod:  fixed bug to allow nameless
	  symbols to unalter the error string.

2016-09-19      Gaius Mulley <gaius@gnu.org>

	* gm2/Make-lang.in:  many new rules to deal with the
          bootstrapping of mc.
	* gm2/bnf/mc-3.bnf:  removed unnecessary imports.
	* gm2/bnf/mc-4.bnf:  implement NOT.
	* gm2/bnf/mc-5.bnf:  implement NOT and final body.

2016-09-05      Gaius Mulley <gaius@gnu.org>

	* gm2/Make-lang.in:  removal of Indexing.mod from
          the list of library files as it is included in the
          project files.  Many new rules to build the bootstrap
          version of mc.
	* gm2/gm2-libs-ch/Selective.c:  tidied up spacing.
	* gm2/gm2-libs-ch/UnixArgs.c:  tidied up spacing.
	* gm2/gm2-libs-ch/wrapc.c:  tidied up spacing.
	* gm2/mc-boot/libc.c:  deleted file.
	* gm2/mc-boot/Glibc.c:  new file.
	* gm2/mc-boot/GSelective.c:  new file.
	* gm2/mc-boot/Gmcrts.c:  new file.

2016-09-03      Gaius Mulley <gaius@gnu.org>

	* gm2/Make-lang.in:  tidied up spacing.
	* gm2/bnf/mc-1.bnf:  handle DEFINITION FOR "C".
	* gm2/mc/decl.def:  (putDefForC)  New procedure.
	* gm2/mc/decl.mod:  (putDefForC)  New procedure
          implemented.  (isDefForC)  New procedure function.
          (doIncludeC)  include mc-<module>.h for DEFINITION
          FOR "C".  Do not qualify names if they were defined
          in DEFINITION FOR "C" modules.  Also disable high
          parameter.  Disabled handling of DEFINITION FOR "C".
	* gm2/mc/keyc.mod:  added write, read, exit, abs,
	  optarg, div to the list of names to avoid.

2016-09-02      Gaius Mulley <gaius@gnu.org>

	* gm2/mc/decl.mod:  (out1) use safe type conversion
          from pointer into cardinal.  (gen) use safe type
          conversion from pointer into cardinal.
          (topologicallyOut) use populateTodo to ensure that
          all enumeration and constants are declared prior to
          the datatypes which depend upon them.  (dbgSubrange)
	  New procedure.

2016-08-31      Gaius Mulley <gaius@gnu.org>

	* gm2/Make-lang.in:  extra space introduced.
	* gm2/mc/decl.mod:  detect cyclic dependancy problem and
          issue appropriate error message and abort translation.
	* gm2/Make-lang.in:  specific rule to build
          gm2/mc-boot/$(SRC_PREFIX)decl.c
	* gm2/mc/decl.mod:  (doEnumerationField) use doFQDNameC
          instead of doFQNameC.  (doRecordNameC) New procedure.
          (doTypeNameC) use doRecordNameC.  (doPrototypeC) only
	  generate the prototype if the	procedure is not exported.
          (runIncludeDefConstType)  New procedure.
          (foreachModuleDo)  New procedure.  (walkArray) also walk
          the subr field.  (runSimplifyTypes)  New procedure.
          (runPrototypeExported)  New procedure.  (runPrototypeDefC)
          New procedure.  (outImpC) rewritten to fix bugs if
	  getExtendedOpaque was used.

2016-08-27      Gaius Mulley <gaius@gnu.org>

	* gm2/mc/decl.mod:  add cname field to enumerationfield.
          (makeEnumerationField)  Initialise cname field.
          (getFQDstring)  New procedure function.
          (doEnumC) use doFQDNameC.  (doFQDNameC)  New procedure
          function.  (topologicallyOut)  add debugging information.
	  57 out of 58 mc modules translate.

2016-08-25      Gaius Mulley <gaius@gnu.org>

	* gm2/bnf/mc-3.bnf:  process enumeration types and fields
          (as per pass 2).
	* gm2/mc/decl.mod:  (getNextEnum) assert enumerationField
          or enumeration type is returned.  (doLiteralC) detect
          and handle octal integer literals.
          (isStatementSequenceEmpty)  New procedure function.
          (isSingleStatement) rewritten and bug fixed.
          (containsStatement)  New procedure function.
          (noElse)  handle dangling else.  Also ignore empty
          else statements.  (doNewC)  use ALLOCATE rather than
          malloc.  (doFreeC)  use DEALLOCATE rather than free.
          (needsCast)  returns FALSE if C base types are the same.
	* gm2/mc/keyc.def:  (useStorage)  New procedure function.
	* gm2/mc/keyc.mod:  (useStorage)  Implement new procedure
          function.  (checkStorage) New procedure.  (genDefs)
	  call checkStorage.

2016-08-23      Gaius Mulley <gaius@gnu.org>

	* gm2/el/g-mode.el:  updated dates and also introduced
          dialect comment after the module name.  Currently
          hard wired to (*!m2pim*).
	* gm2/mc/decl.def:  added dialect comment.
	* gm2/mc/decl.mod:  added dialect comment.  Fixed bug in
          case statements which use ranges.
          Self translation of 54 of the 58 modules occur.
	* gm2/mc/decl.mod:  introduce cnameT for declarations
          which might conflict with C keywords.  Currently only
	  record fields use cnames.  55 of the 58 module translate.

2016-08-19      Gaius Mulley <gaius@gnu.org>

	* gcc/gm2/Make-lang.in:  included mcStream.def and
          mcStream.mod to be compiled and linked to produce mc.
	* gm2/init/mcinit:  updated link and init list to include
          mcStream.
	* gm2/mc/decl.mod:  many, many bug fixes which now allow
	  self translation of 53 of the 58 modules.

2016-08-16      Gaius Mulley <gaius@gnu.org>

	* gm2/Make-lang.in:  added mcStream.def and mcStream.mod
	  to the build list for mc.

2016-08-16      Gaius Mulley <gaius@gnu.org>

	* gm2/Make-lang.in:  added wrapc.def pth.def COROUTINES.def
          Selective.def termios.def to be translated by mc as part
          of mc-autogen.  Added rules to translate iso libraries
	  from M2 to C using mc.
	* gm2/mc/decl.mod:  added halt node.  (doEscape) New procedure
          function.  (doStringC) add escape to the escape character if
          inside a string literal.  (addExported) corrected test prior
          to addToDo.  (includeDefVarProcedure)  include variables and
          types symbols if they are defined in definition modules.
          (doFuncUnbounded) include cast for parameter and use
          doFQNameC for the parameter name rather than call doExprC
          since doExprC will dereference a VAR paramater and we must
          pass it as declared.  (doAdrExprC)  New procedure function
          which is used to catch & (*p) and simply it to (p).  (doHalt)
	  New procedure.

2016-08-05      Gaius Mulley <gaius@gnu.org>

	* gm2/Make-lang.in:  translate autogenerated modules without
	  the --extended-opaque option.
	* gm2/mc/decl.mod:  many changes which include the ability to
          visit all nodes and their dependents calling a call back
	  procedure.

2016-08-01      Gaius Mulley <gaius@gnu.org>

	* gm2/Make-lang.in:  introduce rules to build new module keyc.
          New rules to attempt to build the C generated version of mc.
	* gm2/init/mcinit:  added keyc to the list of modules to be
          linked.
	* gm2/mc/decl.mod:  changed skipType to detect an opaque type
          and not skip to NIL if this is the case.  outNull, outTrue,
          outFalse, (New procedures).  doArrayC fixed bug in declaring
          static arrays.  doFuncUnbounded changed parameter names and
          fixed a static array being passed to an unbounded parameter.
          getNthParam (New procedure function).
	* gm2/mc/keyc.def:  New file.
	* gm2/mc/keyc.mod:  New file.

2016-07-25      Gaius Mulley <gaius@gnu.org>

	* gm2/Make-lang.in:  removed SYSTEM.mod from the list of
	  modules to be converted by mc.
	* gm2/bnf/mc-3.bnf:  ConstExpression pushes a makeConstExp.
	* gm2/bnf/mc-4.bnf:  ConstExpression gets a constexp.
	  Reset constexp index for every new file.
          ConstSetOrQualidentOrFunction
          many asserts added and production statement order bug fixed.
          ConstActualParameters added assert.
	* gm2/bnf/mc-5.bnf:  implement LOOP END.  Fix bugs in the
	  construction of set values.
	* gm2/mc/decl.def:  makeExit, isExit, makeLoop, isLoop
	  (New procedure functions).
	* gm2/mc/decl.mod:  generate accurate error messages based
          on node declaration position.  Implement FLOAT and TRUNC.
          Fix MAX (enum) and MIN (enum).  Allow + to join two strings.
          Bugfix for pointer ref, deref combinations.  Fix type
          in makeArrayRef.  THROW implemented.  Fix string escape
          sequences.  Fix MAX/MIN (LONGINT/LONGCARD).  Fix ADR
          to spot & * cancel each other.  doExceptionC generate
	  line/file/column location from the node declaration.

2016-07-18      Gaius Mulley <gaius@gnu.org>

	* gm2/bnf/mc-5.bnf:  duplicate the with expression before
          calling makeCompenentRef.  SubPointer (New production).
          CaseStatement (New production).  Case (New production).
          CaseLabelList (New production).  CaseLabels
	  (New production).
	* gm2/mc/decl.def:  makePointerRef (New procedure
          function).  isPointerRef (New procedure function).
          getLastOp (New procedure function).
          makeCase (New procedure function).
          isCase (New procedure function).
          putCaseExpression (New procedure function).
          makeCaseLabelList (New procedure function).
          isCaseLabelList (New procedure function).
          makeCaseList (New procedure function).
          isCaseList (New procedure function).
          putCaseRange (New procedure function).
          makeRange (New procedure function).
          isRange (New procedure function).
          dupExpr (New procedure function).
	* gm2/mc/decl.mod:  implement above.
          Case statements implemented.  With statements bug fixed
          by duplicating the with expression.  pointerref
          introduced and componentref is replaced by pointerref
          if it is preceeded by a deref.  Polymorphic + - / * binary
	  operators are implemented.
	* gm2/mc/mcOptions.mod:  added case, array, return
	  option variables.

2016-07-13      Gaius Mulley <gaius@gnu.org>

	* gm2/bnf/mc-3.bnf:  ConstExpressionNop (New production).
          ConstFactor (use ConstSetOrQualidentOrFunction).
          ComponentElement (use ConstExpressionNop).
          ConstActualParameters (use ConstExpList).
          ConstExpList (use ConstExpressionNop).
          AlignmentExpression (use ConstExpressionNop).
          PragmaConstExpression (use ConstExpressionNop).
          AttributeExpression (use ConstExpressionNop).
          CaseLabels (use ConstExpressionNop).
          ForStatement (use ConstExpressionNop).
          Priority (use ConstExpressionNop).
	* gm2/bnf/mc-4.bnf:  ConstComponentValue (New production).
          ConstComponentElement (New production).
          ConstComponentValue (New production).
          ConstArraySetRecordValue (New production).
          ConstConstructor (New production).
          ConstActualParameters (New production).
          ConstExpList (New production).
          Constructor, ArraySetRecordValue, ComponentValue,
          ComponentElement (Productions now do nothing).
	* gm2/bnf/mc-5.bnf:  ConstExpressionNop (New production).
          ConstantDeclaration (use ConstExpressionNop).
          ConstExpression (use ConstExpressionNop).
          ConstComponentElement (new production).
          ConstArraySetRecordValue (new production).
          ConstConstructor (new production).
          ConstActualParameters (new production).
          ConstExpList (new production).
          AlignmentExpression (use ConstExpressionNop).
          SubrangeType (use ConstExpressionNop).
          AttributeExpression (use ConstExpressionNop).
          VarientCaseLabels (use ConstExpressionNop).
          VarIdent (use ConstExpressionNop).
          ComponentElement (new production).
          ComponentValue (new production).
          ArraySetRecordValue (new production).
          Constructor (new production).
          OptArg (new production).
          DefOptArg (new production).
          Priority (new production).
	* gm2/mc/decl.def:  makeSetValue (New procedure function).
          isSetValue (new procedure function).
          putSetValue (new procedure function).
          includeSetValue (new procedure function).
	* gm2/mc/decl.mod:  in (New node kind).
          setvalue (New node kind).
          makeSetValue (Implement procedure function).
          isSetValue (Implement procedure function).
          putSetValue (Implement procedure function).
          includeSetValue (Implement procedure function).
          isAnyType (New procedure function).
          makeCast (New procedure function).
          isUnary (New procedure function).
          isDeref (New procedure function).
          doSetExprType (New procedure function).
          getMaxMinType (New procedure function).
          doGetFuncType (New procedure function).
          getExprType (New procedure function).
          doGetLastOp (New procedure function).
          getLastOp (New procedure function).
          doComponentRefC (New procedure).
          doSetValueC (New procedure).
          doInC (New procedure).
          doNewC (completed).
          doDisposeC (completed).
          doAbsC (New procedure).
          doValC (New procedure).
          doMinC (New procedure).
          doMaxC (New procedure).

2016-07-06      Gaius Mulley <gaius@gnu.org>

	* gm2/bnf/mc-5.bnf:  ConstExpList introduce more asserts.
          ArrayExpList introduce more asserts.  ExpList introduce more asserts.
          Term, Factor generate an expression.  ExitStatement introduce
          an assert.  Statement allow empty statements to be produced.
	  StatementSequence introduce assert.
	* gm2/mc/decl.mod:  introduce ABS intrinsic.  isVarDecl,
          identListLen, isArrayRef, isZero, doArrayRef, doProcedure,
          doStringC, outCard, doSubtractC, checkDeclareUnboundedParamCopyC,
          checkUnboundedParamCopyC, doUnboundedParamCopyC,
          addVariablesTodo, addTypesTodo, simplifyVar, doWhileC, doFuncHighC,
          doMultiplyBySize, doTotype, doFuncUnbounded, doFuncParamC,
          getNthParamType, doAdrC, doIncDecC, doInclC, doExclC, doNewC,
          doDisposeC, isIntrinsic, doIntrinsicC, getFuncFromExpr,
          doFuncExprC, doLocalVarC, addParamDone, includeParameters
	  (New procedure).
	* gm2/mc/mcPretty.def:  getseekpos, getcurline (New procedure functions).
	* gm2/mc/mcPretty.mod:  getseekpos, getcurline (implemented).

2016-06-22      Gaius Mulley <gaius@gnu.org>

	* gm2/bnf/mc-3.bnf:  merged definition and module variable declaration
	  rules.  Always pop the return result from ConstExpression.
	* gm2/bnf/mc-4.bnf:  no longer declare variables in pass 4.
	* gm2/bnf/mc-5.bnf:  major changes which include generation of if/then/else/elsif
          for loops, while loops, repeat loops.  With statements handled.  Expressions are
          built and constant expressions retieved from a previous pass.  Debugging
	  aids also built.  Function/procedure call handled.  Return statement handled.
	* gm2/mc/decl.def:  New procedures: addOptParameter, isOptarg, makeComponentRef, makeDeRef,
          makeArrayRef, resetConstExpPos, makeStatementSequence, isStatementSequence,
          addStatement, makeReturn, isReturn, putReturn, makeWhile, putWhile,
          isWhile, makeAssignment, putBegin, makeExit, makeComment, makeIf,
          isIf, makeElsif, isElsif, putElse, makeFor, isFor, putFor, makeRepeat,
          isRepeat, putRepeat declared and exported.
	* gm2/mc/decl.mod:  new node types, exit, return, stmtseq, comment, new
          dispose, inc, dec, incl, excl, optarg, throw, deref added.
          New procedures:  isLocal, addProcedureToScope, addParameter, isOptarg,
          makeOptParameter, addOptParameter, makeFuncCall, isFuncCall, makeComponentRef,
          makeArrayRef, makeDeRef, makeBinaryTok, getFQstring, needsParen, doUnary,
          doUnary, doBinary, doBinary, doPreBinary, doPreBinary, doExprM2, doVar,
          doOptargC, doPrototypeC, doProcedureHeadingC, doPrototypeC,
          outDeclsDefC, outDeclsDefC, includeVar, joinProcedures, doStatementSequenceC,
          isSingleStatement, doCommentC, doExitC, doReturnC, doAssignmentC,
          doCompoundStmt, doElsifC, noElse, doIfC, doForC, doRepeatC,
          doFuncArgsC, doFuncCallC, doStatementsC, doLocalDeclsC, doProcedureC,
          outProceduresC, walkOptarg, outImpInitC, outModuleC, outModuleInitC,
          outModuleC, outC, dbgVar, dbgArray, makeStatementSequence,
          addStatement, isStatementSequence, makeReturn,
          isReturn, putReturn, makeWhile, putWhile,
          isWhile, makeAssignment, isAssignment, putBegin, makeExit,
          isExit, makeComment, isComment, makeIf, isIf, makeElsif,
          isElsif, putElse, makeFor, isFor, putFor, makeRepeat, isRepeat,
          putRepeat and makeM2rts added.
	* gm2/mc/mcComp.mod:  reintroduce pass 5.
	* gm2/mc/mcStack.def:  new procedure access declared.
	* gm2/mc/mcStack.mod:  new procedure access implemented.

2016-05-24      Gaius Mulley <gaius@gnu.org>

	* gm2/bnf/mc-3.bnf:  integer, real no longer push a value to the stack.
          call setConstExpComplete at the end of the pass.  Remove result of the
	  constexpression.   Add many asserts to aid debugging.
	* gm2/bnf/mc-4.bnf:  remove calls to setEnumsComplete.  Call fixupConstExp
	  in ConstExpression.  Call makeFuncCall in ConstSetOrQualident.
          Remove all type generation building.  Remove import handling.
	* gm2/bnf/mc-5.bnf:  remove all references to resetFuncFixup.
	  Remove call to applyFuncFixup.
	* gm2/gm2-libs/DynamicStrings.mod:  trip whitespace.
	* gm2/mc/alists.mod:  correct indentation.
	* gm2/mc/decl.def:  remove resetFuncFixup, replace it with makeExpList.
          remove makeFuncFixup and replace with isExpList.  Remove isFuncFixup
          and replace with putExpList.  Remove makeExpList and replace with
          makeConstExp.  Remove isExpList and replace it with getNextConstExp.
	  Remove putExpList and replace with setConstExpComplete.
          fixupConstExp (new procedure function).  Remove applyFuncFixup
	  and replace with makeFuncCall.
	* gm2/mc/decl.mod:  added funccall, constexp and chr to nodeK.
          Also modified all associated procedure functions.  Replaced
          funcFixup with constFixup.  Added constsComplete to definition,
          implementation and program modules.  Only generate #include
          if the getExtendedOpaque switch is not set.  Initialise ord, chr
	  and val as base procedure functions.
	* gm2/mc/mcComp.mod:  always invoke pass4, temporarily short circuit
	  pass 5.

2016-05-23      Gaius Mulley <gaius@gnu.org>

	* interim checkin:

2016-05-21      Gaius Mulley <gaius@gnu.org>

	* gm2/bnf/mc-2.bnf:  create enums for .mod files as well as .def files.
	* gm2/bnf/mc-3.bnf:  fixed bug, make empty varient leave the stack alone.
	* gm2/bnf/mc-4.bnf:  likewise applied to pass 4.  Create enums
          for .mod files.  DefQualident, DefTypeEquiv, DefEnumIdentList,
          DefEnumeration, DefSimpleType, new rules introduced and used.
	* gm2/examples/pge/twoDsim.mod:  right hand white space removed.
	* gm2/mc/decl.mod:  loc introduced.  Parameter building and
	variable shadowing introduced.
	* gm2/mc/mcComp.mod:  commented out p5.
	* gm2/mc/wlists.mod:  renamed maxNoOfElements and noOfElements.

2016-05-17      Gaius Mulley <gaius@gnu.org>

	* gm2/bnf/mc-5.bnf:  introduce func fixups.  Removed all
          constant expression procedures.  Removed all type
          generation procedures.  Removed all import processing
          as this should be done in previous passes.
	* gm2/mc/decl.def:  (resetFuncFixup) new procedure.
          (makeExpList) new procedure function.  (putExpList) new
          procedure.  (applyFuncFixup) new procedure.
	* gm2/mc/decl.mod:  (explist) new kind.  (resetFuncFixup)
	  implemented new procedure.
          (makeExpList) implemented new procedure function.
          (putExpList) implemented new procedure.
          (applyFuncFixup) implemented new procedure.

2016-05-16      Gaius Mulley <gaius@gnu.org>

	* gm2/Make-lang.in:  added mcp5.mod to be built and linked into mc.
          Removed SysExceptions from being built as part of the bootstrap
          for mc.  mc does not need it as SysExceptions is a gm2 runtime
          library.  Removed reference to m2flex.def in MC-DEFS.  Removed
          mcflex.mod from MC-MODS.
	* gm2/init/mcinit:  added mcp5 to be linked and initialised.
	* gm2/mc/README:  corrected the pass description, now that pass 3
          is used by .def and .mod files.  Thus there is no need for pass 6.
          Pass 5 functionality now contains the old pass 6 description.
	* gm2/mc/decl.mod:  new kind funcfixup to allow fixups to be applied
          between constant functions and their parameters (possibly types).
          (eg. MAX(typename)).  Created a fixupInfo record which is used by
          enum fixups and constant function fixups.
	* gm2/mc/mcComp.mod:  enable pass 5.
	* At this point mc should handle constants, all data types and
          generate a tree of nodes representing them.  All procedure prototypes
          are known.  All that is left to do is build a tree of nodes
          representing the code and then walk the tree generating
	  C11 or C++ code.

2016-05-11      Gaius Mulley <gaius@gnu.org>

	* gm2/Make-lang.in:  added rules to bootstrap mc mod files.
	* gm2/bnf/mc-3.bnf:  use Expression rather than ConstExpression in
          ComponentElement.
	* gm2/mc/decl.mod:  added mult, throw nodes.  Fixed ord to be a unary
          operator.  doSetC (New procedure).  includeSyms renamed includeConstType.
          includeVarProcedure (New procedure).  includeDefConstType (New procedure).
          Export size from SYSTEM.  Attempt to declare const/types before
          var/procedures.

2016-05-10      Gaius Mulley <gaius@gnu.org>

	* gm2/mc/decl.mod:  write and writeln call FlushBuffer
	  as a debugging aid.  tempName returns a String.
          makeIntermediateType new procedure function.
          simplifyType call tempName and makeIntermediateType.
          doSimplifyNode also simplifies pointer types.
          outDeclsDefC outputs constants, types and then variables.
          walkPointer returns completed if the type is partial or done.
          walkVarientField returns partial if field type is on the partialQ.
          tryPartial moves pointer types.
          outputPartial moves over pointer types and issues '*' accordingly.

2016-05-09      Gaius Mulley <gaius@gnu.org>

	* gm2/mc/decl.mod:  many changes and bug fixes.  Modula-2 output
	  of data structures implemented and pretty printing of M2, C
          data structures implemented.
	* gm2/mc/mcOptions.mod:  corrected --olang= processing.
	* gm2/mc/mcPretty.def:  pushPretty and popPretty
          (New procedure functions) defined.
	* gm2/mc/mcPretty.mod:  pushPretty and popPretty
          (New procedure functions) implemented.

2016-04-27      Gaius Mulley <gaius@gnu.org>

	* gm2/Make-lang.in:  force the mc-boot rule.
	* gm2/bnf/mc-3.bnf:  many bug fixes and finished implementing
          record/varient record handling.
	* gm2/mc/decl.def:  add second parameter to
          buildVarientFieldRecord.
	* gm2/mc/decl.mod:  min, max new nodes.  makeArray skip type.
          buildVarientFieldRecord add second parameter and use it.
          Many features added and code added.
	* gm2/mc/mcOptions.mod:  new option --ignore-fq.
	* gm2/mc/mcStack.def:  depth (New procedure function).
	* gm2/mc/mcStack.mod:  implemented depth.

2016-04-23      Gaius Mulley <gaius@gnu.org>

	* gm2/Make-lang.in:  rewrite of mc-autogen which currently tests
	  the translation of the library modules required by mc.
	* gm2/bnf/mc-1.bnf:  bug fix to allow procedures to be declared
	  in both definition and implementation modules.
	* gm2/bnf/mc-3.bnf:  interim change prior to fixing a bug in
          the varient record handling.

2016-04-21      Gaius Mulley <gaius@gnu.org>

	* gm2/bnf/mc-1.bnf:  distinguish between from module import and
          import module.  Call putTypeHidden for a hidden type.
	* gm2/bnf/mc-2.bnf:  distinguish between from module import and
          import module.  Follow scopes during procedures.  No longer
	  call registerImport.
	* gm2/bnf/mc-3.bnf:  remove registerImport.  Ensure that the
          definition module scope is visible below the implementation
          module.  Use Qualident rather than PushQualident for non
	  data structure based rules.
	* gm2/mc/decl.def:  hasHidden, foreachModModuleDo, paramEnter,
          paramLeave (new procedures).  addImportedModule changed to include
          and extra parameter.
	* gm2/mc/decl.mod:  added tsize node.  Many changes implementing
	  the above and bug fixing topological sort algorithm.
        * gm2/mc/mcComp.mod:  changes to allow --extended-opaque to take
          effect.  The implementation module for each definition module which
	  defines an opaque type will be parsed.
        * gm2/mc/mcOptions.def:  introduce --extended-opaque option.
	* gm2/mc/mcOptions.mod:  record --extended-opaque option.
	* gm2/Make-lang.in:  alter MCOPTIONS to include runtime checking.
	* gm2/gm2-libs/FormatStrings.mod:  implement %x as a format
          specifier.
	* gm2/gm2-libs/SFIO.mod:  WriteS check that s is not NIL.
	* gm2/mc/decl.mod:  topological sort bugfix.  Implemented
          data structure debugging which can be turned on via
          --debug-top.  Many bug fixes and tidying up.
	* gm2/mc/mcOptions.mod:  record --debug-top option.
	* gm2/mc/mcOptions.def:  getDebugTopological (new
          procedure function).
	* gm2/mc/decl.mod:  bug fix to allow proctypes and
	  parameters to be generated from partial declarations.a

2016-04-18      Gaius Mulley <gaius@gnu.org>

	* gm2/Make-lang.in:  new rule mc-autogen.
	* gm2/bnf/mc-1.bnf:  fixed scope tracking for implementation module.
	  Use makeTypeImp during type declaration in implementation module.
	* gm2/bnf/mc-2.bnf:  fixed scope tracking for implementation module.
	* gm2/bnf/mc-3.bnf:  corrected grammar during type declaration.
	* gm2/mc/decl.def:   isVisited (new procedure function).  unsetVisited,
	  setVisited (new procedure).  makeTypeImp (new procedure function).
	* gm2/mc/decl.mod:  implement isVisited, unsetVisited, setVisited,
	  makeTypeImp.  Many bug fixes to topological output of declarations.
          All type declarations including recursive declarations are now
          implemented.
	* gm2/mc/mcComp.mod:  parse implementation module during pass 1
	  and pass 2.

2016-04-14      Gaius Mulley <gaius@gnu.org>

	* gm2/Make-lang.in:  changed gm2-bootstrap test.
	* gm2/bnf/mc-1.bnf:  changed variable creation so that both
	def and mod declare variables.  Added epsilon instead of [].
	Added scope handling to procedures.  Allowed implementation and
	program modules to be passed.
	* gm2/bnf/mc-2.bnf:  Added epsilon instead of [].  Tidied up.
	* gm2/mc/decl.mod:  continued development and debugging.

2016-04-12      Gaius Mulley <gaius@gnu.org>

	* gm2/Make-lang.in:  added mc-4.bnf to be built.
	* gm2/bnf/mc-3.bnf:  bug fixes so that return results are recorded from procedure functions.
	* gm2/init/mcinit:  added mcp4.
	* gm2/mc/decl.mod:  more development.
	* gm2/mc/mcComp.mod:  include pass 4.

2016-04-11      Gaius Mulley <gaius@gnu.org>

	* gm2/Make-lang.in:  new very simple rules for mc-devel and
          initial attempt at gm2-bootstrap using mc.
	* gm2/mc/decl.def:  implement variable declarations.
	* gm2/mc/decl.mod:  many changes to implement pass 3 and
	  the output of recursive data structures.
	* gm2/mc/mcError.def:  fixed parameter declarations so that they
	  match their implementation counterparts.
	* gm2/mc/mcError.mod:  consistant parameter declarations.
	* gm2/mc/mcLexBuf.def:  fixed parameter declarations so that they
	  match their implementation counterparts.
	* gm2/mc/mcMetaError.def:  fixed parameter declarations so that
          they match their implementation counterparts.
	* gm2/mc/mcPreprocess.mod:  use alists rather than lists.
	* gm2/mc/mcSearch.def:  consistant parameter declarations.
	* gm2/mc/mcSearch.mod:  consistant parameter declarations.
	* gm2/mc/nameKey.def:  consistant parameter declarations.
	* gm2/bnf/mc-3.bnf:  fix variable declarations in definition modules.
	* gm2/mc/mc.flex:  correct prototype.

2016-03-14      Gaius Mulley <gaius@gnu.org>

	* gm2/bnf/mc-1.bnf:  new file.
	* gm2/bnf/mc-2.bnf:  new file.
	* gm2/bnf/mc-3.bnf:  new file.
	* gm2/gm2-gcc/gcc-consolidation.h:  new file.
	* gm2/mc/Indexing.def:  new file.
	* gm2/mc/Indexing.mod:  new file.
	* gm2/mc/README:  new file.
	* gm2/mc/alists.def:  new file.
	* gm2/mc/alists.mod:  new file.
	* gm2/mc/decl.def:  new file.
	* gm2/mc/decl.mod:  new file.
	* gm2/mc/decl.mod-extra:  new file.
	* gm2/mc/lists.def:  new file.
	* gm2/mc/lists.mod:  new file.
	* gm2/mc/m2flex.def:  new file.
	* gm2/mc/mc.flex:  new file.
	* gm2/mc/mcComp.def:  new file.
	* gm2/mc/mcComp.mod:  new file.
	* gm2/mc/mcDebug.def:  new file.
	* gm2/mc/mcDebug.mod:  new file.
	* gm2/mc/mcError.def:  new file.
	* gm2/mc/mcError.mod:  new file.
	* gm2/mc/mcFileName.def:  new file.
	* gm2/mc/mcFileName.mod:  new file.
	* gm2/mc/mcLexBuf.def:  new file.
	* gm2/mc/mcLexBuf.h:  new file.
	* gm2/mc/mcLexBuf.mod:  new file.
	* gm2/mc/mcMetaError.def:  new file.
	* gm2/mc/mcMetaError.mod:  new file.
	* gm2/mc/mcOptions.def:  new file.
	* gm2/mc/mcOptions.mod:  new file.
	* gm2/mc/mcPreprocess.def:  new file.
	* gm2/mc/mcPreprocess.mod:  new file.
	* gm2/mc/mcPrintf.def:  new file.
	* gm2/mc/mcPrintf.mod:  new file.
	* gm2/mc/mcQuiet.def:  new file.
	* gm2/mc/mcQuiet.mod:  new file.
	* gm2/mc/mcReserved.def:  new file.
	* gm2/mc/mcReserved.h:  new file.
	* gm2/mc/mcReserved.mod:  new file.
	* gm2/mc/mcSearch.def:  new file.
	* gm2/mc/mcSearch.mod:  new file.
	* gm2/mc/mcStack.def:  new file.
	* gm2/mc/mcStack.mod:  new file.
	* gm2/mc/mcflex.def:  new file.
	* gm2/mc/mcp1.def:  new file.
	* gm2/mc/mcp2.def:  new file.
	* gm2/mc/mcp3.def:  new file.
	* gm2/mc/nameKey.def:  new file.
	* gm2/mc/nameKey.mod:  new file.
	* gm2/mc/symbolKey.def:  new file.
	* gm2/mc/symbolKey.mod:  new file.
	* gm2/mc/top.mod:  new file.
	* gm2/mc/varargs.def:  new file.
	* gm2/mc/varargs.mod:  new file.
	* gm2/mc/wlists.def:  new file.
	* gm2/mc/wlists.mod:  new file.
	* gm2/Make-lang.in:  generate cpp version stub.  Use $(COMPILER)
          rather than $(CC).  Removed all trailing whitespace.  Added
          rules for building mc.
	* gm2/configure.in:  corrected test (=) rather than (==).
	* gm2/configure:  rebuilt.
	* gm2/gm2-compiler/M2Comp.mod:  updated dates and removed trailing
          white space.
	* gm2/gm2-compiler/M2Error.mod:  updated dates and removed trailing
          white space.
	* gm2/gm2-compiler/M2LexBuf.mod:  corrected spacing at the end of
          a comment.
	* gm2/gm2-compiler/NameKey.mod:  corrected spacing at the end of
          a comment.
	* gm2/gm2-gcc/m2assert.c:  use #include "gcc-consolidation.h" to
          hold all gcc related header files.
	* gm2/gm2-gcc/m2block.c:  use #include "gcc-consolidation.h" to
          hold all gcc related header files.  Change binding level code
          from C to C++.
	* gm2/gm2-gcc/m2builtins.c:  use #include "gcc-consolidation.h" to
          hold all gcc related header files.
	* gm2/gm2-gcc/m2convert.c:  use #include "gcc-consolidation.h" to
          hold all gcc related header files.  Many changes to bring it
          up to gcc-5.2.0.
	* gm2/gm2-gcc/m2decl.c:  use #include "gcc-consolidation.h" to
          hold all gcc related header files.
	* gm2/gm2-gcc/m2except.c:  use #include "gcc-consolidation.h" to
          hold all gcc related header files.  Minor changes to bring it into
	  line with gcc-5.2.0.
        * gm2/gm2-gcc/m2expr.c:  use #include "gcc-consolidation.h" to
          hold all gcc related header files.  Minor changes to bring it into
          line with gcc-5.2.0.
	* gm2/gm2-gcc/m2linemap.c:  use #include "gcc-consolidation.h" to
          hold all gcc related header files.
	* gm2/gm2-gcc/m2misc.c:  use #include "gcc-consolidation.h" to
          hold all gcc related header files.
	* gm2/gm2-gcc/m2statement.c:  use #include "gcc-consolidation.h" to
          hold all gcc related header files.  C++ changes in gimplifiation
          of nested procedure functions.
	* gm2/gm2-gcc/m2top.c:  use #include "gcc-consolidation.h" to
          hold all gcc related header files.
	* gm2/gm2-gcc/m2tree.c:  use #include "gcc-consolidation.h" to
          hold all gcc related header files.
	* gm2/gm2-gcc/m2treelib.c:  use #include "gcc-consolidation.h" to
          hold all gcc related header files.  Many changes to convert C to C++
          and statement related data structure and methods have changed.
	* gm2/gm2-gcc/m2type.c:  use #include "gcc-consolidation.h" to
          hold all gcc related header files.  Many changes to convert C to C++
          and statement related data structure and methods have changed.
	* gm2/gm2-lang.c:  Many changes to convert C to C++
          and statement related data structure and methods have changed.
          Many changes to bring code into gcc-5.2.0.
	* gm2/gm2-lang.h:  changes to bring code into gcc-5.2.0.
	* gm2/gm2-libs/DynamicStrings.def:  additional dates.
	* gm2/gm2-libs/DynamicStrings.mod:  define desState and use it in
          descriptor.
	* gm2/gm2-libs/Indexing.def:  new procedure (DeleteIndice).
	* gm2/gm2-libs/Indexing.mod:  new field Used.  New procedure
          (DeleteIndice).
	* gm2/gm2-libs/SYSTEM.def:  additional dates.
	* gm2/gm2-libs/TimeString.def:  removed trailing white space.
	* gm2/gm2spec.c:  extra parameter to fe_save_switch  (used).
	* gm2/gm2version.h:  simplified conditional compilation.
	* gm2/lang.opt:  made options complient with gcc-5.2.0.
	* gm2/m2.flex:  use gm2-gcc/gcc-consolidation.h.  Fix int/unsigned int
          and cast of strings so that g++ will compile flex
	  generated output file.
	* gm2/m2pp.c:  use gm2-gcc/gcc-consolidation.h rather than
	  a list of include files.  Changed to make it gcc-5.2.0 complient.
	* gm2/tools-src/makeversion:  generate C++ gm2_version function if
	  the new option, -p, is used.  -p new option implemented.
	* gm2/tools-src/mklink.c:  fix typo.
	* testsuite/gm2/pim/pass/enum.mod:  new test code.

2016-03-03      Gaius Mulley <gaius@gnu.org>

	* gm2/gm2-compiler/M2GenGCC.mod:  checkRecordTypes new procedure
	function.  checkBecomes new procedure function.  CodeBecomes
	use checkBecomes.  This fixes a bug reported by
        <Georg.Lokowandt@t-online.de> (bug6.mod).

2016-02-25      Gaius Mulley <gaius@gnu.org>

	* gm2/examples/gravity/Makefile.in:  fixed linewrap in
	  libtwoDsim.la.

2016-02-22      Gaius Mulley <gaius@gnu.org>

	* gm2/configure:  rebuilt.
	* gm2/configure.in:  version number change to 1.1.6.
	* gm2/gm2-libs/config-host.in:  version number change to 1.1.6.
	* gm2/gm2-libs/config-target.in:  version number change to 1.1.6.
	* gm2/version.c:  version number change to 1.1.6.

2016-02-19      Gaius Mulley <gaius@gnu.org>

	* gm2/gm2-compiler/M2GenGCC.mod:  CheckConvertCoerceParameter
          checks to see if an actual parameter is a constant string
          and if so calls BuildConvert.  This fixes a bug reported by
	  <Georg.Lokowandt@t-online.de> (bug5.mod).

2016-01-26      Gaius Mulley <gaius@gnu.org>

	* gm2/examples/gravity/Makefile.in:  introduced LIBDIR which is
	  set dynamically to reflect the host architecture.

2016-01-19      Gaius Mulley <gaius@gnu.org>

	* gm2/examples/gravity/Makefile.in:  rewritten to use libtool
	  when generating the shared library.

2016-01-14      Gaius Mulley <gaius@gnu.org>

	* gm2/examples/gravity/Makefile.in:  converting Makefile.in
	to use libtool.
	* gm2/examples/gravity/twoDsim.mod:  removed tabs.
	* gm2/gm2-compiler/M2GCCDeclare.mod:  removed tabs.
	* gm2/gm2-gcc/m2decl.c:  set DECL_ARTIFICIAL and
          DECL_IGNORED_P for temporary variables.  (do_min_tree)
          (do_max_tree) new functions which are called by GetMinFrom
          and GetMaxFrom respectively.  This fixes a bug reported by
	  Michael Riedl.

