Jakub Jelinek [Thu, 15 Dec 2022 18:17:45 +0000 (19:17 +0100)]
c++: Ensure !!var is not an lvalue [PR107065]
The TRUTH_NOT_EXPR case in cp_build_unary_op is one of the spots where
we somewhat fold immediately using invert_truthvalue_loc.
I've tried using
return build1_loc (location, TRUTH_NOT_EXPR, boolean_type_node, arg);
in there instead, but unfortunately that regressed
Wlogical-not-parentheses-*.c pr49706.c pr62199.c pr65120.c sequence-pt-1.C
tests, so at least for backporting that doesn't seem to be a way to go.
So, this patch instead wraps it into NON_LVALUE_EXPR if needed (which also
need a tweak for some tests in the pr47906.c test, but nothing major),
with the intent to make it backportable, and later I'll try to do further
steps to avoid folding here prematurely. Most of the problems with
build1 TRUTH_NOT_EXPR are that it doesn't even invert comparisons as most
common case and lots of warning code isn't able to deal with ! around
comparisons; so perhaps one way to do this would be fold by hand only
invertable comparisons and for the rest create TRUTH_NOT_EXPR.
2022-12-15 Jakub Jelinek <jakub@redhat.com>
PR c++/107065
gcc/cp/
* typeck.cc (cp_build_unary_op) <case TRUTH_NOT_EXPR>: If
invert_truthvalue_loc returns obvalue_p, wrap it into NON_LVALUE_EXPR.
* parser.cc (cp_parser_binary_expression): Don't call
warn_logical_not_parentheses if current.lhs is a NON_LVALUE_EXPR
of a decl with boolean type.
gcc/testsuite/
* g++.dg/cpp0x/pr107065.C: New test.
doc: Fix documentation for __builtin_dynamic_object_size
__builtin_dynamic_object_size is missing from the full list of builtins,
so add it. Also mention it alongside __builtin_object_size in the
passes description.
gcc/ChangeLog:
* doc/extend.texi (__builtin_dynamic_object_size): Document
builtin.
* doc/passes.texi
(Optimize calls to @code{__builtin_object_size}): Also mention
__builtin_dynamic_object_size.
Richard Biener [Thu, 15 Dec 2022 12:42:16 +0000 (13:42 +0100)]
middle-end/108086 - avoid quadraticness in copy_edges_for_bb
For the testcase in PR108086 it's visible that we split blocks
multiple times when inlining and that causes us to adjust the
block tail stmt BBs multiple times, once for each split. The
fix is to walk backwards and split from the tail instead.
For a reduced testcase this improves compile-time at -O by 4%.
PR middle-end/108086
* tree-inline.cc (copy_edges_for_bb): Walk stmts backwards for
splitting the block to avoid quadratic behavior with setting
stmts BB on multliple splits.
Jakub Jelinek [Thu, 15 Dec 2022 12:57:43 +0000 (13:57 +0100)]
testsuite: Add support for Rust and Modula-2 effective target tests
This patch allows magic comments also for Rust and Modula-2
for effective target tests etc. and fixes up the Assembly entry
- it is a glob, so /* Assembly can match /whatever Assembly and
not just /* Assembly.
Tested on x86_64-linux with
make check-g++ RUNTESTFLAGS=i386.exp=pr35513*
and verifying it still uses *.S extension for the property_1_needed
effective target test.
2022-12-15 Jakub Jelinek <jakub@redhat.com>
* lib/target-supports.exp (check_compile): Add support for
Rust and Modula-2. Use \* rather than * for /* comment for
Assembly.
Tobias Burnus [Thu, 15 Dec 2022 11:25:07 +0000 (12:25 +0100)]
libgfortran's ISO_Fortran_binding.c: Use GCC11 version for backward-only code [PR108056]
Since GCC 12, the conversion between the array descriptors formats - the
internal (GFC) and the C binding one (CFI) - moved to the compiler itself
such that the cfi_desc_to_gfc_desc/gfc_desc_to_cfi_desc functions are only
used with older code (GCC 9 to 11). The newly added checks caused asserts
as older code did not pass the proper values (e.g. real(4) as effective
argument arrived as BT_ASSUME type as the effective type got lost inbetween).
As proposed in the PR, revert to the GCC 11 version - known bugs is better
than some fixes and new issues. Still, GCC 12 is much better in terms of
TS29113 support and should really be used.
This patch uses the current libgomp version of the GCC 11 branch, except
it fixes the GFC version number (which is 0), uses calloc instead of malloc,
and sets the lower bound to 1 instead of keeping it as is for
CFI_attribute_other.
libgfortran/ChangeLog:
PR libfortran/108056
* runtime/ISO_Fortran_binding.c (cfi_desc_to_gfc_desc,
gfc_desc_to_cfi_desc): Mostly revert to GCC 11 version for
those backward-compatiblity-only functions.
Jakub Jelinek [Thu, 15 Dec 2022 08:26:44 +0000 (09:26 +0100)]
into-ssa: Fix emitting debug stmts after asm goto [PR108095]
The following testcase ICEs, because ccp1 replaced
s.0_1 = &s;
__asm__ goto("" : "=r" MEM[(T *)s.0_1] : : : "lab" lab);
with
__asm__ goto("" : "=r" s : : : "lab" lab);
and because s is no longer addressable, we are rewriting it into
ssa and want
__asm__ goto("" : "=r" s_7 : : : "lab" lab);
plus debug stmt
# DEBUG s => s_7
The code assumes that there is at most one non-EH edge in that
case, but with the addition of outputs to asm goto that is no longer the
case, we can have many outgoing edges.
The patch keeps the checking assertion that there is at most one such
edge for everything but asm goto, but moves the addition of the debug
stmt into the loop, so that it can be added on all edges where it is
possible, not just one of them.
Furthermore, looking at gsi_insert_on_edge_immediate
-> gimple_find_edge_insert_loc, the conditions to insert stmt there
to the destination block are
if (single_pred_p (dest)
&& gimple_seq_empty_p (phi_nodes (dest))
&& dest != EXIT_BLOCK_PTR_FOR_FN (cfun))
(plus there is code to insert it in the previous block but that is
never true when the pred is known to be stmt_ends_bb_p), while
mayube_register_def was just checking
if (ef && single_pred_p (ef->dest)
&& ef->dest != EXIT_BLOCK_PTR_FOR_FN (cfun))
so if for whatever reason ef->dest had any PHIs, we'd split the
edge for -g and not for -g0, something we must avoid for -fcompare-debug
stability. So, I've added the no phi_nodes check too.
2022-12-15 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/108095
* tree-into-ssa.cc (maybe_register_def): Insert debug stmt
on all non-EH edges from asm goto if they have a single
predecessor rather than asserting there is at most one such edge.
Test whether there are no PHI nodes next to the single predecessor
test.
In these testcases, we weren't adequately verifying that constructing the
element type from an array element would have the same effect as
constructing it from one of the initializers.
David Faust [Wed, 7 Dec 2022 19:51:59 +0000 (11:51 -0800)]
btf: correct generation for extern funcs [PR106773]
The eBPF loader expects to find entries for functions declared as extern
in the corresponding BTF_KIND_DATASEC record, but we were not generating
these entries.
This patch adds support for the 'extern' linkage of function types in
BTF, and creates entries for for them BTF_KIND_DATASEC records as needed.
PR target/106773
gcc/
* btfout.cc (get_section_name): New function.
(btf_collect_datasec): Use it here. Process functions, marking them
'extern' and generating DATASEC entries for them as appropriate. Move
creation of BTF_KIND_FUNC records to here...
(btf_dtd_emit_preprocess_cb): ... from here.
gcc/testsuite/
* gcc.dg/debug/btf/btf-datasec-2.c: New test.
* gcc.dg/debug/btf/btf-function-6.c: New test.
include/
* btf.h (enum btf_func_linkage): New.
(struct btf_var_secinfo): Update comments with notes about extern
functions.
David Faust [Wed, 7 Dec 2022 19:47:26 +0000 (11:47 -0800)]
btf: fix 'extern const void' variables [PR106773]
The eBPF loader expects to find BTF_KIND_VAR records for references to
extern const void symbols. We were mistakenly identifing these as
unsupported types, and as a result skipping emitting VAR records for
them.
In addition, the internal DWARF representation from which BTF is
produced does not generate 'const' modifier DIEs for the void type,
which meant in BTF the 'const' qualifier was dropped for 'extern const
void' variables. This patch also adds support for generating a const
void type in BTF to correct emission for these variables.
PR target/106773
gcc/
* btfout.cc (btf_collect_datasec): Correct size of void entries.
(btf_dvd_emit_preprocess_cb): Do not skip emitting variables which
refer to void types.
(btf_init_postprocess): Create 'const void' type record if needed and
adjust variables to refer to it as appropriate.
David Faust [Wed, 7 Dec 2022 19:44:28 +0000 (11:44 -0800)]
btf: add 'extern' linkage for variables [PR106773]
Add support for the 'extern' linkage value for BTF_KIND_VAR records,
which is used for variables declared as extern in the source file.
This also fixes a bug with BTF generation for extern variables which
have both a non-defining declaration and a defining declaration in the
same CU.
PR target/106773
gcc/
* btfout.cc (btf_collect_datasec): Mark extern variables as such.
(btf_dvd_emit_preprocess_cb): Skip non-defining extern variable decl
if there is a defining decl for the same variable.
(btf_asm_varent): Accomodate 'extern' linkage.
gcc/testsuite/
* gcc.dg/debug/btf/btf-variables-4.c: New test.
* gcc.dg/debug/btf/btf-variables-5.c: New test.
Martin Jambor [Wed, 14 Dec 2022 18:01:11 +0000 (19:01 +0100)]
ipa-sra: Consider the first parameter of methods safe to dereference
Honza requested this after reviewing the patch that taught IPA-SRA
that REFERENCE_TYPEs are always non-NULL that the pass also handles
the first parameters of methods, this pointers, in the same way. So
this patch does that.
gcc/ChangeLog:
2022-12-14 Martin Jambor <mjambor@suse.cz>
* ipa-sra.cc (create_parameter_descriptors): Consider the first
parameter of a method safe to dereference.
Martin Jambor [Wed, 14 Dec 2022 18:01:11 +0000 (19:01 +0100)]
ipa-sra: Fix address escape case when detecting Fortran descriptors
The discussion about scan_expr_access in ipa-sra.cc brought my
attention to a missing case of handling an ADDR_EXPR. As the added
testcase shows, the heuristics which looks for parameters which are
local variables that are only written to and passed by reference in
calls can miss a case where the address of the variable in question is
stored elsewhere in an assignment.
This patch adds that case to the function and also adds the
optimization that Richi suggested, i.e. bailing out early on simple
SSA_NAMEs and constant trees.
gcc/ChangeLog:
2022-12-14 Martin Jambor <mjambor@suse.cz>
* ipa-sra.cc (loaded_decls): Adjust comment.
(scan_expr_access): Also detect assignments of address of local
variables to a variable. Bail out early on SSA_NAMEs and
constants as an optimization.
Gaius Mulley [Wed, 14 Dec 2022 17:43:08 +0000 (17:43 +0000)]
Merge modula-2 front end onto gcc.
This commit merges the devel/modula2 into master.
The libraries reside in libgm2, the compiler in gcc/m2
and the testsuite in gcc/testsuite/gm2.
ChangeLog:
* configure.ac (target_libraries): Add target-libgm2.
Add NCN_STRICT_CHECK_TARGET_TOOLS entry for gm2.
Add GCC_TARGET_TOOL entry for gm2. (compare_exclusions)
add gcc/m2/gm2-compiler/M2Version,
gcc/m2/gm2-compiler-boot/SYSTEM and gcc/m2/gm2version.
* Makefile.def (target_modules): Add libgm2. (flags_to_pass)
Add GM2_FOR_TARGET, GM2FLAGS_FOR_TARGET. (dependencies) Add
all-target-libgm2 and on=all-target-libatomic. (languages)
Add entry for language=m2 with gcc-check-target=check-m2
and lib-check-target=check-target-libgm2.
* Makefile.tpl (BUILD_EXPORTS): Add definition for GM2
and GM2FLAGS. (HOST_EXPORTS) Add definition for GM2.
(BASE_TARGET_EXPORTS) Add definition for GM2.
(GM2_FOR_BUILD) Defined. (GM2FLAGS) Defined.
(GM2_FOR_TARGET) Defined. (GM2FLAGS_FOR_TARGET) Defined.
(EXTRA_HOST_FLAGS) Defined. (POSTSTAGE1_FLAGS_TO_PASS)
Add GM2 and GM2_FOR_BUILD. (EXTRA_TARGET_FLAGS) Add
GM2 and GM2FLAGS. (EXTRA_GCC_FLAGS) Add GM2_FOR_TARGET.
* configure: (Rebuilt).
* Makefile.in: (Rebuilt).
libgm2/ChangeLog:
* Makefile.am: (New file).
* autogen.sh: (New file).
* config.h.in: (New file).
* configure.ac: (New file).
* libm2cor/KeyBoardLEDs.cc: (New file).
* libm2cor/Makefile.am: (New file).
* libm2iso/ChanConsts.h: (New file).
* libm2iso/ErrnoCategory.cc: (New file).
* libm2iso/Makefile.am: (New file).
* libm2iso/RTco.cc: (New file).
* libm2iso/m2rts.h: (New file).
* libm2iso/wrapsock.c: (New file).
* libm2iso/wraptime.c: (New file).
* libm2log/Break.c: (New file).
* libm2log/Makefile.am: (New file).
* libm2min/Makefile.am: (New file).
* libm2min/libc.c: (New file).
* libm2pim/Makefile.am: (New file).
* libm2pim/Selective.cc: (New file).
* libm2pim/SysExceptions.cc: (New file).
* libm2pim/UnixArgs.cc: (New file).
* libm2pim/cgetopt.cc: (New file).
* libm2pim/dtoa.cc: (New file).
* libm2pim/errno.cc: (New file).
* libm2pim/ldtoa.cc: (New file).
* libm2pim/sckt.cc: (New file).
* libm2pim/target.c: (New file).
* libm2pim/termios.cc: (New file).
* libm2pim/wrapc.c: (New file).
* configure: (Rebuilt).
* libm2log/Makefile.in: (Rebuilt).
* libm2min/Makefile.in: (Rebuilt).
* libm2cor/Makefile.in: (Rebuilt).
* libm2pim/Makefile.in: (Rebuilt).
* libm2iso/Makefile.in: (Rebuilt).
gcc/ChangeLog:
* configure.ac (HAVE_PYTHON): Test for Python3 added.
* dwarf2out.cc (gen_compile_unit_die): Check language_string
and language to DW_LANG_Modula2.
* doc/install.texi: Add m2 as a language. (--disable-libgm2)
Documented. Add make check-m2 to testing selected tests.
* doc/sourcebuild.texi (GM2): New prerequisite item.
(Python3 modules) New item. (libgm2) Added.
(gcc/m2) Added.
* configure: (Rebuilt).
* config.in: (Rebuilt).
gcc/m2/ChangeLog:
* COPYING.FDL: (New file).
* COPYING.RUNTIME: (New file).
* COPYING3: (New file).
* COPYING3.LIB: (New file).
* Make-lang.in: (New file).
* Make-maintainer.in: (New file).
* NEWS: (New file).
* README: (New file).
* config-lang.in: (New file).
* config-make.in: (New file).
* configure.ac: (New file).
* gm2-compiler/CLexBuf.def: (New file).
* gm2-compiler/CLexBuf.mod: (New file).
* gm2-compiler/FifoQueue.def: (New file).
* gm2-compiler/FifoQueue.mod: (New file).
* gm2-compiler/Lists.def: (New file).
* gm2-compiler/Lists.mod: (New file).
* gm2-compiler/M2ALU.def: (New file).
* gm2-compiler/M2ALU.mod: (New file).
* gm2-compiler/M2AsmUtil.def: (New file).
* gm2-compiler/M2AsmUtil.mod: (New file).
* gm2-compiler/M2Base.def: (New file).
* gm2-compiler/M2Base.mod: (New file).
* gm2-compiler/M2BasicBlock.def: (New file).
* gm2-compiler/M2BasicBlock.mod: (New file).
* gm2-compiler/M2Batch.def: (New file).
* gm2-compiler/M2Batch.mod: (New file).
* gm2-compiler/M2Bitset.def: (New file).
* gm2-compiler/M2Bitset.mod: (New file).
* gm2-compiler/M2CaseList.def: (New file).
* gm2-compiler/M2CaseList.mod: (New file).
* gm2-compiler/M2Check.def: (New file).
* gm2-compiler/M2Check.mod: (New file).
* gm2-compiler/M2Code.def: (New file).
* gm2-compiler/M2Code.mod: (New file).
* gm2-compiler/M2ColorString.def: (New file).
* gm2-compiler/M2ColorString.mod: (New file).
* gm2-compiler/M2Comp.def: (New file).
* gm2-compiler/M2Comp.mod: (New file).
* gm2-compiler/M2Const.def: (New file).
* gm2-compiler/M2Const.mod: (New file).
* gm2-compiler/M2Debug.def: (New file).
* gm2-compiler/M2Debug.mod: (New file).
* gm2-compiler/M2DebugStack.def: (New file).
* gm2-compiler/M2DebugStack.mod: (New file).
* gm2-compiler/M2Defaults.def: (New file).
* gm2-compiler/M2Defaults.mod: (New file).
* gm2-compiler/M2DriverOptions.def: (New file).
* gm2-compiler/M2DriverOptions.mod: (New file).
* gm2-compiler/M2Emit.def: (New file).
* gm2-compiler/M2Emit.mod: (New file).
* gm2-compiler/M2Error.def: (New file).
* gm2-compiler/M2Error.mod: (New file).
* gm2-compiler/M2EvalSym.def: (New file).
* gm2-compiler/M2FileName.def: (New file).
* gm2-compiler/M2FileName.mod: (New file).
* gm2-compiler/M2GCCDeclare.def: (New file).
* gm2-compiler/M2GCCDeclare.mod: (New file).
* gm2-compiler/M2GenGCC.def: (New file).
* gm2-compiler/M2GenGCC.mod: (New file).
* gm2-compiler/M2Graph.def: (New file).
* gm2-compiler/M2Graph.mod: (New file).
* gm2-compiler/M2Lex.def: (New file).
* gm2-compiler/M2Lex.mod: (New file).
* gm2-compiler/M2LexBuf.def: (New file).
* gm2-compiler/M2LexBuf.mod: (New file).
* gm2-compiler/M2MetaError.def: (New file).
* gm2-compiler/M2MetaError.mod: (New file).
* gm2-compiler/M2Optimize.def: (New file).
* gm2-compiler/M2Optimize.mod: (New file).
* gm2-compiler/M2Options.def: (New file).
* gm2-compiler/M2Options.mod: (New file).
* gm2-compiler/M2Pass.def: (New file).
* gm2-compiler/M2Pass.mod: (New file).
* gm2-compiler/M2Preprocess.def: (New file).
* gm2-compiler/M2Preprocess.mod: (New file).
* gm2-compiler/M2Printf.def: (New file).
* gm2-compiler/M2Printf.mod: (New file).
* gm2-compiler/M2Quads.def: (New file).
* gm2-compiler/M2Quads.mod: (New file).
* gm2-compiler/M2Quiet.def: (New file).
* gm2-compiler/M2Quiet.mod: (New file).
* gm2-compiler/M2Range.def: (New file).
* gm2-compiler/M2Range.mod: (New file).
* gm2-compiler/M2Reserved.def: (New file).
* gm2-compiler/M2Reserved.mod: (New file).
* gm2-compiler/M2SSA.def: (New file).
* gm2-compiler/M2SSA.mod: (New file).
* gm2-compiler/M2Scaffold.def: (New file).
* gm2-compiler/M2Scaffold.mod: (New file).
* gm2-compiler/M2Scope.def: (New file).
* gm2-compiler/M2Scope.mod: (New file).
* gm2-compiler/M2Search.def: (New file).
* gm2-compiler/M2Search.mod: (New file).
* gm2-compiler/M2Size.def: (New file).
* gm2-compiler/M2Size.mod: (New file).
* gm2-compiler/M2StackAddress.def: (New file).
* gm2-compiler/M2StackAddress.mod: (New file).
* gm2-compiler/M2StackWord.def: (New file).
* gm2-compiler/M2StackWord.mod: (New file).
* gm2-compiler/M2Students.def: (New file).
* gm2-compiler/M2Students.mod: (New file).
* gm2-compiler/M2Swig.def: (New file).
* gm2-compiler/M2Swig.mod: (New file).
* gm2-compiler/M2System.def: (New file).
* gm2-compiler/M2System.mod: (New file).
* gm2-compiler/M2Version.def: (New file).
* gm2-compiler/NameKey.def: (New file).
* gm2-compiler/NameKey.mod: (New file).
* gm2-compiler/ObjectFiles.def: (New file).
* gm2-compiler/ObjectFiles.mod: (New file).
* gm2-compiler/Output.def: (New file).
* gm2-compiler/Output.mod: (New file).
* gm2-compiler/P0SymBuild.def: (New file).
* gm2-compiler/P0SymBuild.mod: (New file).
* gm2-compiler/P0SyntaxCheck.bnf: (New file).
* gm2-compiler/P0SyntaxCheck.def: (New file).
* gm2-compiler/P1Build.bnf: (New file).
* gm2-compiler/P1Build.def: (New file).
* gm2-compiler/P1SymBuild.def: (New file).
* gm2-compiler/P1SymBuild.mod: (New file).
* gm2-compiler/P2Build.bnf: (New file).
* gm2-compiler/P2Build.def: (New file).
* gm2-compiler/P2SymBuild.def: (New file).
* gm2-compiler/P2SymBuild.mod: (New file).
* gm2-compiler/P3Build.bnf: (New file).
* gm2-compiler/P3Build.def: (New file).
* gm2-compiler/P3SymBuild.def: (New file).
* gm2-compiler/P3SymBuild.mod: (New file).
* gm2-compiler/PCBuild.bnf: (New file).
* gm2-compiler/PCBuild.def: (New file).
* gm2-compiler/PCSymBuild.def: (New file).
* gm2-compiler/PCSymBuild.mod: (New file).
* gm2-compiler/PHBuild.bnf: (New file).
* gm2-compiler/PHBuild.def: (New file).
* gm2-compiler/README: (New file).
* gm2-compiler/Sets.def: (New file).
* gm2-compiler/Sets.mod: (New file).
* gm2-compiler/SymbolConversion.def: (New file).
* gm2-compiler/SymbolConversion.mod: (New file).
* gm2-compiler/SymbolKey.def: (New file).
* gm2-compiler/SymbolKey.mod: (New file).
* gm2-compiler/SymbolTable.def: (New file).
* gm2-compiler/SymbolTable.mod: (New file).
* gm2-compiler/bnflex.def: (New file).
* gm2-compiler/bnflex.mod: (New file).
* gm2-compiler/cflex.def: (New file).
* gm2-compiler/gm2.mod: (New file).
* gm2-compiler/gm2lcc.mod: (New file).
* gm2-compiler/gm2lgen.mod: (New file).
* gm2-compiler/gm2lorder.mod: (New file).
* gm2-compiler/m2flex.def: (New file).
* gm2-compiler/ppg.mod: (New file).
* gm2-gcc/README: (New file).
* gm2-gcc/dynamicstrings.h: (New file).
* gm2-gcc/gcc-consolidation.h: (New file).
* gm2-gcc/init.cc: (New file).
* gm2-gcc/init.def: (New file).
* gm2-gcc/init.h: (New file).
* gm2-gcc/m2assert.cc: (New file).
* gm2-gcc/m2assert.h: (New file).
* gm2-gcc/m2block.cc: (New file).
* gm2-gcc/m2block.def: (New file).
* gm2-gcc/m2block.h: (New file).
* gm2-gcc/m2builtins.cc: (New file).
* gm2-gcc/m2builtins.def: (New file).
* gm2-gcc/m2builtins.h: (New file).
* gm2-gcc/m2color.cc: (New file).
* gm2-gcc/m2color.def: (New file).
* gm2-gcc/m2color.h: (New file).
* gm2-gcc/m2configure.cc: (New file).
* gm2-gcc/m2configure.def: (New file).
* gm2-gcc/m2configure.h: (New file).
* gm2-gcc/m2convert.cc: (New file).
* gm2-gcc/m2convert.def: (New file).
* gm2-gcc/m2convert.h: (New file).
* gm2-gcc/m2decl.cc: (New file).
* gm2-gcc/m2decl.def: (New file).
* gm2-gcc/m2decl.h: (New file).
* gm2-gcc/m2except.cc: (New file).
* gm2-gcc/m2except.def: (New file).
* gm2-gcc/m2except.h: (New file).
* gm2-gcc/m2expr.cc: (New file).
* gm2-gcc/m2expr.def: (New file).
* gm2-gcc/m2expr.h: (New file).
* gm2-gcc/m2linemap.cc: (New file).
* gm2-gcc/m2linemap.def: (New file).
* gm2-gcc/m2linemap.h: (New file).
* gm2-gcc/m2misc.cc: (New file).
* gm2-gcc/m2misc.def: (New file).
* gm2-gcc/m2misc.h: (New file).
* gm2-gcc/m2options.h: (New file).
* gm2-gcc/m2range.h: (New file).
* gm2-gcc/m2search.h: (New file).
* gm2-gcc/m2statement.cc: (New file).
* gm2-gcc/m2statement.def: (New file).
* gm2-gcc/m2statement.h: (New file).
* gm2-gcc/m2top.cc: (New file).
* gm2-gcc/m2top.def: (New file).
* gm2-gcc/m2top.h: (New file).
* gm2-gcc/m2tree.cc: (New file).
* gm2-gcc/m2tree.def: (New file).
* gm2-gcc/m2tree.h: (New file).
* gm2-gcc/m2treelib.cc: (New file).
* gm2-gcc/m2treelib.def: (New file).
* gm2-gcc/m2treelib.h: (New file).
* gm2-gcc/m2type.cc: (New file).
* gm2-gcc/m2type.def: (New file).
* gm2-gcc/m2type.h: (New file).
* gm2-gcc/rtegraph.cc: (New file).
* gm2-gcc/rtegraph.h: (New file).
* gm2-ici/M2Emit.mod: (New file).
* gm2-ici/README: (New file).
* gm2-ici/m2linemap.c: (New file).
* gm2-internals.texi: (New file).
* gm2-lang.cc: (New file).
* gm2-lang.h: (New file).
* gm2-libiberty/README: (New file).
* gm2-libiberty/choosetemp.def: (New file).
* gm2-libiberty/pexecute.def: (New file).
* gm2-libs-ch/M2LINK.c: (New file).
* gm2-libs-ch/README: (New file).
* gm2-libs-ch/RTcodummy.c: (New file).
* gm2-libs-ch/RTintdummy.c: (New file).
* gm2-libs-ch/Selective.c: (New file).
* gm2-libs-ch/SysExceptions.c: (New file).
* gm2-libs-ch/UnixArgs.cc: (New file).
* gm2-libs-ch/cgetopt.c: (New file).
* gm2-libs-ch/choosetemp.c: (New file).
* gm2-libs-ch/dtoa.cc: (New file).
* gm2-libs-ch/errno.c: (New file).
* gm2-libs-ch/host.c: (New file).
* gm2-libs-ch/ldtoa.cc: (New file).
* gm2-libs-ch/m2rts.h: (New file).
* gm2-libs-ch/termios.c: (New file).
* gm2-libs-ch/tools.c: (New file).
* gm2-libs-ch/wrapc.c: (New file).
* gm2-libs-ch/xlibc.c: (New file).
* gm2-libs-coroutines/Debug.def: (New file).
* gm2-libs-coroutines/Debug.mod: (New file).
* gm2-libs-coroutines/Executive.def: (New file).
* gm2-libs-coroutines/Executive.mod: (New file).
* gm2-libs-coroutines/KeyBoardLEDs.def: (New file).
* gm2-libs-coroutines/README.texi: (New file).
* gm2-libs-coroutines/SYSTEM.def: (New file).
* gm2-libs-coroutines/SYSTEM.mod: (New file).
* gm2-libs-coroutines/TimerHandler.def: (New file).
* gm2-libs-coroutines/TimerHandler.mod: (New file).
* gm2-libs-iso/COROUTINES.def: (New file).
* gm2-libs-iso/COROUTINES.mod: (New file).
* gm2-libs-iso/ChanConsts.def: (New file).
* gm2-libs-iso/ChanConsts.h: (New file).
* gm2-libs-iso/ChanConsts.mod: (New file).
* gm2-libs-iso/CharClass.def: (New file).
* gm2-libs-iso/CharClass.mod: (New file).
* gm2-libs-iso/ClientSocket.def: (New file).
* gm2-libs-iso/ClientSocket.mod: (New file).
* gm2-libs-iso/ComplexMath.def: (New file).
* gm2-libs-iso/ComplexMath.mod: (New file).
* gm2-libs-iso/ConvStringLong.def: (New file).
* gm2-libs-iso/ConvStringLong.mod: (New file).
* gm2-libs-iso/ConvStringReal.def: (New file).
* gm2-libs-iso/ConvStringReal.mod: (New file).
* gm2-libs-iso/ConvTypes.def: (New file).
* gm2-libs-iso/ConvTypes.mod: (New file).
* gm2-libs-iso/EXCEPTIONS.def: (New file).
* gm2-libs-iso/EXCEPTIONS.mod: (New file).
* gm2-libs-iso/ErrnoCategory.def: (New file).
* gm2-libs-iso/GeneralUserExceptions.def: (New file).
* gm2-libs-iso/GeneralUserExceptions.mod: (New file).
* gm2-libs-iso/IOChan.def: (New file).
* gm2-libs-iso/IOChan.mod: (New file).
* gm2-libs-iso/IOConsts.def: (New file).
* gm2-libs-iso/IOConsts.mod: (New file).
* gm2-libs-iso/IOLink.def: (New file).
* gm2-libs-iso/IOLink.mod: (New file).
* gm2-libs-iso/IOResult.def: (New file).
* gm2-libs-iso/IOResult.mod: (New file).
* gm2-libs-iso/LongComplexMath.def: (New file).
* gm2-libs-iso/LongComplexMath.mod: (New file).
* gm2-libs-iso/LongConv.def: (New file).
* gm2-libs-iso/LongConv.mod: (New file).
* gm2-libs-iso/LongIO.def: (New file).
* gm2-libs-iso/LongIO.mod: (New file).
* gm2-libs-iso/LongMath.def: (New file).
* gm2-libs-iso/LongMath.mod: (New file).
* gm2-libs-iso/LongStr.def: (New file).
* gm2-libs-iso/LongStr.mod: (New file).
* gm2-libs-iso/LongWholeIO.def: (New file).
* gm2-libs-iso/LongWholeIO.mod: (New file).
* gm2-libs-iso/LowLong.def: (New file).
* gm2-libs-iso/LowLong.mod: (New file).
* gm2-libs-iso/LowReal.def: (New file).
* gm2-libs-iso/LowReal.mod: (New file).
* gm2-libs-iso/LowShort.def: (New file).
* gm2-libs-iso/LowShort.mod: (New file).
* gm2-libs-iso/M2EXCEPTION.def: (New file).
* gm2-libs-iso/M2EXCEPTION.mod: (New file).
* gm2-libs-iso/M2RTS.def: (New file).
* gm2-libs-iso/M2RTS.mod: (New file).
* gm2-libs-iso/MemStream.def: (New file).
* gm2-libs-iso/MemStream.mod: (New file).
* gm2-libs-iso/Preemptive.def: (New file).
* gm2-libs-iso/Preemptive.mod: (New file).
* gm2-libs-iso/Processes.def: (New file).
* gm2-libs-iso/Processes.mod: (New file).
* gm2-libs-iso/ProgramArgs.def: (New file).
* gm2-libs-iso/ProgramArgs.mod: (New file).
* gm2-libs-iso/README.texi: (New file).
* gm2-libs-iso/RTco.def: (New file).
* gm2-libs-iso/RTdata.def: (New file).
* gm2-libs-iso/RTdata.mod: (New file).
* gm2-libs-iso/RTentity.def: (New file).
* gm2-libs-iso/RTentity.mod: (New file).
* gm2-libs-iso/RTfio.def: (New file).
* gm2-libs-iso/RTfio.mod: (New file).
* gm2-libs-iso/RTgen.def: (New file).
* gm2-libs-iso/RTgen.mod: (New file).
* gm2-libs-iso/RTgenif.def: (New file).
* gm2-libs-iso/RTgenif.mod: (New file).
* gm2-libs-iso/RTio.def: (New file).
* gm2-libs-iso/RTio.mod: (New file).
* gm2-libs-iso/RandomNumber.def: (New file).
* gm2-libs-iso/RandomNumber.mod: (New file).
* gm2-libs-iso/RawIO.def: (New file).
* gm2-libs-iso/RawIO.mod: (New file).
* gm2-libs-iso/RealConv.def: (New file).
* gm2-libs-iso/RealConv.mod: (New file).
* gm2-libs-iso/RealIO.def: (New file).
* gm2-libs-iso/RealIO.mod: (New file).
* gm2-libs-iso/RealMath.def: (New file).
* gm2-libs-iso/RealMath.mod: (New file).
* gm2-libs-iso/RealStr.def: (New file).
* gm2-libs-iso/RealStr.mod: (New file).
* gm2-libs-iso/RndFile.def: (New file).
* gm2-libs-iso/RndFile.mod: (New file).
* gm2-libs-iso/SIOResult.def: (New file).
* gm2-libs-iso/SIOResult.mod: (New file).
* gm2-libs-iso/SLongIO.def: (New file).
* gm2-libs-iso/SLongIO.mod: (New file).
* gm2-libs-iso/SLongWholeIO.def: (New file).
* gm2-libs-iso/SLongWholeIO.mod: (New file).
* gm2-libs-iso/SRawIO.def: (New file).
* gm2-libs-iso/SRawIO.mod: (New file).
* gm2-libs-iso/SRealIO.def: (New file).
* gm2-libs-iso/SRealIO.mod: (New file).
* gm2-libs-iso/SShortIO.def: (New file).
* gm2-libs-iso/SShortIO.mod: (New file).
* gm2-libs-iso/SShortWholeIO.def: (New file).
* gm2-libs-iso/SShortWholeIO.mod: (New file).
* gm2-libs-iso/STextIO.def: (New file).
* gm2-libs-iso/STextIO.mod: (New file).
* gm2-libs-iso/SWholeIO.def: (New file).
* gm2-libs-iso/SWholeIO.mod: (New file).
* gm2-libs-iso/SYSTEM.def: (New file).
* gm2-libs-iso/SYSTEM.mod: (New file).
* gm2-libs-iso/Semaphores.def: (New file).
* gm2-libs-iso/Semaphores.mod: (New file).
* gm2-libs-iso/SeqFile.def: (New file).
* gm2-libs-iso/SeqFile.mod: (New file).
* gm2-libs-iso/ShortComplexMath.def: (New file).
* gm2-libs-iso/ShortComplexMath.mod: (New file).
* gm2-libs-iso/ShortIO.def: (New file).
* gm2-libs-iso/ShortIO.mod: (New file).
* gm2-libs-iso/ShortWholeIO.def: (New file).
* gm2-libs-iso/ShortWholeIO.mod: (New file).
* gm2-libs-iso/SimpleCipher.def: (New file).
* gm2-libs-iso/SimpleCipher.mod: (New file).
* gm2-libs-iso/StdChans.def: (New file).
* gm2-libs-iso/StdChans.mod: (New file).
* gm2-libs-iso/Storage.def: (New file).
* gm2-libs-iso/Storage.mod: (New file).
* gm2-libs-iso/StreamFile.def: (New file).
* gm2-libs-iso/StreamFile.mod: (New file).
* gm2-libs-iso/StringChan.def: (New file).
* gm2-libs-iso/StringChan.mod: (New file).
* gm2-libs-iso/Strings.def: (New file).
* gm2-libs-iso/Strings.mod: (New file).
* gm2-libs-iso/SysClock.def: (New file).
* gm2-libs-iso/SysClock.mod: (New file).
* gm2-libs-iso/TERMINATION.def: (New file).
* gm2-libs-iso/TERMINATION.mod: (New file).
* gm2-libs-iso/TermFile.def: (New file).
* gm2-libs-iso/TermFile.mod: (New file).
* gm2-libs-iso/TextIO.def: (New file).
* gm2-libs-iso/TextIO.mod: (New file).
* gm2-libs-iso/WholeConv.def: (New file).
* gm2-libs-iso/WholeConv.mod: (New file).
* gm2-libs-iso/WholeIO.def: (New file).
* gm2-libs-iso/WholeIO.mod: (New file).
* gm2-libs-iso/WholeStr.def: (New file).
* gm2-libs-iso/WholeStr.mod: (New file).
* gm2-libs-iso/wrapsock.c: (New file).
* gm2-libs-iso/wrapsock.def: (New file).
* gm2-libs-iso/wraptime.c: (New file).
* gm2-libs-iso/wraptime.def: (New file).
* gm2-libs-min/M2RTS.def: (New file).
* gm2-libs-min/M2RTS.mod: (New file).
* gm2-libs-min/SYSTEM.def: (New file).
* gm2-libs-min/SYSTEM.mod: (New file).
* gm2-libs-min/libc.c: (New file).
* gm2-libs-min/libc.def: (New file).
* gm2-libs-pim/BitBlockOps.def: (New file).
* gm2-libs-pim/BitBlockOps.mod: (New file).
* gm2-libs-pim/BitByteOps.def: (New file).
* gm2-libs-pim/BitByteOps.mod: (New file).
* gm2-libs-pim/BitWordOps.def: (New file).
* gm2-libs-pim/BitWordOps.mod: (New file).
* gm2-libs-pim/BlockOps.def: (New file).
* gm2-libs-pim/BlockOps.mod: (New file).
* gm2-libs-pim/Break.c: (New file).
* gm2-libs-pim/Break.def: (New file).
* gm2-libs-pim/CardinalIO.def: (New file).
* gm2-libs-pim/CardinalIO.mod: (New file).
* gm2-libs-pim/Conversions.def: (New file).
* gm2-libs-pim/Conversions.mod: (New file).
* gm2-libs-pim/DebugPMD.def: (New file).
* gm2-libs-pim/DebugPMD.mod: (New file).
* gm2-libs-pim/DebugTrace.def: (New file).
* gm2-libs-pim/DebugTrace.mod: (New file).
* gm2-libs-pim/Delay.def: (New file).
* gm2-libs-pim/Delay.mod: (New file).
* gm2-libs-pim/Display.def: (New file).
* gm2-libs-pim/Display.mod: (New file).
* gm2-libs-pim/ErrorCode.def: (New file).
* gm2-libs-pim/ErrorCode.mod: (New file).
* gm2-libs-pim/FileSystem.def: (New file).
* gm2-libs-pim/FileSystem.mod: (New file).
* gm2-libs-pim/FloatingUtilities.def: (New file).
* gm2-libs-pim/FloatingUtilities.mod: (New file).
* gm2-libs-pim/InOut.def: (New file).
* gm2-libs-pim/InOut.mod: (New file).
* gm2-libs-pim/Keyboard.def: (New file).
* gm2-libs-pim/Keyboard.mod: (New file).
* gm2-libs-pim/LongIO.def: (New file).
* gm2-libs-pim/LongIO.mod: (New file).
* gm2-libs-pim/NumberConversion.def: (New file).
* gm2-libs-pim/NumberConversion.mod: (New file).
* gm2-libs-pim/README.texi: (New file).
* gm2-libs-pim/Random.def: (New file).
* gm2-libs-pim/Random.mod: (New file).
* gm2-libs-pim/RealConversions.def: (New file).
* gm2-libs-pim/RealConversions.mod: (New file).
* gm2-libs-pim/RealInOut.def: (New file).
* gm2-libs-pim/RealInOut.mod: (New file).
* gm2-libs-pim/Strings.def: (New file).
* gm2-libs-pim/Strings.mod: (New file).
* gm2-libs-pim/Termbase.def: (New file).
* gm2-libs-pim/Termbase.mod: (New file).
* gm2-libs-pim/Terminal.def: (New file).
* gm2-libs-pim/Terminal.mod: (New file).
* gm2-libs-pim/TimeDate.def: (New file).
* gm2-libs-pim/TimeDate.mod: (New file).
* gm2-libs/ASCII.def: (New file).
* gm2-libs/ASCII.mod: (New file).
* gm2-libs/Args.def: (New file).
* gm2-libs/Args.mod: (New file).
* gm2-libs/Assertion.def: (New file).
* gm2-libs/Assertion.mod: (New file).
* gm2-libs/Break.def: (New file).
* gm2-libs/Break.mod: (New file).
* gm2-libs/Builtins.def: (New file).
* gm2-libs/Builtins.mod: (New file).
* gm2-libs/COROUTINES.def: (New file).
* gm2-libs/COROUTINES.mod: (New file).
* gm2-libs/CmdArgs.def: (New file).
* gm2-libs/CmdArgs.mod: (New file).
* gm2-libs/Debug.def: (New file).
* gm2-libs/Debug.mod: (New file).
* gm2-libs/DynamicStrings.def: (New file).
* gm2-libs/DynamicStrings.mod: (New file).
* gm2-libs/Environment.def: (New file).
* gm2-libs/Environment.mod: (New file).
* gm2-libs/FIO.def: (New file).
* gm2-libs/FIO.mod: (New file).
* gm2-libs/FormatStrings.def: (New file).
* gm2-libs/FormatStrings.mod: (New file).
* gm2-libs/FpuIO.def: (New file).
* gm2-libs/FpuIO.mod: (New file).
* gm2-libs/GetOpt.def: (New file).
* gm2-libs/GetOpt.mod: (New file).
* gm2-libs/IO.def: (New file).
* gm2-libs/IO.mod: (New file).
* gm2-libs/Indexing.def: (New file).
* gm2-libs/Indexing.mod: (New file).
* gm2-libs/LMathLib0.def: (New file).
* gm2-libs/LMathLib0.mod: (New file).
* gm2-libs/LegacyReal.def: (New file).
* gm2-libs/LegacyReal.mod: (New file).
* gm2-libs/M2Dependent.def: (New file).
* gm2-libs/M2Dependent.mod: (New file).
* gm2-libs/M2EXCEPTION.def: (New file).
* gm2-libs/M2EXCEPTION.mod: (New file).
* gm2-libs/M2LINK.def: (New file).
* gm2-libs/M2RTS.def: (New file).
* gm2-libs/M2RTS.mod: (New file).
* gm2-libs/MathLib0.def: (New file).
* gm2-libs/MathLib0.mod: (New file).
* gm2-libs/MemUtils.def: (New file).
* gm2-libs/MemUtils.mod: (New file).
* gm2-libs/NumberIO.def: (New file).
* gm2-libs/NumberIO.mod: (New file).
* gm2-libs/OptLib.def: (New file).
* gm2-libs/OptLib.mod: (New file).
* gm2-libs/PushBackInput.def: (New file).
* gm2-libs/PushBackInput.mod: (New file).
* gm2-libs/README.texi: (New file).
* gm2-libs/RTExceptions.def: (New file).
* gm2-libs/RTExceptions.mod: (New file).
* gm2-libs/RTint.def: (New file).
* gm2-libs/RTint.mod: (New file).
* gm2-libs/SArgs.def: (New file).
* gm2-libs/SArgs.mod: (New file).
* gm2-libs/SCmdArgs.def: (New file).
* gm2-libs/SCmdArgs.mod: (New file).
* gm2-libs/SEnvironment.def: (New file).
* gm2-libs/SEnvironment.mod: (New file).
* gm2-libs/SFIO.def: (New file).
* gm2-libs/SFIO.mod: (New file).
* gm2-libs/SMathLib0.def: (New file).
* gm2-libs/SMathLib0.mod: (New file).
* gm2-libs/SYSTEM.def: (New file).
* gm2-libs/SYSTEM.mod: (New file).
* gm2-libs/Scan.def: (New file).
* gm2-libs/Scan.mod: (New file).
* gm2-libs/Selective.def: (New file).
* gm2-libs/StdIO.def: (New file).
* gm2-libs/StdIO.mod: (New file).
* gm2-libs/Storage.def: (New file).
* gm2-libs/Storage.mod: (New file).
* gm2-libs/StrCase.def: (New file).
* gm2-libs/StrCase.mod: (New file).
* gm2-libs/StrIO.def: (New file).
* gm2-libs/StrIO.mod: (New file).
* gm2-libs/StrLib.def: (New file).
* gm2-libs/StrLib.mod: (New file).
* gm2-libs/StringConvert.def: (New file).
* gm2-libs/StringConvert.mod: (New file).
* gm2-libs/SysExceptions.def: (New file).
* gm2-libs/SysStorage.def: (New file).
* gm2-libs/SysStorage.mod: (New file).
* gm2-libs/TimeString.def: (New file).
* gm2-libs/TimeString.mod: (New file).
* gm2-libs/UnixArgs.def: (New file).
* gm2-libs/cbuiltin.def: (New file).
* gm2-libs/cgetopt.def: (New file).
* gm2-libs/config-host: (New file).
* gm2-libs/config-host.in: (New file).
* gm2-libs/cxxabi.def: (New file).
* gm2-libs/dtoa.def: (New file).
* gm2-libs/errno.def: (New file).
* gm2-libs/gdbif.def: (New file).
* gm2-libs/gdbif.mod: (New file).
* gm2-libs/gm2-libs-host.h.in: (New file).
* gm2-libs/ldtoa.def: (New file).
* gm2-libs/libc.def: (New file).
* gm2-libs/libm.def: (New file).
* gm2-libs/sckt.def: (New file).
* gm2-libs/termios.def: (New file).
* gm2-libs/wrapc.def: (New file).
* gm2config.h.in: (New file).
* gm2spec.cc: (New file).
* gm2version.h: (New file).
* init/README: (New file).
* init/mcinit: (New file).
* init/ppginit: (New file).
* lang-specs.h: (New file).
* lang.opt: (New file).
* m2-tree.def: (New file).
* m2-tree.h: (New file).
* m2.flex: (New file).
* m2pp.cc: (New file).
* m2pp.h: (New file).
* mc-boot-ch/GBuiltins.c: (New file).
* mc-boot-ch/GM2LINK.c: (New file).
* mc-boot-ch/GRTco.c: (New file).
* mc-boot-ch/GSYSTEM.c: (New file).
* mc-boot-ch/GSelective.c: (New file).
* mc-boot-ch/GSysExceptions.c: (New file).
* mc-boot-ch/GUnixArgs.cc: (New file).
* mc-boot-ch/Gabort.c: (New file).
* mc-boot-ch/Gcbuiltin.c: (New file).
* mc-boot-ch/Gdtoa.c: (New file).
* mc-boot-ch/Gerrno.c: (New file).
* mc-boot-ch/Gldtoa.c: (New file).
* mc-boot-ch/Glibc.c: (New file).
* mc-boot-ch/Glibm.c: (New file).
* mc-boot-ch/Gmcrts.c: (New file).
* mc-boot-ch/Gmcrts.h: (New file).
* mc-boot-ch/Gnetwork.h: (New file).
* mc-boot-ch/Gtermios.cc: (New file).
* mc-boot-ch/Gwrapc.c: (New file).
* mc-boot-ch/README: (New file).
* mc-boot-ch/m2rts.h: (New file).
* mc-boot-ch/network.c: (New file).
* mc-boot/GASCII.c: (New file).
* mc-boot/GASCII.h: (New file).
* mc-boot/GArgs.c: (New file).
* mc-boot/GArgs.h: (New file).
* mc-boot/GAssertion.c: (New file).
* mc-boot/GAssertion.h: (New file).
* mc-boot/GBreak.c: (New file).
* mc-boot/GBreak.h: (New file).
* mc-boot/GCOROUTINES.h: (New file).
* mc-boot/GCmdArgs.c: (New file).
* mc-boot/GCmdArgs.h: (New file).
* mc-boot/GDebug.c: (New file).
* mc-boot/GDebug.h: (New file).
* mc-boot/GDynamicStrings.c: (New file).
* mc-boot/GDynamicStrings.h: (New file).
* mc-boot/GEnvironment.c: (New file).
* mc-boot/GEnvironment.h: (New file).
* mc-boot/GFIO.c: (New file).
* mc-boot/GFIO.h: (New file).
* mc-boot/GFormatStrings.c: (New file).
* mc-boot/GFormatStrings.h: (New file).
* mc-boot/GFpuIO.c: (New file).
* mc-boot/GFpuIO.h: (New file).
* mc-boot/GIO.c: (New file).
* mc-boot/GIO.h: (New file).
* mc-boot/GIndexing.c: (New file).
* mc-boot/GIndexing.h: (New file).
* mc-boot/GM2Dependent.c: (New file).
* mc-boot/GM2Dependent.h: (New file).
* mc-boot/GM2EXCEPTION.c: (New file).
* mc-boot/GM2EXCEPTION.h: (New file).
* mc-boot/GM2LINK.h: (New file).
* mc-boot/GM2RTS.c: (New file).
* mc-boot/GM2RTS.h: (New file).
* mc-boot/GMemUtils.c: (New file).
* mc-boot/GMemUtils.h: (New file).
* mc-boot/GNumberIO.c: (New file).
* mc-boot/GNumberIO.h: (New file).
* mc-boot/GPushBackInput.c: (New file).
* mc-boot/GPushBackInput.h: (New file).
* mc-boot/GRTExceptions.c: (New file).
* mc-boot/GRTExceptions.h: (New file).
* mc-boot/GRTco.h: (New file).
* mc-boot/GRTint.c: (New file).
* mc-boot/GRTint.h: (New file).
* mc-boot/GSArgs.c: (New file).
* mc-boot/GSArgs.h: (New file).
* mc-boot/GSFIO.c: (New file).
* mc-boot/GSFIO.h: (New file).
* mc-boot/GSYSTEM.h: (New file).
* mc-boot/GSelective.h: (New file).
* mc-boot/GStdIO.c: (New file).
* mc-boot/GStdIO.h: (New file).
* mc-boot/GStorage.c: (New file).
* mc-boot/GStorage.h: (New file).
* mc-boot/GStrCase.c: (New file).
* mc-boot/GStrCase.h: (New file).
* mc-boot/GStrIO.c: (New file).
* mc-boot/GStrIO.h: (New file).
* mc-boot/GStrLib.c: (New file).
* mc-boot/GStrLib.h: (New file).
* mc-boot/GStringConvert.c: (New file).
* mc-boot/GStringConvert.h: (New file).
* mc-boot/GSysExceptions.h: (New file).
* mc-boot/GSysStorage.c: (New file).
* mc-boot/GSysStorage.h: (New file).
* mc-boot/GTimeString.c: (New file).
* mc-boot/GTimeString.h: (New file).
* mc-boot/GUnixArgs.h: (New file).
* mc-boot/Galists.c: (New file).
* mc-boot/Galists.h: (New file).
* mc-boot/Gdecl.c: (New file).
* mc-boot/Gdecl.h: (New file).
* mc-boot/Gdtoa.h: (New file).
* mc-boot/Gerrno.h: (New file).
* mc-boot/Gkeyc.c: (New file).
* mc-boot/Gkeyc.h: (New file).
* mc-boot/Gldtoa.h: (New file).
* mc-boot/Glibc.h: (New file).
* mc-boot/Glibm.h: (New file).
* mc-boot/Glists.c: (New file).
* mc-boot/Glists.h: (New file).
* mc-boot/GmcComment.c: (New file).
* mc-boot/GmcComment.h: (New file).
* mc-boot/GmcComp.c: (New file).
* mc-boot/GmcComp.h: (New file).
* mc-boot/GmcDebug.c: (New file).
* mc-boot/GmcDebug.h: (New file).
* mc-boot/GmcError.c: (New file).
* mc-boot/GmcError.h: (New file).
* mc-boot/GmcFileName.c: (New file).
* mc-boot/GmcFileName.h: (New file).
* mc-boot/GmcLexBuf.c: (New file).
* mc-boot/GmcLexBuf.h: (New file).
* mc-boot/GmcMetaError.c: (New file).
* mc-boot/GmcMetaError.h: (New file).
* mc-boot/GmcOptions.c: (New file).
* mc-boot/GmcOptions.h: (New file).
* mc-boot/GmcPreprocess.c: (New file).
* mc-boot/GmcPreprocess.h: (New file).
* mc-boot/GmcPretty.c: (New file).
* mc-boot/GmcPretty.h: (New file).
* mc-boot/GmcPrintf.c: (New file).
* mc-boot/GmcPrintf.h: (New file).
* mc-boot/GmcQuiet.c: (New file).
* mc-boot/GmcQuiet.h: (New file).
* mc-boot/GmcReserved.c: (New file).
* mc-boot/GmcReserved.h: (New file).
* mc-boot/GmcSearch.c: (New file).
* mc-boot/GmcSearch.h: (New file).
* mc-boot/GmcStack.c: (New file).
* mc-boot/GmcStack.h: (New file).
* mc-boot/GmcStream.c: (New file).
* mc-boot/GmcStream.h: (New file).
* mc-boot/Gmcflex.h: (New file).
* mc-boot/Gmcp1.c: (New file).
* mc-boot/Gmcp1.h: (New file).
* mc-boot/Gmcp2.c: (New file).
* mc-boot/Gmcp2.h: (New file).
* mc-boot/Gmcp3.c: (New file).
* mc-boot/Gmcp3.h: (New file).
* mc-boot/Gmcp4.c: (New file).
* mc-boot/Gmcp4.h: (New file).
* mc-boot/Gmcp5.c: (New file).
* mc-boot/Gmcp5.h: (New file).
* mc-boot/GnameKey.c: (New file).
* mc-boot/GnameKey.h: (New file).
* mc-boot/Gpth.h: (New file).
* mc-boot/GsymbolKey.c: (New file).
* mc-boot/GsymbolKey.h: (New file).
* mc-boot/Gtermios.h: (New file).
* mc-boot/Gtop.c: (New file).
* mc-boot/Gvarargs.c: (New file).
* mc-boot/Gvarargs.h: (New file).
* mc-boot/Gwlists.c: (New file).
* mc-boot/Gwlists.h: (New file).
* mc-boot/Gwrapc.h: (New file).
* mc-boot/README: (New file).
* mc/Indexing.def: (New file).
* mc/Indexing.mod: (New file).
* mc/README: (New file).
* mc/alists.def: (New file).
* mc/alists.mod: (New file).
* mc/decl.def: (New file).
* mc/decl.mod: (New file).
* mc/decl.mod-extra: (New file).
* mc/keyc.def: (New file).
* mc/keyc.mod: (New file).
* mc/lists.def: (New file).
* mc/lists.mod: (New file).
* mc/m2flex.def: (New file).
* mc/mc.flex: (New file).
* mc/mcComment.def: (New file).
* mc/mcComment.h: (New file).
* mc/mcComment.mod: (New file).
* mc/mcComp.def: (New file).
* mc/mcComp.mod: (New file).
* mc/mcDebug.def: (New file).
* mc/mcDebug.mod: (New file).
* mc/mcError.def: (New file).
* mc/mcError.mod: (New file).
* mc/mcFileName.def: (New file).
* mc/mcFileName.mod: (New file).
* mc/mcLexBuf.def: (New file).
* mc/mcLexBuf.h: (New file).
* mc/mcLexBuf.mod: (New file).
* mc/mcMetaError.def: (New file).
* mc/mcMetaError.mod: (New file).
* mc/mcOptions.def: (New file).
* mc/mcOptions.mod: (New file).
* mc/mcPreprocess.def: (New file).
* mc/mcPreprocess.mod: (New file).
* mc/mcPretty.def: (New file).
* mc/mcPretty.mod: (New file).
* mc/mcPrintf.def: (New file).
* mc/mcPrintf.mod: (New file).
* mc/mcQuiet.def: (New file).
* mc/mcQuiet.mod: (New file).
* mc/mcReserved.def: (New file).
* mc/mcReserved.h: (New file).
* mc/mcReserved.mod: (New file).
* mc/mcSearch.def: (New file).
* mc/mcSearch.mod: (New file).
* mc/mcStack.def: (New file).
* mc/mcStack.mod: (New file).
* mc/mcStream.def: (New file).
* mc/mcStream.mod: (New file).
* mc/mcflex.def: (New file).
* mc/mcp1.bnf: (New file).
* mc/mcp1.def: (New file).
* mc/mcp2.bnf: (New file).
* mc/mcp2.def: (New file).
* mc/mcp3.bnf: (New file).
* mc/mcp3.def: (New file).
* mc/mcp4.bnf: (New file).
* mc/mcp4.def: (New file).
* mc/mcp5.bnf: (New file).
* mc/mcp5.def: (New file).
* mc/nameKey.def: (New file).
* mc/nameKey.mod: (New file).
* mc/symbolKey.def: (New file).
* mc/symbolKey.mod: (New file).
* mc/top.mod: (New file).
* mc/varargs.def: (New file).
* mc/varargs.mod: (New file).
* mc/wlists.def: (New file).
* mc/wlists.mod: (New file).
* pge-boot/GASCII.c: (New file).
* pge-boot/GASCII.h: (New file).
* pge-boot/GArgs.c: (New file).
* pge-boot/GArgs.h: (New file).
* pge-boot/GAssertion.c: (New file).
* pge-boot/GAssertion.h: (New file).
* pge-boot/GBreak.h: (New file).
* pge-boot/GBuiltins.c: (New file).
* pge-boot/GCmdArgs.h: (New file).
* pge-boot/GDebug.c: (New file).
* pge-boot/GDebug.h: (New file).
* pge-boot/GDynamicStrings.c: (New file).
* pge-boot/GDynamicStrings.h: (New file).
* pge-boot/GEnvironment.h: (New file).
* pge-boot/GFIO.c: (New file).
* pge-boot/GFIO.h: (New file).
* pge-boot/GFormatStrings.h: (New file).
* pge-boot/GFpuIO.h: (New file).
* pge-boot/GIO.c: (New file).
* pge-boot/GIO.h: (New file).
* pge-boot/GIndexing.c: (New file).
* pge-boot/GIndexing.h: (New file).
* pge-boot/GLists.c: (New file).
* pge-boot/GLists.h: (New file).
* pge-boot/GM2Dependent.c: (New file).
* pge-boot/GM2Dependent.h: (New file).
* pge-boot/GM2EXCEPTION.c: (New file).
* pge-boot/GM2EXCEPTION.h: (New file).
* pge-boot/GM2LINK.c: (New file).
* pge-boot/GM2LINK.h: (New file).
* pge-boot/GM2RTS.c: (New file).
* pge-boot/GM2RTS.h: (New file).
* pge-boot/GNameKey.c: (New file).
* pge-boot/GNameKey.h: (New file).
* pge-boot/GNumberIO.c: (New file).
* pge-boot/GNumberIO.h: (New file).
* pge-boot/GOutput.c: (New file).
* pge-boot/GOutput.h: (New file).
* pge-boot/GPushBackInput.c: (New file).
* pge-boot/GPushBackInput.h: (New file).
* pge-boot/GRTExceptions.c: (New file).
* pge-boot/GRTExceptions.h: (New file).
* pge-boot/GRTco.c: (New file).
* pge-boot/GSArgs.h: (New file).
* pge-boot/GSEnvironment.h: (New file).
* pge-boot/GSFIO.c: (New file).
* pge-boot/GSFIO.h: (New file).
* pge-boot/GSYSTEM.c: (New file).
* pge-boot/GSYSTEM.h: (New file).
* pge-boot/GScan.h: (New file).
* pge-boot/GSelective.c: (New file).
* pge-boot/GStdIO.c: (New file).
* pge-boot/GStdIO.h: (New file).
* pge-boot/GStorage.c: (New file).
* pge-boot/GStorage.h: (New file).
* pge-boot/GStrCase.c: (New file).
* pge-boot/GStrCase.h: (New file).
* pge-boot/GStrIO.c: (New file).
* pge-boot/GStrIO.h: (New file).
* pge-boot/GStrLib.c: (New file).
* pge-boot/GStrLib.h: (New file).
* pge-boot/GStringConvert.h: (New file).
* pge-boot/GSymbolKey.c: (New file).
* pge-boot/GSymbolKey.h: (New file).
* pge-boot/GSysExceptions.c: (New file).
* pge-boot/GSysExceptions.h: (New file).
* pge-boot/GSysStorage.c: (New file).
* pge-boot/GSysStorage.h: (New file).
* pge-boot/GTimeString.h: (New file).
* pge-boot/GUnixArgs.cc: (New file).
* pge-boot/GUnixArgs.h: (New file).
* pge-boot/Gabort.c: (New file).
* pge-boot/Gbnflex.c: (New file).
* pge-boot/Gbnflex.h: (New file).
* pge-boot/Gcbuiltin.c: (New file).
* pge-boot/Gdtoa.c: (New file).
* pge-boot/Gdtoa.h: (New file).
* pge-boot/Gerrno.c: (New file).
* pge-boot/Gerrno.h: (New file).
* pge-boot/Gldtoa.c: (New file).
* pge-boot/Gldtoa.h: (New file).
* pge-boot/Glibc.c: (New file).
* pge-boot/Glibc.h: (New file).
* pge-boot/Glibm.c: (New file).
* pge-boot/Glibm.h: (New file).
* pge-boot/Gmcrts.c: (New file).
* pge-boot/Gmcrts.h: (New file).
* pge-boot/Gnetwork.h: (New file).
* pge-boot/Gpge.c: (New file).
* pge-boot/Gtermios.cc: (New file).
* pge-boot/Gtermios.h: (New file).
* pge-boot/Gwrapc.c: (New file).
* pge-boot/Gwrapc.h: (New file).
* pge-boot/README: (New file).
* pge-boot/m2rts.h: (New file).
* pge-boot/main.c: (New file).
* pge-boot/network.c: (New file).
* plugin/README: (New file).
* plugin/m2rte.cc: (New file).
* tools-src/README: (New file).
* tools-src/boilerplate.py: (New file).
* tools-src/buildpg: (New file).
* tools-src/calcpath: (New file).
* tools-src/def2doc.py: (New file).
* tools-src/makeSystem: (New file).
* tools-src/mklink.c: (New file).
* tools-src/tidydates.py: (New file).
* images/LICENSE.IMG: (New file).
* images/gnupng: (New file).
* images/gnu.eps: (New file).
* version.c: (New file).
* configure: (Rebuilt).
gcc/testsuite/ChangeLog:
* lib/gm2-dg.exp: (New file).
* lib/gm2.exp: (New file).
* lib/gm2-simple.exp: (New file).
* lib/gm2-torture.exp: (New file).
* gm2/calling-c/datatypes/unbounded/run/pass/c.c: (New file).
* gm2/calling-c/datatypes/unbounded/run/pass/c.def: (New file).
* gm2/calling-c/datatypes/unbounded/run/pass/calling-c-datatypes-unbounded-run-pass.exp:
(New file).
* gm2/calling-c/datatypes/unbounded/run/pass/m.mod: (New file).
* gm2/case/pass/case-pass.exp: (New file).
* gm2/case/pass/testcase1.mod: (New file).
* gm2/case/pass/testcase2.mod: (New file).
* gm2/case/pass/testcase3.mod: (New file).
* gm2/case/pass/testcase4.mod: (New file).
* gm2/complex/fail/var1.mod: (New file).
* gm2/complex/pass/arith.mod: (New file).
* gm2/complex/pass/arith2.mod: (New file).
* gm2/complex/pass/arith3.mod: (New file).
* gm2/complex/pass/arith4.mod: (New file).
* gm2/complex/pass/arith5.mod: (New file).
* gm2/complex/pass/arith6.mod: (New file).
* gm2/complex/pass/complex-pass.exp: (New file).
* gm2/complex/pass/consts.mod: (New file).
* gm2/complex/pass/consts2.mod: (New file).
* gm2/complex/pass/consts3.mod: (New file).
* gm2/complex/pass/tinycabs.mod: (New file).
* gm2/complex/pass/var1.mod: (New file).
* gm2/complex/pass/var2.mod: (New file).
* gm2/complex/pass/var3.mod: (New file).
* gm2/complex/pass/var4.mod: (New file).
* gm2/complex/pass/var5.mod: (New file).
* gm2/complex/pass/var6.mod: (New file).
* gm2/complex/pass/var7.mod: (New file).
* gm2/complex/pass/var8.mod: (New file).
* gm2/complex/run/pass/arith3.mod: (New file).
* gm2/complex/run/pass/arith4.mod: (New file).
* gm2/complex/run/pass/arith5.mod: (New file).
* gm2/complex/run/pass/arith6.mod: (New file).
* gm2/complex/run/pass/arith7.mod: (New file).
* gm2/complex/run/pass/arith8.mod: (New file).
* gm2/complex/run/pass/complex-run-pass.exp: (New file).
* gm2/coroutines/pim/run/pass/coroutines-pim-run-pass.exp: (New file).
* gm2/coroutines/pim/run/pass/testiotransfer.mod: (New file).
* gm2/coroutines/pim/run/pass/testtransfer.mod: (New file).
* gm2/cpp/fail/another.h: (New file).
* gm2/cpp/fail/fail1.mod: (New file).
* gm2/cpp/longcard2.mod: (New file).
* gm2/cpp/longstrimp.mod: (New file).
* gm2/cpp/pass/arrayhuge.mod: (New file).
* gm2/cpp/pass/arrayhuge2.mod: (New file).
* gm2/cpp/pass/cpp-pass.exp: (New file).
* gm2/cpp/pass/cpp.mod: (New file).
* gm2/cpp/pass/cpph.mod: (New file).
* gm2/cpp/pass/subaddr.mod: (New file).
* gm2/cpp/pass/testcpp.mod: (New file).
* gm2/cpp/pass/testcpp2.mod: (New file).
* gm2/cpp/setchar2.mod: (New file).
* gm2/cpp/setchar6.mod: (New file).
* gm2/cse/fail/cse-fail.exp: (New file).
* gm2/cse/fail/testcse38.mod: (New file).
* gm2/cse/pass/cse-pass.exp: (New file).
* gm2/cse/pass/m2t.c: (New file).
* gm2/cse/pass/testb.mod: (New file).
* gm2/cse/pass/testbuiltin.def: (New file).
* gm2/cse/pass/testbuiltin.mod: (New file).
* gm2/cse/pass/testcse.def: (New file).
* gm2/cse/pass/testcse.mod: (New file).
* gm2/cse/pass/testcse10.mod: (New file).
* gm2/cse/pass/testcse11.mod: (New file).
* gm2/cse/pass/testcse12.mod: (New file).
* gm2/cse/pass/testcse13.mod: (New file).
* gm2/cse/pass/testcse14.mod: (New file).
* gm2/cse/pass/testcse15.mod: (New file).
* gm2/cse/pass/testcse16.mod: (New file).
* gm2/cse/pass/testcse17.mod: (New file).
* gm2/cse/pass/testcse18.mod: (New file).
* gm2/cse/pass/testcse19.mod: (New file).
* gm2/cse/pass/testcse2.mod: (New file).
* gm2/cse/pass/testcse20.mod: (New file).
* gm2/cse/pass/testcse21.mod: (New file).
* gm2/cse/pass/testcse22.mod: (New file).
* gm2/cse/pass/testcse23.mod: (New file).
* gm2/cse/pass/testcse24.mod: (New file).
* gm2/cse/pass/testcse25.mod: (New file).
* gm2/cse/pass/testcse26.mod: (New file).
* gm2/cse/pass/testcse27.mod: (New file).
* gm2/cse/pass/testcse28.mod: (New file).
* gm2/cse/pass/testcse29.mod: (New file).
* gm2/cse/pass/testcse3.mod: (New file).
* gm2/cse/pass/testcse31.mod: (New file).
* gm2/cse/pass/testcse32.mod: (New file).
* gm2/cse/pass/testcse33.mod: (New file).
* gm2/cse/pass/testcse34.mod: (New file).
* gm2/cse/pass/testcse35.mod: (New file).
* gm2/cse/pass/testcse36.mod: (New file).
* gm2/cse/pass/testcse37.mod: (New file).
* gm2/cse/pass/testcse39.mod: (New file).
* gm2/cse/pass/testcse4.c: (New file).
* gm2/cse/pass/testcse4.mod: (New file).
* gm2/cse/pass/testcse40.mod: (New file).
* gm2/cse/pass/testcse41.mod: (New file).
* gm2/cse/pass/testcse42.mod: (New file).
* gm2/cse/pass/testcse43.mod: (New file).
* gm2/cse/pass/testcse44.mod: (New file).
* gm2/cse/pass/testcse45.mod: (New file).
* gm2/cse/pass/testcse46.mod: (New file).
* gm2/cse/pass/testcse47.mod: (New file).
* gm2/cse/pass/testcse48.mod: (New file).
* gm2/cse/pass/testcse49.mod: (New file).
* gm2/cse/pass/testcse5.c: (New file).
* gm2/cse/pass/testcse5.mod: (New file).
* gm2/cse/pass/testcse50.def: (New file).
* gm2/cse/pass/testcse50.mod: (New file).
* gm2/cse/pass/testcse51.mod: (New file).
* gm2/cse/pass/testcse52.def: (New file).
* gm2/cse/pass/testcse52.mod: (New file).
* gm2/cse/pass/testcse53.def: (New file).
* gm2/cse/pass/testcse53.mod: (New file).
* gm2/cse/pass/testcse6.c: (New file).
* gm2/cse/pass/testcse6.mod: (New file).
* gm2/cse/pass/testcse7.c: (New file).
* gm2/cse/pass/testcse7.mod: (New file).
* gm2/cse/pass/testcse8.c: (New file).
* gm2/cse/pass/testcse8.mod: (New file).
* gm2/cse/pass/testcse9.c: (New file).
* gm2/cse/pass/testsize.mod: (New file).
* gm2/dynamic/pass/add.mod: (New file).
* gm2/dynamic/pass/dynamic-pass.exp: (New file).
* gm2/dynamic/pass/prog21.mod: (New file).
* gm2/dynamic/pass/testarray.mod: (New file).
* gm2/dynamic/pass/testarray2.mod: (New file).
* gm2/dynamic/pass/testarray3.mod: (New file).
* gm2/dynamic/pass/testarray4.mod: (New file).
* gm2/dynamic/pass/testarray6.mod: (New file).
* gm2/dynamic/pass/testbec.mod: (New file).
* gm2/dynamic/pass/testbec10.mod: (New file).
* gm2/dynamic/pass/testbec11.mod: (New file).
* gm2/dynamic/pass/testbec12.mod: (New file).
* gm2/dynamic/pass/testbec13.mod: (New file).
* gm2/dynamic/pass/testbec14.mod: (New file).
* gm2/dynamic/pass/testbec15.mod: (New file).
* gm2/dynamic/pass/testbec16.mod: (New file).
* gm2/dynamic/pass/testbec17.mod: (New file).
* gm2/dynamic/pass/testbec18.mod: (New file).
* gm2/dynamic/pass/testbec19.mod: (New file).
* gm2/dynamic/pass/testbec2.mod: (New file).
* gm2/dynamic/pass/testbec20.mod: (New file).
* gm2/dynamic/pass/testbec21.mod: (New file).
* gm2/dynamic/pass/testbec22.mod: (New file).
* gm2/dynamic/pass/testbec23.mod: (New file).
* gm2/dynamic/pass/testbec24.mod: (New file).
* gm2/dynamic/pass/testbec25.mod: (New file).
* gm2/dynamic/pass/testbec26.mod: (New file).
* gm2/dynamic/pass/testbec27.mod: (New file).
* gm2/dynamic/pass/testbec28.mod: (New file).
* gm2/dynamic/pass/testbec29.mod: (New file).
* gm2/dynamic/pass/testbec3.mod: (New file).
* gm2/dynamic/pass/testbec30.mod: (New file).
* gm2/dynamic/pass/testbec31.mod: (New file).
* gm2/dynamic/pass/testbec32.mod: (New file).
* gm2/dynamic/pass/testbec33.mod: (New file).
* gm2/dynamic/pass/testbec34.mod: (New file).
* gm2/dynamic/pass/testbec35.mod: (New file).
* gm2/dynamic/pass/testbec36.mod: (New file).
* gm2/dynamic/pass/testbec37.mod: (New file).
* gm2/dynamic/pass/testbec38.mod: (New file).
* gm2/dynamic/pass/testbec39.mod: (New file).
* gm2/dynamic/pass/testbec4.mod: (New file).
* gm2/dynamic/pass/testbec40.mod: (New file).
* gm2/dynamic/pass/testbec41.mod: (New file).
* gm2/dynamic/pass/testbec42.mod: (New file).
* gm2/dynamic/pass/testbec43.mod: (New file).
* gm2/dynamic/pass/testbec44.mod: (New file).
* gm2/dynamic/pass/testbec45.mod: (New file).
* gm2/dynamic/pass/testbec5.mod: (New file).
* gm2/dynamic/pass/testbec6.mod: (New file).
* gm2/dynamic/pass/testbec7.mod: (New file).
* gm2/dynamic/pass/testbec8.mod: (New file).
* gm2/dynamic/pass/testbec9.mod: (New file).
* gm2/dynamic/pass/testdavid.mod: (New file).
* gm2/dynamic/pass/testdiv.mod: (New file).
* gm2/dynamic/pass/testexp.mod: (New file).
* gm2/dynamic/pass/testfor.mod: (New file).
* gm2/dynamic/pass/testfor2.mod: (New file).
* gm2/dynamic/pass/testfunc.mod: (New file).
* gm2/dynamic/pass/testfunc2.mod: (New file).
* gm2/dynamic/pass/testfunc3.mod: (New file).
* gm2/dynamic/pass/testfunc4.mod: (New file).
* gm2/dynamic/pass/testfunc5.mod: (New file).
* gm2/dynamic/pass/testfunc6.mod: (New file).
* gm2/dynamic/pass/testif.mod: (New file).
* gm2/dynamic/pass/testit.mod: (New file).
* gm2/dynamic/pass/testloop.mod: (New file).
* gm2/dynamic/pass/testloop2.mod: (New file).
* gm2/dynamic/pass/testloop3.mod: (New file).
* gm2/dynamic/pass/testloop4.mod: (New file).
* gm2/dynamic/pass/testloop5.mod: (New file).
* gm2/dynamic/pass/testmin.mod: (New file).
* gm2/dynamic/pass/testnum4.mod: (New file).
* gm2/dynamic/pass/testord.mod: (New file).
* gm2/dynamic/pass/testparam.mod: (New file).
* gm2/dynamic/pass/testparam2.mod: (New file).
* gm2/dynamic/pass/testproc.mod: (New file).
* gm2/dynamic/pass/testproc2.c: (New file).
* gm2/dynamic/pass/testproc2.def: (New file).
* gm2/dynamic/pass/testproc2.mod: (New file).
* gm2/dynamic/pass/testscn.mod: (New file).
* gm2/dynamic/pass/testset.mod: (New file).
* gm2/dynamic/pass/testset2.mod: (New file).
* gm2/dynamic/pass/testset3.mod: (New file).
* gm2/dynamic/pass/teststr.c: (New file).
* gm2/dynamic/pass/teststr.mod: (New file).
* gm2/dynamic/pass/teststr2.mod: (New file).
* gm2/dynamic/pass/teststring.mod: (New file).
* gm2/dynamic/pass/testunbounded.mod: (New file).
* gm2/dynamic/pass/testwith.mod: (New file).
* gm2/dynamic/pass/testzero.mod: (New file).
* gm2/dynamic/pass/wc.mod: (New file).
* gm2/embedded/pass/embedded-pass.exp: (New file).
* gm2/embedded/pass/varataddress.mod: (New file).
* gm2/embedded/pass/varataddress1.mod: (New file).
* gm2/embedded/pass/varataddress2.mod: (New file).
* gm2/embedded/pass/varataddress3.mod: (New file).
* gm2/errors/fail/array1.mod: (New file).
* gm2/errors/fail/badexpr.mod: (New file).
* gm2/errors/fail/badfor.mod: (New file).
* gm2/errors/fail/badhigh.mod: (New file).
* gm2/errors/fail/badshift.mod: (New file).
* gm2/errors/fail/badsubexpradr.mod: (New file).
* gm2/errors/fail/binaryconst.mod: (New file).
* gm2/errors/fail/binarygeneric.mod: (New file).
* gm2/errors/fail/binarygenericconst.mod: (New file).
* gm2/errors/fail/end.mod: (New file).
* gm2/errors/fail/errors-fail.exp: (New file).
* gm2/errors/fail/mismatched.mod: (New file).
* gm2/errors/fail/mismatchedproc.mod: (New file).
* gm2/errors/fail/nestedproc4.mod: (New file).
* gm2/errors/fail/nomodule.mod: (New file).
* gm2/errors/fail/proctype.mod: (New file).
* gm2/errors/fail/prog110.mod: (New file).
* gm2/errors/fail/prog111.mod: (New file).
* gm2/errors/fail/prog113.mod: (New file).
* gm2/errors/fail/prog114.mod: (New file).
* gm2/errors/fail/testaddress.mod: (New file).
* gm2/errors/fail/testarray.mod: (New file).
* gm2/errors/fail/testbit.mod: (New file).
* gm2/errors/fail/testbit2.mod: (New file).
* gm2/errors/fail/testcase.mod: (New file).
* gm2/errors/fail/testcomment.mod: (New file).
* gm2/errors/fail/testcomment2.mod: (New file).
* gm2/errors/fail/testcomment3.mod: (New file).
* gm2/errors/fail/testconst.mod: (New file).
* gm2/errors/fail/testdyn.mod: (New file).
* gm2/errors/fail/testdyn2.mod: (New file).
* gm2/errors/fail/testdyn3.mod: (New file).
* gm2/errors/fail/testexp.mod: (New file).
* gm2/errors/fail/testfio.mod: (New file).
* gm2/errors/fail/testimport.mod: (New file).
* gm2/errors/fail/testimport2.def: (New file).
* gm2/errors/fail/testimport2.mod: (New file).
* gm2/errors/fail/testinit.mod: (New file).
* gm2/errors/fail/testmodule.mod: (New file).
* gm2/errors/fail/testnil.mod: (New file).
* gm2/errors/fail/testnil2.mod: (New file).
* gm2/errors/fail/testparam.mod: (New file).
* gm2/errors/fail/testproc.mod: (New file).
* gm2/errors/fail/testproc2.mod: (New file).
* gm2/errors/fail/testsize.mod: (New file).
* gm2/errors/fail/teststring.mod: (New file).
* gm2/errors/fail/testsub3.mod: (New file).
* gm2/errors/fail/testsub4.mod: (New file).
* gm2/errors/fail/testtype.mod: (New file).
* gm2/errors/fail/testvar.mod: (New file).
* gm2/errors/fail/testwith.mod: (New file).
* gm2/errors/fail/testwrite.mod: (New file).
* gm2/errors/fail/type.mod: (New file).
* gm2/errors/fail/unarygeneric.mod: (New file).
* gm2/errors/mustfail: (New file).
* gm2/errors/options: (New file).
* gm2/errors/testchar.mod: (New file).
* gm2/errors/testsub2.mod: (New file).
* gm2/examples/callingC/pass/examples-callingC-pass.exp: (New file).
* gm2/examples/callingC/pass/hello.mod: (New file).
* gm2/examples/callingC/pass/libprintf.def: (New file).
* gm2/examples/callingC/run/pass/c.c: (New file).
* gm2/examples/callingC/run/pass/c.def: (New file).
* gm2/examples/callingC/run/pass/examples-callingC-run-pass.exp: (New file).
* gm2/examples/callingC/run/pass/hello.mod: (New file).
* gm2/examples/callingC/run/pass/libprintf.def: (New file).
* gm2/examples/callingC/run/pass/m.mod: (New file).
* gm2/examples/cpp/pass/examples-cpp-pass.exp: (New file).
* gm2/examples/cpp/pass/hello.mod: (New file).
* gm2/examples/cppDef/pass/a.def: (New file).
* gm2/examples/cppDef/pass/a.mod: (New file).
* gm2/examples/cppDef/pass/b.mod: (New file).
* gm2/examples/cppDef/pass/examples-cppDef-pass.exp: (New file).
* gm2/examples/cppDef/pass/libprintf.def: (New file).
* gm2/examples/hello/pass/examples-hello-pass.exp: (New file).
* gm2/examples/hello/pass/hello.mod: (New file).
* gm2/examples/map/pass/AdvMap.def: (New file).
* gm2/examples/map/pass/AdvMap.mod: (New file).
* gm2/examples/map/pass/BoxMap.def: (New file).
* gm2/examples/map/pass/BoxMap.mod: (New file).
* gm2/examples/map/pass/Chance.def: (New file).
* gm2/examples/map/pass/Chance.mod: (New file).
* gm2/examples/map/pass/Find.def: (New file).
* gm2/examples/map/pass/Find.mod: (New file).
* gm2/examples/map/pass/Geometry.def: (New file).
* gm2/examples/map/pass/Geometry.mod: (New file).
* gm2/examples/map/pass/MakeBoxes.def: (New file).
* gm2/examples/map/pass/MakeBoxes.mod: (New file).
* gm2/examples/map/pass/Map.mod: (New file).
* gm2/examples/map/pass/RoomMap.def: (New file).
* gm2/examples/map/pass/RoomMap.mod: (New file).
* gm2/examples/map/pass/Semantic.mod: (New file).
* gm2/examples/map/pass/StoreCoord.def: (New file).
* gm2/examples/map/pass/StoreCoord.mod: (New file).
* gm2/examples/map/pass/StoreCoords.def: (New file).
* gm2/examples/map/pass/StoreCoords.mod: (New file).
* gm2/examples/map/pass/WriteMap.def: (New file).
* gm2/examples/map/pass/WriteMap.mod: (New file).
* gm2/examples/map/pass/examples-map-pass.exp: (New file).
* gm2/examples/map/pass/makemaps: (New file).
* gm2/examples/map/pass/testch2.mod: (New file).
* gm2/examples/map/pass/testchan.mod: (New file).
* gm2/examples/map/pass/testcoor.mod: (New file).
* gm2/examples/map/pass/testmaps: (New file).
* gm2/exceptions/run/pass/cpp.cpp: (New file).
* gm2/exceptions/run/pass/cpp.def: (New file).
* gm2/exceptions/run/pass/exceptions-run-pass.exp: (New file).
* gm2/exceptions/run/pass/libexcept.mod: (New file).
* gm2/exceptions/run/pass/m2test.def: (New file).
* gm2/exceptions/run/pass/m2test.mod: (New file).
* gm2/exceptions/run/pass/mycpp.cpp: (New file).
* gm2/exceptions/run/pass/mycpp.def: (New file).
* gm2/exceptions/run/pass/mym2.mod: (New file).
* gm2/exceptions/run/pass/mym2a.mod: (New file).
* gm2/extensions/pass/align.mod: (New file).
* gm2/extensions/pass/align2.mod: (New file).
* gm2/extensions/pass/card16p.mod: (New file).
* gm2/extensions/pass/card32p.mod: (New file).
* gm2/extensions/pass/card64p.mod: (New file).
* gm2/extensions/pass/card8p.mod: (New file).
* gm2/extensions/pass/co.def: (New file).
* gm2/extensions/pass/co.mod: (New file).
* gm2/extensions/pass/extensions-pass.exp: (New file).
* gm2/extensions/pass/frame.mod: (New file).
* gm2/extensions/pass/hello.mod: (New file).
* gm2/extensions/pass/int16p.mod: (New file).
* gm2/extensions/pass/int32p.mod: (New file).
* gm2/extensions/pass/int64p.mod: (New file).
* gm2/extensions/pass/int8p.mod: (New file).
* gm2/extensions/pass/intsize8.mod: (New file).
* gm2/extensions/pass/jmp.mod: (New file).
* gm2/extensions/pass/libc.def: (New file).
* gm2/extensions/pass/optparam.mod: (New file).
* gm2/extensions/pass/optparam2.mod: (New file).
* gm2/extensions/pass/return.mod: (New file).
* gm2/extensions/pass/set8.mod: (New file).
* gm2/extensions/pass/set8a.mod: (New file).
* gm2/extensions/pass/set8b.mod: (New file).
* gm2/extensions/pass/testco.mod: (New file).
* gm2/extensions/run/fail/extensions-run-fail.exp: (New file).
* gm2/extensions/run/fail/intsize8.mod: (New file).
* gm2/extensions/run/pass/align3.mod: (New file).
* gm2/extensions/run/pass/align4.mod: (New file).
* gm2/extensions/run/pass/align5.mod: (New file).
* gm2/extensions/run/pass/align6.mod: (New file).
* gm2/extensions/run/pass/align7.mod: (New file).
* gm2/extensions/run/pass/callingc.mod: (New file).
* gm2/extensions/run/pass/card16p.mod: (New file).
* gm2/extensions/run/pass/card32p.mod: (New file).
* gm2/extensions/run/pass/card64p.mod: (New file).
* gm2/extensions/run/pass/card8p.mod: (New file).
* gm2/extensions/run/pass/column.mod: (New file).
* gm2/extensions/run/pass/cvararg.c: (New file).
* gm2/extensions/run/pass/cvararg.def: (New file).
* gm2/extensions/run/pass/extensions-run-pass.exp: (New file).
* gm2/extensions/run/pass/int16p.mod: (New file).
* gm2/extensions/run/pass/int32p.mod: (New file).
* gm2/extensions/run/pass/int64p.mod: (New file).
* gm2/extensions/run/pass/int8field.mod: (New file).
* gm2/extensions/run/pass/int8p.mod: (New file).
* gm2/extensions/run/pass/packedrecord.mod: (New file).
* gm2/extensions/run/pass/packedrecord2.mod: (New file).
* gm2/extensions/run/pass/real32.mod: (New file).
* gm2/extensions/run/pass/real32a.mod: (New file).
* gm2/extensions/run/pass/record.mod: (New file).
* gm2/extensions/run/pass/testopen.mod: (New file).
* gm2/extensions/run/pass/vararg.mod: (New file).
* gm2/extensions/run/pass/vararg2.mod: (New file).
* gm2/extensions/run/pass/vararg3.mod: (New file).
* gm2/fpu/pass/five.mod: (New file).
* gm2/fpu/pass/fp.def: (New file).
* gm2/fpu/pass/fp.mod: (New file).
* gm2/fpu/pass/fpu-pass.exp: (New file).
* gm2/fpu/pass/one.mod: (New file).
* gm2/fpu/pass/r1.mod: (New file).
* gm2/fpu/pass/realconst.mod: (New file).
* gm2/fpu/pass/testfp.mod: (New file).
* gm2/fpu/pass/testfp2.mod: (New file).
* gm2/fpu/pass/testfpu1.mod: (New file).
* gm2/fpu/pass/testfpu2.mod: (New file).
* gm2/fpu/pass/testfpu3.mod: (New file).
* gm2/fpu/pass/testsin.mod: (New file).
* gm2/imports/run/pass/c.def: (New file).
* gm2/imports/run/pass/c.mod: (New file).
* gm2/imports/run/pass/imports-run-pass.exp: (New file).
* gm2/imports/run/pass/innermods.mod: (New file).
* gm2/imports/run/pass/innermods2.mod: (New file).
* gm2/imports/run/pass/innermods3.mod: (New file).
* gm2/imports/run/pass/innermods4.mod: (New file).
* gm2/imports/run/pass/innermods5.def: (New file).
* gm2/imports/run/pass/innermods5.mod: (New file).
* gm2/imports/run/pass/innermods6.mod: (New file).
* gm2/integer/div.mod: (New file).
* gm2/integer/expr.mod: (New file).
* gm2/integer/mod.mod: (New file).
* gm2/integer/mod2.mod: (New file).
* gm2/integer/one.mod: (New file).
* gm2/integer/options: (New file).
* gm2/integer/zero.mod: (New file).
* gm2/iso/analysis/fail/Makefile: (New file).
* gm2/iso/analysis/fail/arithoverflow.mod: (New file).
* gm2/iso/analysis/fail/arithoverflow2.mod: (New file).
* gm2/iso/analysis/fail/arithsubcard.mod: (New file).
* gm2/iso/analysis/fail/arrayrange.mod: (New file).
* gm2/iso/analysis/fail/assignvalue.mod: (New file).
* gm2/iso/analysis/fail/callassignment.mod: (New file).
* gm2/iso/analysis/fail/callassignment2.mod: (New file).
* gm2/iso/analysis/fail/callassignment3.mod: (New file).
* gm2/iso/analysis/fail/callassignment4.mod: (New file).
* gm2/iso/analysis/fail/caserange.mod: (New file).
* gm2/iso/analysis/fail/decvalue.mod: (New file).
* gm2/iso/analysis/fail/forloop.mod: (New file).
* gm2/iso/analysis/fail/incvalue.mod: (New file).
* gm2/iso/analysis/fail/iso-analysis-fail.exp: (New file).
* gm2/iso/analysis/fail/noreturn.mod: (New file).
* gm2/iso/analysis/fail/returnvalue.mod: (New file).
* gm2/iso/analysis/fail/staticarray.mod: (New file).
* gm2/iso/check/fail/iso-check-fail.exp: (New file).
* gm2/iso/check/fail/modulusoverflow.mod: (New file).
* gm2/iso/fail/badarray.mod: (New file).
* gm2/iso/fail/badarray2.mod: (New file).
* gm2/iso/fail/badipv4.mod: (New file).
* gm2/iso/fail/bug10.mod: (New file).
* gm2/iso/fail/bug8.mod: (New file).
* gm2/iso/fail/bug9.mod: (New file).
* gm2/iso/fail/case.mod: (New file).
* gm2/iso/fail/case2.mod: (New file).
* gm2/iso/fail/case3.mod: (New file).
* gm2/iso/fail/const1.mod: (New file).
* gm2/iso/fail/constarray.mod: (New file).
* gm2/iso/fail/constarray2.mod: (New file).
* gm2/iso/fail/constprocedure.mod: (New file).
* gm2/iso/fail/constrecord.mod: (New file).
* gm2/iso/fail/constrecord2.mod: (New file).
* gm2/iso/fail/constrecord3.mod: (New file).
* gm2/iso/fail/constsubrange.mod: (New file).
* gm2/iso/fail/constsubrange2.mod: (New file).
* gm2/iso/fail/constsubrange3.mod: (New file).
* gm2/iso/fail/defa.def: (New file).
* gm2/iso/fail/defa.mod: (New file).
* gm2/iso/fail/defb.def: (New file).
* gm2/iso/fail/defb.mod: (New file).
* gm2/iso/fail/defc.def: (New file).
* gm2/iso/fail/defc.mod: (New file).
* gm2/iso/fail/except.mod: (New file).
* gm2/iso/fail/except2.mod: (New file).
* gm2/iso/fail/iso-fail.exp: (New file).
* gm2/iso/fail/isoa.def: (New file).
* gm2/iso/fail/isoa.mod: (New file).
* gm2/iso/fail/lengthsubexpr.mod: (New file).
* gm2/iso/fail/proc.mod: (New file).
* gm2/iso/fail/realbitscast.mod: (New file).
* gm2/iso/fail/varient.mod: (New file).
* gm2/iso/fail/varient2.mod: (New file).
* gm2/iso/future/builtinlj.mod: (New file).
* gm2/iso/pass/ChanConsts.def: (New file).
* gm2/iso/pass/ChanConsts.mod: (New file).
* gm2/iso/pass/ConvTypes.def: (New file).
* gm2/iso/pass/ConvTypes.mod: (New file).
* gm2/iso/pass/addadr1.mod: (New file).
* gm2/iso/pass/bits32c.mod: (New file).
* gm2/iso/pass/callwraptime.mod: (New file).
* gm2/iso/pass/caseiso.mod: (New file).
* gm2/iso/pass/caseiso2.mod: (New file).
* gm2/iso/pass/cast.mod: (New file).
* gm2/iso/pass/cast3.mod: (New file).
* gm2/iso/pass/castiso.mod: (New file).
* gm2/iso/pass/const1.mod: (New file).
* gm2/iso/pass/constreal.mod: (New file).
* gm2/iso/pass/constructor1.mod: (New file).
* gm2/iso/pass/constructor2.mod: (New file).
* gm2/iso/pass/constructor3.mod: (New file).
* gm2/iso/pass/constructor4.mod: (New file).
* gm2/iso/pass/constructor5.mod: (New file).
* gm2/iso/pass/constructor6.mod: (New file).
* gm2/iso/pass/constsize4.mod: (New file).
* gm2/iso/pass/delim.mod: (New file).
* gm2/iso/pass/delim2.mod: (New file).
* gm2/iso/pass/enummodule.mod: (New file).
* gm2/iso/pass/except1.mod: (New file).
* gm2/iso/pass/expproc.mod: (New file).
* gm2/iso/pass/expproc2.mod: (New file).
* gm2/iso/pass/iso-pass.exp: (New file).
* gm2/iso/pass/isob.def: (New file).
* gm2/iso/pass/isob.mod: (New file).
* gm2/iso/pass/isobitset.mod: (New file).
* gm2/iso/pass/isobitset2.mod: (New file).
* gm2/iso/pass/longm.mod: (New file).
* gm2/iso/pass/m.mod: (New file).
* gm2/iso/pass/proccast.mod: (New file).
* gm2/iso/pass/realbitscast.mod: (New file).
* gm2/iso/pass/set12.mod: (New file).
* gm2/iso/pass/stringchar.mod: (New file).
* gm2/iso/pass/subassign.mod: (New file).
* gm2/iso/pass/testaddindr.mod: (New file).
* gm2/iso/pass/testconv.def: (New file).
* gm2/iso/pass/testconv.mod: (New file).
* gm2/iso/pass/testconv2.def: (New file).
* gm2/iso/pass/testconv2.mod: (New file).
* gm2/iso/pass/testconv3.mod: (New file).
* gm2/iso/pass/testconv4.mod: (New file).
* gm2/iso/pass/testconv5.mod: (New file).
* gm2/iso/pass/testconv6.mod: (New file).
* gm2/iso/pass/testconv7.mod: (New file).
* gm2/iso/pass/testconv8.mod: (New file).
* gm2/iso/pass/testconv9.mod: (New file).
* gm2/iso/pass/testiso.mod: (New file).
* gm2/iso/pass/testiso2.mod: (New file).
* gm2/iso/pass/testisosize.mod: (New file).
* gm2/iso/pass/testlength.mod: (New file).
* gm2/iso/pass/testlength2.mod: (New file).
* gm2/iso/pass/testlength3.mod: (New file).
* gm2/iso/pass/testlength4.mod: (New file).
* gm2/iso/pass/testlength5.mod: (New file).
* gm2/iso/pass/unbounded.mod: (New file).
* gm2/iso/pass/unbounded2.mod: (New file).
* gm2/iso/run/pass/adraddress.mod: (New file).
* gm2/iso/run/pass/adrunbounded3.mod: (New file).
* gm2/iso/run/pass/baseimport.mod: (New file).
* gm2/iso/run/pass/compsize.mod: (New file).
* gm2/iso/run/pass/concurrentstore.mod: (New file).
* gm2/iso/run/pass/constprocedure.mod: (New file).
* gm2/iso/run/pass/constructor1.mod: (New file).
* gm2/iso/run/pass/constructor2.mod: (New file).
* gm2/iso/run/pass/conststrarray.mod: (New file).
* gm2/iso/run/pass/contimer.mod: (New file).
* gm2/iso/run/pass/except.c: (New file).
* gm2/iso/run/pass/except2.mod: (New file).
* gm2/iso/run/pass/except3.cpp: (New file).
* gm2/iso/run/pass/except4.mod: (New file).
* gm2/iso/run/pass/except5.cpp: (New file).
* gm2/iso/run/pass/except5.mod: (New file).
* gm2/iso/run/pass/except6.cpp: (New file).
* gm2/iso/run/pass/except7.mod: (New file).
* gm2/iso/run/pass/except8.mod: (New file).
* gm2/iso/run/pass/fileio.def: (New file).
* gm2/iso/run/pass/fileio.mod: (New file).
* gm2/iso/run/pass/hello.mod: (New file).
* gm2/iso/run/pass/int8field.mod: (New file).
* gm2/iso/run/pass/iso-run-pass.exp: (New file).
* gm2/iso/run/pass/long.mod: (New file).
* gm2/iso/run/pass/long2.mod: (New file).
* gm2/iso/run/pass/long3.mod: (New file).
* gm2/iso/run/pass/long4.c: (New file).
* gm2/iso/run/pass/long4.mod: (New file).
* gm2/iso/run/pass/minmax.mod: (New file).
* gm2/iso/run/pass/modulus.mod: (New file).
* gm2/iso/run/pass/nestediso.mod: (New file).
* gm2/iso/run/pass/nestedrecord.mod: (New file).
* gm2/iso/run/pass/onebyte.mod: (New file).
* gm2/iso/run/pass/onebyte2.mod: (New file).
* gm2/iso/run/pass/onebyte3.mod: (New file).
* gm2/iso/run/pass/packed.mod: (New file).
* gm2/iso/run/pass/proc.c: (New file).
* gm2/iso/run/pass/proc.mod: (New file).
* gm2/iso/run/pass/proc2.mod: (New file).
* gm2/iso/run/pass/returnrecord.mod: (New file).
* gm2/iso/run/pass/shift.mod: (New file).
* gm2/iso/run/pass/shift2.mod: (New file).
* gm2/iso/run/pass/shift3.mod: (New file).
* gm2/iso/run/pass/shift4.mod: (New file).
* gm2/iso/run/pass/simple: (New file).
* gm2/iso/run/pass/simplelarge.mod: (New file).
* gm2/iso/run/pass/strcons.mod: (New file).
* gm2/iso/run/pass/strcons2.mod: (New file).
* gm2/iso/run/pass/t.cpp: (New file).
* gm2/iso/run/pass/t1.cpp: (New file).
* gm2/iso/run/pass/testLength.mod: (New file).
* gm2/iso/run/pass/testarray.mod: (New file).
* gm2/iso/run/pass/testgeneric.mod: (New file).
* gm2/iso/run/pass/testlarge.mod: (New file).
* gm2/iso/run/pass/testsystem.mod: (New file).
* gm2/iso/run/pass/tinyconst.mod: (New file).
* gm2/iso/run/pass/tinyconst2.mod: (New file).
* gm2/iso/run/pass/tinyconst3.mod: (New file).
* gm2/iso/run/pass/tinyconst4.mod: (New file).
* gm2/iso/run/pass/tinyconst5.mod: (New file).
* gm2/iso/run/pass/tinytimer.mod: (New file).
* gm2/iso/run/pass/trivialmodulus.mod: (New file).
* gm2/iso/run/pass/tsize.mod: (New file).
* gm2/iso/run/pass/tsize2.mod: (New file).
* gm2/iso/run/pass/tstLength.mod: (New file).
* gm2/iso/run/pass/unbounded.mod: (New file).
* gm2/iso/run/pass/unbounded2.mod: (New file).
* gm2/iso/run/pass/unbounded3.mod: (New file).
* gm2/iso/run/pass/unbounded4.mod: (New file).
* gm2/iso/run/pass/unbounded5.mod: (New file).
* gm2/iso/run/pass/unbounded6.mod: (New file).
* gm2/iso/run/pass/unbounded7.mod: (New file).
* gm2/iso/run/pass/unbounded8.mod: (New file).
* gm2/isocoroutines/run/pass/coroutine.mod: (New file).
* gm2/isocoroutines/run/pass/isocoroutines-run-pass.exp: (New file).
* gm2/isolib/run/pass/arraycons.mod: (New file).
* gm2/isolib/run/pass/arraycons2.mod: (New file).
* gm2/isolib/run/pass/arraycons3.mod: (New file).
* gm2/isolib/run/pass/arraycons5.mod: (New file).
* gm2/isolib/run/pass/arraycons6.mod: (New file).
* gm2/isolib/run/pass/arraycons7.mod: (New file).
* gm2/isolib/run/pass/arrayconst8.mod: (New file).
* gm2/isolib/run/pass/exceptiontest.mod: (New file).
* gm2/isolib/run/pass/filepos.mod: (New file).
* gm2/isolib/run/pass/hello.mod: (New file).
* gm2/isolib/run/pass/insert.mod: (New file).
* gm2/isolib/run/pass/intconv.mod: (New file).
* gm2/isolib/run/pass/isolib-run-pass.exp: (New file).
* gm2/isolib/run/pass/longstr.mod: (New file).
* gm2/isolib/run/pass/openlibc.mod: (New file).
* gm2/isolib/run/pass/raise.mod: (New file).
* gm2/isolib/run/pass/raise2.mod: (New file).
* gm2/isolib/run/pass/readreal.mod: (New file).
* gm2/isolib/run/pass/real1.mod: (New file).
* gm2/isolib/run/pass/real2.mod: (New file).
* gm2/isolib/run/pass/real3.mod: (New file).
* gm2/isolib/run/pass/realconv.mod: (New file).
* gm2/isolib/run/pass/realconv2.mod: (New file).
* gm2/isolib/run/pass/realstr.mod: (New file).
* gm2/isolib/run/pass/sigfig.mod: (New file).
* gm2/isolib/run/pass/stringreal2.mod: (New file).
* gm2/isolib/run/pass/termfile.mod-disabled: (New file).
* gm2/isolib/run/pass/testappend.mod: (New file).
* gm2/isolib/run/pass/testinput: (New file).
* gm2/isolib/run/pass/testio.mod: (New file).
* gm2/isolib/run/pass/testio2.mod: (New file).
* gm2/isolib/run/pass/testmem.mod: (New file).
* gm2/isolib/run/pass/testmem2.mod: (New file).
* gm2/isolib/run/pass/testnumber: (New file).
* gm2/isolib/run/pass/tiny.mod: (New file).
* gm2/isolib/run/pass/tiny2.mod: (New file).
* gm2/isolib/run/pass/tiny3.mod: (New file).
* gm2/isolib/run/pass/tiny4.mod: (New file).
* gm2/isolib/run/pass/tiny5.mod: (New file).
* gm2/libs/a.def: (New file).
* gm2/libs/a.mod: (New file).
* gm2/libs/b.def: (New file).
* gm2/libs/b.mod: (New file).
* gm2/libs/testraw.mod: (New file).
* gm2/link/externalscaffold/pass/hello.mod: (New file).
* gm2/link/externalscaffold/pass/link-externalscaffold-pass.exp: (New file).
* gm2/link/externalscaffold/pass/scaffold.c: (New file).
* gm2/link/pim/fail/import.mod: (New file).
* gm2/link/pim/fail/link-pim-fail.exp: (New file).
* gm2/link/pim/pass/link-pim-pass.exp: (New file).
* gm2/link/pimc/pass/README: (New file).
* gm2/link/pimc/pass/link-pimc-pass.exp: (New file).
* gm2/link/pimc/pass/testdtoa.mod: (New file).
* gm2/link/pimc/pass/testerrno.mod: (New file).
* gm2/link/pimc/pass/testgetopt.mod: (New file).
* gm2/link/pimc/pass/testldtoa.mod: (New file).
* gm2/link/pimc/pass/testlibc.mod: (New file).
* gm2/link/pimc/pass/testlibc2.mod: (New file).
* gm2/link/pimc/pass/testsckt.mod: (New file).
* gm2/link/pimc/pass/testselective.mod: (New file).
* gm2/link/pimc/pass/testsysexceptions.mod: (New file).
* gm2/link/pimc/pass/testtermios.mod: (New file).
* gm2/link/pimc/pass/testunixargs.mod: (New file).
* gm2/link/pimc/pass/testwrapc.mod: (New file).
* gm2/linking/libarchive/pass/c.c: (New file).
* gm2/linking/libarchive/pass/c.def: (New file).
* gm2/linking/libarchive/pass/d.def: (New file).
* gm2/linking/libarchive/pass/e.def: (New file).
* gm2/linking/libarchive/pass/linking-libarchive-pass.exp: (New file).
* gm2/linking/libarchive/pass/m.mod: (New file).
* gm2/linking/verbose/pass/hello.mod: (New file).
* gm2/linking/verbose/pass/linking-verbose-pass.exp: (New file).
* gm2/pim/fail/TestLong3.mod: (New file).
* gm2/pim/fail/TestLong6.mod: (New file).
* gm2/pim/fail/a.def: (New file).
* gm2/pim/fail/assignbounds.mod: (New file).
* gm2/pim/fail/assignsubrange.mod: (New file).
* gm2/pim/fail/assignsubrange2.mod: (New file).
* gm2/pim/fail/b.def: (New file).
* gm2/pim/fail/bad.def: (New file).
* gm2/pim/fail/badconst.mod: (New file).
* gm2/pim/fail/badfunc.mod: (New file).
* gm2/pim/fail/badparam.mod: (New file).
* gm2/pim/fail/badparam2.mod: (New file).
* gm2/pim/fail/badtype.mod: (New file).
* gm2/pim/fail/badtypes.mod: (New file).
* gm2/pim/fail/bits.mod: (New file).
* gm2/pim/fail/bits2.mod: (New file).
* gm2/pim/fail/bits3.mod: (New file).
* gm2/pim/fail/bits4.mod: (New file).
* gm2/pim/fail/cardword.mod: (New file).
* gm2/pim/fail/constbec.mod: (New file).
* gm2/pim/fail/constsize3.mod: (New file).
* gm2/pim/fail/constvar.mod: (New file).
* gm2/pim/fail/convert5.mod: (New file).
* gm2/pim/fail/dupconst.mod: (New file).
* gm2/pim/fail/dupenum.mod: (New file).
* gm2/pim/fail/dupfield.mod: (New file).
* gm2/pim/fail/duptype.mod: (New file).
* gm2/pim/fail/dupvar.mod: (New file).
* gm2/pim/fail/expression.mod: (New file).
* gm2/pim/fail/expression2.mod: (New file).
* gm2/pim/fail/expression3.mod: (New file).
* gm2/pim/fail/func.mod: (New file).
* gm2/pim/fail/good.def: (New file).
* gm2/pim/fail/good.mod: (New file).
* gm2/pim/fail/import.mod: (New file).
* gm2/pim/fail/inserttok.def: (New file).
* gm2/pim/fail/inserttok.mod: (New file).
* gm2/pim/fail/integer.mod: (New file).
* gm2/pim/fail/keyword.mod: (New file).
* gm2/pim/fail/longtypes2.mod: (New file).
* gm2/pim/fail/longtypes3.mod: (New file).
* gm2/pim/fail/multisetf.mod: (New file).
* gm2/pim/fail/nested3.mod: (New file).
* gm2/pim/fail/opaque.mod: (New file).
* gm2/pim/fail/opaque2.mod: (New file).
* gm2/pim/fail/opasfail.mod: (New file).
* gm2/pim/fail/opcpfail.mod: (New file).
* gm2/pim/fail/pim-fail.exp: (New file).
* gm2/pim/fail/procmod.mod: (New file).
* gm2/pim/fail/rotate.mod: (New file).
* gm2/pim/fail/rotate2.mod: (New file).
* gm2/pim/fail/setbec.mod: (New file).
* gm2/pim/fail/setequiv.mod: (New file).
* gm2/pim/fail/setsnulf.mod: (New file).
* gm2/pim/fail/settype.mod: (New file).
* gm2/pim/fail/shift.mod: (New file).
* gm2/pim/fail/shift2.mod: (New file).
* gm2/pim/fail/subrange7.mod: (New file).
* gm2/pim/fail/unary.mod: (New file).
* gm2/pim/fail/undeclared.mod: (New file).
* gm2/pim/fail/val.mod: (New file).
* gm2/pim/fail/val2.mod: (New file).
* gm2/pim/fail/wordconst.mod: (New file).
* gm2/pim/no-options/run/pass/integer.mod: (New file).
* gm2/pim/no-options/run/pass/pim-no-options-run-pass.exp: (New file).
* gm2/pim/options/bounds/fail/IdentifierBug.mod: (New file).
* gm2/pim/options/bounds/fail/pim-options-bounds-fail.exp: (New file).
* gm2/pim/options/optimize/run/pass/addition.def: (New file).
* gm2/pim/options/optimize/run/pass/addition.mod: (New file).
* gm2/pim/options/optimize/run/pass/concat.mod: (New file).
* gm2/pim/options/optimize/run/pass/pim-options-optimize-run-pass.exp:
(New file).
* gm2/pim/options/optimize/run/pass/testadd.mod: (New file).
* gm2/pim/pass/ABSBug.mod: (New file).
* gm2/pim/pass/TestLong4.mod: (New file).
* gm2/pim/pass/TestLong7.mod: (New file).
* gm2/pim/pass/TestLong8.mod: (New file).
* gm2/pim/pass/TestLong9.mod: (New file).
* gm2/pim/pass/another.mod: (New file).
* gm2/pim/pass/aochar.mod: (New file).
* gm2/pim/pass/array.mod: (New file).
* gm2/pim/pass/array2.mod: (New file).
* gm2/pim/pass/array3.mod: (New file).
* gm2/pim/pass/array4.mod: (New file).
* gm2/pim/pass/array5.mod: (New file).
* gm2/pim/pass/array6.mod: (New file).
* gm2/pim/pass/arraybool.mod: (New file).
* gm2/pim/pass/arraychar.mod: (New file).
* gm2/pim/pass/arraychar2.mod: (New file).
* gm2/pim/pass/arraychar3.mod: (New file).
* gm2/pim/pass/arrayconst1.mod: (New file).
* gm2/pim/pass/arrayconst2.mod: (New file).
* gm2/pim/pass/arrayconst3.mod: (New file).
* gm2/pim/pass/arraydecl.mod: (New file).
* gm2/pim/pass/arraydim.mod: (New file).
* gm2/pim/pass/arraydyn.mod: (New file).
* gm2/pim/pass/arrayeqiv.mod: (New file).
* gm2/pim/pass/arrayfio.mod: (New file).
* gm2/pim/pass/arrayhuge.mod: (New file).
* gm2/pim/pass/arrayhuge2.mod: (New file).
* gm2/pim/pass/arrayindex.mod: (New file).
* gm2/pim/pass/arrayindirect.mod: (New file).
* gm2/pim/pass/arrayinproc.mod: (New file).
* gm2/pim/pass/arrayint.mod: (New file).
* gm2/pim/pass/arrayofbyte.mod: (New file).
* gm2/pim/pass/arrayofcard.mod: (New file).
* gm2/pim/pass/arrayptr.mod: (New file).
* gm2/pim/pass/arrayptr2.mod: (New file).
* gm2/pim/pass/arrayptr3.mod: (New file).
* gm2/pim/pass/arrayptr4.mod: (New file).
* gm2/pim/pass/arrayptr5.mod: (New file).
* gm2/pim/pass/arrayptr6.mod: (New file).
* gm2/pim/pass/arrayrecord.mod: (New file).
* gm2/pim/pass/arraytiny.c: (New file).
* gm2/pim/pass/arraytiny.mod: (New file).
* gm2/pim/pass/arraytype.mod: (New file).
* gm2/pim/pass/arraytype2.mod: (New file).
* gm2/pim/pass/arraytype3.mod: (New file).
* gm2/pim/pass/arraytype4.mod: (New file).
* gm2/pim/pass/assignment.mod: (New file).
* gm2/pim/pass/assignment2.mod: (New file).
* gm2/pim/pass/assignment3.mod: (New file).
* gm2/pim/pass/assignment4.mod: (New file).
* gm2/pim/pass/badpointer.mod: (New file).
* gm2/pim/pass/bits32.def: (New file).
* gm2/pim/pass/bits32.mod: (New file).
* gm2/pim/pass/bits32i.mod: (New file).
* gm2/pim/pass/bitset.mod: (New file).
* gm2/pim/pass/bitset2.mod: (New file).
* gm2/pim/pass/bitset3.mod: (New file).
* gm2/pim/pass/bitset4.mod: (New file).
* gm2/pim/pass/bitset5.mod: (New file).
* gm2/pim/pass/bitsetfunc.mod: (New file).
* gm2/pim/pass/block.mod: (New file).
* gm2/pim/pass/blockindirect.mod: (New file).
* gm2/pim/pass/builtin.def: (New file).
* gm2/pim/pass/builtin.mod: (New file).
* gm2/pim/pass/builtin2.mod: (New file).
* gm2/pim/pass/builtinconst.mod: (New file).
* gm2/pim/pass/bytearray.mod: (New file).
* gm2/pim/pass/card.mod: (New file).
* gm2/pim/pass/card2.mod: (New file).
* gm2/pim/pass/char.mod: (New file).
* gm2/pim/pass/char2.mod: (New file).
* gm2/pim/pass/charproc.mod: (New file).
* gm2/pim/pass/charset.mod: (New file).
* gm2/pim/pass/charset2.mod: (New file).
* gm2/pim/pass/charset3.mod: (New file).
* gm2/pim/pass/checkparm.def: (New file).
* gm2/pim/pass/checkparm.mod: (New file).
* gm2/pim/pass/colour.mod: (New file).
* gm2/pim/pass/comment1.mod: (New file).
* gm2/pim/pass/complexarray.mod: (New file).
* gm2/pim/pass/complextypes.mod: (New file).
* gm2/pim/pass/constcast.mod: (New file).
* gm2/pim/pass/constmax.mod: (New file).
* gm2/pim/pass/constset.mod: (New file).
* gm2/pim/pass/constset2.mod: (New file).
* gm2/pim/pass/constset3.mod: (New file).
* gm2/pim/pass/constsize.mod: (New file).
* gm2/pim/pass/constsize2.mod: (New file).
* gm2/pim/pass/convert.mod: (New file).
* gm2/pim/pass/convert2.mod: (New file).
* gm2/pim/pass/convert3.mod: (New file).
* gm2/pim/pass/convert4.mod: (New file).
* gm2/pim/pass/danglingelse.mod: (New file).
* gm2/pim/pass/debug: (New file).
* gm2/pim/pass/defset.def: (New file).
* gm2/pim/pass/defset.mod: (New file).
* gm2/pim/pass/deftype.mod: (New file).
* gm2/pim/pass/divaddr.mod: (New file).
* gm2/pim/pass/enum.mod: (New file).
* gm2/pim/pass/enum2.mod: (New file).
* gm2/pim/pass/enum3.mod: (New file).
* gm2/pim/pass/file.mod: (New file).
* gm2/pim/pass/filesystem.mod: (New file).
* gm2/pim/pass/foo.mod: (New file).
* gm2/pim/pass/foo2.mod: (New file).
* gm2/pim/pass/for1.mod: (New file).
* gm2/pim/pass/function.mod: (New file).
* gm2/pim/pass/function2.mod: (New file).
* gm2/pim/pass/gcd.def: (New file).
* gm2/pim/pass/gcd.mod: (New file).
* gm2/pim/pass/getconst.mod: (New file).
* gm2/pim/pass/hello.mod: (New file).
* gm2/pim/pass/impa.mod: (New file).
* gm2/pim/pass/impb.def: (New file).
* gm2/pim/pass/impb.mod: (New file).
* gm2/pim/pass/impc.def: (New file).
* gm2/pim/pass/impc.mod: (New file).
* gm2/pim/pass/impd.mod: (New file).
* gm2/pim/pass/impe.mod: (New file).
* gm2/pim/pass/impf.mod: (New file).
* gm2/pim/pass/impg.mod: (New file).
* gm2/pim/pass/imph.mod: (New file).
* gm2/pim/pass/impi.mod: (New file).
* gm2/pim/pass/impj.mod: (New file).
* gm2/pim/pass/impk.mod: (New file).
* gm2/pim/pass/impl.mod: (New file).
* gm2/pim/pass/impm.mod: (New file).
* gm2/pim/pass/impn.def: (New file).
* gm2/pim/pass/impn.mod: (New file).
* gm2/pim/pass/impo.mod: (New file).
* gm2/pim/pass/imports.mod: (New file).
* gm2/pim/pass/impp.def: (New file).
* gm2/pim/pass/impp.mod: (New file).
* gm2/pim/pass/impq.def: (New file).
* gm2/pim/pass/impq.mod: (New file).
* gm2/pim/pass/incompsets.mod: (New file).
* gm2/pim/pass/index.mod: (New file).
* gm2/pim/pass/index2.mod: (New file).
* gm2/pim/pass/indirect.mod: (New file).
* gm2/pim/pass/inner.mod: (New file).
* gm2/pim/pass/inner2.mod: (New file).
* gm2/pim/pass/int.mod: (New file).
* gm2/pim/pass/largeset.mod: (New file).
* gm2/pim/pass/largeset1.mod: (New file).
* gm2/pim/pass/largeset2.mod: (New file).
* gm2/pim/pass/largeset3.mod: (New file).
* gm2/pim/pass/largeset4.mod: (New file).
* gm2/pim/pass/largeset5.mod: (New file).
* gm2/pim/pass/largeset6.mod: (New file).
* gm2/pim/pass/largeset7.mod: (New file).
* gm2/pim/pass/localmod.mod: (New file).
* gm2/pim/pass/localproc.mod: (New file).
* gm2/pim/pass/localvar.mod: (New file).
* gm2/pim/pass/log: (New file).
* gm2/pim/pass/longint.mod: (New file).
* gm2/pim/pass/longint2.mod: (New file).
* gm2/pim/pass/longmm.mod: (New file).
* gm2/pim/pass/longreal.mod: (New file).
* gm2/pim/pass/longtypes.mod: (New file).
* gm2/pim/pass/longtypes3.mod: (New file).
* gm2/pim/pass/longtypes4.mod: (New file).
* gm2/pim/pass/longtypes5.mod: (New file).
* gm2/pim/pass/longtypes6.mod: (New file).
* gm2/pim/pass/loopexit.mod: (New file).
* gm2/pim/pass/math.mod: (New file).
* gm2/pim/pass/maxlongint.mod: (New file).
* gm2/pim/pass/maxreal.mod: (New file).
* gm2/pim/pass/maxreal2.mod: (New file).
* gm2/pim/pass/minmaxconst.mod: (New file).
* gm2/pim/pass/minmaxconst2.mod: (New file).
* gm2/pim/pass/modaddr.mod: (New file).
* gm2/pim/pass/multaddr.mod: (New file).
* gm2/pim/pass/multiple.mod: (New file).
* gm2/pim/pass/multiset.mod: (New file).
* gm2/pim/pass/multtypes.mod: (New file).
* gm2/pim/pass/mydef.def: (New file).
* gm2/pim/pass/negatives.def: (New file).
* gm2/pim/pass/negatives.mod: (New file).
* gm2/pim/pass/nested.mod: (New file).
* gm2/pim/pass/nested2.mod: (New file).
* gm2/pim/pass/nested3.mod: (New file).
* gm2/pim/pass/nested4.mod: (New file).
* gm2/pim/pass/nested5.mod: (New file).
* gm2/pim/pass/nested6.mod: (New file).
* gm2/pim/pass/nested7.mod: (New file).
* gm2/pim/pass/nestedfor.mod: (New file).
* gm2/pim/pass/nestedif.mod: (New file).
* gm2/pim/pass/nestedset.mod: (New file).
* gm2/pim/pass/onezero.mod: (New file).
* gm2/pim/pass/opaque.def: (New file).
* gm2/pim/pass/opaque.mod: (New file).
* gm2/pim/pass/opaque2.mod: (New file).
* gm2/pim/pass/opaquetype.def: (New file).
* gm2/pim/pass/opaquetype.mod: (New file).
* gm2/pim/pass/param.mod: (New file).
* gm2/pim/pass/param2.mod: (New file).
* gm2/pim/pass/param3.mod: (New file).
* gm2/pim/pass/parambool.mod: (New file).
* gm2/pim/pass/paramreal.mod: (New file).
* gm2/pim/pass/pim-pass.exp: (New file).
* gm2/pim/pass/pimimp.mod: (New file).
* gm2/pim/pass/pointer.mod: (New file).
* gm2/pim/pass/procadr.mod: (New file).
* gm2/pim/pass/procconv.mod: (New file).
* gm2/pim/pass/procconv2.mod: (New file).
* gm2/pim/pass/procedure1.mod: (New file).
* gm2/pim/pass/procedure2.mod: (New file).
* gm2/pim/pass/procindirect.mod: (New file).
* gm2/pim/pass/procmod.mod: (New file).
* gm2/pim/pass/procmod2.mod: (New file).
* gm2/pim/pass/procmod3.mod: (New file).
* gm2/pim/pass/procmod31.mod: (New file).
* gm2/pim/pass/procmod4.mod: (New file).
* gm2/pim/pass/procmod5.mod: (New file).
* gm2/pim/pass/procmod6.def: (New file).
* gm2/pim/pass/procmod6.mod: (New file).
* gm2/pim/pass/procmod7.mod: (New file).
* gm2/pim/pass/procmod8.mod: (New file).
* gm2/pim/pass/procmod9.mod: (New file).
* gm2/pim/pass/proctype.mod: (New file).
* gm2/pim/pass/proctype2.def: (New file).
* gm2/pim/pass/proctype3.mod: (New file).
* gm2/pim/pass/proctype4.mod: (New file).
* gm2/pim/pass/program.mod: (New file).
* gm2/pim/pass/program2.mod: (New file).
* gm2/pim/pass/ptrarray.mod: (New file).
* gm2/pim/pass/ptrarray2.mod: (New file).
* gm2/pim/pass/ptrarray3.mod: (New file).
* gm2/pim/pass/ptrcard.mod: (New file).
* gm2/pim/pass/quads.def: (New file).
* gm2/pim/pass/quads.mod: (New file).
* gm2/pim/pass/real.mod: (New file).
* gm2/pim/pass/real2.mod: (New file).
* gm2/pim/pass/real3.mod: (New file).
* gm2/pim/pass/realconst.mod: (New file).
* gm2/pim/pass/realneg.mod: (New file).
* gm2/pim/pass/realneg2.mod: (New file).
* gm2/pim/pass/realone.mod: (New file).
* gm2/pim/pass/realsize.mod: (New file).
* gm2/pim/pass/record1.mod: (New file).
* gm2/pim/pass/record10.mod: (New file).
* gm2/pim/pass/record11.mod: (New file).
* gm2/pim/pass/record12.def: (New file).
* gm2/pim/pass/record13.def: (New file).
* gm2/pim/pass/record14.def: (New file).
* gm2/pim/pass/record15.def: (New file).
* gm2/pim/pass/record16.def: (New file).
* gm2/pim/pass/record2.mod: (New file).
* gm2/pim/pass/record3.mod: (New file).
* gm2/pim/pass/record4.mod: (New file).
* gm2/pim/pass/record5.mod: (New file).
* gm2/pim/pass/record6.mod: (New file).
* gm2/pim/pass/record7.mod: (New file).
* gm2/pim/pass/record8.mod: (New file).
* gm2/pim/pass/record9.mod: (New file).
* gm2/pim/pass/recordarray.c: (New file).
* gm2/pim/pass/recordarray.mod: (New file).
* gm2/pim/pass/recordarray2.mod: (New file).
* gm2/pim/pass/redef.mod: (New file).
* gm2/pim/pass/set10.mod: (New file).
* gm2/pim/pass/set11.def: (New file).
* gm2/pim/pass/set11.mod: (New file).
* gm2/pim/pass/set12.mod: (New file).
* gm2/pim/pass/set4.mod: (New file).
* gm2/pim/pass/set5.mod: (New file).
* gm2/pim/pass/set6.mod: (New file).
* gm2/pim/pass/set7.mod: (New file).
* gm2/pim/pass/set8.mod: (New file).
* gm2/pim/pass/set9.mod: (New file).
* gm2/pim/pass/setchar.mod: (New file).
* gm2/pim/pass/setchar10.mod: (New file).
* gm2/pim/pass/setchar11.mod: (New file).
* gm2/pim/pass/setchar3.mod: (New file).
* gm2/pim/pass/setchar4.mod: (New file).
* gm2/pim/pass/setchar5.mod: (New file).
* gm2/pim/pass/setchar7.mod: (New file).
* gm2/pim/pass/setchar8.mod: (New file).
* gm2/pim/pass/setchar9.mod: (New file).
* gm2/pim/pass/setconst.mod: (New file).
* gm2/pim/pass/setconst2.mod: (New file).
* gm2/pim/pass/setconst3.mod: (New file).
* gm2/pim/pass/setenum.mod: (New file).
* gm2/pim/pass/setimp.mod: (New file).
* gm2/pim/pass/setimp2.mod: (New file).
* gm2/pim/pass/setofchar.mod: (New file).
* gm2/pim/pass/setoverflow.mod: (New file).
* gm2/pim/pass/sets.mod: (New file).
* gm2/pim/pass/sets2.mod: (New file).
* gm2/pim/pass/sets3.mod: (New file).
* gm2/pim/pass/sets4.mod: (New file).
* gm2/pim/pass/sets5.mod: (New file).
* gm2/pim/pass/sets6.mod: (New file).
* gm2/pim/pass/setsnul.mod: (New file).
* gm2/pim/pass/settest1.mod: (New file).
* gm2/pim/pass/settest2.mod: (New file).
* gm2/pim/pass/settest3.mod: (New file).
* gm2/pim/pass/simpleproc.mod: (New file).
* gm2/pim/pass/sizes.mod: (New file).
* gm2/pim/pass/sizetype.mod: (New file).
* gm2/pim/pass/smallset1.mod: (New file).
* gm2/pim/pass/smallset2.mod: (New file).
* gm2/pim/pass/smallset3.mod: (New file).
* gm2/pim/pass/smallset4.mod: (New file).
* gm2/pim/pass/smallset5.mod: (New file).
* gm2/pim/pass/smallset6.mod: (New file).
* gm2/pim/pass/smallset7.mod: (New file).
* gm2/pim/pass/stabs.mod: (New file).
* gm2/pim/pass/stdio.mod: (New file).
* gm2/pim/pass/str1.mod: (New file).
* gm2/pim/pass/str2.mod: (New file).
* gm2/pim/pass/str3.mod: (New file).
* gm2/pim/pass/str4.mod: (New file).
* gm2/pim/pass/str5.mod: (New file).
* gm2/pim/pass/stressset.mod: (New file).
* gm2/pim/pass/stringassign.mod: (New file).
* gm2/pim/pass/stringopaq.mod: (New file).
* gm2/pim/pass/strings.mod: (New file).
* gm2/pim/pass/strparam.def: (New file).
* gm2/pim/pass/strparam.mod: (New file).
* gm2/pim/pass/subrange.mod: (New file).
* gm2/pim/pass/subrange10.mod: (New file).
* gm2/pim/pass/subrange11.mod: (New file).
* gm2/pim/pass/subrange12.mod: (New file).
* gm2/pim/pass/subrange14.mod: (New file).
* gm2/pim/pass/subrange15.mod: (New file).
* gm2/pim/pass/subrange16.mod: (New file).
* gm2/pim/pass/subrange17.mod: (New file).
* gm2/pim/pass/subrange2.mod: (New file).
* gm2/pim/pass/subrange3.mod: (New file).
* gm2/pim/pass/subrange4.mod: (New file).
* gm2/pim/pass/subrange5.mod: (New file).
* gm2/pim/pass/subrange6.mod: (New file).
* gm2/pim/pass/subrange7.mod: (New file).
* gm2/pim/pass/subrange8.mod: (New file).
* gm2/pim/pass/subrange9.mod: (New file).
* gm2/pim/pass/test2recursive.mod: (New file).
* gm2/pim/pass/testabs.mod: (New file).
* gm2/pim/pass/testbuiltin.mod: (New file).
* gm2/pim/pass/testbuiltin2.mod: (New file).
* gm2/pim/pass/testbuiltstr.mod: (New file).
* gm2/pim/pass/testcap.mod: (New file).
* gm2/pim/pass/testcap2.mod: (New file).
* gm2/pim/pass/testcard.mod: (New file).
* gm2/pim/pass/testcard2.mod: (New file).
* gm2/pim/pass/testcard3.mod: (New file).
* gm2/pim/pass/testcard4.mod: (New file).
* gm2/pim/pass/testcard5.mod: (New file).
* gm2/pim/pass/testcase.mod: (New file).
* gm2/pim/pass/testcase2.mod: (New file).
* gm2/pim/pass/testcase3.mod: (New file).
* gm2/pim/pass/testcase4.mod: (New file).
* gm2/pim/pass/testchar.mod: (New file).
* gm2/pim/pass/testfloat.mod: (New file).
* gm2/pim/pass/testfloat2.mod: (New file).
* gm2/pim/pass/testfloat3.mod: (New file).
* gm2/pim/pass/testfloat4.mod: (New file).
* gm2/pim/pass/testfor.mod: (New file).
* gm2/pim/pass/testimpvar.mod: (New file).
* gm2/pim/pass/testlong3.mod: (New file).
* gm2/pim/pass/testmod.mod: (New file).
* gm2/pim/pass/testmod2.mod: (New file).
* gm2/pim/pass/testodd.mod: (New file).
* gm2/pim/pass/testopaque.mod: (New file).
* gm2/pim/pass/testopaque2.mod: (New file).
* gm2/pim/pass/testopaque3.mod: (New file).
* gm2/pim/pass/testord.mod: (New file).
* gm2/pim/pass/testparam.mod: (New file).
* gm2/pim/pass/testparam2.mod: (New file).
* gm2/pim/pass/testparam3.mod: (New file).
* gm2/pim/pass/testpimsize.mod: (New file).
* gm2/pim/pass/testrecursive.def: (New file).
* gm2/pim/pass/testrecursive.mod: (New file).
* gm2/pim/pass/testreturnstr.mod: (New file).
* gm2/pim/pass/testset.mod: (New file).
* gm2/pim/pass/testshort.mod: (New file).
* gm2/pim/pass/testsinf.mod: (New file).
* gm2/pim/pass/testsinl.mod: (New file).
* gm2/pim/pass/testsize.mod: (New file).
* gm2/pim/pass/testvar.mod: (New file).
* gm2/pim/pass/testvarin.mod: (New file).
* gm2/pim/pass/timeio.mod: (New file).
* gm2/pim/pass/timeio2.mod: (New file).
* gm2/pim/pass/timeio3.mod: (New file).
* gm2/pim/pass/timeio4.mod: (New file).
* gm2/pim/pass/timeio5.mod: (New file).
* gm2/pim/pass/timeio6.mod: (New file).
* gm2/pim/pass/timeio7.mod: (New file).
* gm2/pim/pass/timeio8.mod: (New file).
* gm2/pim/pass/timeio9.mod: (New file).
* gm2/pim/pass/tinyalloc.mod: (New file).
* gm2/pim/pass/tinyarray.mod: (New file).
* gm2/pim/pass/tinyarray2.mod: (New file).
* gm2/pim/pass/tinyarray3.mod: (New file).
* gm2/pim/pass/tinyarray4.mod: (New file).
* gm2/pim/pass/tinyarray5.mod: (New file).
* gm2/pim/pass/tinyarray6.mod: (New file).
* gm2/pim/pass/tinyassign.def: (New file).
* gm2/pim/pass/tinyassign.mod: (New file).
* gm2/pim/pass/tinyassign2.mod: (New file).
* gm2/pim/pass/tinyassign3.mod: (New file).
* gm2/pim/pass/tinyassign4.mod: (New file).
* gm2/pim/pass/tinyassign5.mod: (New file).
* gm2/pim/pass/tinybitset.mod: (New file).
* gm2/pim/pass/tinyelse.mod: (New file).
* gm2/pim/pass/tinyenum.mod: (New file).
* gm2/pim/pass/tinyfor.mod: (New file).
* gm2/pim/pass/tinyfor2.mod: (New file).
* gm2/pim/pass/tinyfor3.mod: (New file).
* gm2/pim/pass/tinyhalt.mod: (New file).
* gm2/pim/pass/tinyhello.mod: (New file).
* gm2/pim/pass/tinyif.mod: (New file).
* gm2/pim/pass/tinyif2.mod: (New file).
* gm2/pim/pass/tinyif3.mod: (New file).
* gm2/pim/pass/tinyif4.mod: (New file).
* gm2/pim/pass/tinyif5.mod: (New file).
* gm2/pim/pass/tinyif6.mod: (New file).
* gm2/pim/pass/tinyif7.mod: (New file).
* gm2/pim/pass/tinyif8.mod: (New file).
* gm2/pim/pass/tinyimp.mod: (New file).
* gm2/pim/pass/tinylit.mod: (New file).
* gm2/pim/pass/tinylit2.mod: (New file).
* gm2/pim/pass/tinymax.mod: (New file).
* gm2/pim/pass/tinymod.mod: (New file).
* gm2/pim/pass/tinynode.mod: (New file).
* gm2/pim/pass/tinyparam.mod: (New file).
* gm2/pim/pass/tinyparam2.mod: (New file).
* gm2/pim/pass/tinyplus.mod: (New file).
* gm2/pim/pass/tinyproc.mod: (New file).
* gm2/pim/pass/tinyproc2.mod: (New file).
* gm2/pim/pass/tinyproc3.mod: (New file).
* gm2/pim/pass/tinyproc4.mod: (New file).
* gm2/pim/pass/tinyproc5.mod: (New file).
* gm2/pim/pass/tinyproc6.mod: (New file).
* gm2/pim/pass/tinyptr.mod: (New file).
* gm2/pim/pass/tinyreal.mod: (New file).
* gm2/pim/pass/tinyrecord.mod: (New file).
* gm2/pim/pass/tinyrepeat.mod: (New file).
* gm2/pim/pass/tinyset6.mod: (New file).
* gm2/pim/pass/tinyset7.mod: (New file).
* gm2/pim/pass/tinystate.mod: (New file).
* gm2/pim/pass/tinysub.def: (New file).
* gm2/pim/pass/tinytest.mod: (New file).
* gm2/pim/pass/tinytrue.mod: (New file).
* gm2/pim/pass/tinyvar.mod: (New file).
* gm2/pim/pass/tinyvar2.mod: (New file).
* gm2/pim/pass/tinyvar3.mod: (New file).
* gm2/pim/pass/tinyvar4.mod: (New file).
* gm2/pim/pass/tinyvar5.mod: (New file).
* gm2/pim/pass/tinyvarient.mod: (New file).
* gm2/pim/pass/tinyvarient2.mod: (New file).
* gm2/pim/pass/tinyvarient3.def: (New file).
* gm2/pim/pass/tinyvarient3.mod: (New file).
* gm2/pim/pass/tinyvarient4.mod: (New file).
* gm2/pim/pass/tinyvarient5.mod: (New file).
* gm2/pim/pass/tinyvarient6.mod: (New file).
* gm2/pim/pass/tinywhile.mod: (New file).
* gm2/pim/pass/tinywith.mod: (New file).
* gm2/pim/pass/tinywith2.mod: (New file).
* gm2/pim/pass/tinywith3.mod: (New file).
* gm2/pim/pass/tinywith4.mod: (New file).
* gm2/pim/pass/tinywith5.mod: (New file).
* gm2/pim/pass/tinywith6.mod: (New file).
* gm2/pim/pass/trunc.mod: (New file).
* gm2/pim/pass/try: (New file).
* gm2/pim/pass/typeequiv.mod: (New file).
* gm2/pim/pass/typeequiv2.mod: (New file).
* gm2/pim/pass/typeequiv3.mod: (New file).
* gm2/pim/pass/typeonly.def: (New file).
* gm2/pim/pass/typeonly.mod: (New file).
* gm2/pim/pass/typesize.mod: (New file).
* gm2/pim/pass/unbounded.mod: (New file).
* gm2/pim/pass/unbounded2.mod: (New file).
* gm2/pim/pass/unbounded3.mod: (New file).
* gm2/pim/pass/v.def: (New file).
* gm2/pim/pass/varaddress.mod: (New file).
* gm2/pim/pass/varaddress2.mod: (New file).
* gm2/pim/pass/varaddress3.mod: (New file).
* gm2/pim/pass/varcard.mod: (New file).
* gm2/pim/pass/variant9.mod: (New file).
* gm2/pim/pass/varient.mod: (New file).
* gm2/pim/pass/varient2.mod: (New file).
* gm2/pim/pass/varient3.mod: (New file).
* gm2/pim/pass/varient4.mod: (New file).
* gm2/pim/pass/varient5.mod: (New file).
* gm2/pim/pass/varient6.mod: (New file).
* gm2/pim/pass/varient7.mod: (New file).
* gm2/pim/pass/varient8.mod: (New file).
* gm2/pim/pass/varin.def: (New file).
* gm2/pim/pass/varin.mod: (New file).
* gm2/pim/pass/varint.mod: (New file).
* gm2/pim/pass/wincat.mod: (New file).
* gm2/pim/pass/with.mod: (New file).
* gm2/pim/pass/wordconst.mod: (New file).
* gm2/pim/run/fail/case.mod: (New file).
* gm2/pim/run/fail/nil.mod: (New file).
* gm2/pim/run/fail/pim-run-fail.exp: (New file).
* gm2/pim/run/pass/Countdown.mod: (New file).
* gm2/pim/run/pass/EndFor.def: (New file).
* gm2/pim/run/pass/EndFor.mod: (New file).
* gm2/pim/run/pass/EnumTest.mod: (New file).
* gm2/pim/run/pass/For1.mod: (New file).
* gm2/pim/run/pass/For10.mod: (New file).
* gm2/pim/run/pass/For11.mod: (New file).
* gm2/pim/run/pass/For12.mod: (New file).
* gm2/pim/run/pass/For2.mod: (New file).
* gm2/pim/run/pass/For3.mod: (New file).
* gm2/pim/run/pass/For4.mod: (New file).
* gm2/pim/run/pass/For5.mod: (New file).
* gm2/pim/run/pass/For6.mod: (New file).
* gm2/pim/run/pass/For7.mod: (New file).
* gm2/pim/run/pass/For8.mod: (New file).
* gm2/pim/run/pass/For9.mod: (New file).
* gm2/pim/run/pass/FpuIOBug.mod: (New file).
* gm2/pim/run/pass/MaxReal.mod: (New file).
* gm2/pim/run/pass/MaxReal2.mod: (New file).
* gm2/pim/run/pass/TestLong.mod: (New file).
* gm2/pim/run/pass/TestLong2.mod: (New file).
* gm2/pim/run/pass/TestLong4.mod: (New file).
* gm2/pim/run/pass/TestLong5.mod: (New file).
* gm2/pim/run/pass/addrarray.mod: (New file).
* gm2/pim/run/pass/arraychar.mod: (New file).
* gm2/pim/run/pass/arraychar2.mod: (New file).
* gm2/pim/run/pass/arrayrecord.mod: (New file).
* gm2/pim/run/pass/bitsettest.def: (New file).
* gm2/pim/run/pass/bitsettest.mod: (New file).
* gm2/pim/run/pass/bytearray.mod: (New file).
* gm2/pim/run/pass/constdynstr.mod: (New file).
* gm2/pim/run/pass/conststr.mod: (New file).
* gm2/pim/run/pass/conststr2.mod: (New file).
* gm2/pim/run/pass/cycles.mod: (New file).
* gm2/pim/run/pass/dec.mod: (New file).
* gm2/pim/run/pass/enums.mod: (New file).
* gm2/pim/run/pass/incsubrange.def: (New file).
* gm2/pim/run/pass/incsubrange.mod: (New file).
* gm2/pim/run/pass/index3.mod: (New file).
* gm2/pim/run/pass/int16.mod: (New file).
* gm2/pim/run/pass/int32.mod: (New file).
* gm2/pim/run/pass/int8.mod: (New file).
* gm2/pim/run/pass/line.mod: (New file).
* gm2/pim/run/pass/long.mod: (New file).
* gm2/pim/run/pass/longfor.mod: (New file).
* gm2/pim/run/pass/longtypes10.mod: (New file).
* gm2/pim/run/pass/longtypes7.mod: (New file).
* gm2/pim/run/pass/longtypes8.mod: (New file).
* gm2/pim/run/pass/longtypes9.mod: (New file).
* gm2/pim/run/pass/math.mod: (New file).
* gm2/pim/run/pass/math2.mod: (New file).
* gm2/pim/run/pass/mathconst.mod: (New file).
* gm2/pim/run/pass/minhello.mod: (New file).
* gm2/pim/run/pass/minimal.mod: (New file).
* gm2/pim/run/pass/nestedproc.mod: (New file).
* gm2/pim/run/pass/nestedproc2.mod: (New file).
* gm2/pim/run/pass/nestedproc3.mod: (New file).
* gm2/pim/run/pass/nestedproc4.mod: (New file).
* gm2/pim/run/pass/nestedproc5.mod: (New file).
* gm2/pim/run/pass/nestedproc6.mod: (New file).
* gm2/pim/run/pass/nestedproc7.mod: (New file).
* gm2/pim/run/pass/nestedwith.mod: (New file).
* gm2/pim/run/pass/nestedwith2.mod: (New file).
* gm2/pim/run/pass/nestedwith3.mod: (New file).
* gm2/pim/run/pass/nothing.mod: (New file).
* gm2/pim/run/pass/pim-run-pass.exp: (New file).
* gm2/pim/run/pass/prog31ex.mod: (New file).
* gm2/pim/run/pass/rts.mod: (New file).
* gm2/pim/run/pass/setcritical.mod: (New file).
* gm2/pim/run/pass/setequiv.mod: (New file).
* gm2/pim/run/pass/str6.mod: (New file).
* gm2/pim/run/pass/stringaddr.mod: (New file).
* gm2/pim/run/pass/stringaddr2.def: (New file).
* gm2/pim/run/pass/stringaddr2.mod: (New file).
* gm2/pim/run/pass/stripped.mod: (New file).
* gm2/pim/run/pass/sys.def: (New file).
* gm2/pim/run/pass/sys.mod: (New file).
* gm2/pim/run/pass/t.def: (New file).
* gm2/pim/run/pass/testaddr.mod: (New file).
* gm2/pim/run/pass/testaddr2.mod: (New file).
* gm2/pim/run/pass/testaddr3.mod: (New file).
* gm2/pim/run/pass/testarray.mod: (New file).
* gm2/pim/run/pass/testarray2.mod: (New file).
* gm2/pim/run/pass/testarray3.mod: (New file).
* gm2/pim/run/pass/testarray4.mod: (New file).
* gm2/pim/run/pass/testarray5.mod: (New file).
* gm2/pim/run/pass/testavail.mod: (New file).
* gm2/pim/run/pass/testdiv.mod: (New file).
* gm2/pim/run/pass/testfpufunc.mod: (New file).
* gm2/pim/run/pass/testfpufunc2.mod: (New file).
* gm2/pim/run/pass/testlarge.mod: (New file).
* gm2/pim/run/pass/testlarge2.mod: (New file).
* gm2/pim/run/pass/testnextproc.mod: (New file).
* gm2/pim/run/pass/testparam.mod: (New file).
* gm2/pim/run/pass/testreturnstr.mod: (New file).
* gm2/pim/run/pass/testreturnstr2.mod: (New file).
* gm2/pim/run/pass/testreturnstr3.def: (New file).
* gm2/pim/run/pass/testreturnstr3.mod: (New file).
* gm2/pim/run/pass/testsize.mod: (New file).
* gm2/pim/run/pass/testsize2.mod: (New file).
* gm2/pim/run/pass/testsize3.mod: (New file).
* gm2/pim/run/pass/testsize4.mod: (New file).
* gm2/pim/run/pass/testtbitsize.mod: (New file).
* gm2/pim/run/pass/tinywith.mod: (New file).
* gm2/pim/run/pass/unbounded.mod: (New file).
* gm2/pim/run/pass/varaddress3.mod: (New file).
* gm2/pim/run/pass/varparam2.mod: (New file).
* gm2/pim/run/pass/varparam3.mod: (New file).
* gm2/pim/run/pass/varparm.mod: (New file).
* gm2/pim/run/pass/wr.mod: (New file).
* gm2/pimcoroutines/pass/imports.mod: (New file).
* gm2/pimcoroutines/pass/imports2.mod: (New file).
* gm2/pimcoroutines/pass/pimcoroutines-pass.exp: (New file).
* gm2/pimcoroutines/run/pass/pimcoroutines-run-pass.exp: (New file).
* gm2/pimcoroutines/run/pass/testtime.mod: (New file).
* gm2/pimlib/base/run/pass/FIO.mod: (New file).
* gm2/pimlib/base/run/pass/StrLib.mod: (New file).
* gm2/pimlib/base/run/pass/pimlib-base-run-pass.exp: (New file).
* gm2/pimlib/base/run/pass/testconvert.mod: (New file).
* gm2/pimlib/coroutines/pass/pimlib-coroutines-pass.exp: (New file).
* gm2/pimlib/coroutines/pass/priority.mod: (New file).
* gm2/pimlib/coroutines/pass/priority2.mod: (New file).
* gm2/pimlib/coroutines/pass/priority3.def: (New file).
* gm2/pimlib/coroutines/pass/priority3.mod: (New file).
* gm2/pimlib/logitech/pass/LogitechLong.mod: (New file).
* gm2/pimlib/logitech/pass/hello.mod: (New file).
* gm2/pimlib/logitech/pass/pimlib-logitech-pass.exp: (New file).
* gm2/pimlib/logitech/run/pass/bbits.mod: (New file).
* gm2/pimlib/logitech/run/pass/hello.mod: (New file).
* gm2/pimlib/logitech/run/pass/helloinout.mod: (New file).
* gm2/pimlib/logitech/run/pass/intb.mod: (New file).
* gm2/pimlib/logitech/run/pass/pimlib-logitech-run-pass.exp: (New file).
* gm2/pimlib/logitech/run/pass/realconv.mod: (New file).
* gm2/pimlib/logitech/run/pass/realinput.mod: (New file).
* gm2/pimlib/logitech/run/pass/realinput2.mod: (New file).
* gm2/pimlib/logitech/run/pass/realinput3.mod: (New file).
* gm2/pimlib/logitech/run/pass/rename.mod: (New file).
* gm2/pimlib/logitech/run/pass/timedate.mod: (New file).
* gm2/pimlib/logitech/run/pass/writeoct.mod: (New file).
* gm2/pimlib/pass/pimlib-pass.exp: (New file).
* gm2/pimlib/run/pass/format.mod: (New file).
* gm2/pimlib/run/pass/limittests.c: (New file).
* gm2/pimlib/run/pass/limittests.mod: (New file).
* gm2/pimlib/run/pass/longreal.mod: (New file).
* gm2/pimlib/run/pass/pimlib-run-pass.exp: (New file).
* gm2/pimlib/run/pass/test.c: (New file).
* gm2/pimlib/run/pass/testreal.mod: (New file).
* gm2/pimlib/run/pass/testreal2.mod: (New file).
* gm2/pimlib/run/pass/testreal4.mod: (New file).
* gm2/projects/README: (New file).
* gm2/projects/iso/run/pass/halma/halma.mod: (New file).
* gm2/projects/iso/run/pass/halma/projects-iso-run-pass-halma.exp:
(New file).
* gm2/projects/iso/run/pass/hello/hello.mod: (New file).
* gm2/projects/iso/run/pass/hello/projects-iso-run-pass-hello.exp:
(New file).
* gm2/projects/log/run/pass/hello/hello.mod: (New file).
* gm2/projects/log/run/pass/hello/projects-log-run-pass-hello.exp:
(New file).
* gm2/projects/pim/run/pass/hello/hello.mod: (New file).
* gm2/projects/pim/run/pass/hello/projects-pim-run-pass-hello.exp:
(New file).
* gm2/projects/pim/run/pass/random/AdvMap.def: (New file).
* gm2/projects/pim/run/pass/random/AdvMap.mod: (New file).
* gm2/projects/pim/run/pass/random/BoxMap.def: (New file).
* gm2/projects/pim/run/pass/random/BoxMap.mod: (New file).
* gm2/projects/pim/run/pass/random/Chance.def: (New file).
* gm2/projects/pim/run/pass/random/Chance.mod: (New file).
* gm2/projects/pim/run/pass/random/Geometry.def: (New file).
* gm2/projects/pim/run/pass/random/Geometry.mod: (New file).
* gm2/projects/pim/run/pass/random/MakeBoxes.def: (New file).
* gm2/projects/pim/run/pass/random/MakeBoxes.mod: (New file).
* gm2/projects/pim/run/pass/random/Map.mod: (New file).
* gm2/projects/pim/run/pass/random/MapOptions.def: (New file).
* gm2/projects/pim/run/pass/random/MapOptions.mod: (New file).
* gm2/projects/pim/run/pass/random/Options.def: (New file).
* gm2/projects/pim/run/pass/random/Options.mod: (New file).
* gm2/projects/pim/run/pass/random/RoomMap.def: (New file).
* gm2/projects/pim/run/pass/random/RoomMap.mod: (New file).
* gm2/projects/pim/run/pass/random/StoreCoords.def: (New file).
* gm2/projects/pim/run/pass/random/StoreCoords.mod: (New file).
* gm2/projects/pim/run/pass/random/WriteMap.def: (New file).
* gm2/projects/pim/run/pass/random/WriteMap.mod: (New file).
* gm2/projects/pim/run/pass/random/projects-pim-run-pass-random.exp:
(New file).
* gm2/quads/run/pass/becomes.mod: (New file).
* gm2/quads/run/pass/param.mod: (New file).
* gm2/quads/run/pass/quads-run-pass.exp: (New file).
* gm2/quads/run/pass/return.mod: (New file).
* gm2/recover/pass/cannot-solve/begin.mod: (New file).
* gm2/recover/pass/cannot-solve/statementsemi.mod: (New file).
* gm2/recover/pass/end2.mod: (New file).
* gm2/recover/pass/of.mod: (New file).
* gm2/recover/pass/procsemi.mod: (New file).
* gm2/recover/pass/recover-pass.exp: (New file).
* gm2/recover/pass/rrbra.mod: (New file).
* gm2/recover/pass/rsbra.mod: (New file).
* gm2/recover/pass/semi.mod: (New file).
* gm2/run/fail/list.mod: (New file).
* gm2/run/fail/options: (New file).
* gm2/run/fail/testdec.mod: (New file).
* gm2/run/fail/testfunc.mod: (New file).
* gm2/run/pass/cycles.mod: (New file).
* gm2/run/pass/line.mod: (New file).
* gm2/run/pass/nestedproc.mod: (New file).
* gm2/run/pass/nestedproc2.mod: (New file).
* gm2/run/pass/nestedproc3.mod: (New file).
* gm2/run/pass/nestedproc5.mod: (New file).
* gm2/run/pass/nestedset.mod: (New file).
* gm2/run/pass/nothing.mod: (New file).
* gm2/run/pass/options: (New file).
* gm2/run/pass/prog31ex.mod: (New file).
* gm2/run/pass/rts.mod: (New file).
* gm2/run/pass/stripped.mod: (New file).
* gm2/run/pass/testavail.mod: (New file).
* gm2/run/pass/testfpufunc.mod: (New file).
* gm2/run/pass/testfpufunc2.mod: (New file).
* gm2/run/pass/testnextproc.mod: (New file).
* gm2/run/pass/testparam.mod: (New file).
* gm2/run/pass/testsize.mod: (New file).
* gm2/run/pass/testsize2.mod: (New file).
* gm2/run/pass/testsize3.mod: (New file).
* gm2/run/pass/wr.mod: (New file).
* gm2/scripts/addit: (New file).
* gm2/scripts/comp: (New file).
* gm2/scripts/compile: (New file).
* gm2/scripts/compileiso: (New file).
* gm2/scripts/link: (New file).
* gm2/scripts/regression: (New file).
* gm2/scripts/subit: (New file).
* gm2/sets/run/pass/multisetarith.mod: (New file).
* gm2/sets/run/pass/multisetarith2.mod: (New file).
* gm2/sets/run/pass/multisetarith3.mod: (New file).
* gm2/sets/run/pass/multisetarith4.mod: (New file).
* gm2/sets/run/pass/multisetrotate.mod: (New file).
* gm2/sets/run/pass/multisetrotate2.mod: (New file).
* gm2/sets/run/pass/multisetrotate3.mod: (New file).
* gm2/sets/run/pass/multisetrotate4.mod: (New file).
* gm2/sets/run/pass/multisetshift.mod: (New file).
* gm2/sets/run/pass/multisetshift2.mod: (New file).
* gm2/sets/run/pass/multisimple.mod: (New file).
* gm2/sets/run/pass/multisimple2.mod: (New file).
* gm2/sets/run/pass/multisimple3.mod: (New file).
* gm2/sets/run/pass/multisimple4.mod: (New file).
* gm2/sets/run/pass/multisimple5.mod: (New file).
* gm2/sets/run/pass/multisimple6.mod: (New file).
* gm2/sets/run/pass/multisimple7.mod: (New file).
* gm2/sets/run/pass/setarith.mod: (New file).
* gm2/sets/run/pass/setarith2.mod: (New file).
* gm2/sets/run/pass/setarith3.mod: (New file).
* gm2/sets/run/pass/setarith4.mod: (New file).
* gm2/sets/run/pass/setrotate.mod: (New file).
* gm2/sets/run/pass/setrotate2.mod: (New file).
* gm2/sets/run/pass/setrotate3.mod: (New file).
* gm2/sets/run/pass/setrotate4.mod: (New file).
* gm2/sets/run/pass/sets-run-pass.exp: (New file).
* gm2/sets/run/pass/setshift.mod: (New file).
* gm2/sets/run/pass/setshift2.mod: (New file).
* gm2/sets/run/pass/simple.mod: (New file).
* gm2/sets/run/pass/simple2.mod: (New file).
* gm2/sets/run/pass/simple3.mod: (New file).
* gm2/sets/run/pass/simple4.mod: (New file).
* gm2/sets/run/pass/simple5.mod: (New file).
* gm2/sets/run/pass/simple6.mod: (New file).
* gm2/sets/run/pass/simple7.mod: (New file).
* gm2/switches/auto-init/fail/switches-auto-init-fail.exp: (New file).
* gm2/switches/auto-init/fail/uninitptr.mod: (New file).
* gm2/switches/auto-init/fail/uninitptr2.mod: (New file).
* gm2/switches/check-all/pim2/fail/overflow.mod: (New file).
* gm2/switches/check-all/pim2/fail/overflow2.mod: (New file).
* gm2/switches/check-all/pim2/fail/overflowdiv1.mod: (New file).
* gm2/switches/check-all/pim2/fail/switches-check-all-pim2-fail.exp:
(New file).
* gm2/switches/check-all/plugin/iso/fail/divceilposneg.mod: (New file).
* gm2/switches/check-all/plugin/iso/fail/divceilposneg2.mod: (New file).
* gm2/switches/check-all/plugin/iso/fail/divceilposnegcall.mod: (New file).
* gm2/switches/check-all/plugin/iso/fail/divceilposnegcall2.mod: (New file).
* gm2/switches/check-all/plugin/iso/fail/divfloornegpos.mod: (New file).
* gm2/switches/check-all/plugin/iso/fail/divfloorpospos.mod: (New file).
* gm2/switches/check-all/plugin/iso/fail/lowdiv.mod: (New file).
* gm2/switches/check-all/plugin/iso/fail/switches-check-all-plugin-iso-fail.exp:
(New file).
* gm2/switches/check-all/plugin/pim2/fail/divceil.mod: (New file).
* gm2/switches/check-all/plugin/pim2/fail/highdiv.mod: (New file).
* gm2/switches/check-all/plugin/pim2/fail/modulus.mod: (New file).
* gm2/switches/check-all/plugin/pim2/fail/plugin1.mod: (New file).
* gm2/switches/check-all/plugin/pim2/fail/plugin3.mod: (New file).
* gm2/switches/check-all/plugin/pim2/fail/plugin4.def: (New file).
* gm2/switches/check-all/plugin/pim2/fail/plugin4.mod: (New file).
* gm2/switches/check-all/plugin/pim2/fail/plugin5.def: (New file).
* gm2/switches/check-all/plugin/pim2/fail/plugin5.mod: (New file).
* gm2/switches/check-all/plugin/pim2/fail/plugin6.def: (New file).
* gm2/switches/check-all/plugin/pim2/fail/plugin6.mod: (New file).
* gm2/switches/check-all/plugin/pim2/fail/plugin7.def: (New file).
* gm2/switches/check-all/plugin/pim2/fail/plugin7.mod: (New file).
* gm2/switches/check-all/plugin/pim2/fail/plugin8.def: (New file).
* gm2/switches/check-all/plugin/pim2/fail/plugin8.mod: (New file).
* gm2/switches/check-all/plugin/pim2/fail/plugin9.mod: (New file).
* gm2/switches/check-all/plugin/pim2/fail/switches-check-all-plugin-pim2-fail.exp:
(New file).
* gm2/switches/check-all/run/fail/cardrange.mod: (New file).
* gm2/switches/check-all/run/fail/cardrange2.mod: (New file).
* gm2/switches/check-all/run/fail/cardrange3.mod: (New file).
* gm2/switches/check-all/run/fail/intrange.mod: (New file).
* gm2/switches/check-all/run/fail/intrange2.mod: (New file).
* gm2/switches/check-all/run/fail/intrange3.mod: (New file).
* gm2/switches/check-all/run/fail/intrange4.mod: (New file).
* gm2/switches/check-all/run/fail/intrange5.mod: (New file).
* gm2/switches/check-all/run/fail/multint1.mod: (New file).
* gm2/switches/check-all/run/fail/multint2.mod: (New file).
* gm2/switches/check-all/run/fail/multint3.mod: (New file).
* gm2/switches/check-all/run/fail/rangesupport.def: (New file).
* gm2/switches/check-all/run/fail/rangesupport.mod: (New file).
* gm2/switches/check-all/run/fail/realrange.mod: (New file).
* gm2/switches/check-all/run/fail/subrange.mod: (New file).
* gm2/switches/check-all/run/fail/switches-check-all-run-fail.exp:
(New file).
* gm2/switches/check-all/run/fail/tinyrange.mod: (New file).
* gm2/switches/check-all/run/pass/cardrange.mod: (New file).
* gm2/switches/check-all/run/pass/forcheck.mod: (New file).
* gm2/switches/check-all/run/pass/subrange.mod: (New file).
* gm2/switches/check-all/run/pass/switches-check-all-run-pass.exp:
(New file).
* gm2/switches/extended-opaque/fail/a.def: (New file).
* gm2/switches/extended-opaque/fail/a.mod: (New file).
* gm2/switches/extended-opaque/fail/switches-extended-opaque-fail.exp:
(New file).
* gm2/switches/extended-opaque/pass/a.def: (New file).
* gm2/switches/extended-opaque/pass/a.mod: (New file).
* gm2/switches/extended-opaque/pass/b.mod: (New file).
* gm2/switches/extended-opaque/pass/switches-extended-opaque-pass.exp:
(New file).
* gm2/switches/iso/run/pass/modulus.mod: (New file).
* gm2/switches/iso/run/pass/modulus4.mod: (New file).
* gm2/switches/iso/run/pass/switches-iso-run-pass.exp: (New file).
* gm2/switches/makeall/fail/switches-makeall-fail.exp: (New file).
* gm2/switches/makeall/fail/test.def: (New file).
* gm2/switches/makeall/fail/test.mod: (New file).
* gm2/switches/makeall/pass/switches-makeall-pass.exp: (New file).
* gm2/switches/makeall/pass/test.def: (New file).
* gm2/switches/makeall/pass/test.mod: (New file).
* gm2/switches/none/run/pass/gm2-none.exp: (New file).
* gm2/switches/none/run/pass/hello.mod: (New file).
* gm2/switches/optimization/run/pass/fact.mod: (New file).
* gm2/switches/optimization/run/pass/switches-optimization-run-pass.exp:
(New file).
* gm2/switches/pedantic-params/fail/a.def: (New file).
* gm2/switches/pedantic-params/fail/a.mod: (New file).
* gm2/switches/pedantic-params/fail/switches-pedantic-params-fail.exp:
(New file).
* gm2/switches/pedantic-params/pass/Strings.def: (New file).
* gm2/switches/pedantic-params/pass/Strings.mod: (New file).
* gm2/switches/pedantic-params/pass/Strings2.def: (New file).
* gm2/switches/pedantic-params/pass/Strings2.mod: (New file).
* gm2/switches/pedantic-params/pass/switches-pedantic-params-pass.exp:
(New file).
* gm2/switches/pedantic/fail/onlywrite.mod: (New file).
* gm2/switches/pedantic/fail/readb4.mod: (New file).
* gm2/switches/pic/run/pass/func.c: (New file).
* gm2/switches/pic/run/pass/func.mod: (New file).
* gm2/switches/pic/run/pass/func2.c: (New file).
* gm2/switches/pic/run/pass/func2.mod: (New file).
* gm2/switches/pic/run/pass/switches-pic-run-pass.exp: (New file).
* gm2/switches/pim2/run/pass/modulus.mod: (New file).
* gm2/switches/pim2/run/pass/switches-pim2-run-pass.exp: (New file).
* gm2/switches/pim3/run/pass/modulus.mod: (New file).
* gm2/switches/pim3/run/pass/switches-pim3-run-pass.exp: (New file).
* gm2/switches/pim4/run/pass/FpuIOBug.mod: (New file).
* gm2/switches/pim4/run/pass/InOutBug.mod: (New file).
* gm2/switches/pim4/run/pass/NumberIOBug.mod: (New file).
* gm2/switches/pim4/run/pass/modulus.mod: (New file).
* gm2/switches/pim4/run/pass/modulus2.mod: (New file).
* gm2/switches/pim4/run/pass/switches-pim4-run-pass.exp: (New file).
* gm2/switches/whole-program/pass/run/hello.mod: (New file).
* gm2/switches/whole-program/pass/run/hello2.mod: (New file).
* gm2/switches/whole-program/pass/run/switches-whole-program-pass-run.exp:
(New file).
* gm2/switches/whole-program/pass/run/tiny.mod: (New file).
* gm2/switches/whole-program/pass/run/tiny2.mod: (New file).
* gm2/types/bitset.mod: (New file).
* gm2/types/bitset2.mod: (New file).
* gm2/types/bitset3.mod: (New file).
* gm2/types/charset.mod: (New file).
* gm2/types/const.mod: (New file).
* gm2/types/prog35.mod: (New file).
* gm2/types/real.mod: (New file).
* gm2/types/run/pass/d.c: (New file).
* gm2/types/run/pass/d.def: (New file).
* gm2/types/run/pass/types-run-pass.exp: (New file).
* gm2/types/run/pass/varient4.mod: (New file).
* gm2/types/run/pass/varient5.mod: (New file).
* gm2/types/string.mod: (New file).
* gm2/types/type1.mod: (New file).
* gm2/types/type2.mod: (New file).
* gm2/types/type3.mod: (New file).
* gm2/types/type4.mod: (New file).
* gm2/types/varient.mod: (New file).
* gm2/types/word.mod: (New file).
* gm2/ulmlib/pass/ulmlib-pass.exp: (New file).
* gm2/ulmlib/std/pass/ulmlib-std-pass.exp: (New file).
* gm2/ulmlib/sys/pass/ulmlib-sys-pass.exp: (New file).
* gm2/warnings/todo/nestedproc6.mod: (New file).
* gm2/warnings/todo/options: (New file).
* gm2/warnings/todo/testfor.mod: (New file).
* gm2/warnings/todo/testfor2.mod: (New file).
* gm2/warnings/todo/testfor3.mod: (New file).
* gm2/warnings/todo/testkeywords.mod: (New file).
* gm2/warnings/todo/testloop.mod: (New file).
* gm2/warnings/todo/testscope.mod: (New file).
* gm2/warnings/todo/testscope2.mod: (New file).
* gm2/x86-asm/asm.mod: (New file).
* gm2/x86-asm/asm2.mod: (New file).
Julian Brown [Tue, 6 Dec 2022 23:10:58 +0000 (23:10 +0000)]
OpenMP: Duplicate checking for map clauses in Fortran (PR107214)
This patch adds duplicate checking for OpenMP "map" clauses, taking some
cues from the implementation for C in c-typeck.cc:c_finish_omp_clauses
(and similar for C++).
In addition to the existing use of the "mark" and "comp_mark" bitfields
in the gfc_symbol structure, the patch adds several new bits handling
duplicate checking within various categories of clause types. If "mark"
is being used for map clauses, we need to use different bits for other
clauses for cases where "map" and some other clause can refer to the
same symbol (e.g. "map(n) shared(n)").
2022-12-06 Julian Brown <julian@codesourcery.com>
gcc/fortran/
PR fortran/107214
* gfortran.h (gfc_symbol): Add data_mark, dev_mark, gen_mark and
reduc_mark bitfields.
* openmp.cc (resolve_omp_clauses): Use above bitfields to improve
duplicate clause detection.
gcc/testsuite/
PR fortran/107214
* gfortran.dg/gomp/pr107214.f90: New test.
* gfortran.dg/gomp/pr107214-2.f90: New test.
* gfortran.dg/gomp/pr107214-3.f90: New test.
* gfortran.dg/gomp/pr107214-4.f90: New test.
* gfortran.dg/gomp/pr107214-5.f90: New test.
* gfortran.dg/gomp/pr107214-6.f90: New test.
* gfortran.dg/gomp/pr107214-7.f90: New test.
* gfortran.dg/gomp/pr107214-8.f90: New test.
Julian Brown [Tue, 6 Dec 2022 12:18:33 +0000 (12:18 +0000)]
OpenMP/Fortran: Combined directives with map/firstprivate of same symbol
This patch fixes a case where a combined directive (e.g. "!$omp target
parallel ...") contains both a map and a firstprivate clause for the
same variable. When the combined directive is split into two nested
directives, the outer "target" gets the "map" clause, and the inner
"parallel" gets the "firstprivate" clause, like so:
Tamar Christina [Wed, 14 Dec 2022 13:54:28 +0000 (13:54 +0000)]
AArch64: div-by-255, ensure that arguments are registers. [PR107988]
At -O0 (as opposed to e.g. volatile) we can get into the situation where the
in0 and result RTL arguments passed to the division function are memory
locations instead of registers. I think we could reject these early on by
checking that the gimple values are GIMPLE registers, but I think it's better to
handle it.
As such I force them to registers and emit a move to the memory locations and
leave it up to reload to handle. This fixes the ICE and still allows the
optimization in these cases, which improves the code quality a lot.
gcc/ChangeLog:
PR target/107988
* config/aarch64/aarch64.cc
(aarch64_vectorize_can_special_div_by_constant): Ensure input and output
RTL are registers.
gcc/testsuite/ChangeLog:
PR target/107988
* gcc.target/aarch64/pr107988-1.c: New test.
Jakub Jelinek [Wed, 14 Dec 2022 10:35:22 +0000 (11:35 +0100)]
rust: Fix up aarch64-linux bootstrap [PR106072]
Bootstrap fails on aarch64-linux and some other arches with:
.../gcc/rust/parse/rust-parse-impl.h: In member function ‘Rust::AST::ClosureParam Rust::Parser<ManagedTokenSource>::parse_closure_param() [with ManagedTokenSource = Rust::Lexer]’:
.../gcc/rust/parse/rust-parse-impl.h:8916:49: error: ‘this’ pointer is null [-Werror=nonnull]
The problem is that while say on x86_64-linux the side-effects in the
arguments are evaluated from last argument to first, on aarch64-linux
it is the other way around, from first to last. The C++ I believe even
in C++17 makes the evaluation of those side-effects unordered
(indeterminately sequenced with no interleaving), so that is fine.
But, when the call in return statement is evaluated from first to
last, std::move (pattern) happens before pattern->get_locus () and
the former will make pattern (std::unique_ptr) a wrapper object around
nullptr, so dereferencing it later to call get_locus () on it is invalid.
2022-12-14 Jakub Jelinek <jakub@redhat.com>
PR rust/106072
* parse/rust-parse-impl.h (parse_closure_param): Store
pattern->get_locus () in a temporary before std::move (pattern) is
invoked.
The following fixes a mistake in interpreting .LEN_STORE definitions
during value-numbering when in big-endian mode. We cannot offset
the encoding of the RHS but instead encode to an offsetted position
which is then treated correctly by the endian aware copying code.
PR tree-optimization/107617
* tree-ssa-sccvn.cc (vn_walk_cb_data::push_partial_def):
Handle negative pd.rhs_off.
(vn_reference_lookup_3): Properly provide pd.rhs_off
for .LEN_STORE on big-endian targets.
Martin Jambor [Tue, 13 Dec 2022 23:33:06 +0000 (00:33 +0100)]
ipa: Avoid looking for IPA-SRA replacements where there are none
While modifying the code, I realized that we do look into statements
even when there are no replacements. This patch adds the necessary
early bail-outs to avoid that.
ipa_param_body_adjustments::modify_call_stmt cannot have the same at
the very beginning because calls can still contain otherwise removed
parameters that need to be removed from the statements too.
gcc/ChangeLog:
2022-11-11 Martin Jambor <mjambor@suse.cz>
* ipa-param-manipulation.cc
(ipa_param_body_adjustments::modify_expression): Bail out early if
there are no replacements.
(ipa_param_body_adjustments::modify_assignment): Likewise.
Martin Jambor [Tue, 13 Dec 2022 23:33:06 +0000 (00:33 +0100)]
ipa-sra: Forward propagation of sizes which are safe to dereference
The previous patch established a way to propagate information about
parameters from callers to callees (even though then the actual
splitting is done in the opposite direction), this patch adds to that
information about size of the parameters that is known to be safe to
dereference in the callers - the information currently does not come
from actual dereferences but only when we pass a reference to a known
declaration, but we can use e.g. dereferences in BBs dominating the
call, for example too, if we decide it is worth it.
References which look like splitting candidates but are not always
dereferenced are - assuming the dereferences are not improbable - not
discarded straight away but only marked as conditionally
dereferenceable. IPA phase then makes sure that they stay candidates
only if all incoming edges have big enough known-to-be-safe size.
gcc/ChangeLog:
2022-11-11 Martin Jambor <mjambor@suse.cz>
* ipa-sra.cc (isra_param_desc): New fields safe_size,
conditionally_dereferenceable and safe_size_set.
(struct gensum_param_desc): New field conditionally_dereferenceable.
(struct isra_param_flow): Updated comment of field unit_size.
(ipa_sra_function_summaries::duplicate): Copy the new fields.
(isra_call_summary::dump): Dump unit_size when representing safe_size.
(dump_gensum_param_descriptor): Dump new flag.
(dump_isra_param_descriptor): Dump new fields.
(isra_analyze_call): Fill unit_size when it represents known safe
size.
(check_gensum_access): Instead of disqualifying pointers which are not
always dereference, mark them as conditionally dereferencable if loads
are frequent enough.
(process_scan_results): Copy the conditionally_dereferenceable flag.
(isra_write_node_summary): Stream new fields, or assert they are not
initialized yet.
(isra_read_node_info): Stream new fields.
(update_safe_size): New function.
(propagate_param_hints_accross_call): Propagate safe_sizes.
(propagate_hints_to_all_callees): New function.
(adjust_parameter_descriptions): Check conditionally_dereferenceable
candidates, rework dumping.
(ipa_sra_analysis): Move most of hint propagation for one node to
propagate_hints_to_all_callees. Add another loop to stabilize within
SCCs and another one to verify.
gcc/testsuite/ChangeLog:
2022-11-11 Martin Jambor <mjambor@suse.cz>
* gcc.dg/ipa/ipa-sra-26.c: New test.
* gcc.dg/ipa/ipa-sra-27.c: Likewise.
* gcc.dg/ipa/ipa-sra-28.c: Likewise.
Martin Jambor [Tue, 13 Dec 2022 23:33:06 +0000 (00:33 +0100)]
ipa-sra: Be optimistic about Fortran descriptors
Fortran descriptors are structures which are often constructed just
for a particular argument of a particular call where it is passed by
reference. When the called function is under compiler's control, it
can be beneficial to split up the descriptor and pass it in individual
parameters. Unfortunately, currently we allow IPA-SRA to replace a
pointer with a set of replacements which are at most twice as big in
total and for descriptors we'd need to bump that factor to seven.
This patch looks for parameters which are ADDR_EXPRs of local
variables which are written to and passed as arguments by reference
but are never loaded from and marks them with a flag in the call edge
summary. The IPA analysis phase then identifies formal parameters
which are always fed such arguments and then is more lenient when it
comoes to size.
In order not to store to maximums per formal parameter, I calculate
the more lenient one by multiplying the existing one with a new
parameter. If it is preferable to keep the maximums independent, we
can do that. Documentation for the new parameter is missing as I
still need to re-base the patch on a version which has sphinx. I will
write it before committing.
I have disable IPA-SRA in pr48636-2.f90 in order to be able to keep
using its dump-scan expressions. The new testcase is basically a copy
of it with different options and IPA-SRA dump scans.
gcc/ChangeLog:
2022-11-11 Martin Jambor <mjambor@suse.cz>
* ipa-sra.cc (isra_param_desc): New field not_specially_constructed.
(struct isra_param_flow): New field constructed_for_calls.
(isra_call_summary::dump): Dump the new flag.
(loaded_decls): New variable.
(dump_isra_param_descriptor): New parameter hints, dump
not_specially_constructed if it is true.
(dump_isra_param_descriptors): New parameter hints, pass it to
dump_isra_param_descriptor.
(ipa_sra_function_summaries::duplicate): Duplicate new flag.
(create_parameter_descriptors): Adjust comment.
(get_gensum_param_desc): Bail out when decl2desc is NULL.
(scan_expr_access): Add loaded local variables to loaded_decls.
(scan_function): Survive if final_bbs is NULL.
(isra_analyze_call): Compute constructed_for_calls flag.
(process_scan_results): Be optimistic about size limits. Do not dump
computed param hints when dumpint IPA-SRA structures.
(isra_write_edge_summary): Stream constructed_for_calls.
(isra_read_edge_summary): Likewise.
(ipa_sra_dump_all_summaries): New parameter hints, pass it to
dump_isra_param_descriptor.
(flip_all_hints_pessimistic): New function.
(flip_all_param_hints_pessimistic): Likewise.
(propagate_param_hints): Likewise.
(disable_unavailable_parameters): Renamed to
adjust_parameter_descriptions. Expand size limits for parameters
which are specially contstructed by all callers. Check limits again.p
(ipa_sra_analysis): Pass required hints to ipa_sra_dump_all_summaries.
Add hint propagation.
(ipa_sra_summarize_function): Initialize and destory loaded_decls,
rearrange so that scan_function is called even when there are no
candidates.
* params.opt (ipa-sra-ptrwrap-growth-factor): New parameter.
gcc/testsuite/ChangeLog:
2021-11-11 Martin Jambor <mjambor@suse.cz>
* gfortran.dg/pr48636-2.f90: Disable IPA-SRA.
* gfortran.dg/ipa-sra-1.f90: New test.
Martin Jambor [Tue, 13 Dec 2022 23:33:06 +0000 (00:33 +0100)]
ipa-sra: Move caller->callee propagation before callee->caller one
This patch does not do any functional changes, it merely moves
top-down propagation in the IPA-SRA WPA phase before bottom-up one.
This also meant moving some preliminary checks from the latter to the
former - where they need to be in their own loop over each SCC because
the subsequent one looks at callers.
Currently the propagations are independent (top-down is used for
return value rermoval, bottom-up for parameter removal and splitting)
but subsequent patches will introduce flags about parameters which
should be propagated from callers first and used in splitting. I
separated this change to test ir independently and make those
subsequent patches cleaner.
While at it, I also replaced couple of FOR_EACH_VEC_ELT macros with
C++11 style iteration.
gcc/ChangeLog:
2022-11-11 Martin Jambor <mjambor@suse.cz>
* ipa-sra.cc (ipa_sra_analysis): Move top-down analysis before
bottom-up analysis. Replace FOR_EACH_VEC_ELT with C++11 iteration.
Martin Jambor [Tue, 13 Dec 2022 23:33:06 +0000 (00:33 +0100)]
ipa-sra: Treat REFERENCE_TYPES as always dereferencable
C++ and especially Fortran pass data by references which are not
pointers potentially pointing anywhere and so can be assumed to be
safely dereferencable. This patch teaches IPA-SRA to treat them as
such and avoid the dance we do to prove that we can move loads from
them to the caller.
When we do not know that a dereference will happen all the time, we
need a heuristics so that we do not force memory accesses that normally
happen only rarely. The patch simply uses the (possibly guessed)
profile and checks whether the (expected) number of loads is at least
half of function invocations invocations - the half is now
configurable with a param as requested by Honza.
gcc/ChangeLog:
2022-12-13 Martin Jambor <mjambor@suse.cz>
PR ipa/103585
* params.opt (ipa-sra-deref-prob-threshold): New parameter.
* doc/invoke.texi (ipa-sra-deref-prob-threshold): Document it.
* ipa-sra.cc (struct gensum_param_access): New field load_count.
(struct gensum_param_desc): New field safe_ref, adjusted comments.
(by_ref_count): Renamed to unsafe_by_ref_count, adjusted all uses.
(dump_gensum_access): Dump the new field.
(dump_gensum_param_descriptor): Likewise.
(create_parameter_descriptors): Set safe_ref field, move setting
by_ref forward. Only increment unsafe_by_ref_count for unsafe
by_ref parameters.
(allocate_access): Initialize new field.
(mark_param_dereference): Adjust indentation. Only add data to
bb_dereferences for unsafe by_ref parameters.
(scan_expr_access): For loads, accumulate BB counts.
(dereference_probable_p): New function.
(check_gensum_access): Fix leading comment, add parameter FUN.
Check cumulative counts of loads for safe by_ref accesses instead
of dereferences.
(process_scan_results): Do not propagate dereference distances for
safe by_ref parameters. Pass fun to check_gensum_access. Safe
by_ref params do not need the postdominance check.
Martin Jambor [Tue, 13 Dec 2022 23:33:05 +0000 (00:33 +0100)]
ipa-cp: Leave removal of unused parameters to IPA-SRA
Looking at some benchmarks I have noticed many cases when IPA-CP
cloned a function for all contexts just because it knew that some
parameters were not used at all. Then IPA-SRA looked at the function
and cloned it again to split another parameter or two. The latter
pass is better equipped to detect when parameters can be altogether
removed and so the IPA-CP cloning was for no good reason.
This patch simply alters the IPA-CP not to do that in the situations
where IPA-SRA can (for nodes which can be made local) with additional
dumping requested by Honza.
gcc/ChangeLog:
2022-12-13 Martin Jambor <mjambor@suse.cz>
* ipa-cp.cc (clone_for_param_removal_p): New function.
(estimate_local_effects): Call it before considering cloning
just to remove unused parameters.
Martin Jambor [Tue, 13 Dec 2022 23:33:05 +0000 (00:33 +0100)]
ipa: Better way of applying both IPA-CP and IPA-SRA (PR 103227)
This is basically a better fix for PR 103227. The one currently in
use, rushed in late at stage3, which means that IPA-CP transformation
simply does a replacement of default-definition of IPA-SRA-created
scalar parameters with a constant, meant that IPA-SRA actually often
led to creation of a bunch of unused parameters, which was rather
ironic and sub-optimal.
This patch rips that old way out and makes sure the clash is resolved
at clone-materialization time. What happens is that:
1) IPA-SRA IPA analysis (decision) stage recognizes the clash and does
not create a param adjustment entry for such a scalar component.
2) Clone materialization code checks the IPA-CP transformation
summary and when it realizes that it is removing a parameter that
is a base for a discovered IPA-CP aggregate constant, and:
a) the value is passed by reference, it internally records that any
load of the value is replaced directly with the known constant
value. IPA-SRA will not attempt to split values passed by
reference when there is a write to it so we know such a load
won't be on a a LHS.
b) the value is passed by value, there can be stores to the
corresponding bit of the aggregate and so all accesses are
replaced with a new decl and an assignment of the constant to
this decl is generated at the beginning of the function.
The new testcase contains an xfail as the patch does not fix PR 107640
but it is one that ICEs when one is not careful about remapping
indices of parameters, so I'd like to have it in testsuite/gcc.gd/ipa/
even now.
I don't think that PR 107640 should be attempted through
ipa-param-manipulation replacements because the information is not
really there any more and we'd either need to do the replacements
earlier or dig deep into the clone parent info. Instead, we should
record somewhere that at the beginning of the function the bits of the
global decl have known values and use that in the value numbering.
That way we could one day encode also known constants in globals that
do not come through parameters.
gcc/ChangeLog:
2022-11-11 Martin Jambor <mjambor@suse.cz>
PR ipa/103227
* ipa-param-manipulation.h (class ipa_param_adjustments): Removed
member function get_updated_index_or_split.
(class ipa_param_body_adjustments): New overload of
register_replacement, new member function append_init_stmts, new
member m_split_agg_csts_inits.
* ipa-param-manipulation.cc: Include ipa-prop.h.
(ipa_param_adjustments::get_updated_index_or_split): Removed.
(ipa_param_body_adjustments::register_replacement): New overload, use
it from the older one.
(ipa_param_body_adjustments::common_initialization): Added the
capability to create replacements for conflicting IPA-CP discovered
constants.
(ipa_param_body_adjustments::ipa_param_body_adjustments): Construct
the new member.
(ipa_param_body_adjustments::append_init_stmts): New function.
* ipa-sra.cc: Include ipa-prop.h.
(push_param_adjustments_for_index): Require IPA-CP transformation
summary as a parameter, do not create replacements which are known to
have constant values.
(process_isra_node_results): Find and pass to the above function the
IPA-CP transformation summary.
* ipa-prop.cc (adjust_agg_replacement_values): Remove the
functionality replacing IPA-SRA created scalar parameters with
constants. Simplify, do not require parameter descriptors, do not
return anything.
(ipcp_transform_function): Simplify now that
adjust_agg_replacement_values does not change cfg. Move definition
and initialization of descriptors lower.
* tree-inline.cc (tree_function_versioning): Call append_init_stmts of
param_body_adjs, if there are any.
gcc/testsuite/ChangeLog:
2022-11-11 Martin Jambor <mjambor@suse.cz>
PR ipa/103227
PR ipa/107640
* gcc.dg/ipa/pr107640-2.c: New test.
Martin Jambor [Tue, 13 Dec 2022 23:33:05 +0000 (00:33 +0100)]
ipa-cp: Write transformation summaries of all functions
IPA-CP transformation summary streaming code currently won't stream
out transformations necessary for clones which are only necessary for
materialization of other clones (such as an IPA-CP clone which is then
cloned again by IPA-SRA). However, a follow-up patch for bettor
reconciling IPA-SRA and IPA-CP modifications requires to have that
information at its disposal and so this one reworks the streaming to
write out all non-empty transformation summaries.
In order not to stream transformation summaies into partitions where
the node itself nor any of its clones are materialized, I had to make
sure that clones also get encode_body flag in the encoder (so that it
could be tested) and therefore in turn lto_output understands it needs
to skip clones.
This should actually mean less streaming in typical case because
previously we streamed three zeros for all nodes in a partition with
no useful information associated with them. Currently we don't stream
anything for those.
When reworking the streaming, I also simplified it a little a
converted it writing to nicer C++ vector iterations.
gcc/ChangeLog:
2022-11-25 Martin Jambor <mjambor@suse.cz>
* ipa-prop.cc (useful_ipcp_transformation_info_p): New function.
(write_ipcp_transformation_info): Added a parameter, simplified
given that is known not to be NULL.
(ipcp_write_transformation_summaries): Write out all useful
transformation summaries.
(read_ipcp_transformation_info): Simplify given that some info
will be read.
(read_replacements_section): Remove assert.
* lto-cgraph.cc (add_node_to): Also set encode_body for clones.
* lto-streamer-out.cc (lto_output): Do not output virtual clones.
Jakub Jelinek [Tue, 13 Dec 2022 21:16:34 +0000 (22:16 +0100)]
i386: Fix up *concat*_{5,6,7} patterns [PR108044]
The following patch fixes 2 issues with the *concat<half><mode>3_5 and
*concat<mode><dwi>3_{6,7} patterns.
One is that if the destination is memory rather than register, then
we can't use movabsq and so can't support all the possible immediates.
I see 3 possibilities to fix that. One would be to use
x86_64_hilo_int_operand predicate instead of const_scalar_int_operand
and thus not match it at all during combine in such cases, but that
unnecessarily pessimizes also the case when it is loaded into register
where we can use movabsq.
Another one is what is implemented in the patch, use Wd constraint
for the integer on 64-bit if destination is memory and n otherwise.
Yet another option would be to add match_scratch to the pattern and use
it with =X constraints except for the =o case for 64-bit non-Wd where it
would give a single DImode register (rather than 2).
Another thing is that if one half of the constant is
ix86_endbr_immediate_operand, then for -fcf-protection=branch we
force those constants into memory and that might not work properly
with -fpic. So we should refuse to match with such constants.
OT, seems for movabsq we don't check that and happily allow the endbr
pattern in the immediate.
2022-12-13 Jakub Jelinek <jakub@redhat.com>
PR target/108044
* config/i386/i386.md (*concat<half><mode>3_5, *concat<mode><dwi>3_6,
*concat<mode><dwi>3_7): Split alternative with =ro output constraint
into =r,o,o and use Wd input constraint for the last alternative which
is enabled for TARGET_64BIT. Reject ix86_endbr_immediate_operand
in the input constant.
* gcc.target/i386/pr108044-1.c: New test.
* gcc.target/i386/pr108044-2.c: New test.
* gcc.target/i386/pr108044-3.c: New test.
* gcc.target/i386/pr108044-4.c: New test.
Jakub Jelinek [Tue, 13 Dec 2022 21:15:29 +0000 (22:15 +0100)]
libstdc++: Update backtrace-rename.h
When writing the r13-4629 commit log I've realized that libsanitizer
isn't the only place which nowadays renames libbacktrace symbols,
libstdc++ does that too.
Tamar Christina [Tue, 13 Dec 2022 18:01:15 +0000 (18:01 +0000)]
AArch64: Fix ILP32 tbranch
the baremetal builds are currently broken because the shift ends up in the wrong
representation if the mode is SImode and the shift amount if 31. To fix this
create the rtx constant with an explicit mode so the backend passes know which
representation it needs to take.
gcc/ChangeLog:
* config/aarch64/aarch64.md (tbranch_<code><mode>3): Use gen_int_mode.
Jakub Jelinek [Tue, 13 Dec 2022 15:55:21 +0000 (16:55 +0100)]
vect-patterns: Fix up vect_recog_rotate_pattern [PR108064]
Since vect_recog_rotate_pattern has been extended to work also
on signed types in r13-1100 we miscompile the testcase below.
vect_recog_rotate_pattern actually emits correct scalar code into
the pattern def sequence (in particular cast to utype, doing the
2 shifts in utype so that the right shift is logical and not arithmetic,
or and then cast back to the signed type), but it didn't supply vectype
for most of those pattern statements, which means that the generic handling
fills it up later with the vectype provided by vect_recog_rotate_pattern.
The problem is that it is vectype of the result of the whole pattern,
i.e. vector of signed values in this case, while the conversion to utype,
2 shifts and or (everything with utype lhs in scalar code) should have
uvectype as STMT_VINFO_VECTYPE.
2022-12-13 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/108064
* tree-vect-patterns.cc (vect_recog_rotate_pattern): Pass uvectype
as 4th argument to append_pattern_def_seq for statements with lhs
with utype type.
Richard Biener [Tue, 13 Dec 2022 13:24:02 +0000 (14:24 +0100)]
tree-optimization/105801 - CCP and .DEFERRED_INIT
This makes sure we treat .DEFERRED_INIT as producing UNDEFINED so
we can continue optimizing uninitialized uses the same as without
-ftrivial-auto-var-init=zero. For the testcase this means we
catch the return 1 optimization opportunity at CCP rather than
only at FRE which already does the right thing here.
PR tree-optimization/105801
* tree-ssa-ccp.cc (likely_value): .DEFERRED_INIT produces
UNDEFINED.
* doc/invoke.texi (ftrivial-auto-var-init): Explicitely
mention we treat variables without an initializer as
undefined also for optimization purposes.
Philip Herron [Tue, 23 Aug 2022 15:41:00 +0000 (16:41 +0100)]
gccrs: Add lang.opt
We have some Rust-specific language options. Note that -fwrapv is
enabled by default in the code. We are trying to respect options such as
-Wunused-result which we get by porting over C++'s no-discard for Rust's
must-use attribute, so we have enabled these by default directly here.
Philip Herron [Tue, 23 Aug 2022 15:44:42 +0000 (16:44 +0100)]
gccrs: Compiler proper interface kicks off the pipeline
This is a wrapper to get out of C land in the rust-lang.cc and into our
class hierarchy for the rust front-end. We expect that the front-end only
support one source file input as the expansion pass will attempt to resolve
that relative pass and parse accordingly.
The main missing piece here is that we are using saw_errors() to return
early which is unnecessary but as our error handling has been improving
over time we will start to take advantage of error node in our type system
as well as error_mark_node from GCC. The caveat being that our lints/checks
expect no errors and will throw an assertion.
Philip Herron [Tue, 23 Aug 2022 15:41:31 +0000 (16:41 +0100)]
gccrs: Add compiler driver
Our compiler driver is fairly simple so far. The key piece to enforce is
that a compilation unit in Rust is the whole crate, so the process for
compiling Rust means pointing the compiler at the main entry point such as
src/lib.rs or src/main.rs where the expansion pass takes over loading the
other source files to include them in the crate.
Philip Herron [Wed, 24 Aug 2022 11:08:58 +0000 (12:08 +0100)]
gccrs: These are wrappers ported from reusing gccgo
The wrappers over linemap and location will eventually disappear here but
served as a useful starting point for us. We have wrappers over the
diagnostics system which we might be able to get rid of as well.
Philip Herron [Fri, 21 Oct 2022 12:29:50 +0000 (14:29 +0200)]
gccrs: Add HIR to GCC GENERIC lowering entry point
This patch contains the entry point and utilities used for the lowering
of HIR nodes to `tree`s. It also contains a constant evaluator, ported
over from the C++ frontend.
Co-authored-by: David Faust <david.faust@oracle.com> Co-authored-by: Faisal Abbas <90.abbasfaisal@gmail.com> Signed-off-by: Faisal Abbas <90.abbasfaisal@gmail.com>
Philip Herron [Fri, 21 Oct 2022 12:01:04 +0000 (14:01 +0200)]
gccrs: Add base for HIR to GCC GENERIC lowering
This pass walks the HIR crate and turns them into GCC `tree`s. We do not have
any Rust specific tree's. We are slowly removing the backend abstraction
which was ported over from gccgo in favour of using `tree`s directly.
Philip Herron [Tue, 23 Aug 2022 15:36:29 +0000 (16:36 +0100)]
gccrs: Add metadata output pass
Extern crates statements to tell the front-end to look for another library.
The mechanism here is heavily inspired from gccgo, so when we compile a
library for example we invoke:
All going well this object file will now contain extra data inside
.rust-export section inside the object file which will be preserved inside
archives and shared objects. When we have another application which uses
this library 'mylib'.
When the extern crate line is hit the front-end will look for mylib.o,
libmylib.a, mylib.rox. If it finds a raw object file it will read the
.rust-export section directly from the object for the public metadata
such as public functions, types constants etc. If it fails to find an
object it might find .rox which is the objdump of the .rust-export to a
raw file, it might even find libmylib.a and read the export directly out
of the archive file reusing code from gccgo to do so.
The full compiler pipeline is reused here, so the metatadata is actually
just real rust code. The benifit here is that Rust supports exporting,
macros and generics so this requires the name-resolution and type info
all to be generated and inserted into the apropriate context classes. Since
the metadata is real rust code it means we can reuse the full pipeline to
generate the code as necessary. So for the simple case of a public struct
we simply emit the AST dump of this struct directly into the metadata. If
its a non-generic public function we emit and extern rust abi block for
that function. If its a trait we can simply emit the trait with the public
memebers. Generics are more complicated since we need to emit the function
fully for it to be compiled correctly this still needs tests to be added.
The hardest part is non generic impl blocks which is still a WIP.
Thomas Young [Tue, 23 Aug 2022 15:34:35 +0000 (16:34 +0100)]
gccrs: Add dead code scan on HIR
In order to find dead code we use a depth first search and keep liveness
variables, after type resolution. In this case, if a function is unused
and it calls another function the 2nd function is now unused since the
caller is not used etc. The algorithm is a depth first search.
Arthur Cohen [Tue, 23 Aug 2022 15:32:26 +0000 (16:32 +0100)]
gccrs: Add privacy checks
This pass is responsible for resolving the privacy of items and verifying
that access to these items is performed within the limits of that privacy.
By default, items in Rust are private and only public to the current
module and its submodules. However, the user can annotate an item with
various qualifiers such as `pub` to publicly expose an item. Furthermore,
a module path can be given to `pub` to restrict an item's privacy to a
certain module: These paths need to be resolved and later on checked by
the privacy error reporter.
Arthur Cohen [Tue, 23 Aug 2022 15:31:55 +0000 (16:31 +0100)]
gccrs: Add const checker
Similarly to the unsafe checker, constant evaluation can only be performed
in a few contexts and include restrictions on the Rust language. Should
the user fail to uphold those conditions, errors will be reported and the
compilation pipeline interrupted.
In these contexts, the user is restricted to calling only functions marked
as `const` or perform arithmetic operations only on certain types, among
other restrictions.
Arthur Cohen [Tue, 23 Aug 2022 15:31:17 +0000 (16:31 +0100)]
gccrs: Add unsafe checks for Rust
The UnsafeChecker visitor verifies that unsafe actions are only performed
in unsafe contexts. Otherwise, an error should be reported to the user and
the compilation pipeline should be halted. These contexts, which include
unsafe blocks or unsafe functions, are allowed to perform more actions
than regular safe Rust code. These actions currently include:
- Dereferencing raw pointers
- Calls to unsafe functions
- Use of inline assembly
- Use of mutable static
- Use of extern static
- Access to a union's field
- Call to functions with #[target(feature)] attribute
- Initializing type with rustc_layout_scalar_valid_range attribute
- Mutation of layout constrained field
- Borrow of layout constrained field
Philip Herron [Fri, 21 Oct 2022 11:53:14 +0000 (13:53 +0200)]
gccrs: Add type resolution and trait solving pass
This serves to handle parts of the Rust type-system. Namely, the type
resolution (similar to type-checking) and the trait solving algorithms
(which ensure Rust's type contracts are upheld throughout the codebase).
Arthur Cohen [Tue, 23 Aug 2022 15:27:23 +0000 (16:27 +0100)]
gccrs: Add attributes checker
The attribute checker is responsible for checking the validity of various
attributes including built-in ones. It is currently unfinished and will
receive some modifications, as well as become the host of some existing
code in the compiler which needs to be refactored. One of its
responsibilities is to make sure that arguments given to built-in
attributes are correct, or contain the correct type of information. This
visitor also checks that an attribute is allowed to be used in the current
particular context.
Philip Herron [Tue, 23 Aug 2022 15:22:47 +0000 (16:22 +0100)]
gccrs: Add port of FNV hash used during legacy symbol mangling
This hash was ported from the Go runtime, as we needed a hash for the legacy
symbol mangling system. All symbols in Rust contain a hash of some
metadata for uniqueness on generic functions.
Philip Herron [Tue, 23 Aug 2022 15:22:22 +0000 (16:22 +0100)]
gccrs: Add wrapper for make_unique
This is a wrapper for make_unique. We can likely get rid of this, as there
are other implementations available, or simply keep using the unique_ptr
constructor.
Philip Herron [Tue, 23 Aug 2022 15:20:05 +0000 (16:20 +0100)]
gccrs: Add AST to HIR lowering pass
This performs the lowering of the AST to HIR. The interesting piece here is
that we desugar much of the AST as mentioned in the previous pass, but
crucially, we also strip out all code that is "marked-for-strip" which failed
cfg-expansion from the expansion pass. After this, the HIR includes all code
required to compile for this crate.
Philip Herron [Fri, 21 Oct 2022 11:44:20 +0000 (13:44 +0200)]
gccrs: Add declarations for Rust HIR
This patch contains the declarations needed for our second intermediate
representation, which we will refer to as an HIR.
This gives the front-end a chance to desugar much of the AST, such as:
- Removing distinction between functions and methods
- Removing Macros
- Removing IdentifierExprs
- Removing duplicate attribute structures
Philip Herron [Tue, 23 Aug 2022 15:19:04 +0000 (16:19 +0100)]
gccrs: Add name resolution pass to the Rust front-end
The name resolution is split into two phases, one toplevel pass which scans
the whole "Crate" which iterates all items and nested items in modules to
generate a context class full of CanonicalPath items. It also generates
a hierarchy of parent->child and child->parent relationships using the AST
NodeId for PathResolution in the second phase.
The second phase drills into each item like functions and creates a stack
of canonical paths for variables etc so that we can store information in
a side table of usage variable 'a' resolves to NodeId '123' which refers
to the NodeId of the "let a;" statement.
Calls to macros should be checked and expanded into an AST fragment based on
the context they've been called in. This is similar to token substitution, with
a lot of intricacies and checks being performed. A single invocation can result
in an AST fragment containing multiple statements or multiple expressions,
which need to be handled as well. Furthermore, Rust macros can contain
repetitions relying on Kleine operators, similar to regular expression
patterns, that also need to be expanded properly.
Finally, Rust code can be hidden behind `cfg` directives, which allow the user
to perform conditional compilation. If a `cfg` predicate is not met, the
expression or statement it refers to should be marked for strip and removed
from the AST.
Co-authored-by: Philip Herron <philip.herron@embecosm.com> Co-authored-by: Joel Phillips <simplytheother@gmail.com> Signed-off-by: Joel Phillips <simplytheother@gmail.com>
Joel Phillips [Fri, 21 Oct 2022 11:39:49 +0000 (13:39 +0200)]
gccrs: Add Parser for Rust front-end pt.2
This patch contains the second half of the templated Rust parser.
gcc/rust/
* parse/rust-parse-impl.h: New, second half.
Co-authored-by: Philip Herron <philip.herron@embecosm.com> Co-authored-by: Arthur Cohen <arthur.cohen@embecosm.com> Signed-off-by: Joel Phillips <simplytheother@gmail.com>
Joel Phillips [Fri, 21 Oct 2022 11:39:04 +0000 (13:39 +0200)]
gccrs: Add Parser for Rust front-end pt.1
This is a Pratt-style parser for Rust that implements all of the AST. The
rust-parser-impl.h is the implementation of the parser as a template,
allowing it to be given ManagedTokenSource and avoid virtual calls. The
downside is it takes time to compile when used.
Co-authored-by: Philip Herron <philip.herron@embecosm.com> Co-authored-by: Arthur Cohen <arthur.cohen@embecosm.com> Signed-off-by: Joel Phillips <simplytheother@gmail.com>
Joel Phillips [Tue, 23 Aug 2022 15:11:00 +0000 (16:11 +0100)]
gccrs: Add Lexer for Rust front-end
The lexer is referred to as a ManagedTokenSource within the parser. This
lexer does not currently support Unicode, but serves as a starting point
to do so.
Co-authored-by: Philip Herron <philip.herron@embecosm.com> Co-authored-by: Arthur Cohen <arthur.cohen@embecosm.com> Co-authored-by: Mark Wielaard <mark@klomp.org> Signed-off-by: Joel Phillips <simplytheother@gmail.com>
Co-authored-by: Philip Herron <philip.herron@embecosm.com> Co-authored-by: Arthur Cohen <arthur.cohen@embecosm.com> Signed-off-by: Joel Phillips <simplytheother@gmail.com>
Joel Phillips [Fri, 21 Oct 2022 11:34:11 +0000 (13:34 +0200)]
gccrs: Add Rust front-end base AST data structures
This is a full C++11 class hierarchy representing the Rust AST. We do not
allow dynamic_cast and so the main mechanism to work with the AST is by
using the visitor interface. Slowly we are adding TREE_CODE style node
types to the AST which will allow for more ways to work with the AST but
for now this is it.
Co-authored-by: Philip Herron <philip.herron@embecosm.com> Co-authored-by: Arthur Cohen <arthur.cohen@embecosm.com> Signed-off-by: Joel Phillips <simplytheother@gmail.com>
Philip Herron [Tue, 23 Aug 2022 15:02:25 +0000 (16:02 +0100)]
gccrs: Add execution test cases
This is similar to the compile/torture/*.rs test cases, but all of these are
dg-execute testcases. They are compiled, linked and executed by default. These
testcases are also compiled with the matrix of torture options.
The only caveat here is that gccrs does not currently support the main shim,
so we have a C-style main function here returning zero which is not proper Rust
code.
Co-authored-by: Arthur Cohen <arthur.cohen@embecosm.com> Co-authored-by: Thomas Schwinge <thomas@codesourcery.com> Co-authored-by: Mark Wielaard <mark@klomp.org> Co-authored-by: Marc Poulhiès <dkm@kataplop.net>
Philip Herron [Tue, 23 Aug 2022 15:01:16 +0000 (16:01 +0100)]
gccrs: Add general compilation test cases
This suite of tests has two sections: compile/*.rs and compile/torture/*.rs.
The first section is comprised entirely of dg-compile tests, containing a
mixture of dg-warning and dg-error annotations and some with no annotations,
ensuring the creation of resulting asm output. The second section is the same,
but has tests which are ran with the full torture options, for coverage of test
cases that may have an issue with a specific optimization level.
Co-authored-by: Arthur Cohen <arthur.cohen@embecosm.com> Co-authored-by: Thomas Schwinge <thomas@codesourcery.com> Co-authored-by: Mark Wielaard <mark@klomp.org> Co-authored-by: Marc Poulhiès <dkm@kataplop.net>
Philip Herron [Tue, 23 Aug 2022 15:00:51 +0000 (16:00 +0100)]
gccrs: Add link cases testsuite
This testsuite is heavily inspired from the LTO testsuite that uses a
pattern where each file is compiled to an object file and finally linked
together. Since Rust does not have headers/prototypes, we rely on the
ordering here so that all files numbered greater than zero get compiled to
object files first. This leaves the _0 file free to test the 'extern crate' and
'use' keywords to force testing of the compiler to read metadata from the
other 'crates'.
Richard Biener [Mon, 12 Dec 2022 16:52:46 +0000 (17:52 +0100)]
tree-optimization/108076 - if-conversion and forced labels
When doing if-conversion we simply throw away labels without checking
whether they are possibly targets of non-local gotos or have their
address taken. The following rectifies this and refuses to if-convert
such loops.
PR tree-optimization/108076
* tree-if-conv.cc (if_convertible_loop_p_1): Reject blocks
with non-local or forced labels that we later remove
labels from.
Jakub Jelinek [Tue, 13 Dec 2022 09:30:36 +0000 (10:30 +0100)]
libsanitizer: Fix up libbacktrace build after r13-4547 [PR108072]
The r13-4547 commit added new non-static function to libbacktrace:
backtrace_uncompress_zstd but for the libsanitizer use we need to
rename it, so that it is in __asan_* namespace and doesn't clash
with other copies of libbacktrace.
Haochen Gui [Tue, 13 Dec 2022 08:45:10 +0000 (16:45 +0800)]
rs6000: enable cbranchcc4
This patch enables "have_cbranchcc4" on rs6000 by defining a
"cbranchcc4" expander. "have_cbrnachcc4" is a flag in ifcvt.cc to
indicate if branching by CC bits is valid or not. With this flag
enabled, some branches can be optimized to conditional moves.
2022-12-07 Haochen Gui <guihaoc@linux.ibm.com>
gcc/
* config/rs6000/rs6000.md (cbranchcc4): New expander.
Haochen Gui [Thu, 8 Dec 2022 05:22:29 +0000 (13:22 +0800)]
optabs: make prepare_cmp_insn goto fail when cbranchcc4 checks unsatisfied
prepare_cmp_insn is a help function to generate comparison rtx.
It should not assume that cbranchcc4 exists and all sub-CC modes
are supported on a target. When the check fails, it could go to
fail and return a NULL rtx as its callers check the return value
for CCmode.
The test case (gcc.target/powerpc/cbranchcc4-1.c) which covers
failure path will be committed with an rs6000 specific patch.
2022-12-05 Haochen Gui <guihaoc@linux.ibm.com>
gcc/
* optabs.cc (prepare_cmp_insn): Return a NULL rtx other than
assertion failure when targets don't have cbranch optab or
predicate check fails.