Ju-Zhe Zhong [Wed, 14 Dec 2022 07:31:11 +0000 (15:31 +0800)]
RISC-V: Support VSETVL PASS for RVV support
This patch is to support VSETVL PASS for RVV support.
1.The optimization and performance is guaranteed LCM (Lazy code motion).
2.Base on RTL_SSA framework to gain better optimization chances.
3.Also we do VL/VTYPE, demand information backward propagation across
blocks by RTL_SSA reverse order in CFG.
4.It has been well and fully tested by about 200+ testcases for VLMAX
AVL situation (Only for VLMAX since we don't have an intrinsics to
test non-VLMAX).
5.Will support AVL model in the next patch.
gcc/ChangeLog:
* config.gcc: Add riscv-vsetvl.o.
* config/riscv/riscv-passes.def (INSERT_PASS_BEFORE): Add VSETVL PASS
location.
* config/riscv/riscv-protos.h (make_pass_vsetvl): New function.
(enum avl_type): New enum.
(get_ta): New function.
(get_ma): Ditto.
(get_avl_type): Ditto.
(calculate_ratio): Ditto.
(enum tail_policy): New enum.
(enum mask_policy): Ditto.
* config/riscv/riscv-v.cc (calculate_ratio): New function.
(emit_pred_op): change the VLMAX mov codgen.
(get_ta): New function.
(get_ma): Ditto.
(enum tail_policy): Change enum.
(get_prefer_tail_policy): New function.
(enum mask_policy): Change enum.
(get_prefer_mask_policy): New function.
* config/riscv/t-riscv: Add riscv-vsetvl.o
* config/riscv/vector.md: Adjust attribute and pattern for VSETVL
PASS.
(@vlmax_avl<mode>): Ditto.
(@vsetvl<mode>_no_side_effects): Delete.
(vsetvl_vtype_change_only): New MD pattern.
(@vsetvl_discard_result<mode>): Ditto.
* config/riscv/riscv-vsetvl.cc: New file.
* config/riscv/riscv-vsetvl.h: New file.
Ju-Zhe Zhong [Wed, 14 Dec 2022 07:01:56 +0000 (15:01 +0800)]
RISC-V: Fix RVV machine mode attribute configuration
The attribute configuration of each machine mode are support in the previous patch.
I noticed some of them are not correct during VSETVL PASS testsing.
Correct them in the single patch now.
gcc/ChangeLog:
* config/riscv/riscv-vector-switch.def (ENTRY): Correct attributes.
Jakub Jelinek [Mon, 19 Dec 2022 14:05:16 +0000 (15:05 +0100)]
testsuite: Fix up pr64536.c for LLP64 targets [PR108151]
Apparently llp64 had 2 further warnings, fixed thusly.
2022-12-19 Jakub Jelinek <jakub@redhat.com>
PR testsuite/108151
* gcc.dg/pr64536.c (bar): Cast long to __INTPTR_TYPE__
before casting to long *.
Jakub Jelinek [Mon, 19 Dec 2022 14:00:47 +0000 (15:00 +0100)]
modula2: Don't treat % in Modula 2 messages specially
On top of the just posted patch, this patch makes sure that
any % chars in message strings aren't treated as format chars.
None of these functions take variable number of arguments, so for
most of format specifiers there is nowhere to take arguments from,
it is true that a couple of format specifiers don't take any
arguments - %%, %m, %<, %>, %' - so it is actually possible
to use them, but one needs to verify that no other are emitted and
that what should be printed as % is really emitted as %%.
If the FE does that, then please ignore this patch, otherwise I think
it is safer to do this.
2022-12-19 Jakub Jelinek <jakub@redhat.com>
* gm2-gcc/m2linemap.cc (m2linemap_ErrorAt, m2linemap_ErrorAtf,
m2linemap_WarningAtf, m2linemap_NoteAtf, m2linemap_internal_error):
Call functions with "%s", message rather than just message, so that
% chars in message aren't treated as format specifiers.
Jakub Jelinek [Mon, 19 Dec 2022 13:20:36 +0000 (14:20 +0100)]
modula2: Fix up bootstrap on powerpc64le-linux [PR108147]
As mentioned in the PR, bootstrap with m2 enabled currently fails
on powerpc64le-linux, we get weird ICE after printing some diagnostics.
The problem is that mc creates from *.def prototypes like
extern void m2linemap_WarningAtf (m2linemap_location_t location, void * message);
but the actual function definitions use
void m2linemap_WarningAtf (m2linemap_location_t location, void * message,
...) { code }
and on powerpc64le-linux such lying about the prototype results in
wrong-code, on the caller side we assume the function isn't varargs
and so don't reserve 64 bytes in the frame for it, while the callee
relies on the area being reserved and stores into it.
Fixed by adding non-stdarg wrappers around stdarg functions (because
we want va_list and pass it to diagnostics functions).
2022-12-19 Jakub Jelinek <jakub@redhat.com>
PR modula2/108147
* gm2-gcc/m2linemap.def (ErrorAtf, WarningAtf, NoteAtf):
Comment out prototypes with varargs.
* gm2-gcc/m2linemap.h (m2linemap_ErrorAtf, m2linemap_WarningAtf,
m2linemap_NoteAtf): No longer varargs.
* gm2-gcc/m2linemap.cc (m2linemap_ErrorAtf): Turned into a
non-varargs wrapper around ...
(m2linemap_ErrorAtf_1): ... this. New static function.
(m2linemap_WarningAtf): Turned into a non-varargs wrapper around ...
(m2linemap_WarningAtf_1): ... this. New static function.
(m2linemap_NoteAtf): Turned into a non-varargs wrapper around ...
(m2linemap_NoteAtf_1): ... this. New static function.
Martin Liska [Mon, 19 Dec 2022 13:55:39 +0000 (14:55 +0100)]
gcc-changelog: support digits in PR's component in subject
contrib/ChangeLog:
* gcc-changelog/git_commit.py: Support digits in PR's
component in subject.
Martin Liska [Mon, 19 Dec 2022 13:34:18 +0000 (14:34 +0100)]
gcc-changelog: allow digit in component name
contrib/ChangeLog:
* gcc-changelog/git_commit.py: Allow digit in component name.
contrib/ChangeLog:
* gcc-changelog/test_email.py: Add new test.
* gcc-changelog/test_patches.txt: Add new patch.
Jakub Jelinek [Mon, 19 Dec 2022 12:49:52 +0000 (13:49 +0100)]
testsuite: Fix up pr64536.c for LLP64 targets [PR108151]
The test casts a pointer to long, which is ok for ilp32 and lp64
targets but not for llp64 targets. Nothing reads the values later,
it is a link test, so all we care about is that it is the same
cast on s390x-linux where it used to fail before the PR64536 fix,
and that we don't warn about it.
2022-12-19 Jakub Jelinek <jakub@redhat.com>
PR testsuite/108151
* gcc.dg/pr64536.c (bar): Use casts to __INTPTR_TYPE__ rather than
long when casting pointer to integral type.
Kyrylo Tkachov [Mon, 19 Dec 2022 11:16:47 +0000 (11:16 +0000)]
aarch64: PR target/108140 Handle NULL target in data intrinsic expansion
In this PR we ICE when expanding the __rbit builtin with a NULL target rtx.
I *think* that only happens when the result is unused and hence maybe we shouldn't be expanding
any RTL at all, but the ICE here is easily fixed by deriving the mode from the type of the expression
rather than the target.
This patch does that.
Bootstrapped and tested on aarch64-none-linux-gnu.
gcc/ChangeLog:
PR target/108140
* config/aarch64/aarch64-builtins.cc
(aarch64_expand_builtin_data_intrinsic): Handle NULL target.
gcc/testsuite/ChangeLog:
PR target/108140
* gcc.target/aarch64/acle/pr108140.c: New test.
Tobias Burnus [Mon, 19 Dec 2022 11:12:16 +0000 (12:12 +0100)]
gcc-changelog: Add warning for auto-added files
git_email.py prints now a warning for files added automatically.
git_check_commit.py does likewise but only with --verbose.
It prints one line per ChangeLog file, either stating the file
or if more than one the number of files.
contrib/ChangeLog:
* gcc-changelog/git_check_commit.py (__main__): With -v print a
warning for the auto-added files.
* gcc-changelog/git_commit.py (GitCommit.__init__): Add self.warnings.
(GitCommit.check_mentioned_files): Add warning for auto-added files.
(GitCommit.print_warnings): New function.
* gcc-changelog/git_email.py (__main__): Remove bogus argument to
GitEmail constructor; print auto-added-files warning.
* gcc-changelog/test_email.py (test_auto_add_file_1,
test_auto_add_file_2): New tests.
* gcc-changelog/test_patches.txt: Add two test cases.
Jakub Jelinek [Mon, 19 Dec 2022 10:24:55 +0000 (11:24 +0100)]
testsuite: Fix up pr107397.f90 test [PR107397]
The pr107397.f90 test FAILs for me, one problem was that the
added diagnostics has an indefinite article before BOZ, but
the test dg-error didn't. The other problem was that on the
other dg-error there was no space between the string and closing
}, so it was completely ignored and the error was an excess
error.
2022-12-19 Jakub Jelinek <jakub@redhat.com>
PR fortran/107397
* gfortran.dg/pr107397.f90: Adjust expected diagnostic wording and
add space between dg-error string and closing }.
Jakub Jelinek [Mon, 19 Dec 2022 10:14:55 +0000 (11:14 +0100)]
hwasan: Add libhwasan_preinit.o
I've noticed an inconsistency with the other sanitizers.
For -fsanitize={address,thread,leak} we link into binaries
lib*san_preinit.o such that the -lasan, -ltsan or -llsan libraries
are initialized as early as possible through .preinit_array.
The hwasan library has the same thing, but we strangely compiled
it into the library (where it apparently didn't do anything,
.preinit_array doesn't seem to be created for shared libraries),
rather than installing it like in the other 3 cases.
The following patch handles it for hwasan similarly to asan, tsan and lsan.
I don't have any hw with hwasan support, so I've just checked it
builds and installs as expected and that
gcc -fsanitize=hwaddress -o a a.c -mlam=u57
on trivial main results in .preinit_array section in the binary.
2022-12-19 Jakub Jelinek <jakub@redhat.com>
* config/gnu-user.h (LIBHWASAN_EARLY_SPEC): Add libhwasan_preinit.o
to link spec if not -shared.
* hwasan/Makefile.am (nodist_toolexeclib_HEADERS): Set to
libhwasan_preinit.o.
(hwasan_files): Remove hwasan_preinit.cpp.
(libhwasan_preinit.o): Copy from hwasan_preinit.o.
* hwasan/Makefile.in: Regenerated.
Ju-Zhe Zhong [Wed, 14 Dec 2022 06:57:44 +0000 (14:57 +0800)]
RISC-V: Change vlmul printing rule
This patch is preparing patch for the following patch (VSETVL PASS)
support since the current vlmul printing rule is not appropriate
information for VSETVL PASS. I split this fix in a single patch.
gcc/ChangeLog:
* config/riscv/riscv-v.cc (emit_vlmax_vsetvl): Pass through VLMUL enum
instead of machine mode.
* config/riscv/riscv-vector-builtins-bases.cc: Ditto.
* config/riscv/riscv.cc (riscv_print_operand): Print LMUL by enum vlmul
instead of machine mode.
Kito Cheng [Mon, 19 Dec 2022 09:28:25 +0000 (17:28 +0800)]
RISC-V: Fix vwrite_csr.c and vread_csr.c
gcc/testsuite:
* gcc.target/riscv/rvv/base/vread_csr.c: Use specific option
instead.
* gcc.target/riscv/rvv/base/vwrite_csr.c: Ditto.
Jiufu Guo [Mon, 19 Dec 2022 08:40:01 +0000 (16:40 +0800)]
rs6000: use li;x?oris to build constant
For constant C:
If '(c & 0xFFFFFFFF00008000ULL) == 0xFFFFFFFF00008000ULL' or say:
32(1) || 16(x) || 1(1) || 15(x), using "li; xoris" would be ok.
If '(c & 0xFFFFFFFF80008000ULL) == 0x80000000ULL' or say:
32(0) || 1(1) || 15(x) || 1(0) || 15(x), we could use "li; oris" to
build constant 'C'.
Here N(M) means N continuous bit M, x for M means it is ok for either
1 or 0; '||' means concatenation.
This patch update rs6000_emit_set_long_const to support those constants.
PR target/106708
gcc/ChangeLog:
* config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Add using
"li; x?oris" to build constant.
gcc/testsuite/ChangeLog:
* gcc.target/powerpc/pr106708.c: New test.
Martin Liska [Mon, 19 Dec 2022 09:01:42 +0000 (10:01 +0100)]
gcc-changelog: stop using --flake8
The flake8 pytest plug-in is broken and we should not use it.
contrib/ChangeLog:
* gcc-changelog/setup.cfg: Do not use flake8 pytest plug-in.
liuhongt [Thu, 15 Dec 2022 01:38:08 +0000 (09:38 +0800)]
x86: Don't add crtfastmath.o for -shared
Don't add crtfastmath.o for -shared to avoid changing the MXCSR register
when loading a shared library. crtfastmath.o will be used only when
building executables.
PR target/55522
* config/i386/gnu-user-common.h (GNU_USER_TARGET_MATHFILE_SPEC):
Don't add crtfastmath.o for -shared.
* doc/invoke.texi (-shared): Add related documentation.
Kito Cheng [Sun, 6 Nov 2022 00:01:02 +0000 (17:01 -0700)]
RISC-V: Fix RVV related testsuite
Use wrapper of riscv_vector.h for RVV related testcases,
more detail see https://gcc.gnu.org/pipermail/gcc-patches/2022-October/603140.html
gcc/testsuite/ChangeLog:
* gcc.target/riscv/rvv/base/mov-1.c: Use double quotes to
include riscv_vector.h rather than angle brackets.
* gcc.target/riscv/rvv/base/mov-10.c: Ditto.
* gcc.target/riscv/rvv/base/mov-11.c: Ditto.
* gcc.target/riscv/rvv/base/mov-12.c: Ditto.
* gcc.target/riscv/rvv/base/mov-13.c: Ditto.
* gcc.target/riscv/rvv/base/mov-2.c: Ditto.
* gcc.target/riscv/rvv/base/mov-3.c: Ditto.
* gcc.target/riscv/rvv/base/mov-4.c: Ditto.
* gcc.target/riscv/rvv/base/mov-5.c: Ditto.
* gcc.target/riscv/rvv/base/mov-6.c: Ditto.
* gcc.target/riscv/rvv/base/mov-7.c: Ditto.
* gcc.target/riscv/rvv/base/mov-8.c: Ditto.
* gcc.target/riscv/rvv/base/mov-9.c: Ditto.
* gcc.target/riscv/rvv/base/vread_csr.c: Ditto.
* gcc.target/riscv/rvv/base/vsetvl-1.c: Ditto.
* gcc.target/riscv/rvv/base/vwrite_csr.c: Ditto.
GCC Administrator [Mon, 19 Dec 2022 00:16:53 +0000 (00:16 +0000)]
Daily bump.
Rainer Orth [Sun, 18 Dec 2022 19:39:14 +0000 (20:39 +0100)]
build: doc: Obsolete Solaris 11.3 support
This patch implements the Solaris 11.[0-3] obsoletion just announced in
https://gcc.gnu.org/pipermail/gcc/2022-December/240322.html
Bootstrapped without regressions on Solaris 11.3 (i386-pc-solaris2.11,
sparc-sun-solaris2.11 without and with --enable-obsolete) and 11.4.
2022-12-09 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
gcc:
* config.gcc: Determine Solaris minor version.
Obsolete *-*-solaris2.11.[0-3]*.
* doc/install.texi (Specific, *-*-solaris2*): Document it.
Gaius Mulley [Sun, 18 Dec 2022 10:04:02 +0000 (10:04 +0000)]
PR-108122 Reduce sleep times in gm2/pimcoroutines/run/pass/testtime.mod
Change time unit to 1 jiffy (with respect to TimerHandler.def) rather
than a second.
gcc/testsuite/ChangeLog:
* gm2/pimcoroutines/run/pass/testtime.mod: Reduce sleep times in
the test by a factor of 25.
Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
Steve Kargl [Sun, 18 Dec 2022 03:15:43 +0000 (19:15 -0800)]
Add a check for invalid use of BOZ with a derived type.
PR fortran/107397
gcc/fortran/ChangeLog:
* decl.cc (add_init_expr_to_sym): Add check with new error message.
gcc/testsuite/ChangeLog:
* gfortran.dg/pr107397.f90: New test.
GCC Administrator [Sun, 18 Dec 2022 00:16:57 +0000 (00:16 +0000)]
Daily bump.
Segher Boessenkool [Sat, 17 Dec 2022 20:48:54 +0000 (20:48 +0000)]
rs6000: Add Rust support to traceback table
Use 0 for the "lang" identifier for Rust, just like we do for all other
source languages without assigned language code (0 means "C").
Tested on powerpc64-linux. Without this patch there are ICEs galore in
the gm2 testsuite for 64-bit Linux targets, and with the ptch there are
just a few FAILs.
2022-12-17 Segher Boessenkool <segher@kernel.crashing.org>
* config/rs6000/rs6000-logue.cc (rs6000_output_function_epilogue):
Handle GNU Rust for the tbtab lang field.
Patrick Palka [Sat, 17 Dec 2022 16:24:44 +0000 (11:24 -0500)]
c++: constantness of non-dependent NTTP argument [PR107437]
Here we're rejecting the use of the lambda capture of 't' (of empty
type) as a template argument ultimately because convert_nontype_argument
checks constantness using is_constant_expression, which returns false
for lambda captures since want_rval=false. But in this case I believe
an lvalue-to-rvalue conversion of the argument is implied, so we should
be using is_rvalue_constant_expression instead (which would return true
here).
However, it doesn't seem necessary to consider constantness at all
when deciding whether to instantiate a non-dependent argument in
convert_nontype_argument. So this patch gets rid of the problematic
constantness test altogether, which incidentally also fixes the similar
dg-ice'd testcase from PR87765. This is in line with a similar
change we made to finish_decltype_type in r12-7564-gec0f53a3a542e7.
PR c++/107437
PR c++/87765
gcc/cp/ChangeLog:
* pt.cc (convert_nontype_argument): Relax is_nondep_const_expr
test to !inst_dep_expr_p.
gcc/testsuite/ChangeLog:
* g++.dg/cpp1y/lambda-generic-107437.C: New test.
* g++.dg/cpp1z/constexpr-lambda26.C: Remove dg-ice.
Ian Lance Taylor [Sat, 17 Dec 2022 02:46:06 +0000 (18:46 -0800)]
libbacktrace: unpack literals into output buffer
* elf.c (elf_fetch_backward_init): New static function.
(ZSTD_TABLE_SIZE): Use huffman scratch space size rather than
literal size.
(ZSTD_TABLE_WORK_LIT_SIZE): Don't define.
(elf_zstd_read_huff): Use elf_fetch_backward_init.
(elf_zstd_read_literals): New static function.
(ZSTD_LIT_RAW, ZSTD_LIT_RLE, ZSTD_LIT_HUFF): Don't define.
(struct elf_zstd_literals): Don't define.
(elf_zstd_literal_output): Remove static function.
(elf_zstd_decompress): Use elf_fetch_backward_init and
elf_zstd_read_literals. Rewrite literal copying.<
GCC Administrator [Sat, 17 Dec 2022 00:17:56 +0000 (00:17 +0000)]
Daily bump.
Thomas Neumann [Fri, 9 Dec 2022 17:23:44 +0000 (18:23 +0100)]
initialize fde objects lazily
When registering an unwind frame with __register_frame_info_bases
we currently initialize that fde object eagerly. This has the
advantage that it is immutable afterwards and we can safely
access it from multiple threads, but it has the disadvantage
that we pay the initialization cost even if the application
never throws an exception.
This commit changes the logic to initialize the objects lazily.
The objects themselves are inserted into the b-tree when
registering the frame, but the sorted fde_vector is
not constructed yet. Only on the first time that an
exception tries to pass through the registered code the
object is initialized. We notice that with a double checking,
first doing a relaxed load of the sorted bit and then re-checking
under a mutex when the object was not initialized yet.
Note that the check must implicitly be safe concering a concurrent
frame deregistration, as trying the deregister a frame that is
on the unwinding path of a concurrent exception is inherently racy.
libgcc/ChangeLog:
* unwind-dw2-fde.c: Initialize fde object lazily when
the first exception tries to pass through.
Thomas Neumann [Tue, 22 Nov 2022 07:41:54 +0000 (08:41 +0100)]
speed up end_fde_sort using radix sort
When registering a dynamic unwinding frame the fde list is sorted.
Previously, we split the list into a sorted and an unsorted part,
sorted the later using heap sort, and merged both. That can be
quite slow due to the large number of (expensive) comparisons.
This patch replaces that logic with a radix sort instead. The
radix sort uses the same amount of memory as the old logic,
using the second list as auxiliary space, and it includes two
techniques to speed up sorting: First, it computes the pointer
addresses for blocks of values, reducing the decoding overhead.
And it recognizes when the data has reached a sorted state,
allowing for early termination. When running out of memory
we fall back to pure heap sort, as before.
For this test program
\#include <cstdio>
int main(int argc, char** argv) {
return 0;
}
compiled with g++ -O -o hello -static hello.c we get with
perf stat -r 200 on a 5950X the following performance numbers:
old logic:
0,20 msec task-clock
930.834 cycles
3.079.765 instructions
0,
00030478 +- 0,
00000237 seconds time elapsed
new logic:
0,10 msec task-clock
473.269 cycles
1.239.077 instructions
0,
00021119 +- 0,
00000168 seconds time elapsed
libgcc/ChangeLog:
* unwind-dw2-fde.c: Use radix sort instead of split+sort+merge.
John David Anglin [Fri, 16 Dec 2022 22:23:16 +0000 (22:23 +0000)]
Update baseline symbols for hppa-linux.
2022-12-16 John David Anglin <danglin@gcc.gnu.org>
libstdc++-v3/ChangeLog:
* config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
John David Anglin [Fri, 16 Dec 2022 21:44:40 +0000 (21:44 +0000)]
Suppress -fstack-protector warning on hppa.
Some package builds enable -fstack-protector and -Werror. Since
-fstack-protector is not supported on hppa because the stack grows
up, these packages must check for the warning generated by
-fstack-protector and suppress it on hppa. This is problematic
since hppa is the only significant architecture where the stack
grows up.
2022-12-16 John David Anglin <danglin@gcc.gnu.org>
gcc/ChangeLog:
* config/pa/pa.cc (pa_option_override): Disable -fstack-protector.
gcc/testsuite/ChangeLog:
* lib/target-supports.exp (check_effective_target_static): Return 0
on hppa*-*-*.
Jonathan Wakely [Thu, 15 Dec 2022 15:47:38 +0000 (15:47 +0000)]
libstdc++: Add monadic operations to std::expected for C++23 (P2505R5)
This was approved for C++23 last month in Kona.
libstdc++-v3/ChangeLog:
* include/std/expected (expected): Add monadic operations.
(expected<void, E>): Likewise.
* include/std/version (__cpp_lib_expected): Bump value.
* testsuite/20_util/expected/synopsis.cc: Adjust expected macro
value.
* testsuite/20_util/expected/version.cc: Likewise.
* testsuite/20_util/expected/illformed_neg.cc: Prune additional
errors from ill-formed monadic operations.
* testsuite/20_util/expected/observers.cc: Check error_or.
* testsuite/20_util/expected/monadic.cc: New test.
Jonathan Wakely [Fri, 16 Dec 2022 16:07:29 +0000 (16:07 +0000)]
libstdc++: Fixes for std::expected
This fixes some bugs in the swap functions for std::expected.
It also disables the noexcept-specifiers for equality operators, because
those are problematic when querying whether a std::expected is equality
comparable. The operator==(const expected<T,E>&, const U&) function is
not constrained, so is viable for comparing expected<T,E> with
expected<void,G>, but then we get an error from the noexcept-specifier.
libstdc++-v3/ChangeLog:
* include/std/expected (expected::_M_swap_val_unex): Guard the
correct object.
(expected::swap): Move is_swappable
requirement from static_assert to constraint.
(swap): Likewise.
(operator==): Remove noexcept-specifier.
* testsuite/20_util/expected/swap.cc: Check swapping of
types without non-throwing move constructor. Check constraints
on swap.
* testsuite/20_util/expected/unexpected.cc: Check constraints on
swap.
* testsuite/20_util/expected/equality.cc: New test.
Jonathan Wakely [Wed, 14 Dec 2022 15:21:32 +0000 (15:21 +0000)]
libstdc++: Diagnose broken allocator rebind members
This adds a static assertion to std::allocator_traits::rebind_alloc to
diagnose violations of the rule that rebinding an allocator to its own
value type yields the same allocator type.
This helps to catch the easy mistake of deriving from std::allocator but
forgetting to override the rebind behaviour (no longer an issue in C++20
as std::allocator doesn't have a rebind member that can be inherited).
It also catches bugs like in 23_containers/vector/52591.cc where a typo
means the rebound allocator is a completely different type.
I initially wanted to put this static assert into the body of
allocator_traits:
static_assert(is_same<rebind_alloc<value_type>, _Alloc>::value,
"rebind_alloc<value_type> must be Alloc");
However, this causes a regression in the test for PR libstdc++/72792.
It seems that instantiating std::allocator_traits should be allowed for
invalid allocator types as long as you don't try to rebind them. To
support that, only assert in the __allocator_traits_base::__rebind class
template (in both the primary template and the partial specialization).
As a result, the bug in 20_util/scoped_allocator/outermost.cc is not
diagnosed, because nothing in that test rebinds the allocator.
libstdc++-v3/ChangeLog:
* include/bits/alloc_traits.h (__allocator_traits_base::__rebind):
Add static assert for rebind requirement.
* testsuite/20_util/allocator_traits/members/rebind_alloc.cc:
Fix invalid rebind member in test allocator.
* testsuite/20_util/allocator_traits/requirements/rebind_neg.cc:
New test.
* testsuite/20_util/scoped_allocator/outermost.cc: Add rebind to
test allocator.
* testsuite/23_containers/forward_list/48101_neg.cc: Prune new
static assert error.
* testsuite/23_containers/unordered_multiset/48101_neg.cc:
Likewise.
* testsuite/23_containers/unordered_set/48101_neg.cc:
Likewise.
* testsuite/23_containers/vector/52591.cc: Fix typo in rebind.
Andrew Pinski [Thu, 8 Dec 2022 22:34:16 +0000 (22:34 +0000)]
coroutines: Build pointer initializers with nullptr_node [PR107768]
The PR reports that using integer_zero_node triggers a warning for
-Wzero-as-null-pointer-constant which comes from compiler-generated code so
makes no sense to the end user.
Co-Authored-By: Iain Sandoe <iain@sandoe.co.uk>
PR c++/107768
gcc/cp/ChangeLog:
* coroutines.cc (coro_rewrite_function_body): Initialize pointers
from nullptr_node. (morph_fn_to_coro): Likewise.
gcc/testsuite/ChangeLog:
* g++.dg/coroutines/pr107768.C: New test.
David Malcolm [Fri, 16 Dec 2022 19:50:07 +0000 (14:50 -0500)]
analyzer: add src_region param to region_model::check_for_poison [PR106479]
PR analyzer/106479 notes that we don't always show the region-creation
event for a memmove from an uninitialized stack region. This occurs
when using kf_memcpy_memmove. Fix by passing a src_region hint to
region_model::check_for_poison.
gcc/analyzer/ChangeLog:
PR analyzer/106479
* kf.cc (kf_memcpy_memmove::impl_call_pre): Pass in source region
to region_model::check_for_poison.
* region-model-asm.cc (region_model::on_asm_stmt): Pass NULL
region to region_model::check_for_poison.
* region-model.cc (region_model::check_for_poison): Add
"src_region" param, and pass it to poisoned_value_diagnostic.
(region_model::on_assignment): Pass NULL region to
region_model::check_for_poison.
(region_model::get_rvalue): Likewise.
* region-model.h (region_model::check_for_poison): Add
"src_region" param.
* sm-fd.cc (fd_state_machine::on_accept): Pass in source region
to region_model::check_for_poison.
* varargs.cc (kf_va_copy::impl_call_pre): Pass NULL region to
region_model::check_for_poison.
(kf_va_arg::impl_call_pre): Pass in source region to
region_model::check_for_poison.
gcc/testsuite/ChangeLog:
PR analyzer/106479
* gcc.dg/analyzer/pr104308.c (test_memmove_within_uninit): Remove
xfail on region creation event.
Signed-off-by: David Malcolm <dmalcolm@redhat.com>
Vladimir N. Makarov [Fri, 16 Dec 2022 18:16:31 +0000 (13:16 -0500)]
Revert "IRA: Check that reg classes contain a hard reg of given mode in reg move cost calculation"
The patch resulted in new PRs:
PR target/108145
PR testsuite/108141
So I am reverting the patch.
This reverts commit
12abd5a7d13209f79664ea603b3f3517f71b8c4f.
Qing Zhao [Fri, 16 Dec 2022 17:25:42 +0000 (17:25 +0000)]
Add a new warning option -Wstrict-flex-arrays.
'-Wstrict-flex-arrays'
Warn about inproper usages of flexible array members according to
the LEVEL of the 'strict_flex_array (LEVEL)' attribute attached to
the trailing array field of a structure if it's available,
otherwise according to the LEVEL of the option
'-fstrict-flex-arrays=LEVEL'.
This option is effective only when LEVEL is bigger than 0.
Otherwise, it will be ignored with a warning.
when LEVEL=1, warnings will be issued for a trailing array
reference of a structure that have 2 or more elements if the
trailing array is referenced as a flexible array member.
when LEVEL=2, in addition to LEVEL=1, additional warnings will be
issued for a trailing one-element array reference of a structure if
the array is referenced as a flexible array member.
when LEVEL=3, in addition to LEVEL=2, additional warnings will be
issued for a trailing zero-length array reference of a structure if
the array is referenced as a flexible array member.
gcc/ChangeLog:
* doc/invoke.texi: Document -Wstrict-flex-arrays option.
* gimple-array-bounds.cc (check_out_of_bounds_and_warn): Add two more
arguments.
(array_bounds_checker::check_array_ref): Issue warnings for
-Wstrict-flex-arrays.
* opts.cc (finish_options): Issue warning for unsupported combination
of -Wstrict_flex_arrays and -fstrict-flex-array.
* tree-vrp.cc (execute_ranger_vrp): Enable the pass when
warn_strict_flex_array is true.
gcc/c-family/ChangeLog:
* c.opt (Wstrict-flex-arrays): New option.
gcc/testsuite/ChangeLog:
* gcc.dg/Warray-bounds-flex-arrays-1.c: Update testing case with
-Wstrict-flex-arrays.
* gcc.dg/Warray-bounds-flex-arrays-2.c: Likewise.
* gcc.dg/Warray-bounds-flex-arrays-3.c: Likewise.
* gcc.dg/Warray-bounds-flex-arrays-4.c: Likewise.
* gcc.dg/Warray-bounds-flex-arrays-5.c: Likewise.
* gcc.dg/Warray-bounds-flex-arrays-6.c: Likewise.
* c-c++-common/Wstrict-flex-arrays.c: New test.
* gcc.dg/Wstrict-flex-arrays-2.c: New test.
* gcc.dg/Wstrict-flex-arrays-3.c: New test.
* gcc.dg/Wstrict-flex-arrays.c: New test.
Palmer Dabbelt [Mon, 28 Nov 2022 21:36:00 +0000 (13:36 -0800)]
RISC-V: Fix up some wording in the mcpu/mtune comment
gcc/ChangeLog:
* config/riscv/riscv.cc (riscv_option_override): Fix comment
wording.
Palmer Dabbelt [Fri, 18 Nov 2022 04:25:10 +0000 (20:25 -0800)]
RISC-V: Note that __builtin_riscv_pause() implies Xgnuzihintpausestate
gcc/ChangeLog:
* doc/extend.texi (__builtin_riscv_pause): Imply
Xgnuzihintpausestate.
Jonathan Wakely [Thu, 15 Dec 2022 09:52:48 +0000 (09:52 +0000)]
libstdc++: Fix self-move for std::weak_ptr [PR108118]
I think an alternative fix would be something like:
_M_ptr = std::exchange(rhs._M_ptr, nullptr);
_M_refcount = std::move(rhs._M_refcount);
The standard's move-and-swap implementation generates smaller code at
all levels except -O0 and -Og, so it seems simplest to just do what the
standard says.
libstdc++-v3/ChangeLog:
PR libstdc++/108118
* include/bits/shared_ptr_base.h (weak_ptr::operator=):
Implement as move-and-swap exactly as specified in the standard.
* testsuite/20_util/weak_ptr/cons/self_move.cc: New test.
Martin Liska [Fri, 16 Dec 2022 12:07:27 +0000 (13:07 +0100)]
contrib: make warnings unique in filter-clang-warnings.py
contrib/ChangeLog:
* filter-clang-warnings.py: Print each warning only one time.
Richard Biener [Fri, 16 Dec 2022 12:01:40 +0000 (13:01 +0100)]
middle-end/108086 - avoid unshare_expr when remapping SSA names
r0-89280-g129a37fc319db8 added unsharing to remap_ssa_name but
that wasn't in the version of the patch posted. That has some
non-trivial cost through mostly_copy_tree_r and copy_tree_r but
more importantly it doesn't seem to be necessary. I've successfully
bootstrapped and tested with an assert we only get
tree_node_can_be_shared trees here.
Bootstrapped and tested on x86_64-unknown-linux-gnu with all
languages.
PR middle-end/108086
* tree-inline.cc (remap_ssa_name): Do not unshare the
result from the decl_map.
Martin Liska [Fri, 16 Dec 2022 11:21:59 +0000 (12:21 +0100)]
gcc-changelog: do not use PatchSet.from_filename
Use rather PatchSet constructor where we can pass
properly opened file with newline='\n'.
contrib/ChangeLog:
* gcc-changelog/git_email.py: Use PatchSet constructor
as newline argument is not supported with older unidiff
library.
Tobias Burnus [Fri, 16 Dec 2022 10:01:22 +0000 (11:01 +0100)]
gcc-changelog/git_email.py: Support older unidiff.PatchSet
Commit "unidiff: use newline='\n' argument",
r13-4603-gb045179973161115c7ea029b2788f5156fc55cda, added support CR
on a line, but that broke support for older unidiff.PatchSet.
This patch uses a fallback for git_email.py (drop argument) if not
available (TypeError exception) but keeps using it in test_email.py
unconditionally.
contrib/ChangeLog:
* gcc-changelog/git_email.py (GitEmail:__init__): Support older
unidiff.PatchSet that do not have a newline= argument
of from_filename.
Richard Biener [Fri, 16 Dec 2022 08:46:25 +0000 (09:46 +0100)]
middle-end/108086 - remove PR28238 fix superseeded by PR34018 fix
There's quite special code in copy_bb that handles inline substitution
of a non-invariant address in place of an invariant one that's
now handled by more generic handling of this case in remap_gimple_op_r
so this removes the special casing that happens in a hot path, providing
a small speedup.
PR middle-end/108086
* tree-inline.cc (copy_bb): Remove handling of (foo *)&this->m
substitution which is done in remap_gimple_op_r via
re-gimplifying.
Jakub Jelinek [Fri, 16 Dec 2022 09:19:22 +0000 (10:19 +0100)]
loop-invariant: Split preheader edge if the preheader bb ends with jump [PR106751]
The RTL loop passes only request simple preheaders, but don't require
fallthru preheaders, while move_invariant_reg apparently assumes the
latter, that it can just append instruction(s) to the end of the preheader
basic block.
The following patch fixes that by splitting the preheader edge if
the preheader bb ends with a JUMP_INSN (asm goto in this case).
Without that we get control flow in the middle of a bb.
2022-12-16 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/106751
* loop-invariant.cc (move_invariant_reg): If preheader bb ends
with a JUMP_INSN, split the preheader edge and emit invariants
into the new preheader basic block.
* gcc.c-torture/compile/pr106751.c: New test.
Richard Biener [Fri, 16 Dec 2022 08:25:40 +0000 (09:25 +0100)]
middle-end/108086 - more operand scanner reduction in inlining
There's another round of redundant operand scanning in
remap_gimple_stmt. The following removes this and also improves
one special-case to call a cheaper inline function.
PR middle-end/108086
* tree-inline.cc (remap_gimple_stmt): Add stmts to the
sequence without updating them. Simplify x == x detection.
Tobias Burnus [Fri, 16 Dec 2022 07:56:03 +0000 (08:56 +0100)]
Remove libgomp/testsuite/libgomp.fortran/allocate-4.f90 [PR108056]
Commit r13-4716-ge205ec03f0794aeac3e8a89e947c12624d5a274e accidentally
included a testcase of another patch that is pending review:
https://gcc.gnu.org/pipermail/gcc-patches/2022-December/608401.html
libgomp/
PR libfortran/108056
* testsuite/libgomp.fortran/allocate-4.f90: Remove
accidentally added file.
Haochen Jiang [Tue, 13 Dec 2022 08:25:55 +0000 (16:25 +0800)]
Fix intrin name in Intel CMPccXADD
We usually use only one "_" but not two "__" as prefix in intrin.
This patch aims to fix the intrin name for CMPccXADD.
gcc/ChangeLog:
* config/i386/cmpccxaddintrin.h
(__cmpccxadd_epi32): Rename to _cmpccxadd_epi32.
(__cmpccxadd_epi64): Rename to _cmpccxadd_epi64.
gcc/testsuite/ChangeLog:
* gcc.target/i386/cmpccxadd-1.c: Fix intrin name.
* gcc.target/i386/cmpccxadd-2.c: Ditto.
GCC Administrator [Fri, 16 Dec 2022 00:17:46 +0000 (00:17 +0000)]
Daily bump.
Patrick Palka [Thu, 15 Dec 2022 23:50:16 +0000 (18:50 -0500)]
c++: variadic using-decl with parm pack in terminal name [PR102104]
There's a curious corner case with variadic member using-decls: the
terminal name can also contain a parameter pack, and only through naming
a conversion function, e.g.
using A<Ts>::operator Ts...;
We currently only handle parameter packs appearing in the qualifying
scope of a variadic using-decl; this patch adds support for the above
case as well, representing such a using-decl via two pack expansions,
one for the qualifying scope and one for the terminal name (despite
logically there being just one). Then at instantiation time we manually
merge them.
PR c++/102104
PR c++/108090
gcc/cp/ChangeLog:
* error.cc (dump_decl) <case USING_DECL>: Look through a
pack expansion in the name as well.
* parser.cc (cp_parser_using_declaration): Handle a parameter
pack appearing in the terminal name of a variadic using-decl.
* pt.cc (tsubst_decl) <case USING_DECL>: Likewise. Combine the
handling of variadic and non-variadic using-decls.
gcc/testsuite/ChangeLog:
* g++.dg/cpp1z/using-variadic1.C: New test.
* g++.dg/cpp1z/using-variadic1a.C: New test.
* g++.dg/cpp1z/using-variadic1b.C: New test.
* g++.dg/cpp1z/using-variadic1c.C: New test.
* g++.dg/cpp1z/using-variadic2.C: New test.
* g++.dg/cpp1z/using-variadic3.C: New test.
Jason Merrill [Mon, 12 Dec 2022 22:25:58 +0000 (17:25 -0500)]
c++: rename parameter
gcc/cp/ChangeLog:
* init.cc (build_vec_init): Rename "flags" to "cleanup_flags"
to distinguish from LOOKUP_*.
Arsen Arsenović [Thu, 15 Dec 2022 17:56:59 +0000 (18:56 +0100)]
c++: mangle contracts in write_mangled_name
This fixes contract-checked extern "C" functions.
gcc/cp/ChangeLog:
* mangle.cc (write_encoding): Move contract pre/post function
mangling from here...
(write_mangled_name): ... to here, and make it happen always.
gcc/testsuite/ChangeLog:
* g++.dg/contracts/contracts-externC.C: New test.
Patrick Palka [Thu, 15 Dec 2022 21:07:09 +0000 (16:07 -0500)]
c++: class-scope qualified constrained auto [PR107188]
Here when parsing the class-scope auto constrained by a qualified
concept-id, we first tentatively parse the overall member-declaration as
a deprecated access-declaration, during which we parse C<int> as a
standalone TEMPLATE_ID_EXPR (separate from the auto) and end up emitting
the stray error
concepts-placeholder11.C:9:6: error: wrong number of template arguments (1, should be 2)
9 | N::C<int> auto f() { return 0; }
| ^~~~~~
concepts-placeholder11.C:5:34: note: provided for ‘template<class, class> concept N::C’
5 | template<class, class> concept C = true;
| ^
from build_concept_id called from cp_parser_template_id_expr.
We could fix this by adding a complain parameter to build_concept_id and
passing tf_none when parsing tentatively. However, it seems this can
also be fixed in a more general way that might benefit non-concepts
code: when tentatively parsing an access-declaration, abort the parse
early if the qualifying scope isn't possibly a class or enumeration
type, so that we avoid parsing C<int> as a TEMPLATE_ID_EXPR here in the
first place. This patch takes this latter approach.
PR c++/107188
gcc/cp/ChangeLog:
* parser.cc (cp_parser_using_declaration): Give up early if the
scope of an access-declaration isn't possibly a class type.
gcc/testsuite/ChangeLog:
* g++.dg/cpp2a/concepts-placeholder11.C: New test.
Patrick Palka [Thu, 15 Dec 2022 21:02:05 +0000 (16:02 -0500)]
c++: extract_local_specs and unevaluated contexts [PR100295]
Here during partial instantiation of the constexpr if, extra_local_specs
walks the statement looking for local specializations within to capture.
However, we're thwarted by the fact that 'ts' first appears inside an
unevaluated context, and so the calls to process_outer_var_ref for its
local specializations are a no-op. And since we walk each tree exactly
once, we end up not capturing the local specializations despite 'ts'
later occurring in an evaluated context.
This patch fixes this by making extract_local_specs walk evaluated
contexts first before walking unevaluated contexts. We could probably
get away with not walking unevaluated contexts at all, but this approach
seems more clearly safe.
PR c++/100295
PR c++/107579
gcc/cp/ChangeLog:
* pt.cc (el_data::skip_unevaluated_operands): New data member.
(extract_locals_r): If skip_unevaluated_operands is true,
don't walk into unevaluated contexts.
(extract_local_specs): Walk the pattern twice, first with
skip_unevaluated_operands true followed by it set to false.
gcc/testsuite/ChangeLog:
* g++.dg/cpp1z/constexpr-if-lambda5.C: New test.
Patrick Palka [Thu, 15 Dec 2022 20:54:31 +0000 (15:54 -0500)]
c++: local alias in typename in lambda [PR105518]
We substitute the qualifying scope of a TYPENAME_TYPE directly using
tsubst_aggr_type (so that we can pass entering_scope=true) instead of
going through tsubst, which means we don't properly reuse typedefs
during this substitution. This ends up causing us to reject the below
testcase because we substitute the TYPENAME_TYPE alias::type as if it
were written without the A<t> alias, and thus we expect the non-capturing
lambda to capture t.
This patch fixes this by making tsubst_aggr_type delegate typedefs
to tsubst so that get consistently reused, and then adjusting the result
appropriately if entering_scope is true. In passing, this refactors
tsubst_aggr_type into two functions, one that's intended to be called
directly and a more minimal one that's intended to be called only from
the RECORD/UNION/ENUMERAL_TYPE cases of tsubst (and contains only the
necessary bits for that call site).
PR c++/105518
gcc/cp/ChangeLog:
* pt.cc (tsubst_aggr_type): Handle typedefs by delegating to
tsubst and adjusting the result if entering_scope. Split out
the main part of the function into ...
(tsubst_aggr_type_1) ... here.
(tsubst): Use tsubst_aggr_type_1 instead of tsubst_aggr_type.
Handle TYPE_PTRMEMFUNC_P RECORD_TYPEs here instead of in
tsubst_aggr_type_1.
gcc/testsuite/ChangeLog:
* g++.dg/cpp0x/lambda/lambda-alias1.C: New test.
Patrick Palka [Thu, 15 Dec 2022 20:38:47 +0000 (15:38 -0500)]
c++: partial ordering with memfn ptr cst [PR108104]
Here we're triggering an overzealous assert in unify during partial
ordering since the member function pointer constants are represented as
ordinary CONSTRUCTORs (with TYPE_PTRMEMFUNC_P TREE_TYPE) but the assert
expects COMPOUND_LITERAL_P constructors.
PR c++/108104
gcc/cp/ChangeLog:
* pt.cc (unify) <default>: Relax assert to accept any
CONSTRUCTOR parm, not just COMPOUND_LITERAL_P one.
gcc/testsuite/ChangeLog:
* g++.dg/template/ptrmem33.C: New test.
Vladimir N. Makarov [Thu, 15 Dec 2022 19:11:05 +0000 (14:11 -0500)]
IRA: Check that reg classes contain a hard reg of given mode in reg move cost calculation
IRA calculates wrong AVR costs for moving general hard regs of SFmode. To
calculate the costs we did not exclude sub-classes which do not contain
hard regs of given mode. This was the reason for spilling a pseudo in the
PR. The patch fixes this.
PR rtl-optimization/90706
gcc/ChangeLog:
* ira-costs.cc: Include print-rtl.h.
(record_reg_classes, scan_one_insn): Add code to print debug info.
* ira.cc (ira_init_register_move_cost): Check that at least one hard
reg of the mode are in the class contents to calculate the
register move costs.
gcc/testsuite/ChangeLog:
* gcc.target/avr/pr90706.c: New.
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.
Siddhesh Poyarekar [Thu, 15 Dec 2022 16:45:17 +0000 (11:45 -0500)]
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.
Signed-off-by: Siddhesh Poyarekar <siddhesh@gotplt.org>
Siddhesh Poyarekar [Thu, 15 Dec 2022 16:29:23 +0000 (11:29 -0500)]
middle-end/70090: Document that -fsanitize=object-size uses dynamic size
Fix the documentation to say that object sizes are deduced using
__builtin_dynamic_object_size.
gcc/ChangeLog:
PR middle-end/70090
* doc/invoke.texi (-fsanitize=object-size): Use
__builtin_dynamic_object_size instead of
__builtin_object_size.
Signed-off-by: Siddhesh Poyarekar <siddhesh@gotplt.org>
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 16:02:55 +0000 (17:02 +0100)]
c++, libstdc++: Add typeinfo for _Float{16,32,64,128,32x,64x} and __bf16 types [PR108075]
The following patch adds typeinfos for the extended floating point
types and _Float{32,64}x.
2022-12-15 Jakub Jelinek <jakub@redhat.com>
PR libstdc++/108075
gcc/cp/
* rtti.cc (emit_support_tinfos): Add pointers to
{bfloat16,float{16,32,64,128,32x,64x,128x}}_type_node to fundamentals
array.
gcc/testsuite/
* g++.dg/cpp23/ext-floating13.C: New test.
libstdc++-v3/
* config/abi/pre/gnu.ver (CXXABI_1.3.14): Export
_ZTIDF[0-9]*[_bx], _ZTIPDF[0-9]*[_bx] and _ZTIPKDF[0-9]*[_bx].
* testsuite/util/testsuite_abi.cc (check_version): Handle
CXXABI_1.3.14.
Gaius Mulley [Thu, 15 Dec 2022 14:25:05 +0000 (14:25 +0000)]
Subject: [committed, pushed] PR-107607 m2: Remove bdepend on realpath, cut and echo
It can be replaced by a subshell'd cd just fine.
(cd gcc/m2; autoconf-2.69)
gcc/m2/ChangeLog:
* configure.ac: Stop probing for realpath.
* tools-src/calcpath: Break dependency on realpath, cut
and echo.
* configure: Rebuilt.
Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
Jakub Jelinek [Thu, 15 Dec 2022 13:15:27 +0000 (14:15 +0100)]
testsuite: Fix up * quoting in glob strings
\* wasn't enough, we need \\* and for ObjC it wasn't done at all.
2022-12-15 Jakub Jelinek <jakub@redhat.com>
* lib/target-supports.exp (check_compile): Further quoting
fixes for /* Assembly, /* ObjC and (* Modula-2 *) checks.
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.
Jakub Jelinek [Thu, 15 Dec 2022 12:01:07 +0000 (13:01 +0100)]
Adjust ChangeLog entries from m2 merge.
Fix up ChangeLog formatting...
Gaius Mulley [Thu, 15 Dec 2022 11:47:52 +0000 (11:47 +0000)]
PR-108123 gcc/m2/gm2config.h.in
Rebuilt the file gcc/m2/gm2config.h.in with autoheader-2.69.
gcc/m2/ChangeLog:
* gm2config.h.in: Rebuilt.
Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
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.
Spacetown [Sun, 4 Dec 2022 20:03:34 +0000 (21:03 +0100)]
gcov: annotate uncovered branches [PR107537]
PR gcov-profile/107537
gcc/ChangeLog:
* gcov.cc (output_branch_count): Add annotation '(fallthrough)'
or '(throw)' also to uncovered branches.
Signed-off-by: Michael Förderer <michael.foerderer@gmx.de>
Richard Biener [Thu, 15 Dec 2022 10:30:21 +0000 (11:30 +0100)]
middle-end/108086 - reduce operand scanner use from inliner
The following avoids a redundant second operand scan on all stmts
during inlining which shows with PR108086.
PR middle-end/108086
* tree-inline.cc (copy_edges_for_bb): Do not update all
stmts again.
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.
* gcc.dg/pr108095.c: New test.
Jason Merrill [Wed, 14 Dec 2022 22:42:52 +0000 (17:42 -0500)]
c++: fix initializer_list transformation [PR108071]
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.
PR c++/108071
PR c++/105838
gcc/cp/ChangeLog:
* call.cc (struct conversion_obstack_sentinel): New.
(maybe_init_list_as_array): Compare conversion of dummy argument.
gcc/testsuite/ChangeLog:
* g++.dg/cpp0x/initlist131.C: New test.
* g++.dg/cpp0x/initlist132.C: New test.
* g++.dg/cpp0x/initlist133.C: New test.
GCC Administrator [Thu, 15 Dec 2022 00:17:29 +0000 (00:17 +0000)]
Daily bump.
David Malcolm [Wed, 14 Dec 2022 21:03:30 +0000 (16:03 -0500)]
analyzer: don't call binding_key::make on empty regions [PR108065]
gcc/analyzer/ChangeLog:
PR analyzer/108065
* region.cc (decl_region::get_svalue_for_initializer): Bail out to
avoid calling binding_key::make with an empty region.
* store.cc (binding_map::apply_ctor_val_to_range): Likewise.
(binding_map::apply_ctor_pair_to_child_region): Likewise.
(binding_cluster::bind): Likewise.
(binding_cluster::purge_region): Likewise.
(binding_cluster::maybe_get_compound_binding): Likewise.
(binding_cluster::maybe_get_simple_value): Likewise.
gcc/testsuite/ChangeLog:
PR analyzer/108065
* gfortran.dg/analyzer/pr108065.f90: New test.
Signed-off-by: David Malcolm <dmalcolm@redhat.com>
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.
gcc/testsuite/
* gcc.dg/debug/btf/btf-pr106773.c: New test.
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.
include/
* btf.h (enum btf_var_linkage): New.
(struct btf_var): Update comment to note 'extern' linkage.
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.
gcc/testsuite/ChangeLog:
2022-12-14 Martin Jambor <mjambor@suse.cz>
* g++.dg/ipa/ipa-sra-6.C: New test.
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.
gcc/testsuite/ChangeLog:
2022-12-14 Martin Jambor <mjambor@suse.cz>
* gcc.dg/ipa/ipa-sra-29.c: New test.
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).
Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
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:
!$omp target parallel map(x) firstprivate(x)
-->
!$omp target map(x)
!$omp parallel firstprivate(x)
...
When there is no map of the same variable, the firstprivate is distributed
to both directives, e.g. for 'y' in:
!$omp target parallel map(x) firstprivate(y)
-->
!$omp target map(x) firstprivate(y)
!$omp parallel firstprivate(y)
...
This is not a recent regression, but appear to fix a long-standing ICE.
(The included testcase is based on one by Tobias.)
2022-12-06 Julian Brown <julian@codesourcery.com>
gcc/fortran/
* trans-openmp.cc (gfc_add_firstprivate_if_unmapped): New function.
(gfc_split_omp_clauses): Call above.
libgomp/
* testsuite/libgomp.fortran/combined-directive-splitting-1.f90: New
test.
Jonathan Wakely [Wed, 14 Dec 2022 11:58:05 +0000 (11:58 +0000)]
libstdc++: Fix size passed to operator delete [PR108097]
The number of elements gets stored in _M_capacity so use a separate
variable for the number of bytes to allocate.
libstdc++-v3/ChangeLog:
PR libstdc++/108097
* include/std/stacktrace (basic_stracktrace::_Impl): Do not
multiply N by sizeof(value_type) when allocating.
Martin Jambor [Wed, 14 Dec 2022 14:06:30 +0000 (15:06 +0100)]
ipa-sra: Fix parameter description.
Somehow I made the description of the parameter almost the opposite of
what I wanted to say. Fixed by this patch.
Tested by building gcc on x86_64-linux and make info and make pdf.
gcc/ChangeLog:
2022-12-14 Martin Jambor <mjambor@suse.cz>
* doc/invoke.texi (ipa-sra-ptrwrap-growth-factor): Fix the
description.
* params.opt (ipa-sra-ptrwrap-growth-factor): Likewise.
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.
Martin Liska [Wed, 14 Dec 2022 12:50:03 +0000 (13:50 +0100)]
contrib: add copyright for my scripts
contrib/ChangeLog:
* analyze_brprob.py: Add copyright header.
* analyze_brprob_spec.py: Likewise.
* check-params-in-docs.py: Likewise.
* check_GNU_style.py: Likewise.
* check_GNU_style_lib.py: Likewise.
* filter-clang-warnings.py: Likewise.
* gcc-changelog/git_check_commit.py: Likewise.
* gcc-changelog/git_commit.py: Likewise.
* gcc-changelog/git_email.py: Likewise.
* gcc-changelog/git_repository.py: Likewise.
* gcc-changelog/git_update_version.py: Likewise.
* gcc-changelog/test_email.py: Likewise.
* mark_spam.py: Likewise.
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.
Martin Liska [Wed, 14 Dec 2022 10:33:25 +0000 (11:33 +0100)]
mklog: do not depend on recent unidiff version
contrib/ChangeLog:
* mklog.py: Check for number of hunks and not if a modified
file is binary.
Martin Liska [Wed, 14 Dec 2022 07:54:32 +0000 (08:54 +0100)]
docs: document --param=ipa-sra-ptrwrap-growth-factor
gcc/ChangeLog:
* doc/invoke.texi: Document ipa-sra-ptrwrap-growth-factor.
Richard Biener [Mon, 28 Nov 2022 11:38:46 +0000 (12:38 +0100)]
tree-optimization/107617 - big-endian .LEN_STORE VN
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.
Antoni Boucher [Sat, 25 Jun 2022 01:05:29 +0000 (21:05 -0400)]
libgccjit: Allow comparing vector types
gcc/jit/ChangeLog:
PR jit/108078
* jit-recording.h: Add vector_type::is_same_type_as method
gcc/testsuite/ChangeLog:
PR jit/108078
* jit.dg/test-vector-types.cc: Add tests for vector type comparison
Co-authored-by: Guillaume Gomez <guillaume1.gomez@gmail.com>
Signed-off-by: Guillaume Gomez <guillaume1.gomez@gmail.com>
GCC Administrator [Wed, 14 Dec 2022 00:18:37 +0000 (00:18 +0000)]
Daily bump.
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.
gcc/testsuite/ChangeLog:
2021-12-14 Martin Jambor <mjambor@suse.cz>
* gcc.dg/ipa/ipa-sra-25.c: New test
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.
gcc/testsuite/ChangeLog:
2022-11-11 Martin Jambor <mjambor@suse.cz>
* g++.dg/ipa/ipa-sra-5.C: New test
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.