Thomas Koenig [Mon, 10 Jan 2022 22:34:56 +0000 (23:34 +0100)]
Handle R16 conversion for POWER in the environment variables.
This patch handles the environment variables for the REAL(KIND=16)
variables like for the little/big-endian routines, so users without
who have no access to the source or are unwilling to recompile
can use this.
Syntax is, for example
GFORTRAN_CONVERT_UNIT="r16_ieee:10;little_endian:10" ./a.out
libgfortran/ChangeLog:
* runtime/environ.c (R16_IEEE): New macro.
(R16_IBM): New macro.
(next_token): Handle IBM R16 conversion cases.
(push_token): Likewise.
(mark_single): Likewise.
(do_parse): Likewise, initialize endian.
Thomas Koenig [Sun, 9 Jan 2022 15:35:21 +0000 (16:35 +0100)]
Implement CONVERT specifier for OPEN.
This patch, based on Jakub's work, implements the CONVERT
specifier for the power-ieee128 brach. It allows specifying
the conversion as r16_ieee,big_endian and the other way around,
based on a table. Setting the conversion via environment
variable and via program option does not yet work.
gcc/ChangeLog:
* flag-types.h (enum gfc_convert): Add flags for
conversion.
gcc/fortran/ChangeLog:
* libgfortran.h (unit_convert): Add flags.
libgfortran/ChangeLog:
* Makefile.in: Regenerate.
* io/file_pos.c (unformatted_backspace): Mask off
R16 parts for convert.
* io/inquire.c (inquire_via_unit): Add cases for
R16 parts.
* io/open.c (st_open): Add cases for R16 conversion.
* io/transfer.c (unformatted_read): Adjust for R16 conversions.
(unformatted_write): Likewise.
(us_read): Mask of R16 bits.
(data_transfer_init): Likewiese.
(write_us_marker): Likewise.
Jakub Jelinek [Fri, 7 Jan 2022 22:24:41 +0000 (23:24 +0100)]
libgfortran: Make sure glibc < 2.32 built powerpc64le-linux libgfortran doesn't use __*ieee128 APIs
I've just tried to build libgfortran on an old glibc system
(gcc112.fsffrance.org) and unfortunately we still have work to do:
[jakub@gcc2-power8 obj38]$ LD_PRELOAD=/home/jakub/gcc/obj38/powerpc64le-unknown-linux-gnu/libgfortran/.libs/libgfortran.so.5.0.0 /bin/true
[jakub@gcc2-power8 obj38]$ LD_BIND_NOW=1 LD_PRELOAD=/home/jakub/gcc/obj38/powerpc64le-unknown-linux-gnu/libgfortran/.libs/libgfortran.so.5.0.0 /bin/true
/bin/true: symbol lookup error: /home/jakub/gcc/obj38/powerpc64le-unknown-linux-gnu/libgfortran/.libs/libgfortran.so.5.0.0: undefined symbol: __atan2ieee128
While we do use some libquadmath APIs:
readelf -Wr /home/jakub/gcc/obj38/powerpc64le-unknown-linux-gnu/libgfortran/.libs/libgfortran.so.5.0.0 | grep QUADMATH
0000000000251268 000005e400000026 R_PPC64_ADDR64
0000000000000000 quadmath_snprintf@QUADMATH_1.0 + 0
0000000000251270 0000030600000026 R_PPC64_ADDR64
0000000000000000 strtoflt128@QUADMATH_1.0 + 0
00000000002502e0 0000011600000015 R_PPC64_JMP_SLOT
0000000000000000 ynq@QUADMATH_1.0 + 0
0000000000250390 0000016000000015 R_PPC64_JMP_SLOT
0000000000000000 sqrtq@QUADMATH_1.0 + 0
0000000000250508 000001fa00000015 R_PPC64_JMP_SLOT
0000000000000000 fmaq@QUADMATH_1.0 + 0
0000000000250530 0000021200000015 R_PPC64_JMP_SLOT
0000000000000000 fabsq@QUADMATH_1.0 + 0
0000000000250760 0000030600000015 R_PPC64_JMP_SLOT
0000000000000000 strtoflt128@QUADMATH_1.0 + 0
0000000000250990 000003df00000015 R_PPC64_JMP_SLOT
0000000000000000 cosq@QUADMATH_1.0 + 0
00000000002509f0 0000040a00000015 R_PPC64_JMP_SLOT
0000000000000000 expq@QUADMATH_1.0 + 0
0000000000250a88 0000045100000015 R_PPC64_JMP_SLOT
0000000000000000 erfcq@QUADMATH_1.0 + 0
0000000000250a98 0000045e00000015 R_PPC64_JMP_SLOT
0000000000000000 jnq@QUADMATH_1.0 + 0
0000000000250ac8 0000047e00000015 R_PPC64_JMP_SLOT
0000000000000000 sinq@QUADMATH_1.0 + 0
0000000000250e38 000005db00000015 R_PPC64_JMP_SLOT
0000000000000000 fmodq@QUADMATH_1.0 + 0
0000000000250e48 000005e000000015 R_PPC64_JMP_SLOT
0000000000000000 tanq@QUADMATH_1.0 + 0
0000000000250e58 000005e400000015 R_PPC64_JMP_SLOT
0000000000000000 quadmath_snprintf@QUADMATH_1.0 + 0
0000000000250f20 0000062900000015 R_PPC64_JMP_SLOT
0000000000000000 copysignq@QUADMATH_1.0 + 0
we don't do it consistently:
readelf -Wr /home/jakub/gcc/obj38/powerpc64le-unknown-linux-gnu/libgfortran/.libs/libgfortran.so.5.0.0 | grep ieee128
0000000000250310 0000012800000015 R_PPC64_JMP_SLOT
0000000000000000 __atan2ieee128 + 0
0000000000250340 0000014200000015 R_PPC64_JMP_SLOT
0000000000000000 __clogieee128 + 0
0000000000250438 000001a300000015 R_PPC64_JMP_SLOT
0000000000000000 __acoshieee128 + 0
00000000002504b8 000001cc00000015 R_PPC64_JMP_SLOT
0000000000000000 __csinieee128 + 0
0000000000250500 000001f300000015 R_PPC64_JMP_SLOT
0000000000000000 __sinhieee128 + 0
0000000000250570 0000022a00000015 R_PPC64_JMP_SLOT
0000000000000000 __asinieee128 + 0
0000000000250580 0000022d00000015 R_PPC64_JMP_SLOT
0000000000000000 __roundieee128 + 0
00000000002505a0 0000023e00000015 R_PPC64_JMP_SLOT
0000000000000000 __logieee128 + 0
00000000002505c8 0000024900000015 R_PPC64_JMP_SLOT
0000000000000000 __tanieee128 + 0
0000000000250630 0000027500000015 R_PPC64_JMP_SLOT
0000000000000000 __ccosieee128 + 0
0000000000250670 0000028a00000015 R_PPC64_JMP_SLOT
0000000000000000 __log10ieee128 + 0
00000000002506c8 000002bd00000015 R_PPC64_JMP_SLOT
0000000000000000 __cexpieee128 + 0
00000000002506d8 000002c800000015 R_PPC64_JMP_SLOT
0000000000000000 __coshieee128 + 0
00000000002509b0 000003ef00000015 R_PPC64_JMP_SLOT
0000000000000000 __truncieee128 + 0
0000000000250af8 000004a600000015 R_PPC64_JMP_SLOT
0000000000000000 __expieee128 + 0
0000000000250b50 000004c600000015 R_PPC64_JMP_SLOT
0000000000000000 __fmodieee128 + 0
0000000000250bb0 000004e700000015 R_PPC64_JMP_SLOT
0000000000000000 __tanhieee128 + 0
0000000000250c38 0000051300000015 R_PPC64_JMP_SLOT
0000000000000000 __acosieee128 + 0
0000000000250ce0 0000055400000015 R_PPC64_JMP_SLOT
0000000000000000 __sinieee128 + 0
0000000000250d60 0000057e00000015 R_PPC64_JMP_SLOT
0000000000000000 __atanieee128 + 0
0000000000250dd8 000005b100000015 R_PPC64_JMP_SLOT
0000000000000000 __sqrtieee128 + 0
0000000000250e98 0000060200000015 R_PPC64_JMP_SLOT
0000000000000000 __cosieee128 + 0
0000000000250eb0 0000060a00000015 R_PPC64_JMP_SLOT
0000000000000000 __atanhieee128 + 0
0000000000250ef0 0000062000000015 R_PPC64_JMP_SLOT
0000000000000000 __asinhieee128 + 0
0000000000250fd8 0000067f00000015 R_PPC64_JMP_SLOT
0000000000000000 __csqrtieee128 + 0
0000000000251038 000006ad00000015 R_PPC64_JMP_SLOT
0000000000000000 __cabsieee128 + 0
All these should for POWER_IEEE128 use atan2q@QUADMATH_1.0 etc.
It seems all these come from f951 compiled sources.
For user code, I think the agreement was if you want to use successfully
-mabi=ieeelongdouble, you need glibc 2.32 or later, which is why the Fortran
FE doesn't conditionalize on whether glibc 2.32 is available or not and just
emits __WHATEVERieee128 entrypoints.
But for Fortran compiled sources in libgfortran, we need to use
__WHATEVERieee128 only if glibc 2.32 or later and WHATEVERq (from
libquadmath) otherwise.
The following patch implements that, adds -fbuilding-libgfortran option
similar to e.g. -fbuilding-libgcc used when building libgcc and if
that option is set and the TARGET_GLIBC_{MAJOR,MINOR} macros indicate
no glibc or glibc older than 2.32, it will use the libquadmath APIs
rather than glibc 2.32 APIs.
2022-01-07 Jakub Jelinek <jakub@redhat.com>
gcc/fortran/
* trans-types.c (gfc_init_kinds): When setting abi_kind to 17, if not
targetting glibc 2.32 or later and -fbuilding-libgfortran, set
gfc_real16_is_float128 and c_float128 in gfc_real_kinds.
(gfc_build_real_type): Don't set c_long_double if c_float128 is
already set.
* trans-intrinsic.c (builtin_decl_for_precision): Don't use
long_double_built_in if gfc_real16_is_float128 and
long_double_type_node == gfc_float128_type_node.
* lang.opt (fbuilding-libgfortran): New undocumented option.
libgfortran/
* Makefile.am (AM_FCFLAGS): Add -fbuilding-libgfortran after
-fallow-leading-underscore.
* Makefile.in: Regenerated.
Jakub Jelinek [Fri, 7 Jan 2022 17:42:46 +0000 (18:42 +0100)]
libgfortran: Avoid using libquadmath APIs on powerpc64le on glibc 2.32+
On a glibc 2.32+ build, we still use some libquadmath APIs
when we shouldn't:
readelf -Wr /home/jakub/gcc/obj/powerpc64le-unknown-linux-gnu/libgfortran/.libs/libgfortran.so.5 | grep QUADMATH
00000000002502c8 0000002600000015 R_PPC64_JMP_SLOT
0000000000000000 fmaq@QUADMATH_1.0 + 0
00000000002505f8 0000006700000015 R_PPC64_JMP_SLOT
0000000000000000 tanq@QUADMATH_1.0 + 0
0000000000250930 0000009b00000015 R_PPC64_JMP_SLOT
0000000000000000 fabsq@QUADMATH_1.0 + 0
0000000000250940 0000009d00000015 R_PPC64_JMP_SLOT
0000000000000000 sinq@QUADMATH_1.0 + 0
0000000000250c98 000000cf00000015 R_PPC64_JMP_SLOT
0000000000000000 copysignq@QUADMATH_1.0 + 0
0000000000251038 0000010700000015 R_PPC64_JMP_SLOT
0000000000000000 cosq@QUADMATH_1.0 + 0
0000000000251068 0000010a00000015 R_PPC64_JMP_SLOT
0000000000000000 fmodq@QUADMATH_1.0 + 0
These should use __fmaieee128, __tanieee128 etc. instead.
2022-01-07 Jakub Jelinek <jakub@redhat.com>
* libgfortran.h (__copysignieee128, __fmaieee128, __fmodieee128):
Declare.
* intrinsics/trigd.c (COPYSIGN, FMOD, FABS, FMA, SIN, COS, TAN): If
POWER_IEEE128 is defined, define these for kind 17 include.
* intrinsics/trigd_lib.inc (COPYSIGN, FMOD, FABS, FMA, SIN, COS, TAN):
Don't define if COPYSIGN is already defined.
Michael Meissner [Thu, 6 Jan 2022 04:58:52 +0000 (23:58 -0500)]
Allow other languages to change long double format.
With Fortran adding support for changing the long double format, this
patch removes the code that only allowed C/C++ to change the long double
format for GLIBC 2.32 and later without a warning.
gcc/
2022-01-05 Michael Meissner <meissner@the-meissners.org>
* config/rs6000/rs6000.c (rs6000_option_override_internal): Remove
checks for only C/C++ front ends before allowing the long double
format to change without a warning.
Jakub Jelinek [Tue, 4 Jan 2022 21:36:57 +0000 (22:36 +0100)]
testsuite: Fix pr47614.f test
This test FAILs because
f951: Error: '-mabi=ieeelongdouble' requires full ISA 2.06 support
compiler exited with status 1
FAIL: gfortran.dg/pr47614.f -O0 (test for excess errors)
As powerpc64le* only supports -mcpu=power8 and newer, I think we shouldn't
be testing with that option.
2022-01-04 Jakub Jelinek <jakub@redhat.com>
* gfortran.dg/pr47614.f: Don't use -mcpu=power4 for
powerpc64le*-*-linux*.
Jakub Jelinek [Tue, 4 Jan 2022 20:32:05 +0000 (21:32 +0100)]
fortran, libgfortran: Add remaining missing *_r17 symbols
Following patch adds remaining missing *_r17 entrypoints, so that
we have 91 *_r16 and 91 *_r17 entrypoints (and 24 *_c16 and 24 *_c17).
This fixes:
FAIL: gfortran.dg/dec_math.f90 -O0 execution test
FAIL: gfortran.dg/dec_math.f90 -O1 execution test
FAIL: gfortran.dg/dec_math.f90 -O2 execution test
FAIL: gfortran.dg/dec_math.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test
FAIL: gfortran.dg/dec_math.f90 -O3 -g execution test
FAIL: gfortran.dg/dec_math.f90 -Os execution test
FAIL: gfortran.dg/ieee/dec_math_1.f90 -O0 execution test
FAIL: gfortran.dg/ieee/dec_math_1.f90 -O1 execution test
FAIL: gfortran.dg/ieee/dec_math_1.f90 -O2 execution test
FAIL: gfortran.dg/ieee/dec_math_1.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test
FAIL: gfortran.dg/ieee/dec_math_1.f90 -O3 -g execution test
FAIL: gfortran.dg/ieee/dec_math_1.f90 -Os execution test
2022-01-04 Jakub Jelinek <jakub@redhat.com>
gcc/fortran/
* trans-intrinsic.c (gfc_get_intrinsic_lib_fndecl): Use
gfc_type_abi_kind.
libgfortran/
* libgfortran.h (GFC_REAL_17_INFINITY, GFC_REAL_17_QUIET_NAN): Define.
(__erfcieee128): Declare.
* intrinsics/trigd.c (_gfortran_sind_r17, _gfortran_cosd_r17,
_gfortran_tand_r17): Define for HAVE_GFC_REAL_17.
* intrinsics/random.c (random_r17, arandom_r17, rnumber_17): Define.
* intrinsics/erfc_scaled.c (ERFC_SCALED): Define.
(erfc_scaled_r16): Use ERFC_SCALED macro.
(erfc_scaled_r17): Define.
Jakub Jelinek [Tue, 4 Jan 2022 14:55:27 +0000 (15:55 +0100)]
fortran, libgfortran: Assorted -mabi=ieeelongdouble I/O fixes
Another patch, this fixes:
FAIL: gfortran.dg/intrinsic_spread_2.f90 -O0 execution test
FAIL: gfortran.dg/intrinsic_spread_2.f90 -O1 execution test
FAIL: gfortran.dg/intrinsic_spread_2.f90 -O2 execution test
FAIL: gfortran.dg/intrinsic_spread_2.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test
FAIL: gfortran.dg/intrinsic_spread_2.f90 -O3 -g execution test
FAIL: gfortran.dg/intrinsic_spread_2.f90 -Os execution test
FAIL: gfortran.dg/intrinsic_unpack_2.f90 -O0 execution test
FAIL: gfortran.dg/intrinsic_unpack_2.f90 -O1 execution test
FAIL: gfortran.dg/intrinsic_unpack_2.f90 -O2 execution test
FAIL: gfortran.dg/intrinsic_unpack_2.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test
FAIL: gfortran.dg/intrinsic_unpack_2.f90 -O3 -g execution test
FAIL: gfortran.dg/intrinsic_unpack_2.f90 -Os execution test
FAIL: gfortran.dg/large_real_kind_form_io_1.f90 -O0 execution test
FAIL: gfortran.dg/large_real_kind_form_io_1.f90 -O1 execution test
FAIL: gfortran.dg/large_real_kind_form_io_1.f90 -O2 execution test
FAIL: gfortran.dg/large_real_kind_form_io_1.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test
FAIL: gfortran.dg/large_real_kind_form_io_1.f90 -O3 -g execution test
FAIL: gfortran.dg/large_real_kind_form_io_1.f90 -Os execution test
FAIL: gfortran.dg/quad_2.f90 -O0 execution test
FAIL: gfortran.dg/quad_2.f90 -O1 execution test
FAIL: gfortran.dg/quad_2.f90 -O2 execution test
FAIL: gfortran.dg/quad_2.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test
FAIL: gfortran.dg/quad_2.f90 -O3 -g execution test
FAIL: gfortran.dg/quad_2.f90 -Os execution test
2022-01-04 Jakub Jelinek <jakub@redhat.com>
gcc/fortran/
* trans-io.c (transfer_array_desc): Pass abi kind instead of kind
to libgfortran.
libgfortran/
* io/read.c (convert_real): Add missing break; for the
HAVE_GFC_REAL_17 case.
Jakub Jelinek [Tue, 4 Jan 2022 14:54:22 +0000 (15:54 +0100)]
libgfortran: -mabi=ieeelongdouble I/O fix
The following patch fixes:
FAIL: gfortran.dg/fmt_en.f90 -O0 output pattern test
FAIL: gfortran.dg/fmt_en.f90 -O1 output pattern test
FAIL: gfortran.dg/fmt_en.f90 -O2 output pattern test
FAIL: gfortran.dg/fmt_en.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions output pattern test
FAIL: gfortran.dg/fmt_en.f90 -O3 -g output pattern test
FAIL: gfortran.dg/fmt_en.f90 -Os output pattern test
FAIL: gfortran.dg/fmt_en_rd.f90 -O0 output pattern test
FAIL: gfortran.dg/fmt_en_rd.f90 -O1 output pattern test
FAIL: gfortran.dg/fmt_en_rd.f90 -O2 output pattern test
FAIL: gfortran.dg/fmt_en_rd.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions output pattern test
FAIL: gfortran.dg/fmt_en_rd.f90 -O3 -g output pattern test
FAIL: gfortran.dg/fmt_en_rd.f90 -Os output pattern test
FAIL: gfortran.dg/fmt_en_rn.f90 -O0 output pattern test
FAIL: gfortran.dg/fmt_en_rn.f90 -O1 output pattern test
FAIL: gfortran.dg/fmt_en_rn.f90 -O2 output pattern test
FAIL: gfortran.dg/fmt_en_rn.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions output pattern test
FAIL: gfortran.dg/fmt_en_rn.f90 -O3 -g output pattern test
FAIL: gfortran.dg/fmt_en_rn.f90 -Os output pattern test
FAIL: gfortran.dg/fmt_en_ru.f90 -O0 output pattern test
FAIL: gfortran.dg/fmt_en_ru.f90 -O1 output pattern test
FAIL: gfortran.dg/fmt_en_ru.f90 -O2 output pattern test
FAIL: gfortran.dg/fmt_en_ru.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions output pattern test
FAIL: gfortran.dg/fmt_en_ru.f90 -O3 -g output pattern test
FAIL: gfortran.dg/fmt_en_ru.f90 -Os output pattern test
FAIL: gfortran.dg/fmt_en_rz.f90 -O0 output pattern test
FAIL: gfortran.dg/fmt_en_rz.f90 -O1 output pattern test
FAIL: gfortran.dg/fmt_en_rz.f90 -O2 output pattern test
FAIL: gfortran.dg/fmt_en_rz.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions output pattern test
FAIL: gfortran.dg/fmt_en_rz.f90 -O3 -g output pattern test
FAIL: gfortran.dg/fmt_en_rz.f90 -Os output pattern test
FAIL: gfortran.dg/fmt_g0_7.f08 -O0 execution test
FAIL: gfortran.dg/fmt_g0_7.f08 -O1 execution test
FAIL: gfortran.dg/fmt_g0_7.f08 -O2 execution test
FAIL: gfortran.dg/fmt_g0_7.f08 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test
FAIL: gfortran.dg/fmt_g0_7.f08 -O3 -g execution test
FAIL: gfortran.dg/fmt_g0_7.f08 -Os execution test
FAIL: gfortran.dg/fmt_pf.f90 -O0 output pattern test
FAIL: gfortran.dg/fmt_pf.f90 -O1 output pattern test
FAIL: gfortran.dg/fmt_pf.f90 -O2 output pattern test
FAIL: gfortran.dg/fmt_pf.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions output pattern test
FAIL: gfortran.dg/fmt_pf.f90 -O3 -g output pattern test
FAIL: gfortran.dg/fmt_pf.f90 -Os output pattern test
FAIL: gfortran.dg/large_real_kind_1.f90 -O0 execution test
FAIL: gfortran.dg/large_real_kind_1.f90 -O1 execution test
FAIL: gfortran.dg/large_real_kind_1.f90 -O2 execution test
FAIL: gfortran.dg/large_real_kind_1.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test
FAIL: gfortran.dg/large_real_kind_1.f90 -O3 -g execution test
FAIL: gfortran.dg/large_real_kind_1.f90 -Os execution test
2022-01-04 Jakub Jelinek <jakub@redhat.com>
* io/write_float.def (CALCULATE_EXP): If HAVE_GFC_REAL_17, also use
CALCULATE_EXP(17).
(determine_en_precision): Use 17 instead of 16 as first EN_PREC
argument for kind 17.
(get_float_string): Use 17 instead of 16 as first FORMAT_FLOAT
argument for kind 17.
Jakub Jelinek [Tue, 4 Jan 2022 09:37:48 +0000 (10:37 +0100)]
fortran, libgfortran: -mabi=ieeelongdouble I/O
The following patch adds the compiler and library side of -mabi=ieeelongdouble
I/O support.
2022-01-04 Jakub Jelinek <jakub@redhat.com>
gcc/fortran/
* trans-io.c (transfer_namelist_element): Use gfc_type_abi_kind,
formatting fixes.
(transfer_expr): Use gfc_type_abi_kind, use *REAL128* APIs even
for abi_kind == 17.
libgfortran/
* libgfortran.h (__acoshieee128, __acosieee128, __asinhieee128,
__asinieee128, __atan2ieee128, __atanhieee128, __atanieee128,
__coshieee128, __cosieee128, __erfieee128, __expieee128,
__fabsieee128, __jnieee128, __log10ieee128, __logieee128,
__powieee128, __sinhieee128, __sinieee128, __sqrtieee128,
__tanhieee128, __tanieee128, __ynieee128): Formatting fixes.
(__strtoieee128, __snprintfieee128): Declare.
* io/io.h (default_width_for_float, default_precision_for_float):
Handle kind == 17.
* io/size_from_kind.c (size_from_real_kind, size_from_complex_kind):
Likewise.
* io/read.c (set_integer, si_max, convert_real, convert_infnan,
read_f): Likewise.
* io/write.c (extract_uint, size_from_kind, set_fnode_default):
Likewise.
* io/write_float.def (DTOA2Q, FDTOA2Q): Define for HAVE_GFC_REAL_17.
(determine_en_precision, get_float_string): Handle kind == 17.
* io/transfer128.c: Use also for HAVE_GFC_REAL_17, but don't drag in
libquadmath if POWER_IEEE128.
* Makefile.am (comma, PREPROCESS): New variables.
(gfortran.ver): New goal.
(version_arg, version_dep): Use gfortran.ver instead of
$(srcdir)/gfortran.map.
(gfortran.map-sun): Depend on and use gfortran.ver instead of
$(srcdir)/gfortran.map.
(BUILT_SOURCES): Add $(version_dep).
* Makefile.in: Regenerated.
* gfortran.map (GFORTRAN_8): Don't export
_gfortran_transfer_complex128, _gfortran_transfer_complex128_write,
_gfortran_transfer_real128 and _gfortran_transfer_real128_write if
HAVE_GFC_REAL_17 is defined.
(GFORTRAN_12): Export those here instead.
Jakub Jelinek [Mon, 3 Jan 2022 16:16:26 +0000 (17:16 +0100)]
libquadmath: Use -mno-gnu-attribute in libquadmath
Testing found that we also need libquadmath to be built with
-mno-gnu-attribute, otherwise -mabi=ieeelongdouble programs don't link.
2022-01-03 Jakub Jelinek <jakub@redhat.com>
* configure.ac: Set XCFLAGS to -mno-gnu-attribute on
powerpc64le*-linux*.
* configure: Regenerated.
Thomas Koenig [Mon, 3 Jan 2022 15:07:02 +0000 (16:07 +0100)]
Make sure the Fortran specifics have real(kind=16).
This brings the library to compile with all specific functions.
It also corrects the patsubst patterns so the right files
get the flags.
It was necessary to manually add -D__powerpc64__ because apparently
this is not set for Fortran.
libgfortran/ChangeLog:
* Makefile.am: Correct files for compilation flags. Add
-D__powerpc64__ for Fortran sources. Get kinds.inc from
grep of kinds.h and kinds-override.h.
* Makefile.in: Regenerate.
* config.h.in: Regenerate.
* configure: Regenerate.
* configure.ac: Add -mno-gnu-attribute to compile flags.
* generated/_abs_c17.F90: Regenerate.
* generated/_abs_r17.F90: Regenerate.
* generated/_acos_r17.F90: Regenerate.
* generated/_acosh_r17.F90: Regenerate.
* generated/_aimag_c17.F90: Regenerate.
* generated/_aint_r17.F90: Regenerate.
* generated/_anint_r17.F90: Regenerate.
* generated/_asin_r17.F90: Regenerate.
* generated/_asinh_r17.F90: Regenerate.
* generated/_atan2_r17.F90: Regenerate.
* generated/_atan_r17.F90: Regenerate.
* generated/_atanh_r17.F90: Regenerate.
* generated/_conjg_c17.F90: Regenerate.
* generated/_cos_c17.F90: Regenerate.
* generated/_cos_r17.F90: Regenerate.
* generated/_cosh_r17.F90: Regenerate.
* generated/_dim_r17.F90: Regenerate.
* generated/_exp_c17.F90: Regenerate.
* generated/_exp_r17.F90: Regenerate.
* generated/_log10_r17.F90: Regenerate.
* generated/_log_c17.F90: Regenerate.
* generated/_log_r17.F90: Regenerate.
* generated/_mod_r17.F90: Regenerate.
* generated/_sign_r17.F90: Regenerate.
* generated/_sin_c17.F90: Regenerate.
* generated/_sin_r17.F90: Regenerate.
* generated/_sinh_r17.F90: Regenerate.
* generated/_sqrt_c17.F90: Regenerate.
* generated/_sqrt_r17.F90: Regenerate.
* generated/_tan_r17.F90: Regenerate.
* generated/_tanh_r17.F90: Regenerate.
* kinds-override.h: Adjust to trunk.
Change condition to single line so it can be grepped.
* m4/specific.m4: Make sure that real=kind16 is used
for _r17.F90 and _c17.F90 files.
* m4/specific2.m4: Likewise.
Jakub Jelinek [Fri, 31 Dec 2021 15:59:38 +0000 (16:59 +0100)]
gfortran: Introduce gfc_type_abi_kind
The following patch detects the powerpc64le-linux kind == 16 cases
and for the -mabi=ieeelongdouble case (no matter whether it is the
configured in default or just option used on the command line) uses
_r17 or _c17 instead of _r16 or _c17 in the library API names.
From what I can see, e.g. calls to sin on real(kind = 16) works fine
with or without this patch (we call __builtin_sinl and the backend
uses rs6000_mangle_decl_assembler_name which ensures __sinieee128
is called).
What is clearly still broken is IO, where for
real(kind=16) a
a = 1.0
print *, a
end
we call
_gfortran_transfer_real_write (&dt_parm.0, &a, 16);
for both -mabi=ibmlongdouble and -mabi=ieeelongdouble
I don't remember what was the agreement, do we want
_gfortran_transfer_real_write (&dt_parm.0, &a, 17);
for the ieeelongdouble case, or some new entrypoint for
the abi_kind == 17 real/complex IO?
Also, what about kind stored in array descriptors? Shall we use
there the abi_kind or kind?
I guess at least before the IO case is solved there is no point
in checking the testsuite, too many things will be majorly broken...
2021-12-31 Jakub Jelinek <jakub@redhat.com>
* gfortran.h (gfc_real_info): Add abi_kind member.
(gfc_type_abi_kind): Declare.
* trans-types.c (gfc_init_kinds): Initialize abi_kind.
* intrinsic.c (gfc_type_abi_kind): New function.
(conv_name): Use it.
* iresolve.c (resolve_transformational, gfc_resolve_abs,
gfc_resolve_char_achar, gfc_resolve_acos, gfc_resolve_acosh,
gfc_resolve_aimag, gfc_resolve_and, gfc_resolve_aint, gfc_resolve_all,
gfc_resolve_anint, gfc_resolve_any, gfc_resolve_asin,
gfc_resolve_asinh, gfc_resolve_atan, gfc_resolve_atanh,
gfc_resolve_atan2, gfc_resolve_bessel_n2, gfc_resolve_ceiling,
gfc_resolve_cmplx, gfc_resolve_complex, gfc_resolve_cos,
gfc_resolve_cosh, gfc_resolve_count, gfc_resolve_dble,
gfc_resolve_dim, gfc_resolve_dot_product, gfc_resolve_dprod,
gfc_resolve_exp, gfc_resolve_floor, gfc_resolve_hypot,
gfc_resolve_int, gfc_resolve_int2, gfc_resolve_int8, gfc_resolve_long,
gfc_resolve_log, gfc_resolve_log10, gfc_resolve_logical,
gfc_resolve_matmul, gfc_resolve_minmax, gfc_resolve_maxloc,
gfc_resolve_findloc, gfc_resolve_maxval, gfc_resolve_merge,
gfc_resolve_minloc, gfc_resolve_minval, gfc_resolve_mod,
gfc_resolve_modulo, gfc_resolve_nearest, gfc_resolve_or,
gfc_resolve_real, gfc_resolve_realpart, gfc_resolve_reshape,
gfc_resolve_sign, gfc_resolve_sin, gfc_resolve_sinh, gfc_resolve_sqrt,
gfc_resolve_tan, gfc_resolve_tanh, gfc_resolve_transpose,
gfc_resolve_trigd, gfc_resolve_xor, gfc_resolve_random_number):
Likewise.
* trans-decl.c (gfc_build_intrinsic_function_decls): Likewise.
Jakub Jelinek [Fri, 31 Dec 2021 15:58:32 +0000 (16:58 +0100)]
libgfortran: Small progress on the library side
The following patch quiets
../../../libgfortran/generated/in_pack_r17.c:35:1: warning: no previous prototype for ‘internal_pack_r17’ [-Wmissing-prototypes]
../../../libgfortran/generated/in_pack_c17.c:35:1: warning: no previous prototype for ‘internal_pack_c17’ [-Wmissing-prototypes]
../../../libgfortran/generated/in_unpack_r17.c:33:1: warning: no previous prototype for ‘internal_unpack_r17’ [-Wmissing-prototypes]
../../../libgfortran/generated/in_unpack_c17.c:33:1: warning: no previous prototype for ‘internal_unpack_c17’ [-Wmissing-prototypes]
../../../libgfortran/generated/pack_r17.c:73:1: warning: no previous prototype for ‘pack_r17’ [-Wmissing-prototypes]
../../../libgfortran/generated/pack_c17.c:73:1: warning: no previous prototype for ‘pack_c17’ [-Wmissing-prototypes]
../../../libgfortran/generated/unpack_r17.c:34:1: warning: no previous prototype for ‘unpack0_r17’ [-Wmissing-prototypes]
../../../libgfortran/generated/unpack_r17.c:178:1: warning: no previous prototype for ‘unpack1_r17’ [-Wmissing-prototypes]
../../../libgfortran/generated/unpack_c17.c:34:1: warning: no previous prototype for ‘unpack0_c17’ [-Wmissing-prototypes]
../../../libgfortran/generated/unpack_c17.c:178:1: warning: no previous prototype for ‘unpack1_c17’ [-Wmissing-prototypes]
../../../libgfortran/generated/spread_r17.c:34:1: warning: no previous prototype for ‘spread_r17’ [-Wmissing-prototypes]
../../../libgfortran/generated/spread_r17.c:230:1: warning: no previous prototype for ‘spread_scalar_r17’ [-Wmissing-prototypes]
../../../libgfortran/generated/spread_c17.c:34:1: warning: no previous prototype for ‘spread_c17’ [-Wmissing-prototypes]
../../../libgfortran/generated/spread_c17.c:230:1: warning: no previous prototype for ‘spread_scalar_c17’ [-Wmissing-prototypes]
../../../libgfortran/generated/cshift0_r17.c:33:1: warning: no previous prototype for ‘cshift0_r17’ [-Wmissing-prototypes]
../../../libgfortran/generated/cshift0_c17.c:33:1: warning: no previous prototype for ‘cshift0_c17’ [-Wmissing-prototypes]
../../../libgfortran/generated/cshift1_4_r17.c:32:1: warning: no previous prototype for ‘cshift1_4_r17’ [-Wmissing-prototypes]
../../../libgfortran/generated/cshift1_4_c17.c:32:1: warning: no previous prototype for ‘cshift1_4_c17’ [-Wmissing-prototypes]
../../../libgfortran/generated/cshift1_8_r17.c:32:1: warning: no previous prototype for ‘cshift1_8_r17’ [-Wmissing-prototypes]
../../../libgfortran/generated/cshift1_8_c17.c:32:1: warning: no previous prototype for ‘cshift1_8_c17’ [-Wmissing-prototypes]
../../../libgfortran/generated/cshift1_16_r17.c:32:1: warning: no previous prototype for ‘cshift1_16_r17’ [-Wmissing-prototypes]
../../../libgfortran/generated/cshift1_16_c17.c:32:1: warning: no previous prototype for ‘cshift1_16_c17’ [-Wmissing-prototypes]
warnings during libgfortran build and exports the new entrypoints.
Note, not all of them, clearly e.g. there are fewer *_r17* entrypoints than
*_r16* entrypoints, so more work is needed.
2021-12-31 Jakub Jelinek <jakub@redhat.com>
* libgfortran.h (internal_pack_r17, internal_pack_c17,
internal_unpack_r17, internal_unpack_c17, pack_r17, pack_c17,
unpack0_r17, unpack0_c17, unpack1_r17, unpack1_c17, spread_r17,
spread_c17, spread_scalar_r17, spread_scalar_c17, cshift0_r17,
cshift0_c17, cshift1_4_r17, cshift1_8_r17, cshift1_16_r17,
cshift1_4_c17, cshift1_8_c17, cshift1_16_c17): Declare.
* gfortran.map (GFORTRAN_12): Export *_r17 and *_c17.
Thomas Koenig [Sun, 12 Dec 2021 11:59:18 +0000 (12:59 +0100)]
Generate config.h macros for IEEE128 math functions.
libgfortran/ChangeLog:
* acinclude.m4 (LIBGFOR_CHECK_MATH_IEEE128): New macro.
* configure.ac: Use it.
* config.h.in: Regenerate.
* configure: Regenerate.
Thomas Koenig [Sat, 11 Dec 2021 14:29:51 +0000 (15:29 +0100)]
Fix pattern substition for _r17 and _c17.
libgfortran/ChangeLog:
* Makefile.am: Fix pattern substitution for _r17 and _c17.
* Makefile.in: Regenerate.
Thomas Koenig [Mon, 6 Dec 2021 18:57:32 +0000 (19:57 +0100)]
Prepare library for REAL(KIND=17).
This prepares the library side for REAL(KIND=17). It is
not yet tested, but at least compiles cleanly on POWER 9
and x86_64.
2021-10-19 Thomas Koenig <tkoenig@gcc.gnu.org>
* Makefile.am: Add _r17 and _c17 files. Build them
with -mabi=ieeelongdouble on POWER.
* Makefile.in: Regenerate.
* configure: Regenerate.
* configure.ac: New flag HAVE_REAL_17.
* kinds-override.h: (HAVE_GFC_REAL_17): New macro.
(HAVE_GFC_COMPLEX_17): New macro.
(GFC_REAL_17_HUGE): New macro.
(GFC_REAL_17_LITERAL_SUFFIX): New macro.
(GFC_REAL_17_LITERAL): New macro.
(GFC_REAL_17_DIGITS): New macro.
(GFC_REAL_17_RADIX): New macro.
* libgfortran.h (POWER_IEEE128): New macro.
(gfc_array_r17): Typedef.
(GFC_DTYPE_REAL_17): New macro.
(GFC_DTYPE_COMPLEX_17): New macro.
(__acoshieee128): Prototype.
(__acosieee128): Prototype.
(__asinhieee128): Prototype.
(__asinieee128): Prototype.
(__atan2ieee128): Prototype.
(__atanhieee128): Prototype.
(__atanieee128): Prototype.
(__coshieee128): Prototype.
(__cosieee128): Prototype.
(__erfieee128): Prototype.
(__expieee128): Prototype.
(__fabsieee128): Prototype.
(__jnieee128): Prototype.
(__log10ieee128): Prototype.
(__logieee128): Prototype.
(__powieee128): Prototype.
(__sinhieee128): Prototype.
(__sinieee128): Prototype.
(__sqrtieee128): Prototype.
(__tanhieee128): Prototype.
(__tanieee128): Prototype.
(__ynieee128): Prototype.
* m4/mtype.m4: Make a bit more readable. Add KIND=17.
* generated/_abs_c17.F90: New file.
* generated/_abs_r17.F90: New file.
* generated/_acos_r17.F90: New file.
* generated/_acosh_r17.F90: New file.
* generated/_aimag_c17.F90: New file.
* generated/_aint_r17.F90: New file.
* generated/_anint_r17.F90: New file.
* generated/_asin_r17.F90: New file.
* generated/_asinh_r17.F90: New file.
* generated/_atan2_r17.F90: New file.
* generated/_atan_r17.F90: New file.
* generated/_atanh_r17.F90: New file.
* generated/_conjg_c17.F90: New file.
* generated/_cos_c17.F90: New file.
* generated/_cos_r17.F90: New file.
* generated/_cosh_r17.F90: New file.
* generated/_dim_r17.F90: New file.
* generated/_exp_c17.F90: New file.
* generated/_exp_r17.F90: New file.
* generated/_log10_r17.F90: New file.
* generated/_log_c17.F90: New file.
* generated/_log_r17.F90: New file.
* generated/_mod_r17.F90: New file.
* generated/_sign_r17.F90: New file.
* generated/_sin_c17.F90: New file.
* generated/_sin_r17.F90: New file.
* generated/_sinh_r17.F90: New file.
* generated/_sqrt_c17.F90: New file.
* generated/_sqrt_r17.F90: New file.
* generated/_tan_r17.F90: New file.
* generated/_tanh_r17.F90: New file.
* generated/bessel_r17.c: New file.
* generated/cshift0_c17.c: New file.
* generated/cshift0_r17.c: New file.
* generated/cshift1_16_c17.c: New file.
* generated/cshift1_16_r17.c: New file.
* generated/cshift1_4_c17.c: New file.
* generated/cshift1_4_r17.c: New file.
* generated/cshift1_8_c17.c: New file.
* generated/cshift1_8_r17.c: New file.
* generated/findloc0_c17.c: New file.
* generated/findloc0_r17.c: New file.
* generated/findloc1_c17.c: New file.
* generated/findloc1_r17.c: New file.
* generated/in_pack_c17.c: New file.
* generated/in_pack_r17.c: New file.
* generated/in_unpack_c17.c: New file.
* generated/in_unpack_r17.c: New file.
* generated/matmul_c17.c: New file.
* generated/matmul_r17.c: New file.
* generated/matmulavx128_c17.c: New file.
* generated/matmulavx128_r17.c: New file.
* generated/maxloc0_16_r17.c: New file.
* generated/maxloc0_4_r17.c: New file.
* generated/maxloc0_8_r17.c: New file.
* generated/maxloc1_16_r17.c: New file.
* generated/maxloc1_4_r17.c: New file.
* generated/maxloc1_8_r17.c: New file.
* generated/maxval_r17.c: New file.
* generated/minloc0_16_r17.c: New file.
* generated/minloc0_4_r17.c: New file.
* generated/minloc0_8_r17.c: New file.
* generated/minloc1_16_r17.c: New file.
* generated/minloc1_4_r17.c: New file.
* generated/minloc1_8_r17.c: New file.
* generated/minval_r17.c: New file.
* generated/norm2_r17.c: New file.
* generated/pack_c17.c: New file.
* generated/pack_r17.c: New file.
* generated/pow_c17_i16.c: New file.
* generated/pow_c17_i4.c: New file.
* generated/pow_c17_i8.c: New file.
* generated/pow_r17_i16.c: New file.
* generated/pow_r17_i4.c: New file.
* generated/pow_r17_i8.c: New file.
* generated/product_c17.c: New file.
* generated/product_r17.c: New file.
* generated/reshape_c17.c: New file.
* generated/reshape_r17.c: New file.
* generated/spread_c17.c: New file.
* generated/spread_r17.c: New file.
* generated/sum_c17.c: New file.
* generated/sum_r17.c: New file.
* generated/unpack_c17.c: New file.
* generated/unpack_r17.c: New file.
Richard Sandiford [Tue, 11 Jan 2022 19:24:59 +0000 (19:24 +0000)]
ira: Fix old-reload targets [PR103974]
The new IRA heuristics would need more work on old-reload targets,
since flattening needs to be able to undo the cost propagation.
It's doable, but hardly seems worth it.
This patch therefore makes all the new calls to
ira_subloop_allocnos_can_differ_p return false if !ira_use_lra_p.
The color_pass code that predated the new function (and that was
the source of ira_subloop_allocnos_can_differ_p) continues to
behave as before.
It's a hack, but at least it has the advantage that the new parameter
would become obviously unused if reload and (!)ira_use_lra_p were
removed. The hack should therefore disappear alongside reload.
gcc/
PR rtl-optimization/103974
* ira-int.h (ira_subloop_allocnos_can_differ_p): Take an
extra argument, default true, that says whether old-reload
targets should be excluded.
* ira-color.c (color_pass): Pass false.
Jonathan Wakely [Tue, 11 Jan 2022 17:47:17 +0000 (17:47 +0000)]
libstdc++: Install <source_location> header for freestanding [PR103726]
This C++20 header is also supposed to be present for freestanding.
libstdc++-v3/ChangeLog:
PR libstdc++/103726
* include/Makefile.am: Install <source_location> for
freestanding.
* include/Makefile.in: Regenerate.
* include/std/version (__cpp_lib_source_location): Define for
freestanding.
Uros Bizjak [Tue, 11 Jan 2022 18:23:15 +0000 (19:23 +0100)]
i386: Introduce V2QImode vector cmove for -msse4.1 [PR103861]
This patch also moves V2HI and V4QImode vector conditional moves
to SSE4.1 targets. Vector cmoves are implemented with SSE logic functions
without -msse4.1, and they are hardly worthwile for narrow vector modes.
More important, we would like to keep vector logic functions for GPR
registers, and the current RTX description of 32-bit vector modes logic
insns does not include the necessary CC reg clobber. Solve these issues by
restricting vector cmove insns for these modes to -msse4.1, where logic
instructions are avoided, and pblend insn is used instead.
A follow-up patch will add clobbers and necessary splits to 32-bit
vector mode logic insns, and in a future patch, ix86_sse_movcc will be
improved to use expand_simple_{unop,binop} to emit logic insns, allowing
us to re-enable 16-bit and 32-bit narrow vector cmoves for -msse2.
2022-01-11 Uroš Bizjak <ubizjak@gmail.com>
gcc/ChangeLog:
PR target/103861
* config/i386/mmx.md (vcond<mode><mode>):
Use VI_16_32 mode iterator. Enable for TARGET_SSE4_1.
(vcondu<mode><mode>): Ditto.
(vcond_mask_<mode><mode>): Ditto.
(mmx_pblendvb_v8qi): Rename from mmx_pblendvb64.
(mmx_pblendvb_<mode>): Rename from mmx_pblendvb32.
Use VI_16_32 mode iterator.
* config/i386/i386-expand.c (ix86_expand_sse_movcc):
Update for rename. Handle V2QImode.
(expand_vec_perm_blend): Update for rename.
gcc/testsuite/ChangeLog:
PR target/103861
* g++.target/i386/pr100637-1b.C (dg-options):
Use -msse4 instead of -msse2.
* g++.target/i386/pr100637-1w.C (dg-options): Ditto.
* g++.target/i386/pr103861-1.C: New test.
* gcc.target/i386/pr100637-4b.c (dg-options):
Use -msse4 instead of -msse2.
* gcc.target/i386/pr103861-4.c: New test.
Jakub Jelinek [Tue, 11 Jan 2022 18:21:30 +0000 (19:21 +0100)]
c++: Fix ICEs with OBJ_TYPE_REF pretty printing [PR101597]
The following testcase ICEs, because middle-end uses the C++ FE pretty
printing code through langhooks in the diagnostics.
The FE expects OBJ_TYPE_REF_OBJECT's type to be useful (pointer to the
class type it is called on), but in the middle-end conversions between
pointer types are useless, so the actual type can be some random
unrelated pointer type (in the testcase void * pointer). The pretty
printing code then ICEs on it.
The following patch fixes that by sticking the original
OBJ_TYPE_REF_OBJECT's also as type of OBJ_TYPE_REF_TOKEN operand.
That one must be an INTEGER_CST, all the current uses of
OBJ_TYPE_REF_TOKEN just use tree_to_uhwi or tree_to_shwi on it,
and because it is constant, there is no risk of the middle-end propagating
into it some other pointer type. So, approach similar to how MEM_REF
treats its second operand or a couple of internal functions (e.g.
IFN_VA_ARG) some of its parameters.
2022-01-11 Jakub Jelinek <jakub@redhat.com>
PR c++/101597
gcc/
* tree.def (OBJ_TYPE_REF): Document type of OBJ_TYPE_REF_TOKEN.
gcc/cp/
* class.c (build_vfn_ref): Build OBJ_TYPE_REF with INTEGER_CST
OBJ_TYPE_REF_TOKEN with type equal to OBJ_TYPE_REF_OBJECT type.
* error.c (resolve_virtual_fun_from_obj_type_ref): Use type of
OBJ_TYPE_REF_TOKEN rather than type of OBJ_TYPE_REF_OBJECT as
obj_type.
gcc/objc/
* objc-act.c (objc_rewrite_function_call): Build OBJ_TYPE_REF
with INTEGER_CST OBJ_TYPE_REF_TOKEN with type equal to
OBJ_TYPE_REF_OBJECT type.
* objc-next-runtime-abi-01.c (build_objc_method_call): Likewise.
* objc-gnu-runtime-abi-01.c (build_objc_method_call): Likewise.
* objc-next-runtime-abi-02.c (build_v2_objc_method_fixup_call,
build_v2_build_objc_method_call): Likewise.
gcc/testsuite/
* g++.dg/opt/pr101597.C: New test.
Jakub Jelinek [Tue, 11 Jan 2022 18:11:51 +0000 (19:11 +0100)]
c-family: Fix up -W*conversion on bitwise &/|/^ [PR101537]
The following testcases emit a bogus -Wconversion warning. This is because
conversion_warning function doesn't handle BIT_*_EXPR (only unsafe_conversion_p
that is called during the default: case, and that one doesn't handle
SAVE_EXPRs added because the unsigned char & or | operands promoted to int
have side-effects and =| or =& is used.
The patch handles BIT_IOR_EXPR/BIT_XOR_EXPR like the last 2 operands of
COND_EXPR by recursing on the two operands, if either of them doesn't fit
into the narrower type, complain. BIT_AND_EXPR too, but first it needs to
handle some special cases that unsafe_conversion_p does, namely when one
of the two operands is a constant.
This fixes completely the pr101537.c test and for C also pr103881.c
and doesn't regress anything in the testsuite, for C++ pr103881.c still
emits the bogus warnings.
This is because while the C FE emits in that case a SAVE_EXPR that
conversion_warning can handle already, C++ FE emits
TARGET_EXPR <D.whatever, ...>, something | D.whatever
etc. and conversion_warning handles COMPOUND_EXPR by "recursing" on the
rhs. To handle that case, we'd need for TARGET_EXPR on the lhs remember
in some hash map the mapping from D.whatever to the TARGET_EXPR and when
we see D.whatever, use corresponding TARGET_EXPR initializer instead.
2022-01-11 Jakub Jelinek <jakub@redhat.com>
PR c/101537
PR c/103881
gcc/c-family/
* c-warn.c (conversion_warning): Handle BIT_AND_EXPR, BIT_IOR_EXPR
and BIT_XOR_EXPR.
gcc/testsuite/
* c-c++-common/pr101537.c: New test.
* c-c++-common/pr103881.c: New test.
Patrick Palka [Tue, 11 Jan 2022 18:00:48 +0000 (13:00 -0500)]
c++: dependent bases and 'this' availability [PR103831]
Here during satisfaction of B's constraints we're failing to reject the
object-less call to the non-static member function A::size ultimately
because satisfaction is performed in the (access) context of the class
template B, which has a dependent base, and so the any_dependent_bases_p
check within build_new_method_call causes us to not reject the call.
(Subsequent constexpr evaluation of the call succeeds since the function
is effectively static.)
This patch fixes this by refining the any_dependent_bases_p check within
build_new_method_call: if we're in a context where 'this' is unavailable,
then we cannot resolve the implicit object regardless of the presence of
a dependent base. So let's also check current_class_ptr alongside a_d_b_p.
PR c++/103831
gcc/cp/ChangeLog:
* call.c (build_new_method_call): Consider dependent bases only
if 'this' is available.
gcc/testsuite/ChangeLog:
* g++.dg/cpp2a/concepts-class3.C: New test.
* g++.dg/template/non-dependent18.C: New test.
Jonathan Wakely [Tue, 11 Jan 2022 14:22:47 +0000 (14:22 +0000)]
libstdc++: Add missing noexcept to lazy_split_view iterator (LWG 3593)
This was approved at the October 2021 plenary. We already have noexcept
in the other places the issue adds it in the spec.
libstdc++-v3/ChangeLog:
* include/std/ranges (ranges::lazy_split_view::_InnerIter::end()):
Add neoxcept (LWG 3593).
Jonathan Wakely [Tue, 11 Jan 2022 14:11:46 +0000 (14:11 +0000)]
libstdc++: Make copyable-box completely constexpr (LWG 3572)
This LWG issue was approved at the October 2021 plenary and can be
implemented now that std::optional is fully constexpr.
libstdc++-v3/ChangeLog:
* include/std/ranges (ranges::__detail::__box): Add constexpr to
assignment operators (LWG 3572).
* testsuite/std/ranges/adaptors/filter.cc: Check assignment of a
view that uses copyable-box.
Siddhesh Poyarekar [Tue, 11 Jan 2022 02:38:27 +0000 (08:08 +0530)]
tree-object-size: Dynamic sizes for ADDR_EXPR
Allow returning dynamic expressions from ADDR_EXPR for
__builtin_dynamic_object_size and also allow offsets to be dynamic.
gcc/ChangeLog:
PR middle-end/70090
* tree-object-size.c (size_valid_p): New function.
(size_for_offset): Remove OFFSET constness assertion.
(addr_object_size): Build dynamic expressions for object
sizes and use size_valid_p to decide if it is valid for the
given OBJECT_SIZE_TYPE.
(compute_builtin_object_size): Allow dynamic offsets when
computing size at O0.
(call_object_size): Call size_valid_p.
(plus_stmt_object_size): Allow non-constant offset and use
size_valid_p to decide if it is valid for the given
OBJECT_SIZE_TYPE.
gcc/testsuite/ChangeLog:
PR middle-end/70090
* gcc.dg/builtin-dynamic-object-size-0.c: Add new tests.
* gcc.dg/builtin-object-size-1.c (test1)
[__builtin_object_size]: Adjust expected output for dynamic
object sizes.
* gcc.dg/builtin-object-size-2.c (test1)
[__builtin_object_size]: Likewise.
* gcc.dg/builtin-object-size-3.c (test1)
[__builtin_object_size]: Likewise.
* gcc.dg/builtin-object-size-4.c (test1)
[__builtin_object_size]: Likewise.
Signed-off-by: Siddhesh Poyarekar <siddhesh@gotplt.org>
Siddhesh Poyarekar [Tue, 11 Jan 2022 14:22:43 +0000 (19:52 +0530)]
tree-object-size: Handle GIMPLE_CALL
Handle non-constant expressions in GIMPLE_CALL arguments. Also handle
alloca.
gcc/ChangeLog:
PR middle-end/70090
* tree-object-size.c (alloc_object_size): Make and return
non-constant size expression.
(call_object_size): Return expression or unknown based on
whether dynamic object size is requested.
gcc/testsuite/ChangeLog:
PR middle-end/70090
* gcc.dg/builtin-dynamic-object-size-0.c: Add new tests.
* gcc.dg/builtin-object-size-1.c (test1)
[__builtin_object_size]: Alter expected result for dynamic
object size.
* gcc.dg/builtin-object-size-2.c (test1)
[__builtin_object_size]: Likewise.
* gcc.dg/builtin-object-size-3.c (test1)
[__builtin_object_size]: Likewise.
* gcc.dg/builtin-object-size-4.c (test1)
[__builtin_object_size]: Likewise.
Signed-off-by: Siddhesh Poyarekar <siddhesh@gotplt.org>
Siddhesh Poyarekar [Tue, 11 Jan 2022 14:21:37 +0000 (19:51 +0530)]
tree-object-size: Handle function parameters
Handle hints provided by __attribute__ ((access (...))) to compute
dynamic sizes for objects.
gcc/ChangeLog:
PR middle-end/70090
* tree-object-size.c: Include tree-dfa.h.
(parm_object_size): New function.
(collect_object_sizes_for): Call it.
gcc/testsuite/ChangeLog:
PR middle-end/70090
* gcc.dg/builtin-dynamic-object-size-0.c (test_parmsz_simple,
test_parmsz_scaled, test_parmsz_unknown): New functions.
(main): Call them. Add new arguments argc and argv.
Signed-off-by: Siddhesh Poyarekar <siddhesh@gotplt.org>
Siddhesh Poyarekar [Mon, 10 Jan 2022 23:57:51 +0000 (05:27 +0530)]
tree-object-size: Support dynamic sizes in conditions
Handle GIMPLE_PHI and conditionals specially for dynamic objects,
returning PHI/conditional expressions instead of just a MIN/MAX
estimate.
This makes the returned object size variable for loops and conditionals,
so tests need to be adjusted to look for precise size in some cases.
builtin-dynamic-object-size-5.c had to be modified to only look for
success in maximum object size case and skip over the minimum object
size tests because the result is no longer a compile time constant.
I also added some simple tests to exercise conditionals with dynamic
object sizes.
gcc/ChangeLog:
PR middle-end/70090
* builtins.c (fold_builtin_object_size): Adjust for dynamic size
expressions.
* tree-object-size.c: Include gimplify-me.h.
(struct object_size_info): New member UNKNOWNS.
(size_initval_p, size_usable_p, object_sizes_get_raw): New
functions.
(object_sizes_get): Return suitable gimple variable for
object size.
(bundle_sizes): New function.
(object_sizes_set): Use it and handle dynamic object size
expressions.
(object_sizes_set_temp): New function.
(size_for_offset): Adjust for dynamic size expressions.
(emit_phi_nodes, propagate_unknowns, gimplify_size_expressions):
New functions.
(compute_builtin_object_size): Call gimplify_size_expressions
for OST_DYNAMIC.
(dynamic_object_size): New function.
(cond_expr_object_size): Use it.
(phi_dynamic_object_size): New function.
(collect_object_sizes_for): Call it for OST_DYNAMIC. Adjust to
accommodate dynamic object sizes.
gcc/testsuite/ChangeLog:
PR middle-end/70090
* gcc.dg/builtin-dynamic-object-size-0.c: New tests.
* gcc.dg/builtin-dynamic-object-size-10.c: Add comment.
* gcc.dg/builtin-dynamic-object-size-5-main.c: New file.
* gcc.dg/builtin-dynamic-object-size-5.c: Use it and change test
to dg-do run.
* gcc.dg/builtin-object-size-5.c [!N]: Define N.
(test1, test2, test3, test4) [__builtin_object_size]: Expect
exact result for __builtin_dynamic_object_size.
* gcc.dg/builtin-object-size-1.c [__builtin_object_size]: Expect
exact size expressions for __builtin_dynamic_object_size.
* gcc.dg/builtin-object-size-2.c [__builtin_object_size]:
Likewise.
* gcc.dg/builtin-object-size-3.c [__builtin_object_size]:
Likewise.
* gcc.dg/builtin-object-size-4.c [__builtin_object_size]:
Likewise.
Signed-off-by: Siddhesh Poyarekar <siddhesh@gotplt.org>
Siddhesh Poyarekar [Tue, 11 Jan 2022 10:37:29 +0000 (16:07 +0530)]
tree-optimization/103961: Never compute offset for -1 size
Never try to compute size for offset when the object size is -1, which
is either unknown maximum or uninitialized minimum irrespective of the
osi->pass number.
gcc/ChangeLog:
PR tree-optimization/103961
* tree-object-size.c (plus_stmt_object_size): Always avoid
computing offset for -1 size.
gcc/testsuite/ChangeLog:
PR tree-optimization/103961
* gcc.dg/pr103961.c: New test case.
Co-authored-by: Jakub Jelinek <jakub@redhat.com>
Signed-off-by: Siddhesh Poyarekar <siddhesh@gotplt.org>
Andrew MacLeod [Mon, 10 Jan 2022 18:33:44 +0000 (13:33 -0500)]
Prevent exponential range calculations.
Produce a summary result for any operation involving too many subranges.
PR tree-optimization/103821
* range-op.cc (range_operator::fold_range): Only do precise ranges
when there are not too many subranges.
David Malcolm [Fri, 7 Jan 2022 22:44:23 +0000 (17:44 -0500)]
analyzer: fix false +ve on bitwise binops (PR analyzer/102692)
PR analyzer/102692 reports a false positive at -O2 from
-Wanalyzer-null-dereference on:
if (!p || q || !p->next)
At the gimple level, -O2 has converted the first || into bitwise or
controlling a jump:
_4 = _2 | _3;
if (_4 != 0)
and a recursive call has been converted to iteration. The analyzer hits
the symbolic value complexity limit whilst analyzing the iteration and
hits a case where _2 is (_Bool)1 (i.e. true) and _3 (i.e. q) is
UNKNOWN(_Bool).
There are two issues leading to the false positive; fixing either issue
fixes the false positive; this patch fixes both for good measure:
(a) The analyzer erronously treats bitwise ops on UNKNOWN(_Bool) as UNKNOWN,
even for case like (1 | UNKNOWN) where we know the result, leading to
bogus edges in the exploded graph. The patch fixes these cases.
(b) The state-handling code creates "UNKNOWN" symbolic values, as a way
to give up when symbolic expressions get too complicated, and in various
other cases. This makes sense when building the exploded graph, since
we want the analysis to terminate, but doesn't make sense when checking
the feasibility along a specific path, where we want precision. The patch
prevents all use of "unknown" symbolic values when performing feasibility
checking of a path (before it merely stopped doing complexity-checking),
by creating a unique placeholder_svalue instead.
This fixes the -Wanalyzer-null-dereference false positive.
Unfortunately, with GCC 12 there's also a false positive from
-Wanalyzer-use-of-uninitialized-value on this code, which is a separate
issue that the patch does not fix.
gcc/analyzer/ChangeLog:
PR analyzer/102692
* diagnostic-manager.cc
(class auto_disable_complexity_checks): Rename to...
(class auto_checking_feasibility): ...this, updating
the calls accordingly.
(epath_finder::explore_feasible_paths): Update for renaming.
* region-model-manager.cc
(region_model_manager::region_model_manager): Update for change from
m_check_complexity to m_checking_feasibility.
(region_model_manager::reject_if_too_complex): Likewise.
(region_model_manager::get_or_create_unknown_svalue): Handle
m_checking_feasibility.
(region_model_manager::create_unique_svalue): New.
(region_model_manager::maybe_fold_binop): Handle BIT_AND_EXPR and
BIT_IOR_EXPRs on booleans where we know the result.
* region-model.cc (test_binop_svalue_folding): Add test coverage
for the above.
* region-model.h (region_model_manager::create_unique_svalue): New
decl.
(region_model_manager::enable_complexity_check): Replace with...
(region_model_manager::begin_checking_feasibility): ...this.
(region_model_manager::disable_complexity_check): Replace with...
(region_model_manager::end_checking_feasibility): ...this.
(region_model_manager::m_check_complexity): Replace with...
(region_model_manager::m_checking_feasibility): ...this.
(region_model_manager::m_managed_dynamic_svalues): New field.
gcc/testsuite/ChangeLog:
PR analyzer/102692
* gcc.dg/analyzer/pr102692.c: New test.
Signed-off-by: David Malcolm <dmalcolm@redhat.com>
Martin Liska [Tue, 11 Jan 2022 13:29:25 +0000 (14:29 +0100)]
check-MAINTAINERS.py: use sys.argv[1]
contrib/ChangeLog:
* check-MAINTAINERS.py: Use sys.argv[1] as path to MAINTAINERS.
Jonathan Wakely [Mon, 10 Jan 2022 20:48:53 +0000 (20:48 +0000)]
libstdc++: Install <coroutine> header for freestanding [PR103726]
The standard says that <coroutine> should be present for freestanding.
That was intentionally left out of the initial implementation, but can
be done without much trouble. The header should be moved to libsupc++ at
some point in stage 1.
The standard also says that <coroutine> defines a std::hash
specialization, which was missing from our implementation. That's a
problem for freestanding (see LWG 3653) so only do that for hosted.
We can use concepts to constrain the __coroutine_traits_impl base class
when compiled with concepts enabled. In a pure C++20 implementation we
would not need that base class at all and could just use a constrained
partial specialization of coroutine_traits. But the absence of the
__coroutine_traits_impl<R, void> base would create an ABI difference
between the non-standard C++14/C++17 support for coroutines and the same
code compiled as C++20. If we drop support for <coroutine> pre-C++20 we
should revisit this.
libstdc++-v3/ChangeLog:
PR libstdc++/103726
* include/Makefile.am: Install <coroutine> for freestanding.
* include/Makefile.in: Regenerate.
* include/std/coroutine: Adjust headers and preprocessor
conditions.
(__coroutine_traits_impl): Use concepts when available.
[_GLIBCXX_HOSTED] (hash<coroutine_handle>): Define.
Jonathan Wakely [Mon, 10 Jan 2022 17:38:33 +0000 (17:38 +0000)]
libstdc++: Optimize std::ostream inserters for single characters
On the libsdc++ mailing list Lewis Hyatt pointed out the performance
overhead of using sputn in stream inserters, rather than writing
directly to the streambuf's put area:
https://gcc.gnu.org/pipermail/libstdc++/2021-July/052877.html
As Lewis noted, the standard explicitly requires a call to sputn for
inserting a std::basic_string_view or std::basic_string. But for
inserting single characters or null-terminated strings it is more vague,
and so we can improve performance by not using the __ostream_insert
function.
This is a minimal change that avoids __ostream_insert for single
characters. We can use the unformatted basic_ostream::put(charT)
function when we don't need the additional effects of a formatted output
function (i.e. padding and resetting the width). The put function will
insert into the buffer if possible, and only make a virtual call (to
overflow) if the buffer is full.
We could also avoid sputn when inserting null-terminated character
strings, but that would require using a new function for inserting
null-terminated strings, so the existing code using sputn is still used
for basic_string and basic_string_view. My preference is to leave that
for now, and try to improve the standard. We could either remove the
requirement to call sputn, or allow sputn to write directly to the
buffer instead of calling xsputn.
libstdc++-v3/ChangeLog:
* include/std/ostream (operator<<(basic_ostream&, charT)):
Use unformatted input if no padding is needed.
(operator<<(basic_ostream<char>&, char)): Likewise.
Eric Botcazou [Mon, 3 Jan 2022 15:15:20 +0000 (16:15 +0100)]
[Ada] Relax assertion on designated types for equality operators
gcc/ada/
* gcc-interface/utils2.c (build_binary_op) <EQ_EXPR>: Relax a
little the assertion on designated types of pointer types.
Justin Squirek [Thu, 23 Dec 2021 02:27:43 +0000 (02:27 +0000)]
[Ada] Include generic instance names in non-visible entity errors
gcc/ada/
* sem_ch8.adb (Nvis_Messages): Add generic instance name to
error message.
Etienne Servais [Mon, 3 Jan 2022 13:41:58 +0000 (14:41 +0100)]
[Ada] Accept square brackets for expression functions
gcc/ada/
* par-ch6.adb (Scan_Body_Or_Expression_Function): Accept left
bracket as token to open an expression function.
Justin Squirek [Tue, 28 Dec 2021 19:32:51 +0000 (19:32 +0000)]
[Ada] Task arrays trigger spurious unreferenced warnings
gcc/ada/
* sem_warn.adb (Check_References): Add call to Has_Task instead
of checking component type.
Piotr Trojanek [Fri, 7 Jan 2022 10:11:10 +0000 (11:11 +0100)]
[Ada] Remove unreferenced CCG-specific routine Insert_Declaration
gcc/ada/
* exp_util.ads (Insert_Declaration): Remove spec.
* exp_util.adb (Insert_Declaration): Remove body.
Piotr Trojanek [Thu, 6 Jan 2022 18:14:33 +0000 (19:14 +0100)]
[Ada] Avoid redundant checks for empty lists
gcc/ada/
* exp_ch4.adb (Expand_N_Expression_With_Actions): Avoid
redundant check.
* exp_ch5.adb (Expand_N_If_Statement): Likewise.
* exp_ch7.adb (Process_Declarations): Likewise.
* sem_elab.adb (Freeze_Node_Location): Likewise.
* exp_util.adb (Insert_Actions): Likewise.
(Is_OK_PF_Pragma): Likewise.
(Requires_Cleanup_Actions): Remove early exit; ordinary
processing path will similarly do nothing.
Piotr Trojanek [Thu, 6 Jan 2022 17:33:26 +0000 (18:33 +0100)]
[Ada] Remove name constant used by GNATprove but not by GNAT
gcc/ada/
* snames.ads-tmpl: Restore Name_Rpc.
Piotr Trojanek [Wed, 5 Jan 2022 15:59:38 +0000 (16:59 +0100)]
[Ada] Reduce scope of declare block in analysis of allocators
gcc/ada/
* sem_ch4.adb (Analyze_Allocator): Move DECLARE block inside IF
statement; refill code and comments.
Piotr Trojanek [Wed, 5 Jan 2022 15:40:44 +0000 (16:40 +0100)]
[Ada] Balance parentheses in comments about allocators
gcc/ada/
* sem_ch4.adb (Analyze_Allocator): Fix comment.
* sem_eval.ads (Compile-Time Known Values): Likewise.
Piotr Trojanek [Wed, 5 Jan 2022 21:25:22 +0000 (22:25 +0100)]
[Ada] Remove unreferenced name constants
gcc/ada/
* snames.ads-tmpl: Remove unreferenced names.
Yannick Moy [Wed, 5 Jan 2022 14:36:13 +0000 (14:36 +0000)]
[Ada] Adapt proof of System.Arith_Double
gcc/ada/
* libgnat/s-aridou.adb (Double_Divide): Adjust proof of lemma
Prove_Signs, call lemma for commutation of Big and
multiplication.
(Multiply_With_Ovflo_Check): Adjust postcondition of
Prove_Pos_Int.
(Scaled_Divide): Explicit commutation in the proof of lemma
Prove_Multiplication, add new lemma Prove_Shift_Progress for
congruence property that is not proved in a larger context, add
assertions at the end of the loop to state loop invariant
properties.
Piotr Trojanek [Wed, 5 Jan 2022 10:53:32 +0000 (11:53 +0100)]
[Ada] Deconstruct a VMS utility routine which is only used by GNATprove
gcc/ada/
* sem_eval.ads (Compile_Time_Known_Value_Or_Aggr): Remove spec.
* sem_eval.adb (Compile_Time_Known_Value_Or_Aggr): Remove body.
Yannick Moy [Wed, 5 Jan 2022 09:43:25 +0000 (10:43 +0100)]
[Ada] Recover proof of Ada.Strings.Fixed with assertions
gcc/ada/
* libgnat/a-strfix.adb (Insert, Overwrite): Add assertions.
Arnaud Charlet [Mon, 3 Jan 2022 10:51:07 +0000 (10:51 +0000)]
[Ada] PR ada/79724
gcc/ada/
PR ada/79724
* osint.adb (Program_Name): Fix handling of suffixes.
Piotr Trojanek [Tue, 4 Jan 2022 22:31:33 +0000 (23:31 +0100)]
[Ada] Remove unnecessary block in code for expansion of allocators
gcc/ada/
* exp_ch4.adb (Size_In_Storage_Elements): Remove unnecessary
DECLARE block; refill code and comments.
Eric Botcazou [Tue, 4 Jan 2022 12:39:45 +0000 (13:39 +0100)]
[Ada] Fix incomplete debug info for derived packed array type
gcc/ada/
* sem_ch3.adb (Analyze_Subtype_Declaration): In the case of an array
copy Packed_Array_Impl_Type manually here.
(Copy_Array_Subtype_Attributes): Do not copy it here.
Piotr Trojanek [Tue, 4 Jan 2022 16:43:22 +0000 (17:43 +0100)]
[Ada] Reuse Make_Temporary where possible
gcc/ada/
* exp_ch7.adb (Set_Block_Elab_Proc, Unnest_Block, Unnest_Loop,
Unnest_Statement_List): Simplify with Make_Temporary.
* exp_put_image.adb (Build_Image_Call): Likewise.
* inline.adb (Generate_Subprogram_Body): Likewise.
* sem_ch13.adb (Build_Predicate_Functions): Likewise.
* sem_util.adb (New_Copy_Separate_List): Likewise.
Etienne Servais [Tue, 4 Jan 2022 11:41:02 +0000 (12:41 +0100)]
[Ada] Fix check for implicit allocation of dynamic objects
gcc/ada/
* sem_ch3.adb (Check_Dynamic_Object): Swap check order.
Yannick Moy [Fri, 17 Dec 2021 16:45:14 +0000 (17:45 +0100)]
[Ada] Proof of unit System.Case_Util
gcc/ada/
* libgnat/s-casuti.adb: Add ghost code.
* libgnat/s-casuti.ads: Add contracts.
Claire Dross [Wed, 15 Dec 2021 19:10:06 +0000 (20:10 +0100)]
[Ada] Proof of System.Val_Uns at gold level
gcc/ada/
* libgnat/a-tiinau.ads: Use a procedure for the Scan parameter
instead of a function with side-effects.
* libgnat/a-tiinau.adb: Idem.
* libgnat/a-wtinau.ads: Idem.
* libgnat/a-wtinau.adb: Idem.
* libgnat/a-ztinau.ads: Idem.
* libgnat/a-ztinau.adb: Idem.
* libgnat/s-valint.ads: Change the function with side-effects
Scan_Integer into a procedure
* libgnat/s-vallli.ads: Idem.
* libgnat/s-valllli.ads: Idem.
* libgnat/s-vallllu.ads: Add SPARK_Mode and pragma to ignore
assertions in instance.
* libgnat/s-valllu.ads: Idem.
* libgnat/s-valuns.ads: Idem.
* libgnat/s-valuei.ads: Use a procedure for the
Scan_Raw_Unsigned parameter instead of a function with
side-effects and change the function with side-effects
Scan_Integer into a procedure.
* libgnat/s-valuei.adb: Idem.
* libgnat/s-valuti.ads: Introduce a ghost function that scans an
exponent and complete the postcondition of Scan_Exponent to also
describe the value of Ptr after the call. Fix the postcondition
of Scan_Underscore. Simplify the definition of
Scan_Natural_Ghost.
* libgnat/s-valuti.adb: Idem.
* libgnat/s-valboo.ads, libgnat/s-valboo.adb: Update calls to
First_Non_Space_Ghost.
* libgnat/s-valueu.ads: Add functional contracts.
* libgnat/s-valueu.adb: Idem.
Yannick Moy [Tue, 4 Jan 2022 09:37:53 +0000 (10:37 +0100)]
[Ada] Adapt ghost code to maintain proof
gcc/ada/
* libgnat/s-expmod.adb (Exp_Modular): Add assertions.
Piotr Trojanek [Mon, 3 Jan 2022 15:48:01 +0000 (16:48 +0100)]
[Ada] Simplify construction of messages about configurable runtime
gcc/ada/
* errout.adb (Error_Msg_CRT): Build message with string
concatenation; it is slightly repetitive but much easier to
read.
Piotr Trojanek [Mon, 3 Jan 2022 13:47:18 +0000 (14:47 +0100)]
[Ada] Remove redundant initialization of Test_And_Set_Flag object
gcc/ada/
* exp_ch11.adb (Expand_N_Exception_Declaration): Remove explicit
initialization of the exceptF object.
Piotr Trojanek [Mon, 3 Jan 2022 16:50:44 +0000 (17:50 +0100)]
[Ada] Tune inconsistent message about fixed-lower-bound and -gnatX
gcc/ada/
* par-ch3.adb (P_Array_Type_Definition): Use
Error_Msg_GNAT_Extension.
Gary Dismukes [Fri, 17 Dec 2021 23:41:01 +0000 (18:41 -0500)]
[Ada] Conformance error on protected subp with anonymous-access-to-tagged formal
gcc/ada/
* sem_disp.adb (Check_Controlling_Type): Add test for the case
where Subp is a subprogram associated with a protected
subprogram and return Empty, unless Tagged_Type is the
corresponding record type of the protected type.
Yannick Moy [Thu, 16 Dec 2021 15:42:36 +0000 (16:42 +0100)]
[Ada] Proof of System.Vectors.Boolean_Operations
gcc/ada/
* libgnat/s-veboop.adb: Add ghost code for proof.
* libgnat/s-veboop.ads: Add specification.
Piotr Trojanek [Mon, 27 Dec 2021 18:42:51 +0000 (19:42 +0100)]
[Ada] Remove extra space in single object declarations
gcc/ada/
* exp_aggr.adb, exp_attr.adb, exp_ch3.adb, exp_ch7.adb,
exp_dist.adb, exp_util.adb, freeze.adb, frontend.adb,
inline.adb, itypes.adb, lib-load.adb, lib-xref.adb,
libgnat/a-cfhase.adb, libgnat/a-cforse.adb,
libgnat/a-chtgbo.adb, libgnat/a-crdlli.adb,
libgnat/a-except.adb, libgnat/a-strfix.adb,
libgnat/a-textio.adb, libgnat/a-tienau.adb,
libgnat/a-tigeau.adb, libgnat/a-witeio.adb,
libgnat/a-wtenau.adb, libgnat/a-wtgeau.adb,
libgnat/a-ztenau.adb, libgnat/a-ztexio.adb,
libgnat/a-ztgeau.adb, libgnat/g-comlin.adb,
libgnat/g-debpoo.adb, libgnat/g-expect.adb,
libgnat/s-fileio.adb, libgnat/s-memory.adb, libgnat/s-mmap.adb,
libgnat/s-objrea.adb, libgnat/s-pehage.adb,
libgnat/s-regpat.adb, libgnat/s-shasto.adb,
libgnat/s-valued.adb, libgnat/s-valuef.adb, par-ch11.adb,
par-ch4.adb, par-ch6.adb, par-ch9.adb, par_sco.adb,
repinfo-input.adb, sem_cat.adb, sem_ch10.adb, sem_ch12.adb,
sem_ch13.adb, sem_ch4.adb, sem_eval.adb, sem_prag.adb,
sem_res.adb, sem_util.adb, sinput.adb, switch-c.adb: Fix style.
Arnaud Charlet [Mon, 3 Jan 2022 10:12:57 +0000 (10:12 +0000)]
[Ada] Code cleanups
gcc/ada/
* exp_ch9.adb, gen_il-types.ads, make.adb, par-ch12.adb,
sem_ch13.adb: Use membership tests.
Piotr Trojanek [Thu, 9 Dec 2021 16:57:16 +0000 (17:57 +0100)]
[Ada] Remove warnings-as-errors about constraints error in dead code
gcc/ada/
* erroutc.ads, erroutc.adb (Is_Runtime_Raise): Global flag to
connect status of initial messages and their continuation; we
already have several flags like this.
(Error_Msg_Object): Add field Warn_Runtime_Raise to connect
error reporting (when problematic code is found) and removal
(when problematic code is determined to be dead).
* errout.adb (Error_Msg_Internal): Handle new field when
recording a continuation message; propagate status from
continuation to the preceding messages.
(To_Be_Removed): For dead code remove both simple warnings and
warnings about constraint errors that have been escalated to
hard errors.
(Set_Msg_Text): Recognize warnings about constraint errors that
are escalated to hard errors.
* errutil.adb (Error_Msg): Handle added field when recording a
new message.
Piotr Trojanek [Wed, 8 Dec 2021 21:58:22 +0000 (22:58 +0100)]
[Ada] Escalate pre-continuation messages from warnings to errors
gcc/ada/
* errout.adb (Error_Msg_Internal): Propagate warnings-as-error
flag from continuation message to its preceding messages.
Arnaud Charlet [Mon, 3 Jan 2022 09:13:28 +0000 (09:13 +0000)]
[Ada] Update copyright notice and bump Gnatvsn.Current_Year
gcc/ada/
* gnatvsn.ads (Current_Year): Update copyright notice, bump to
2022.
* ada_get_targ.adb: Update copyright notice.
* adabkend.adb: Likewise.
* adabkend.ads: Likewise.
* adadecode.c: Likewise.
* adadecode.h: Likewise.
* adaint.c: Likewise.
* adaint.h: Likewise.
* affinity.c: Likewise.
* ali-util.adb: Likewise.
* ali-util.ads: Likewise.
* ali.adb: Likewise.
* ali.ads: Likewise.
* alloc.ads: Likewise.
* argv-lynxos178-raven-cert.c: Likewise.
* argv.c: Likewise.
* aspects.adb: Likewise.
* aspects.ads: Likewise.
* atree.adb: Likewise.
* atree.ads: Likewise.
* atree.h: Likewise.
* aux-io.c: Likewise.
* back_end.adb: Likewise.
* back_end.ads: Likewise.
* backend_utils.adb: Likewise.
* backend_utils.ads: Likewise.
* bcheck.adb: Likewise.
* bcheck.ads: Likewise.
* binde.adb: Likewise.
* binde.ads: Likewise.
* binderr.adb: Likewise.
* binderr.ads: Likewise.
* bindgen.adb: Likewise.
* bindgen.ads: Likewise.
* bindo-augmentors.adb: Likewise.
* bindo-augmentors.ads: Likewise.
* bindo-builders.adb: Likewise.
* bindo-builders.ads: Likewise.
* bindo-diagnostics.adb: Likewise.
* bindo-diagnostics.ads: Likewise.
* bindo-elaborators.adb: Likewise.
* bindo-elaborators.ads: Likewise.
* bindo-graphs.adb: Likewise.
* bindo-graphs.ads: Likewise.
* bindo-units.adb: Likewise.
* bindo-units.ads: Likewise.
* bindo-validators.adb: Likewise.
* bindo-validators.ads: Likewise.
* bindo-writers.adb: Likewise.
* bindo-writers.ads: Likewise.
* bindo.adb: Likewise.
* bindo.ads: Likewise.
* bindusg.adb: Likewise.
* bindusg.ads: Likewise.
* butil.adb: Likewise.
* butil.ads: Likewise.
* cal.c: Likewise.
* casing.adb: Likewise.
* casing.ads: Likewise.
* checks.adb: Likewise.
* checks.ads: Likewise.
* cio.c: Likewise.
* clean.adb: Likewise.
* clean.ads: Likewise.
* comperr.adb: Likewise.
* comperr.ads: Likewise.
* contracts.adb: Likewise.
* contracts.ads: Likewise.
* csets.adb: Likewise.
* csets.ads: Likewise.
* cstand.adb: Likewise.
* cstand.ads: Likewise.
* cstreams.c: Likewise.
* ctrl_c.c: Likewise.
* debug.ads: Likewise.
* debug_a.adb: Likewise.
* debug_a.ads: Likewise.
* einfo-utils.adb: Likewise.
* einfo-utils.ads: Likewise.
* einfo.adb: Likewise.
* einfo.ads: Likewise.
* elists.adb: Likewise.
* elists.ads: Likewise.
* elists.h: Likewise.
* env.c: Likewise.
* env.h: Likewise.
* err_vars.ads: Likewise.
* errno.c: Likewise.
* errout.adb: Likewise.
* errout.ads: Likewise.
* erroutc.adb: Likewise.
* erroutc.ads: Likewise.
* errutil.adb: Likewise.
* errutil.ads: Likewise.
* eval_fat.adb: Likewise.
* eval_fat.ads: Likewise.
* exit.c: Likewise.
* exp_aggr.adb: Likewise.
* exp_aggr.ads: Likewise.
* exp_atag.adb: Likewise.
* exp_atag.ads: Likewise.
* exp_attr.adb: Likewise.
* exp_attr.ads: Likewise.
* exp_cg.adb: Likewise.
* exp_cg.ads: Likewise.
* exp_ch10.ads: Likewise.
* exp_ch11.adb: Likewise.
* exp_ch11.ads: Likewise.
* exp_ch12.adb: Likewise.
* exp_ch12.ads: Likewise.
* exp_ch13.adb: Likewise.
* exp_ch13.ads: Likewise.
* exp_ch2.adb: Likewise.
* exp_ch2.ads: Likewise.
* exp_ch3.adb: Likewise.
* exp_ch3.ads: Likewise.
* exp_ch4.adb: Likewise.
* exp_ch4.ads: Likewise.
* exp_ch5.adb: Likewise.
* exp_ch5.ads: Likewise.
* exp_ch6.adb: Likewise.
* exp_ch6.ads: Likewise.
* exp_ch7.adb: Likewise.
* exp_ch7.ads: Likewise.
* exp_ch8.adb: Likewise.
* exp_ch8.ads: Likewise.
* exp_ch9.adb: Likewise.
* exp_ch9.ads: Likewise.
* exp_code.adb: Likewise.
* exp_code.ads: Likewise.
* exp_dbug.adb: Likewise.
* exp_dbug.ads: Likewise.
* exp_disp.adb: Likewise.
* exp_disp.ads: Likewise.
* exp_dist.adb: Likewise.
* exp_dist.ads: Likewise.
* exp_fixd.adb: Likewise.
* exp_fixd.ads: Likewise.
* exp_imgv.adb: Likewise.
* exp_imgv.ads: Likewise.
* exp_intr.adb: Likewise.
* exp_intr.ads: Likewise.
* exp_pakd.adb: Likewise.
* exp_pakd.ads: Likewise.
* exp_prag.adb: Likewise.
* exp_prag.ads: Likewise.
* exp_put_image.adb: Likewise.
* exp_put_image.ads: Likewise.
* exp_sel.adb: Likewise.
* exp_sel.ads: Likewise.
* exp_smem.adb: Likewise.
* exp_smem.ads: Likewise.
* exp_spark.adb: Likewise.
* exp_spark.ads: Likewise.
* exp_strm.adb: Likewise.
* exp_strm.ads: Likewise.
* exp_tss.adb: Likewise.
* exp_tss.ads: Likewise.
* exp_unst.adb: Likewise.
* exp_unst.ads: Likewise.
* exp_util.adb: Likewise.
* exp_util.ads: Likewise.
* expander.adb: Likewise.
* expander.ads: Likewise.
* expect.c: Likewise.
* fe.h: Likewise.
* final.c: Likewise.
* fmap.adb: Likewise.
* fmap.ads: Likewise.
* fname-sf.adb: Likewise.
* fname-sf.ads: Likewise.
* fname-uf.adb: Likewise.
* fname-uf.ads: Likewise.
* fname.adb: Likewise.
* fname.ads: Likewise.
* freeze.adb: Likewise.
* freeze.ads: Likewise.
* frontend.adb: Likewise.
* frontend.ads: Likewise.
* gen_il-fields.ads: Likewise.
* gen_il-gen-gen_entities.adb: Likewise.
* gen_il-gen-gen_nodes.adb: Likewise.
* gen_il-gen.adb: Likewise.
* gen_il-gen.ads: Likewise.
* gen_il-internals.adb: Likewise.
* gen_il-internals.ads: Likewise.
* gen_il-main.adb: Likewise.
* gen_il-types.ads: Likewise.
* gen_il.adb: Likewise.
* gen_il.ads: Likewise.
* get_scos.adb: Likewise.
* get_scos.ads: Likewise.
* get_targ.adb: Likewise.
* get_targ.ads: Likewise.
* ghost.adb: Likewise.
* ghost.ads: Likewise.
* gnat1drv.adb: Likewise.
* gnat1drv.ads: Likewise.
* gnat_cuda.adb: Likewise.
* gnat_cuda.ads: Likewise.
* gnatbind.adb: Likewise.
* gnatbind.ads: Likewise.
* gnatchop.adb: Likewise.
* gnatclean.adb: Likewise.
* gnatcmd.adb: Likewise.
* gnatcmd.ads: Likewise.
* gnatdll.adb: Likewise.
* gnatfind.adb: Likewise.
* gnatkr.adb: Likewise.
* gnatkr.ads: Likewise.
* gnatlink.adb: Likewise.
* gnatlink.ads: Likewise.
* gnatls.adb: Likewise.
* gnatls.ads: Likewise.
* gnatmake.adb: Likewise.
* gnatmake.ads: Likewise.
* gnatname.adb: Likewise.
* gnatname.ads: Likewise.
* gnatprep.adb: Likewise.
* gnatprep.ads: Likewise.
* gnatvsn.adb: Likewise.
* gnatxref.adb: Likewise.
* gprep.adb: Likewise.
* gprep.ads: Likewise.
* gsocket.h: Likewise.
* hostparm.ads: Likewise.
* impunit.adb: Likewise.
* impunit.ads: Likewise.
* indepsw-aix.adb: Likewise.
* indepsw-darwin.adb: Likewise.
* indepsw-gnu.adb: Likewise.
* indepsw.adb: Likewise.
* indepsw.ads: Likewise.
* init.c: Likewise.
* initialize.c: Likewise.
* inline.adb: Likewise.
* inline.ads: Likewise.
* itypes.adb: Likewise.
* itypes.ads: Likewise.
* krunch.adb: Likewise.
* krunch.ads: Likewise.
* layout.adb: Likewise.
* layout.ads: Likewise.
* lib-list.adb: Likewise.
* lib-load.adb: Likewise.
* lib-load.ads: Likewise.
* lib-sort.adb: Likewise.
* lib-util.adb: Likewise.
* lib-util.ads: Likewise.
* lib-writ.adb: Likewise.
* lib-writ.ads: Likewise.
* lib-xref-spark_specific.adb: Likewise.
* lib-xref.adb: Likewise.
* lib-xref.ads: Likewise.
* lib.adb: Likewise.
* lib.ads: Likewise.
* libgnarl/a-astaco.adb: Likewise.
* libgnarl/a-dispat.adb: Likewise.
* libgnarl/a-dynpri.adb: Likewise.
* libgnarl/a-etgrbu.ads: Likewise.
* libgnarl/a-exetim__darwin.adb: Likewise.
* libgnarl/a-exetim__default.ads: Likewise.
* libgnarl/a-exetim__mingw.adb: Likewise.
* libgnarl/a-exetim__mingw.ads: Likewise.
* libgnarl/a-exetim__posix.adb: Likewise.
* libgnarl/a-interr.adb: Likewise.
* libgnarl/a-interr.ads: Likewise.
* libgnarl/a-intnam.ads: Likewise.
* libgnarl/a-intnam__aix.ads: Likewise.
* libgnarl/a-intnam__darwin.ads: Likewise.
* libgnarl/a-intnam__dragonfly.ads: Likewise.
* libgnarl/a-intnam__dummy.ads: Likewise.
* libgnarl/a-intnam__freebsd.ads: Likewise.
* libgnarl/a-intnam__hpux.ads: Likewise.
* libgnarl/a-intnam__linux.ads: Likewise.
* libgnarl/a-intnam__lynxos.ads: Likewise.
* libgnarl/a-intnam__mingw.ads: Likewise.
* libgnarl/a-intnam__qnx.ads: Likewise.
* libgnarl/a-intnam__rtems.ads: Likewise.
* libgnarl/a-intnam__solaris.ads: Likewise.
* libgnarl/a-intnam__vxworks.ads: Likewise.
* libgnarl/a-reatim.adb: Likewise.
* libgnarl/a-reatim.ads: Likewise.
* libgnarl/a-retide.adb: Likewise.
* libgnarl/a-retide.ads: Likewise.
* libgnarl/a-rttiev.adb: Likewise.
* libgnarl/a-rttiev.ads: Likewise.
* libgnarl/a-synbar.adb: Likewise.
* libgnarl/a-synbar.ads: Likewise.
* libgnarl/a-synbar__posix.adb: Likewise.
* libgnarl/a-synbar__posix.ads: Likewise.
* libgnarl/a-sytaco.adb: Likewise.
* libgnarl/a-sytaco.ads: Likewise.
* libgnarl/a-tasatt.adb: Likewise.
* libgnarl/a-tasatt.ads: Likewise.
* libgnarl/a-taside.adb: Likewise.
* libgnarl/a-taside.ads: Likewise.
* libgnarl/a-tasini.adb: Likewise.
* libgnarl/a-tasini.ads: Likewise.
* libgnarl/a-taster.adb: Likewise.
* libgnarl/g-boubuf.adb: Likewise.
* libgnarl/g-boubuf.ads: Likewise.
* libgnarl/g-boumai.ads: Likewise.
* libgnarl/g-semaph.adb: Likewise.
* libgnarl/g-semaph.ads: Likewise.
* libgnarl/g-signal.adb: Likewise.
* libgnarl/g-signal.ads: Likewise.
* libgnarl/g-tastus.ads: Likewise.
* libgnarl/g-thread.adb: Likewise.
* libgnarl/g-thread.ads: Likewise.
* libgnarl/i-vxinco.adb: Likewise.
* libgnarl/i-vxinco.ads: Likewise.
* libgnarl/s-inmaop.ads: Likewise.
* libgnarl/s-inmaop__dummy.adb: Likewise.
* libgnarl/s-inmaop__hwint.adb: Likewise.
* libgnarl/s-inmaop__posix.adb: Likewise.
* libgnarl/s-interr.adb: Likewise.
* libgnarl/s-interr.ads: Likewise.
* libgnarl/s-interr__dummy.adb: Likewise.
* libgnarl/s-interr__hwint.adb: Likewise.
* libgnarl/s-interr__sigaction.adb: Likewise.
* libgnarl/s-interr__vxworks.adb: Likewise.
* libgnarl/s-intman.ads: Likewise.
* libgnarl/s-intman__android.adb: Likewise.
* libgnarl/s-intman__dummy.adb: Likewise.
* libgnarl/s-intman__lynxos.adb: Likewise.
* libgnarl/s-intman__mingw.adb: Likewise.
* libgnarl/s-intman__posix.adb: Likewise.
* libgnarl/s-intman__qnx.adb: Likewise.
* libgnarl/s-intman__rtems.adb: Likewise.
* libgnarl/s-intman__rtems.ads: Likewise.
* libgnarl/s-intman__solaris.adb: Likewise.
* libgnarl/s-intman__susv3.adb: Likewise.
* libgnarl/s-intman__vxworks.adb: Likewise.
* libgnarl/s-intman__vxworks.ads: Likewise.
* libgnarl/s-linux.ads: Likewise.
* libgnarl/s-linux__alpha.ads: Likewise.
* libgnarl/s-linux__android.ads: Likewise.
* libgnarl/s-linux__hppa.ads: Likewise.
* libgnarl/s-linux__mips.ads: Likewise.
* libgnarl/s-linux__riscv.ads: Likewise.
* libgnarl/s-linux__sparc.ads: Likewise.
* libgnarl/s-linux__x32.ads: Likewise.
* libgnarl/s-mudido.adb: Likewise.
* libgnarl/s-mudido__affinity.adb: Likewise.
* libgnarl/s-osinte__aix.adb: Likewise.
* libgnarl/s-osinte__aix.ads: Likewise.
* libgnarl/s-osinte__android.adb: Likewise.
* libgnarl/s-osinte__android.ads: Likewise.
* libgnarl/s-osinte__darwin.adb: Likewise.
* libgnarl/s-osinte__darwin.ads: Likewise.
* libgnarl/s-osinte__dragonfly.adb: Likewise.
* libgnarl/s-osinte__dragonfly.ads: Likewise.
* libgnarl/s-osinte__dummy.ads: Likewise.
* libgnarl/s-osinte__freebsd.adb: Likewise.
* libgnarl/s-osinte__freebsd.ads: Likewise.
* libgnarl/s-osinte__gnu.adb: Likewise.
* libgnarl/s-osinte__gnu.ads: Likewise.
* libgnarl/s-osinte__hpux-dce.adb: Likewise.
* libgnarl/s-osinte__hpux-dce.ads: Likewise.
* libgnarl/s-osinte__hpux.ads: Likewise.
* libgnarl/s-osinte__kfreebsd-gnu.ads: Likewise.
* libgnarl/s-osinte__linux.ads: Likewise.
* libgnarl/s-osinte__lynxos178.adb: Likewise.
* libgnarl/s-osinte__lynxos178e.ads: Likewise.
* libgnarl/s-osinte__mingw.ads: Likewise.
* libgnarl/s-osinte__posix.adb: Likewise.
* libgnarl/s-osinte__qnx.adb: Likewise.
* libgnarl/s-osinte__qnx.ads: Likewise.
* libgnarl/s-osinte__rtems.adb: Likewise.
* libgnarl/s-osinte__rtems.ads: Likewise.
* libgnarl/s-osinte__solaris.adb: Likewise.
* libgnarl/s-osinte__solaris.ads: Likewise.
* libgnarl/s-osinte__vxworks.adb: Likewise.
* libgnarl/s-osinte__vxworks.ads: Likewise.
* libgnarl/s-osinte__x32.adb: Likewise.
* libgnarl/s-proinf.adb: Likewise.
* libgnarl/s-proinf.ads: Likewise.
* libgnarl/s-putaim.adb: Likewise.
* libgnarl/s-putaim.ads: Likewise.
* libgnarl/s-qnx.ads: Likewise.
* libgnarl/s-solita.adb: Likewise.
* libgnarl/s-solita.ads: Likewise.
* libgnarl/s-stusta.adb: Likewise.
* libgnarl/s-stusta.ads: Likewise.
* libgnarl/s-taasde.adb: Likewise.
* libgnarl/s-taasde.ads: Likewise.
* libgnarl/s-tadeca.adb: Likewise.
* libgnarl/s-tadeca.ads: Likewise.
* libgnarl/s-tadert.adb: Likewise.
* libgnarl/s-tadert.ads: Likewise.
* libgnarl/s-taenca.adb: Likewise.
* libgnarl/s-taenca.ads: Likewise.
* libgnarl/s-taprob.adb: Likewise.
* libgnarl/s-taprob.ads: Likewise.
* libgnarl/s-taprop.ads: Likewise.
* libgnarl/s-taprop__dummy.adb: Likewise.
* libgnarl/s-taprop__hpux-dce.adb: Likewise.
* libgnarl/s-taprop__linux.adb: Likewise.
* libgnarl/s-taprop__mingw.adb: Likewise.
* libgnarl/s-taprop__posix.adb: Likewise.
* libgnarl/s-taprop__qnx.adb: Likewise.
* libgnarl/s-taprop__rtems.adb: Likewise.
* libgnarl/s-taprop__solaris.adb: Likewise.
* libgnarl/s-taprop__vxworks.adb: Likewise.
* libgnarl/s-tarest.adb: Likewise.
* libgnarl/s-tarest.ads: Likewise.
* libgnarl/s-tasdeb.adb: Likewise.
* libgnarl/s-tasdeb.ads: Likewise.
* libgnarl/s-tasinf.adb: Likewise.
* libgnarl/s-tasinf.ads: Likewise.
* libgnarl/s-tasinf__linux.adb: Likewise.
* libgnarl/s-tasinf__linux.ads: Likewise.
* libgnarl/s-tasinf__mingw.adb: Likewise.
* libgnarl/s-tasinf__mingw.ads: Likewise.
* libgnarl/s-tasinf__solaris.adb: Likewise.
* libgnarl/s-tasinf__solaris.ads: Likewise.
* libgnarl/s-tasinf__vxworks.ads: Likewise.
* libgnarl/s-tasini.adb: Likewise.
* libgnarl/s-tasini.ads: Likewise.
* libgnarl/s-taskin.adb: Likewise.
* libgnarl/s-taskin.ads: Likewise.
* libgnarl/s-taspri__dummy.ads: Likewise.
* libgnarl/s-taspri__hpux-dce.ads: Likewise.
* libgnarl/s-taspri__lynxos.ads: Likewise.
* libgnarl/s-taspri__mingw.ads: Likewise.
* libgnarl/s-taspri__posix-noaltstack.ads: Likewise.
* libgnarl/s-taspri__posix.ads: Likewise.
* libgnarl/s-taspri__solaris.ads: Likewise.
* libgnarl/s-taspri__vxworks.ads: Likewise.
* libgnarl/s-tasque.adb: Likewise.
* libgnarl/s-tasque.ads: Likewise.
* libgnarl/s-tasren.adb: Likewise.
* libgnarl/s-tasren.ads: Likewise.
* libgnarl/s-tasres.ads: Likewise.
* libgnarl/s-tassta.adb: Likewise.
* libgnarl/s-tassta.ads: Likewise.
* libgnarl/s-tasuti.adb: Likewise.
* libgnarl/s-tasuti.ads: Likewise.
* libgnarl/s-tataat.adb: Likewise.
* libgnarl/s-tataat.ads: Likewise.
* libgnarl/s-tpinop.adb: Likewise.
* libgnarl/s-tpinop.ads: Likewise.
* libgnarl/s-tpoaal.adb: Likewise.
* libgnarl/s-tpoben.adb: Likewise.
* libgnarl/s-tpoben.ads: Likewise.
* libgnarl/s-tpobmu.adb: Likewise.
* libgnarl/s-tpobmu.ads: Likewise.
* libgnarl/s-tpobop.adb: Likewise.
* libgnarl/s-tpobop.ads: Likewise.
* libgnarl/s-tpopmo.adb: Likewise.
* libgnarl/s-tpopsp__posix-foreign.adb: Likewise.
* libgnarl/s-tpopsp__posix.adb: Likewise.
* libgnarl/s-tpopsp__solaris.adb: Likewise.
* libgnarl/s-tpopsp__tls.adb: Likewise.
* libgnarl/s-tpopsp__vxworks-rtp.adb: Likewise.
* libgnarl/s-tpopsp__vxworks-tls.adb: Likewise.
* libgnarl/s-tpopsp__vxworks.adb: Likewise.
* libgnarl/s-tporft.adb: Likewise.
* libgnarl/s-tposen.adb: Likewise.
* libgnarl/s-tposen.ads: Likewise.
* libgnarl/s-vxwext.adb: Likewise.
* libgnarl/s-vxwext.ads: Likewise.
* libgnarl/s-vxwext__kernel-smp.adb: Likewise.
* libgnarl/s-vxwext__kernel.adb: Likewise.
* libgnarl/s-vxwext__kernel.ads: Likewise.
* libgnarl/s-vxwext__rtp-smp.adb: Likewise.
* libgnarl/s-vxwext__rtp.adb: Likewise.
* libgnarl/s-vxwext__rtp.ads: Likewise.
* libgnarl/s-vxwork__aarch64.ads: Likewise.
* libgnarl/s-vxwork__arm.ads: Likewise.
* libgnarl/s-vxwork__ppc.ads: Likewise.
* libgnarl/s-vxwork__x86.ads: Likewise.
* libgnarl/thread.c: Likewise.
* libgnat/a-assert.adb: Likewise.
* libgnat/a-assert.ads: Likewise.
* libgnat/a-btgbso.adb: Likewise.
* libgnat/a-btgbso.ads: Likewise.
* libgnat/a-calari.adb: Likewise.
* libgnat/a-calari.ads: Likewise.
* libgnat/a-calcon.adb: Likewise.
* libgnat/a-calcon.ads: Likewise.
* libgnat/a-caldel.adb: Likewise.
* libgnat/a-caldel.ads: Likewise.
* libgnat/a-calend.adb: Likewise.
* libgnat/a-calend.ads: Likewise.
* libgnat/a-calfor.adb: Likewise.
* libgnat/a-calfor.ads: Likewise.
* libgnat/a-catizo.adb: Likewise.
* libgnat/a-cbdlli.adb: Likewise.
* libgnat/a-cbdlli.ads: Likewise.
* libgnat/a-cbhama.adb: Likewise.
* libgnat/a-cbhama.ads: Likewise.
* libgnat/a-cbhase.adb: Likewise.
* libgnat/a-cbhase.ads: Likewise.
* libgnat/a-cbmutr.adb: Likewise.
* libgnat/a-cbmutr.ads: Likewise.
* libgnat/a-cborma.adb: Likewise.
* libgnat/a-cborma.ads: Likewise.
* libgnat/a-cborse.adb: Likewise.
* libgnat/a-cborse.ads: Likewise.
* libgnat/a-cbprqu.adb: Likewise.
* libgnat/a-cbprqu.ads: Likewise.
* libgnat/a-cbsyqu.adb: Likewise.
* libgnat/a-cbsyqu.ads: Likewise.
* libgnat/a-cdlili.adb: Likewise.
* libgnat/a-cdlili.ads: Likewise.
* libgnat/a-cfdlli.adb: Likewise.
* libgnat/a-cfdlli.ads: Likewise.
* libgnat/a-cfhama.adb: Likewise.
* libgnat/a-cfhama.ads: Likewise.
* libgnat/a-cfhase.adb: Likewise.
* libgnat/a-cfhase.ads: Likewise.
* libgnat/a-cfinve.adb: Likewise.
* libgnat/a-cfinve.ads: Likewise.
* libgnat/a-cforma.adb: Likewise.
* libgnat/a-cforma.ads: Likewise.
* libgnat/a-cforse.adb: Likewise.
* libgnat/a-cforse.ads: Likewise.
* libgnat/a-cgaaso.adb: Likewise.
* libgnat/a-cgaaso.ads: Likewise.
* libgnat/a-cgarso.adb: Likewise.
* libgnat/a-cgcaso.adb: Likewise.
* libgnat/a-chacon.adb: Likewise.
* libgnat/a-chacon.ads: Likewise.
* libgnat/a-chahan.adb: Likewise.
* libgnat/a-chahan.ads: Likewise.
* libgnat/a-chlat9.ads: Likewise.
* libgnat/a-chtgbk.adb: Likewise.
* libgnat/a-chtgbk.ads: Likewise.
* libgnat/a-chtgbo.adb: Likewise.
* libgnat/a-chtgbo.ads: Likewise.
* libgnat/a-chtgke.adb: Likewise.
* libgnat/a-chtgke.ads: Likewise.
* libgnat/a-chtgop.adb: Likewise.
* libgnat/a-chtgop.ads: Likewise.
* libgnat/a-chzla1.ads: Likewise.
* libgnat/a-chzla9.ads: Likewise.
* libgnat/a-cidlli.adb: Likewise.
* libgnat/a-cidlli.ads: Likewise.
* libgnat/a-cihama.adb: Likewise.
* libgnat/a-cihama.ads: Likewise.
* libgnat/a-cihase.adb: Likewise.
* libgnat/a-cihase.ads: Likewise.
* libgnat/a-cimutr.adb: Likewise.
* libgnat/a-cimutr.ads: Likewise.
* libgnat/a-ciorma.adb: Likewise.
* libgnat/a-ciorma.ads: Likewise.
* libgnat/a-ciormu.adb: Likewise.
* libgnat/a-ciormu.ads: Likewise.
* libgnat/a-ciorse.adb: Likewise.
* libgnat/a-ciorse.ads: Likewise.
* libgnat/a-clrefi.adb: Likewise.
* libgnat/a-clrefi.ads: Likewise.
* libgnat/a-coboho.adb: Likewise.
* libgnat/a-coboho.ads: Likewise.
* libgnat/a-cobove.adb: Likewise.
* libgnat/a-cobove.ads: Likewise.
* libgnat/a-cofove.adb: Likewise.
* libgnat/a-cofove.ads: Likewise.
* libgnat/a-cofuba.adb: Likewise.
* libgnat/a-cofuba.ads: Likewise.
* libgnat/a-cofuma.adb: Likewise.
* libgnat/a-cofuma.ads: Likewise.
* libgnat/a-cofuse.adb: Likewise.
* libgnat/a-cofuse.ads: Likewise.
* libgnat/a-cofuve.adb: Likewise.
* libgnat/a-cofuve.ads: Likewise.
* libgnat/a-cogeso.adb: Likewise.
* libgnat/a-cogeso.ads: Likewise.
* libgnat/a-cohama.adb: Likewise.
* libgnat/a-cohama.ads: Likewise.
* libgnat/a-cohase.adb: Likewise.
* libgnat/a-cohase.ads: Likewise.
* libgnat/a-cohata.ads: Likewise.
* libgnat/a-coinho.adb: Likewise.
* libgnat/a-coinho.ads: Likewise.
* libgnat/a-coinho__shared.adb: Likewise.
* libgnat/a-coinho__shared.ads: Likewise.
* libgnat/a-coinve.adb: Likewise.
* libgnat/a-coinve.ads: Likewise.
* libgnat/a-colien.adb: Likewise.
* libgnat/a-colien.ads: Likewise.
* libgnat/a-colire.adb: Likewise.
* libgnat/a-colire.ads: Likewise.
* libgnat/a-comlin.adb: Likewise.
* libgnat/a-comlin.ads: Likewise.
* libgnat/a-comutr.adb: Likewise.
* libgnat/a-comutr.ads: Likewise.
* libgnat/a-conhel.adb: Likewise.
* libgnat/a-conhel.ads: Likewise.
* libgnat/a-convec.adb: Likewise.
* libgnat/a-convec.ads: Likewise.
* libgnat/a-coorma.adb: Likewise.
* libgnat/a-coorma.ads: Likewise.
* libgnat/a-coormu.adb: Likewise.
* libgnat/a-coormu.ads: Likewise.
* libgnat/a-coorse.adb: Likewise.
* libgnat/a-coorse.ads: Likewise.
* libgnat/a-coprnu.adb: Likewise.
* libgnat/a-coprnu.ads: Likewise.
* libgnat/a-costso.adb: Likewise.
* libgnat/a-costso.ads: Likewise.
* libgnat/a-crbltr.ads: Likewise.
* libgnat/a-crbtgk.adb: Likewise.
* libgnat/a-crbtgk.ads: Likewise.
* libgnat/a-crbtgo.adb: Likewise.
* libgnat/a-crbtgo.ads: Likewise.
* libgnat/a-crdlli.adb: Likewise.
* libgnat/a-crdlli.ads: Likewise.
* libgnat/a-csquin.ads: Likewise.
* libgnat/a-cuprqu.adb: Likewise.
* libgnat/a-cuprqu.ads: Likewise.
* libgnat/a-cusyqu.adb: Likewise.
* libgnat/a-cusyqu.ads: Likewise.
* libgnat/a-cwila1.ads: Likewise.
* libgnat/a-cwila9.ads: Likewise.
* libgnat/a-decima.adb: Likewise.
* libgnat/a-decima.ads: Likewise.
* libgnat/a-decima__128.ads: Likewise.
* libgnat/a-dhfina.adb: Likewise.
* libgnat/a-dhfina.ads: Likewise.
* libgnat/a-diocst.adb: Likewise.
* libgnat/a-diocst.ads: Likewise.
* libgnat/a-direct.adb: Likewise.
* libgnat/a-direct.ads: Likewise.
* libgnat/a-direio.adb: Likewise.
* libgnat/a-direio.ads: Likewise.
* libgnat/a-dirval.adb: Likewise.
* libgnat/a-dirval.ads: Likewise.
* libgnat/a-dirval__mingw.adb: Likewise.
* libgnat/a-einuoc.adb: Likewise.
* libgnat/a-einuoc.ads: Likewise.
* libgnat/a-elchha.adb: Likewise.
* libgnat/a-elchha.ads: Likewise.
* libgnat/a-envvar.adb: Likewise.
* libgnat/a-excach.adb: Likewise.
* libgnat/a-except.adb: Likewise.
* libgnat/a-except.ads: Likewise.
* libgnat/a-exctra.adb: Likewise.
* libgnat/a-exctra.ads: Likewise.
* libgnat/a-exexda.adb: Likewise.
* libgnat/a-exexpr.adb: Likewise.
* libgnat/a-exextr.adb: Likewise.
* libgnat/a-exstat.adb: Likewise.
* libgnat/a-finali.adb: Likewise.
* libgnat/a-finali.ads: Likewise.
* libgnat/a-locale.adb: Likewise.
* libgnat/a-locale.ads: Likewise.
* libgnat/a-nagefl.ads: Likewise.
* libgnat/a-naliop.ads: Likewise.
* libgnat/a-naliop__nolibm.ads: Likewise.
* libgnat/a-nallfl.ads: Likewise.
* libgnat/a-nallfl__wraplf.ads: Likewise.
* libgnat/a-nalofl.ads: Likewise.
* libgnat/a-nashfl.ads: Likewise.
* libgnat/a-nashfl__wraplf.ads: Likewise.
* libgnat/a-nbnbig.adb: Likewise.
* libgnat/a-nbnbin.adb: Likewise.
* libgnat/a-nbnbin__gmp.adb: Likewise.
* libgnat/a-nbnbre.adb: Likewise.
* libgnat/a-ngcefu.adb: Likewise.
* libgnat/a-ngcoar.adb: Likewise.
* libgnat/a-ngcoty.adb: Likewise.
* libgnat/a-ngcoty.ads: Likewise.
* libgnat/a-ngelfu.adb: Likewise.
* libgnat/a-ngelfu.ads: Likewise.
* libgnat/a-ngrear.adb: Likewise.
* libgnat/a-ngrear.ads: Likewise.
* libgnat/a-nuauco.ads: Likewise.
* libgnat/a-nuauco__x86.ads: Likewise.
* libgnat/a-nuaufl.ads: Likewise.
* libgnat/a-nuaufl__wraplf.ads: Likewise.
* libgnat/a-nudira.adb: Likewise.
* libgnat/a-nudira.ads: Likewise.
* libgnat/a-nuflra.adb: Likewise.
* libgnat/a-nuflra.ads: Likewise.
* libgnat/a-numaux.ads: Likewise.
* libgnat/a-rbtgbk.adb: Likewise.
* libgnat/a-rbtgbk.ads: Likewise.
* libgnat/a-rbtgbo.adb: Likewise.
* libgnat/a-rbtgbo.ads: Likewise.
* libgnat/a-rbtgso.adb: Likewise.
* libgnat/a-rbtgso.ads: Likewise.
* libgnat/a-sbecin.adb: Likewise.
* libgnat/a-sbecin.ads: Likewise.
* libgnat/a-sbhcin.adb: Likewise.
* libgnat/a-sbhcin.ads: Likewise.
* libgnat/a-sblcin.adb: Likewise.
* libgnat/a-sblcin.ads: Likewise.
* libgnat/a-secain.adb: Likewise.
* libgnat/a-secain.ads: Likewise.
* libgnat/a-sequio.adb: Likewise.
* libgnat/a-sequio.ads: Likewise.
* libgnat/a-sfecin.ads: Likewise.
* libgnat/a-sfhcin.ads: Likewise.
* libgnat/a-sflcin.ads: Likewise.
* libgnat/a-shcain.adb: Likewise.
* libgnat/a-shcain.ads: Likewise.
* libgnat/a-siocst.adb: Likewise.
* libgnat/a-siocst.ads: Likewise.
* libgnat/a-slcain.adb: Likewise.
* libgnat/a-slcain.ads: Likewise.
* libgnat/a-ssicst.adb: Likewise.
* libgnat/a-ssicst.ads: Likewise.
* libgnat/a-stboha.adb: Likewise.
* libgnat/a-stbubo.adb: Likewise.
* libgnat/a-stbubo.ads: Likewise.
* libgnat/a-stbufi.adb: Likewise.
* libgnat/a-stbufi.ads: Likewise.
* libgnat/a-stbufo.adb: Likewise.
* libgnat/a-stbufo.ads: Likewise.
* libgnat/a-stbuun.adb: Likewise.
* libgnat/a-stbuut.adb: Likewise.
* libgnat/a-stbuut.ads: Likewise.
* libgnat/a-stmaco.ads: Likewise.
* libgnat/a-storio.adb: Likewise.
* libgnat/a-strbou.adb: Likewise.
* libgnat/a-strbou.ads: Likewise.
* libgnat/a-stream.adb: Likewise.
* libgnat/a-stream.ads: Likewise.
* libgnat/a-strfix.adb: Likewise.
* libgnat/a-strhas.adb: Likewise.
* libgnat/a-strmap.adb: Likewise.
* libgnat/a-strmap.ads: Likewise.
* libgnat/a-strsea.adb: Likewise.
* libgnat/a-strsea.ads: Likewise.
* libgnat/a-strsto.ads: Likewise.
* libgnat/a-strsup.adb: Likewise.
* libgnat/a-strsup.ads: Likewise.
* libgnat/a-strunb.adb: Likewise.
* libgnat/a-strunb.ads: Likewise.
* libgnat/a-strunb__shared.adb: Likewise.
* libgnat/a-strunb__shared.ads: Likewise.
* libgnat/a-ststbo.adb: Likewise.
* libgnat/a-ststbo.ads: Likewise.
* libgnat/a-ststio.adb: Likewise.
* libgnat/a-ststio.ads: Likewise.
* libgnat/a-ststun.adb: Likewise.
* libgnat/a-ststun.ads: Likewise.
* libgnat/a-sttebu.adb: Likewise.
* libgnat/a-stunau.adb: Likewise.
* libgnat/a-stunau.ads: Likewise.
* libgnat/a-stunau__shared.adb: Likewise.
* libgnat/a-stunha.adb: Likewise.
* libgnat/a-stuten.adb: Likewise.
* libgnat/a-stwibo.adb: Likewise.
* libgnat/a-stwibo.ads: Likewise.
* libgnat/a-stwifi.adb: Likewise.
* libgnat/a-stwiha.adb: Likewise.
* libgnat/a-stwima.adb: Likewise.
* libgnat/a-stwima.ads: Likewise.
* libgnat/a-stwise.adb: Likewise.
* libgnat/a-stwise.ads: Likewise.
* libgnat/a-stwisu.adb: Likewise.
* libgnat/a-stwisu.ads: Likewise.
* libgnat/a-stwiun.adb: Likewise.
* libgnat/a-stwiun.ads: Likewise.
* libgnat/a-stwiun__shared.adb: Likewise.
* libgnat/a-stwiun__shared.ads: Likewise.
* libgnat/a-stzbou.adb: Likewise.
* libgnat/a-stzbou.ads: Likewise.
* libgnat/a-stzfix.adb: Likewise.
* libgnat/a-stzhas.adb: Likewise.
* libgnat/a-stzmap.adb: Likewise.
* libgnat/a-stzmap.ads: Likewise.
* libgnat/a-stzsea.adb: Likewise.
* libgnat/a-stzsea.ads: Likewise.
* libgnat/a-stzsup.adb: Likewise.
* libgnat/a-stzsup.ads: Likewise.
* libgnat/a-stzunb.adb: Likewise.
* libgnat/a-stzunb.ads: Likewise.
* libgnat/a-stzunb__shared.adb: Likewise.
* libgnat/a-stzunb__shared.ads: Likewise.
* libgnat/a-suecin.adb: Likewise.
* libgnat/a-suecin.ads: Likewise.
* libgnat/a-suenco.adb: Likewise.
* libgnat/a-suenst.adb: Likewise.
* libgnat/a-suewst.adb: Likewise.
* libgnat/a-suezst.adb: Likewise.
* libgnat/a-suhcin.adb: Likewise.
* libgnat/a-suhcin.ads: Likewise.
* libgnat/a-sulcin.adb: Likewise.
* libgnat/a-sulcin.ads: Likewise.
* libgnat/a-suteio.adb: Likewise.
* libgnat/a-suteio.ads: Likewise.
* libgnat/a-suteio__shared.adb: Likewise.
* libgnat/a-swbwha.adb: Likewise.
* libgnat/a-swmwco.ads: Likewise.
* libgnat/a-swunau.adb: Likewise.
* libgnat/a-swunau.ads: Likewise.
* libgnat/a-swunau__shared.adb: Likewise.
* libgnat/a-swuwha.adb: Likewise.
* libgnat/a-swuwti.adb: Likewise.
* libgnat/a-swuwti.ads: Likewise.
* libgnat/a-swuwti__shared.adb: Likewise.
* libgnat/a-szbzha.adb: Likewise.
* libgnat/a-szmzco.ads: Likewise.
* libgnat/a-szunau.adb: Likewise.
* libgnat/a-szunau.ads: Likewise.
* libgnat/a-szunau__shared.adb: Likewise.
* libgnat/a-szuzha.adb: Likewise.
* libgnat/a-szuzti.adb: Likewise.
* libgnat/a-szuzti.ads: Likewise.
* libgnat/a-szuzti__shared.adb: Likewise.
* libgnat/a-tags.adb: Likewise.
* libgnat/a-tags.ads: Likewise.
* libgnat/a-teioed.adb: Likewise.
* libgnat/a-teioed.ads: Likewise.
* libgnat/a-textio.adb: Likewise.
* libgnat/a-textio.ads: Likewise.
* libgnat/a-tiboio.adb: Likewise.
* libgnat/a-ticoau.adb: Likewise.
* libgnat/a-ticoau.ads: Likewise.
* libgnat/a-ticoio.adb: Likewise.
* libgnat/a-ticoio.ads: Likewise.
* libgnat/a-tideau.adb: Likewise.
* libgnat/a-tideau.ads: Likewise.
* libgnat/a-tideio.adb: Likewise.
* libgnat/a-tideio.ads: Likewise.
* libgnat/a-tideio__128.adb: Likewise.
* libgnat/a-tienau.adb: Likewise.
* libgnat/a-tienau.ads: Likewise.
* libgnat/a-tienio.adb: Likewise.
* libgnat/a-tifiau.adb: Likewise.
* libgnat/a-tifiau.ads: Likewise.
* libgnat/a-tifiio.adb: Likewise.
* libgnat/a-tifiio__128.adb: Likewise.
* libgnat/a-tiflau.adb: Likewise.
* libgnat/a-tiflau.ads: Likewise.
* libgnat/a-tiflio.adb: Likewise.
* libgnat/a-tiflio.ads: Likewise.
* libgnat/a-tigeau.adb: Likewise.
* libgnat/a-tigeau.ads: Likewise.
* libgnat/a-tigeli.adb: Likewise.
* libgnat/a-tiinau.adb: Likewise.
* libgnat/a-tiinau.ads: Likewise.
* libgnat/a-tiinio.adb: Likewise.
* libgnat/a-tiinio.ads: Likewise.
* libgnat/a-tiinio__128.adb: Likewise.
* libgnat/a-timoio.adb: Likewise.
* libgnat/a-timoio.ads: Likewise.
* libgnat/a-timoio__128.adb: Likewise.
* libgnat/a-tiocst.adb: Likewise.
* libgnat/a-tiocst.ads: Likewise.
* libgnat/a-tirsfi.adb: Likewise.
* libgnat/a-tirsfi.ads: Likewise.
* libgnat/a-titest.adb: Likewise.
* libgnat/a-undesu.adb: Likewise.
* libgnat/a-wichha.adb: Likewise.
* libgnat/a-wichun.adb: Likewise.
* libgnat/a-wichun.ads: Likewise.
* libgnat/a-witeio.adb: Likewise.
* libgnat/a-witeio.ads: Likewise.
* libgnat/a-wrstfi.adb: Likewise.
* libgnat/a-wrstfi.ads: Likewise.
* libgnat/a-wtcoau.adb: Likewise.
* libgnat/a-wtcoau.ads: Likewise.
* libgnat/a-wtcoio.adb: Likewise.
* libgnat/a-wtcstr.adb: Likewise.
* libgnat/a-wtcstr.ads: Likewise.
* libgnat/a-wtdeau.adb: Likewise.
* libgnat/a-wtdeau.ads: Likewise.
* libgnat/a-wtdeio.adb: Likewise.
* libgnat/a-wtdeio__128.adb: Likewise.
* libgnat/a-wtedit.adb: Likewise.
* libgnat/a-wtedit.ads: Likewise.
* libgnat/a-wtenau.adb: Likewise.
* libgnat/a-wtenau.ads: Likewise.
* libgnat/a-wtenio.adb: Likewise.
* libgnat/a-wtfiau.adb: Likewise.
* libgnat/a-wtfiau.ads: Likewise.
* libgnat/a-wtfiio.adb: Likewise.
* libgnat/a-wtfiio__128.adb: Likewise.
* libgnat/a-wtflau.adb: Likewise.
* libgnat/a-wtflau.ads: Likewise.
* libgnat/a-wtflio.adb: Likewise.
* libgnat/a-wtgeau.adb: Likewise.
* libgnat/a-wtgeau.ads: Likewise.
* libgnat/a-wtinau.adb: Likewise.
* libgnat/a-wtinau.ads: Likewise.
* libgnat/a-wtinio.adb: Likewise.
* libgnat/a-wtinio__128.adb: Likewise.
* libgnat/a-wtmoio.adb: Likewise.
* libgnat/a-wtmoio.ads: Likewise.
* libgnat/a-wtmoio__128.adb: Likewise.
* libgnat/a-wttest.adb: Likewise.
* libgnat/a-wwboio.adb: Likewise.
* libgnat/a-zchhan.adb: Likewise.
* libgnat/a-zchuni.adb: Likewise.
* libgnat/a-zchuni.ads: Likewise.
* libgnat/a-zrstfi.adb: Likewise.
* libgnat/a-zrstfi.ads: Likewise.
* libgnat/a-ztcoau.adb: Likewise.
* libgnat/a-ztcoio.adb: Likewise.
* libgnat/a-ztcstr.adb: Likewise.
* libgnat/a-ztcstr.ads: Likewise.
* libgnat/a-ztdeau.adb: Likewise.
* libgnat/a-ztdeau.ads: Likewise.
* libgnat/a-ztdeio.adb: Likewise.
* libgnat/a-ztdeio__128.adb: Likewise.
* libgnat/a-ztedit.adb: Likewise.
* libgnat/a-ztedit.ads: Likewise.
* libgnat/a-ztenau.adb: Likewise.
* libgnat/a-ztenau.ads: Likewise.
* libgnat/a-ztenio.adb: Likewise.
* libgnat/a-ztexio.adb: Likewise.
* libgnat/a-ztexio.ads: Likewise.
* libgnat/a-ztfiau.adb: Likewise.
* libgnat/a-ztfiau.ads: Likewise.
* libgnat/a-ztfiio.adb: Likewise.
* libgnat/a-ztfiio__128.adb: Likewise.
* libgnat/a-ztflau.adb: Likewise.
* libgnat/a-ztflau.ads: Likewise.
* libgnat/a-ztflio.adb: Likewise.
* libgnat/a-ztgeau.adb: Likewise.
* libgnat/a-ztgeau.ads: Likewise.
* libgnat/a-ztinau.adb: Likewise.
* libgnat/a-ztinau.ads: Likewise.
* libgnat/a-ztinio.adb: Likewise.
* libgnat/a-ztinio__128.adb: Likewise.
* libgnat/a-ztmoio.adb: Likewise.
* libgnat/a-ztmoio__128.adb: Likewise.
* libgnat/a-zttest.adb: Likewise.
* libgnat/a-zzboio.adb: Likewise.
* libgnat/g-allein.ads: Likewise.
* libgnat/g-alleve.adb: Likewise.
* libgnat/g-alleve.ads: Likewise.
* libgnat/g-alleve__hard.adb: Likewise.
* libgnat/g-alleve__hard.ads: Likewise.
* libgnat/g-altcon.adb: Likewise.
* libgnat/g-altcon.ads: Likewise.
* libgnat/g-altive.ads: Likewise.
* libgnat/g-alveop.adb: Likewise.
* libgnat/g-alveop.ads: Likewise.
* libgnat/g-alvety.ads: Likewise.
* libgnat/g-alvevi.ads: Likewise.
* libgnat/g-arrspl.adb: Likewise.
* libgnat/g-arrspl.ads: Likewise.
* libgnat/g-awk.adb: Likewise.
* libgnat/g-awk.ads: Likewise.
* libgnat/g-binenv.adb: Likewise.
* libgnat/g-binenv.ads: Likewise.
* libgnat/g-brapre.ads: Likewise.
* libgnat/g-bubsor.adb: Likewise.
* libgnat/g-bubsor.ads: Likewise.
* libgnat/g-busora.adb: Likewise.
* libgnat/g-busora.ads: Likewise.
* libgnat/g-busorg.adb: Likewise.
* libgnat/g-busorg.ads: Likewise.
* libgnat/g-byorma.adb: Likewise.
* libgnat/g-byorma.ads: Likewise.
* libgnat/g-bytswa.adb: Likewise.
* libgnat/g-bytswa.ads: Likewise.
* libgnat/g-calend.adb: Likewise.
* libgnat/g-calend.ads: Likewise.
* libgnat/g-casuti.adb: Likewise.
* libgnat/g-casuti.ads: Likewise.
* libgnat/g-catiio.adb: Likewise.
* libgnat/g-catiio.ads: Likewise.
* libgnat/g-cgi.adb: Likewise.
* libgnat/g-cgi.ads: Likewise.
* libgnat/g-cgicoo.adb: Likewise.
* libgnat/g-cgicoo.ads: Likewise.
* libgnat/g-cgideb.adb: Likewise.
* libgnat/g-cgideb.ads: Likewise.
* libgnat/g-comlin.adb: Likewise.
* libgnat/g-comlin.ads: Likewise.
* libgnat/g-comver.adb: Likewise.
* libgnat/g-comver.ads: Likewise.
* libgnat/g-cppexc.adb: Likewise.
* libgnat/g-cppexc.ads: Likewise.
* libgnat/g-crc32.adb: Likewise.
* libgnat/g-crc32.ads: Likewise.
* libgnat/g-ctrl_c.adb: Likewise.
* libgnat/g-ctrl_c.ads: Likewise.
* libgnat/g-curexc.ads: Likewise.
* libgnat/g-debpoo.adb: Likewise.
* libgnat/g-debpoo.ads: Likewise.
* libgnat/g-debuti.adb: Likewise.
* libgnat/g-debuti.ads: Likewise.
* libgnat/g-decstr.adb: Likewise.
* libgnat/g-decstr.ads: Likewise.
* libgnat/g-deutst.ads: Likewise.
* libgnat/g-diopit.adb: Likewise.
* libgnat/g-diopit.ads: Likewise.
* libgnat/g-dirope.adb: Likewise.
* libgnat/g-dirope.ads: Likewise.
* libgnat/g-dynhta.adb: Likewise.
* libgnat/g-dynhta.ads: Likewise.
* libgnat/g-dyntab.adb: Likewise.
* libgnat/g-dyntab.ads: Likewise.
* libgnat/g-eacodu.adb: Likewise.
* libgnat/g-encstr.adb: Likewise.
* libgnat/g-encstr.ads: Likewise.
* libgnat/g-enutst.ads: Likewise.
* libgnat/g-excact.adb: Likewise.
* libgnat/g-excact.ads: Likewise.
* libgnat/g-except.ads: Likewise.
* libgnat/g-exctra.adb: Likewise.
* libgnat/g-exctra.ads: Likewise.
* libgnat/g-expect.adb: Likewise.
* libgnat/g-expect.ads: Likewise.
* libgnat/g-exptty.adb: Likewise.
* libgnat/g-exptty.ads: Likewise.
* libgnat/g-flocon.ads: Likewise.
* libgnat/g-forstr.adb: Likewise.
* libgnat/g-forstr.ads: Likewise.
* libgnat/g-graphs.adb: Likewise.
* libgnat/g-graphs.ads: Likewise.
* libgnat/g-heasor.adb: Likewise.
* libgnat/g-heasor.ads: Likewise.
* libgnat/g-hesora.adb: Likewise.
* libgnat/g-hesora.ads: Likewise.
* libgnat/g-hesorg.adb: Likewise.
* libgnat/g-hesorg.ads: Likewise.
* libgnat/g-htable.adb: Likewise.
* libgnat/g-htable.ads: Likewise.
* libgnat/g-io.adb: Likewise.
* libgnat/g-io.ads: Likewise.
* libgnat/g-io_aux.adb: Likewise.
* libgnat/g-io_aux.ads: Likewise.
* libgnat/g-lists.adb: Likewise.
* libgnat/g-lists.ads: Likewise.
* libgnat/g-locfil.adb: Likewise.
* libgnat/g-locfil.ads: Likewise.
* libgnat/g-mbdira.adb: Likewise.
* libgnat/g-mbdira.ads: Likewise.
* libgnat/g-mbflra.adb: Likewise.
* libgnat/g-mbflra.ads: Likewise.
* libgnat/g-md5.adb: Likewise.
* libgnat/g-md5.ads: Likewise.
* libgnat/g-memdum.adb: Likewise.
* libgnat/g-memdum.ads: Likewise.
* libgnat/g-moreex.adb: Likewise.
* libgnat/g-moreex.ads: Likewise.
* libgnat/g-os_lib.adb: Likewise.
* libgnat/g-os_lib.ads: Likewise.
* libgnat/g-pehage.adb: Likewise.
* libgnat/g-pehage.ads: Likewise.
* libgnat/g-rannum.adb: Likewise.
* libgnat/g-rannum.ads: Likewise.
* libgnat/g-regexp.adb: Likewise.
* libgnat/g-regexp.ads: Likewise.
* libgnat/g-regist.adb: Likewise.
* libgnat/g-regist.ads: Likewise.
* libgnat/g-regpat.adb: Likewise.
* libgnat/g-regpat.ads: Likewise.
* libgnat/g-rewdat.adb: Likewise.
* libgnat/g-rewdat.ads: Likewise.
* libgnat/g-sechas.adb: Likewise.
* libgnat/g-sechas.ads: Likewise.
* libgnat/g-sehamd.adb: Likewise.
* libgnat/g-sehamd.ads: Likewise.
* libgnat/g-sehash.adb: Likewise.
* libgnat/g-sehash.ads: Likewise.
* libgnat/g-sercom.adb: Likewise.
* libgnat/g-sercom.ads: Likewise.
* libgnat/g-sercom__linux.adb: Likewise.
* libgnat/g-sercom__mingw.adb: Likewise.
* libgnat/g-sestin.ads: Likewise.
* libgnat/g-sets.adb: Likewise.
* libgnat/g-sets.ads: Likewise.
* libgnat/g-sha1.adb: Likewise.
* libgnat/g-sha1.ads: Likewise.
* libgnat/g-sha224.ads: Likewise.
* libgnat/g-sha256.ads: Likewise.
* libgnat/g-sha384.ads: Likewise.
* libgnat/g-sha512.ads: Likewise.
* libgnat/g-shsh32.adb: Likewise.
* libgnat/g-shsh32.ads: Likewise.
* libgnat/g-shsh64.adb: Likewise.
* libgnat/g-shsh64.ads: Likewise.
* libgnat/g-shshco.adb: Likewise.
* libgnat/g-shshco.ads: Likewise.
* libgnat/g-soccon.ads: Likewise.
* libgnat/g-socket.adb: Likewise.
* libgnat/g-socket.ads: Likewise.
* libgnat/g-socket__dummy.adb: Likewise.
* libgnat/g-socket__dummy.ads: Likewise.
* libgnat/g-socpol.adb: Likewise.
* libgnat/g-socpol.ads: Likewise.
* libgnat/g-socpol__dummy.adb: Likewise.
* libgnat/g-socpol__dummy.ads: Likewise.
* libgnat/g-socthi.adb: Likewise.
* libgnat/g-socthi.ads: Likewise.
* libgnat/g-socthi__dummy.adb: Likewise.
* libgnat/g-socthi__dummy.ads: Likewise.
* libgnat/g-socthi__mingw.adb: Likewise.
* libgnat/g-socthi__mingw.ads: Likewise.
* libgnat/g-socthi__vxworks.adb: Likewise.
* libgnat/g-socthi__vxworks.ads: Likewise.
* libgnat/g-soliop.ads: Likewise.
* libgnat/g-soliop__lynxos.ads: Likewise.
* libgnat/g-soliop__mingw.ads: Likewise.
* libgnat/g-soliop__qnx.ads: Likewise.
* libgnat/g-soliop__solaris.ads: Likewise.
* libgnat/g-sopowa.adb: Likewise.
* libgnat/g-sopowa__mingw.adb: Likewise.
* libgnat/g-sopowa__posix.adb: Likewise.
* libgnat/g-sothco.adb: Likewise.
* libgnat/g-sothco.ads: Likewise.
* libgnat/g-sothco__dummy.adb: Likewise.
* libgnat/g-sothco__dummy.ads: Likewise.
* libgnat/g-souinf.ads: Likewise.
* libgnat/g-spchge.adb: Likewise.
* libgnat/g-spchge.ads: Likewise.
* libgnat/g-speche.adb: Likewise.
* libgnat/g-speche.ads: Likewise.
* libgnat/g-spipat.adb: Likewise.
* libgnat/g-spipat.ads: Likewise.
* libgnat/g-spitbo.adb: Likewise.
* libgnat/g-spitbo.ads: Likewise.
* libgnat/g-spogwa.adb: Likewise.
* libgnat/g-spogwa.ads: Likewise.
* libgnat/g-sptabo.ads: Likewise.
* libgnat/g-sptain.ads: Likewise.
* libgnat/g-sptavs.ads: Likewise.
* libgnat/g-sse.ads: Likewise.
* libgnat/g-ssvety.ads: Likewise.
* libgnat/g-sthcso.adb: Likewise.
* libgnat/g-stheme.adb: Likewise.
* libgnat/g-strhas.ads: Likewise.
* libgnat/g-string.adb: Likewise.
* libgnat/g-string.ads: Likewise.
* libgnat/g-strspl.ads: Likewise.
* libgnat/g-stseme.adb: Likewise.
* libgnat/g-stsifd__sockets.adb: Likewise.
* libgnat/g-table.adb: Likewise.
* libgnat/g-table.ads: Likewise.
* libgnat/g-tasloc.adb: Likewise.
* libgnat/g-tasloc.ads: Likewise.
* libgnat/g-timsta.adb: Likewise.
* libgnat/g-timsta.ads: Likewise.
* libgnat/g-traceb.adb: Likewise.
* libgnat/g-traceb.ads: Likewise.
* libgnat/g-trasym.adb: Likewise.
* libgnat/g-trasym.ads: Likewise.
* libgnat/g-tty.adb: Likewise.
* libgnat/g-tty.ads: Likewise.
* libgnat/g-u3spch.adb: Likewise.
* libgnat/g-u3spch.ads: Likewise.
* libgnat/g-utf_32.adb: Likewise.
* libgnat/g-utf_32.ads: Likewise.
* libgnat/g-wispch.adb: Likewise.
* libgnat/g-wispch.ads: Likewise.
* libgnat/g-wistsp.ads: Likewise.
* libgnat/g-zspche.adb: Likewise.
* libgnat/g-zspche.ads: Likewise.
* libgnat/g-zstspl.ads: Likewise.
* libgnat/gnat.ads: Likewise.
* libgnat/i-c.adb: Likewise.
* libgnat/i-cexten.ads: Likewise.
* libgnat/i-cexten__128.ads: Likewise.
* libgnat/i-cobol.adb: Likewise.
* libgnat/i-cobol.ads: Likewise.
* libgnat/i-cpoint.adb: Likewise.
* libgnat/i-cpoint.ads: Likewise.
* libgnat/i-cstrea.adb: Likewise.
* libgnat/i-cstrea.ads: Likewise.
* libgnat/i-cstrin.adb: Likewise.
* libgnat/i-cstrin.ads: Likewise.
* libgnat/i-fortra.adb: Likewise.
* libgnat/i-pacdec.adb: Likewise.
* libgnat/i-pacdec.ads: Likewise.
* libgnat/i-vxwoio.adb: Likewise.
* libgnat/i-vxwoio.ads: Likewise.
* libgnat/i-vxwork.ads: Likewise.
* libgnat/i-vxwork__x86.ads: Likewise.
* libgnat/interfac.ads: Likewise.
* libgnat/interfac__2020.ads: Likewise.
* libgnat/memtrack.adb: Likewise.
* libgnat/s-addima.adb: Likewise.
* libgnat/s-addima.ads: Likewise.
* libgnat/s-addope.adb: Likewise.
* libgnat/s-addope.ads: Likewise.
* libgnat/s-aoinar.adb: Likewise.
* libgnat/s-aoinar.ads: Likewise.
* libgnat/s-aomoar.adb: Likewise.
* libgnat/s-aomoar.ads: Likewise.
* libgnat/s-aotase.adb: Likewise.
* libgnat/s-aotase.ads: Likewise.
* libgnat/s-aridou.adb: Likewise.
* libgnat/s-aridou.ads: Likewise.
* libgnat/s-arit128.adb: Likewise.
* libgnat/s-arit128.ads: Likewise.
* libgnat/s-arit32.adb: Likewise.
* libgnat/s-arit32.ads: Likewise.
* libgnat/s-arit64.adb: Likewise.
* libgnat/s-arit64.ads: Likewise.
* libgnat/s-assert.adb: Likewise.
* libgnat/s-assert.ads: Likewise.
* libgnat/s-atacco.adb: Likewise.
* libgnat/s-atacco.ads: Likewise.
* libgnat/s-atocou.adb: Likewise.
* libgnat/s-atocou.ads: Likewise.
* libgnat/s-atocou__builtin.adb: Likewise.
* libgnat/s-atoope.ads: Likewise.
* libgnat/s-atopex.adb: Likewise.
* libgnat/s-atopex.ads: Likewise.
* libgnat/s-atopri.adb: Likewise.
* libgnat/s-atopri.ads: Likewise.
* libgnat/s-auxdec.adb: Likewise.
* libgnat/s-auxdec.ads: Likewise.
* libgnat/s-bignum.adb: Likewise.
* libgnat/s-bignum.ads: Likewise.
* libgnat/s-bitfie.ads: Likewise.
* libgnat/s-bitops.adb: Likewise.
* libgnat/s-bitops.ads: Likewise.
* libgnat/s-bituti.adb: Likewise.
* libgnat/s-bituti.ads: Likewise.
* libgnat/s-boarop.ads: Likewise.
* libgnat/s-boustr.adb: Likewise.
* libgnat/s-boustr.ads: Likewise.
* libgnat/s-bytswa.ads: Likewise.
* libgnat/s-carsi8.adb: Likewise.
* libgnat/s-carsi8.ads: Likewise.
* libgnat/s-carun8.adb: Likewise.
* libgnat/s-carun8.ads: Likewise.
* libgnat/s-casi128.adb: Likewise.
* libgnat/s-casi128.ads: Likewise.
* libgnat/s-casi16.adb: Likewise.
* libgnat/s-casi16.ads: Likewise.
* libgnat/s-casi32.adb: Likewise.
* libgnat/s-casi32.ads: Likewise.
* libgnat/s-casi64.adb: Likewise.
* libgnat/s-casi64.ads: Likewise.
* libgnat/s-casuti.adb: Likewise.
* libgnat/s-casuti.ads: Likewise.
* libgnat/s-caun128.adb: Likewise.
* libgnat/s-caun128.ads: Likewise.
* libgnat/s-caun16.adb: Likewise.
* libgnat/s-caun16.ads: Likewise.
* libgnat/s-caun32.adb: Likewise.
* libgnat/s-caun32.ads: Likewise.
* libgnat/s-caun64.adb: Likewise.
* libgnat/s-caun64.ads: Likewise.
* libgnat/s-chepoo.ads: Likewise.
* libgnat/s-commun.adb: Likewise.
* libgnat/s-commun.ads: Likewise.
* libgnat/s-conca2.adb: Likewise.
* libgnat/s-conca2.ads: Likewise.
* libgnat/s-conca3.adb: Likewise.
* libgnat/s-conca3.ads: Likewise.
* libgnat/s-conca4.adb: Likewise.
* libgnat/s-conca4.ads: Likewise.
* libgnat/s-conca5.adb: Likewise.
* libgnat/s-conca5.ads: Likewise.
* libgnat/s-conca6.adb: Likewise.
* libgnat/s-conca6.ads: Likewise.
* libgnat/s-conca7.adb: Likewise.
* libgnat/s-conca7.ads: Likewise.
* libgnat/s-conca8.adb: Likewise.
* libgnat/s-conca8.ads: Likewise.
* libgnat/s-conca9.adb: Likewise.
* libgnat/s-conca9.ads: Likewise.
* libgnat/s-crc32.adb: Likewise.
* libgnat/s-crc32.ads: Likewise.
* libgnat/s-crtl.ads: Likewise.
* libgnat/s-dfmkio.ads: Likewise.
* libgnat/s-dfmopr.ads: Likewise.
* libgnat/s-dgmgop.ads: Likewise.
* libgnat/s-diflio.adb: Likewise.
* libgnat/s-diflio.ads: Likewise.
* libgnat/s-diflmk.ads: Likewise.
* libgnat/s-digemk.ads: Likewise.
* libgnat/s-diinio.adb: Likewise.
* libgnat/s-diinio.ads: Likewise.
* libgnat/s-dilomk.ads: Likewise.
* libgnat/s-dim.ads: Likewise.
* libgnat/s-dimkio.ads: Likewise.
* libgnat/s-dimmks.ads: Likewise.
* libgnat/s-direio.adb: Likewise.
* libgnat/s-direio.ads: Likewise.
* libgnat/s-dlmkio.ads: Likewise.
* libgnat/s-dlmopr.ads: Likewise.
* libgnat/s-dmotpr.ads: Likewise.
* libgnat/s-dorepr.adb: Likewise.
* libgnat/s-dorepr__fma.adb: Likewise.
* libgnat/s-dourea.adb: Likewise.
* libgnat/s-dourea.ads: Likewise.
* libgnat/s-dsaser.ads: Likewise.
* libgnat/s-dwalin.adb: Likewise.
* libgnat/s-dwalin.ads: Likewise.
* libgnat/s-elaall.adb: Likewise.
* libgnat/s-elaall.ads: Likewise.
* libgnat/s-excdeb.adb: Likewise.
* libgnat/s-excdeb.ads: Likewise.
* libgnat/s-except.adb: Likewise.
* libgnat/s-except.ads: Likewise.
* libgnat/s-excmac__arm.adb: Likewise.
* libgnat/s-excmac__arm.ads: Likewise.
* libgnat/s-excmac__gcc.adb: Likewise.
* libgnat/s-excmac__gcc.ads: Likewise.
* libgnat/s-exctab.adb: Likewise.
* libgnat/s-exctab.ads: Likewise.
* libgnat/s-exctra.adb: Likewise.
* libgnat/s-exctra.ads: Likewise.
* libgnat/s-exnflt.ads: Likewise.
* libgnat/s-exnint.adb: Likewise.
* libgnat/s-exnint.ads: Likewise.
* libgnat/s-exnlfl.ads: Likewise.
* libgnat/s-exnllf.adb: Likewise.
* libgnat/s-exnllf.ads: Likewise.
* libgnat/s-exnlli.adb: Likewise.
* libgnat/s-exnlli.ads: Likewise.
* libgnat/s-exnllli.ads: Likewise.
* libgnat/s-expint.adb: Likewise.
* libgnat/s-expint.ads: Likewise.
* libgnat/s-explli.adb: Likewise.
* libgnat/s-explli.ads: Likewise.
* libgnat/s-expllli.ads: Likewise.
* libgnat/s-explllu.ads: Likewise.
* libgnat/s-expllu.adb: Likewise.
* libgnat/s-expllu.ads: Likewise.
* libgnat/s-expmod.adb: Likewise.
* libgnat/s-expmod.ads: Likewise.
* libgnat/s-exponn.adb: Likewise.
* libgnat/s-exponn.ads: Likewise.
* libgnat/s-exponr.adb: Likewise.
* libgnat/s-exponr.ads: Likewise.
* libgnat/s-expont.adb: Likewise.
* libgnat/s-expont.ads: Likewise.
* libgnat/s-exponu.adb: Likewise.
* libgnat/s-exponu.ads: Likewise.
* libgnat/s-expuns.adb: Likewise.
* libgnat/s-expuns.ads: Likewise.
* libgnat/s-fatflt.ads: Likewise.
* libgnat/s-fatgen.adb: Likewise.
* libgnat/s-fatgen.ads: Likewise.
* libgnat/s-fatlfl.ads: Likewise.
* libgnat/s-fatllf.ads: Likewise.
* libgnat/s-ficobl.ads: Likewise.
* libgnat/s-filatt.ads: Likewise.
* libgnat/s-fileio.adb: Likewise.
* libgnat/s-fileio.ads: Likewise.
* libgnat/s-finmas.adb: Likewise.
* libgnat/s-finmas.ads: Likewise.
* libgnat/s-finroo.adb: Likewise.
* libgnat/s-finroo.ads: Likewise.
* libgnat/s-flocon.adb: Likewise.
* libgnat/s-flocon.ads: Likewise.
* libgnat/s-flocon__none.adb: Likewise.
* libgnat/s-fode128.ads: Likewise.
* libgnat/s-fode32.ads: Likewise.
* libgnat/s-fode64.ads: Likewise.
* libgnat/s-fofi128.ads: Likewise.
* libgnat/s-fofi32.ads: Likewise.
* libgnat/s-fofi64.ads: Likewise.
* libgnat/s-fore_d.adb: Likewise.
* libgnat/s-fore_d.ads: Likewise.
* libgnat/s-fore_f.adb: Likewise.
* libgnat/s-fore_f.ads: Likewise.
* libgnat/s-forrea.adb: Likewise.
* libgnat/s-forrea.ads: Likewise.
* libgnat/s-gearop.adb: Likewise.
* libgnat/s-gearop.ads: Likewise.
* libgnat/s-genbig.adb: Likewise.
* libgnat/s-genbig.ads: Likewise.
* libgnat/s-geveop.adb: Likewise.
* libgnat/s-geveop.ads: Likewise.
* libgnat/s-gloloc.adb: Likewise.
* libgnat/s-gloloc.ads: Likewise.
* libgnat/s-gloloc__mingw.adb: Likewise.
* libgnat/s-htable.adb: Likewise.
* libgnat/s-htable.ads: Likewise.
* libgnat/s-imageb.adb: Likewise.
* libgnat/s-imageb.ads: Likewise.
* libgnat/s-imaged.adb: Likewise.
* libgnat/s-imaged.ads: Likewise.
* libgnat/s-imagef.adb: Likewise.
* libgnat/s-imagef.ads: Likewise.
* libgnat/s-imagei.adb: Likewise.
* libgnat/s-imagei.ads: Likewise.
* libgnat/s-imagen.adb: Likewise.
* libgnat/s-imagen.ads: Likewise.
* libgnat/s-imager.adb: Likewise.
* libgnat/s-imager.ads: Likewise.
* libgnat/s-imageu.adb: Likewise.
* libgnat/s-imageu.ads: Likewise.
* libgnat/s-imagew.adb: Likewise.
* libgnat/s-imagew.ads: Likewise.
* libgnat/s-imde128.ads: Likewise.
* libgnat/s-imde32.ads: Likewise.
* libgnat/s-imde64.ads: Likewise.
* libgnat/s-imen16.ads: Likewise.
* libgnat/s-imen32.ads: Likewise.
* libgnat/s-imenu8.ads: Likewise.
* libgnat/s-imfi128.ads: Likewise.
* libgnat/s-imfi32.ads: Likewise.
* libgnat/s-imfi64.ads: Likewise.
* libgnat/s-imgbiu.adb: Likewise.
* libgnat/s-imgbiu.ads: Likewise.
* libgnat/s-imgboo.adb: Likewise.
* libgnat/s-imgboo.ads: Likewise.
* libgnat/s-imgcha.adb: Likewise.
* libgnat/s-imgcha.ads: Likewise.
* libgnat/s-imgflt.ads: Likewise.
* libgnat/s-imgint.adb: Likewise.
* libgnat/s-imgint.ads: Likewise.
* libgnat/s-imglfl.ads: Likewise.
* libgnat/s-imgllb.adb: Likewise.
* libgnat/s-imgllb.ads: Likewise.
* libgnat/s-imgllf.ads: Likewise.
* libgnat/s-imglli.adb: Likewise.
* libgnat/s-imglli.ads: Likewise.
* libgnat/s-imglllb.ads: Likewise.
* libgnat/s-imgllli.ads: Likewise.
* libgnat/s-imglllu.ads: Likewise.
* libgnat/s-imglllw.ads: Likewise.
* libgnat/s-imgllu.adb: Likewise.
* libgnat/s-imgllu.ads: Likewise.
* libgnat/s-imgllw.adb: Likewise.
* libgnat/s-imgllw.ads: Likewise.
* libgnat/s-imgrea.adb: Likewise.
* libgnat/s-imgrea.ads: Likewise.
* libgnat/s-imguns.adb: Likewise.
* libgnat/s-imguns.ads: Likewise.
* libgnat/s-imguti.adb: Likewise.
* libgnat/s-imguti.ads: Likewise.
* libgnat/s-imgwch.adb: Likewise.
* libgnat/s-imgwch.ads: Likewise.
* libgnat/s-imgwiu.adb: Likewise.
* libgnat/s-imgwiu.ads: Likewise.
* libgnat/s-io.adb: Likewise.
* libgnat/s-io.ads: Likewise.
* libgnat/s-llflex.ads: Likewise.
* libgnat/s-maccod.ads: Likewise.
* libgnat/s-mantis.adb: Likewise.
* libgnat/s-mantis.ads: Likewise.
* libgnat/s-mastop.adb: Likewise.
* libgnat/s-mastop.ads: Likewise.
* libgnat/s-memcop.ads: Likewise.
* libgnat/s-memory.adb: Likewise.
* libgnat/s-memory.ads: Likewise.
* libgnat/s-mmap.adb: Likewise.
* libgnat/s-mmap.ads: Likewise.
* libgnat/s-mmauni__long.ads: Likewise.
* libgnat/s-mmosin__mingw.adb: Likewise.
* libgnat/s-mmosin__mingw.ads: Likewise.
* libgnat/s-mmosin__unix.adb: Likewise.
* libgnat/s-mmosin__unix.ads: Likewise.
* libgnat/s-multip.adb: Likewise.
* libgnat/s-objrea.adb: Likewise.
* libgnat/s-objrea.ads: Likewise.
* libgnat/s-optide.adb: Likewise.
* libgnat/s-os_lib.adb: Likewise.
* libgnat/s-os_lib.ads: Likewise.
* libgnat/s-osprim.ads: Likewise.
* libgnat/s-osprim__darwin.adb: Likewise.
* libgnat/s-osprim__lynxos.ads: Likewise.
* libgnat/s-osprim__mingw.adb: Likewise.
* libgnat/s-osprim__posix.adb: Likewise.
* libgnat/s-osprim__posix2008.adb: Likewise.
* libgnat/s-osprim__rtems.adb: Likewise.
* libgnat/s-osprim__solaris.adb: Likewise.
* libgnat/s-osprim__unix.adb: Likewise.
* libgnat/s-osprim__x32.adb: Likewise.
* libgnat/s-pack03.adb: Likewise.
* libgnat/s-pack03.ads: Likewise.
* libgnat/s-pack05.adb: Likewise.
* libgnat/s-pack05.ads: Likewise.
* libgnat/s-pack06.adb: Likewise.
* libgnat/s-pack06.ads: Likewise.
* libgnat/s-pack07.adb: Likewise.
* libgnat/s-pack07.ads: Likewise.
* libgnat/s-pack09.adb: Likewise.
* libgnat/s-pack09.ads: Likewise.
* libgnat/s-pack10.adb: Likewise.
* libgnat/s-pack10.ads: Likewise.
* libgnat/s-pack100.adb: Likewise.
* libgnat/s-pack100.ads: Likewise.
* libgnat/s-pack101.adb: Likewise.
* libgnat/s-pack101.ads: Likewise.
* libgnat/s-pack102.adb: Likewise.
* libgnat/s-pack102.ads: Likewise.
* libgnat/s-pack103.adb: Likewise.
* libgnat/s-pack103.ads: Likewise.
* libgnat/s-pack104.adb: Likewise.
* libgnat/s-pack104.ads: Likewise.
* libgnat/s-pack105.adb: Likewise.
* libgnat/s-pack105.ads: Likewise.
* libgnat/s-pack106.adb: Likewise.
* libgnat/s-pack106.ads: Likewise.
* libgnat/s-pack107.adb: Likewise.
* libgnat/s-pack107.ads: Likewise.
* libgnat/s-pack108.adb: Likewise.
* libgnat/s-pack108.ads: Likewise.
* libgnat/s-pack109.adb: Likewise.
* libgnat/s-pack109.ads: Likewise.
* libgnat/s-pack11.adb: Likewise.
* libgnat/s-pack11.ads: Likewise.
* libgnat/s-pack110.adb: Likewise.
* libgnat/s-pack110.ads: Likewise.
* libgnat/s-pack111.adb: Likewise.
* libgnat/s-pack111.ads: Likewise.
* libgnat/s-pack112.adb: Likewise.
* libgnat/s-pack112.ads: Likewise.
* libgnat/s-pack113.adb: Likewise.
* libgnat/s-pack113.ads: Likewise.
* libgnat/s-pack114.adb: Likewise.
* libgnat/s-pack114.ads: Likewise.
* libgnat/s-pack115.adb: Likewise.
* libgnat/s-pack115.ads: Likewise.
* libgnat/s-pack116.adb: Likewise.
* libgnat/s-pack116.ads: Likewise.
* libgnat/s-pack117.adb: Likewise.
* libgnat/s-pack117.ads: Likewise.
* libgnat/s-pack118.adb: Likewise.
* libgnat/s-pack118.ads: Likewise.
* libgnat/s-pack119.adb: Likewise.
* libgnat/s-pack119.ads: Likewise.
* libgnat/s-pack12.adb: Likewise.
* libgnat/s-pack12.ads: Likewise.
* libgnat/s-pack120.adb: Likewise.
* libgnat/s-pack120.ads: Likewise.
* libgnat/s-pack121.adb: Likewise.
* libgnat/s-pack121.ads: Likewise.
* libgnat/s-pack122.adb: Likewise.
* libgnat/s-pack122.ads: Likewise.
* libgnat/s-pack123.adb: Likewise.
* libgnat/s-pack123.ads: Likewise.
* libgnat/s-pack124.adb: Likewise.
* libgnat/s-pack124.ads: Likewise.
* libgnat/s-pack125.adb: Likewise.
* libgnat/s-pack125.ads: Likewise.
* libgnat/s-pack126.adb: Likewise.
* libgnat/s-pack126.ads: Likewise.
* libgnat/s-pack127.adb: Likewise.
* libgnat/s-pack127.ads: Likewise.
* libgnat/s-pack13.adb: Likewise.
* libgnat/s-pack13.ads: Likewise.
* libgnat/s-pack14.adb: Likewise.
* libgnat/s-pack14.ads: Likewise.
* libgnat/s-pack15.adb: Likewise.
* libgnat/s-pack15.ads: Likewise.
* libgnat/s-pack17.adb: Likewise.
* libgnat/s-pack17.ads: Likewise.
* libgnat/s-pack18.adb: Likewise.
* libgnat/s-pack18.ads: Likewise.
* libgnat/s-pack19.adb: Likewise.
* libgnat/s-pack19.ads: Likewise.
* libgnat/s-pack20.adb: Likewise.
* libgnat/s-pack20.ads: Likewise.
* libgnat/s-pack21.adb: Likewise.
* libgnat/s-pack21.ads: Likewise.
* libgnat/s-pack22.adb: Likewise.
* libgnat/s-pack22.ads: Likewise.
* libgnat/s-pack23.adb: Likewise.
* libgnat/s-pack23.ads: Likewise.
* libgnat/s-pack24.adb: Likewise.
* libgnat/s-pack24.ads: Likewise.
* libgnat/s-pack25.adb: Likewise.
* libgnat/s-pack25.ads: Likewise.
* libgnat/s-pack26.adb: Likewise.
* libgnat/s-pack26.ads: Likewise.
* libgnat/s-pack27.adb: Likewise.
* libgnat/s-pack27.ads: Likewise.
* libgnat/s-pack28.adb: Likewise.
* libgnat/s-pack28.ads: Likewise.
* libgnat/s-pack29.adb: Likewise.
* libgnat/s-pack29.ads: Likewise.
* libgnat/s-pack30.adb: Likewise.
* libgnat/s-pack30.ads: Likewise.
* libgnat/s-pack31.adb: Likewise.
* libgnat/s-pack31.ads: Likewise.
* libgnat/s-pack33.adb: Likewise.
* libgnat/s-pack33.ads: Likewise.
* libgnat/s-pack34.adb: Likewise.
* libgnat/s-pack34.ads: Likewise.
* libgnat/s-pack35.adb: Likewise.
* libgnat/s-pack35.ads: Likewise.
* libgnat/s-pack36.adb: Likewise.
* libgnat/s-pack36.ads: Likewise.
* libgnat/s-pack37.adb: Likewise.
* libgnat/s-pack37.ads: Likewise.
* libgnat/s-pack38.adb: Likewise.
* libgnat/s-pack38.ads: Likewise.
* libgnat/s-pack39.adb: Likewise.
* libgnat/s-pack39.ads: Likewise.
* libgnat/s-pack40.adb: Likewise.
* libgnat/s-pack40.ads: Likewise.
* libgnat/s-pack41.adb: Likewise.
* libgnat/s-pack41.ads: Likewise.
* libgnat/s-pack42.adb: Likewise.
* libgnat/s-pack42.ads: Likewise.
* libgnat/s-pack43.adb: Likewise.
* libgnat/s-pack43.ads: Likewise.
* libgnat/s-pack44.adb: Likewise.
* libgnat/s-pack44.ads: Likewise.
* libgnat/s-pack45.adb: Likewise.
* libgnat/s-pack45.ads: Likewise.
* libgnat/s-pack46.adb: Likewise.
* libgnat/s-pack46.ads: Likewise.
* libgnat/s-pack47.adb: Likewise.
* libgnat/s-pack47.ads: Likewise.
* libgnat/s-pack48.adb: Likewise.
* libgnat/s-pack48.ads: Likewise.
* libgnat/s-pack49.adb: Likewise.
* libgnat/s-pack49.ads: Likewise.
* libgnat/s-pack50.adb: Likewise.
* libgnat/s-pack50.ads: Likewise.
* libgnat/s-pack51.adb: Likewise.
* libgnat/s-pack51.ads: Likewise.
* libgnat/s-pack52.adb: Likewise.
* libgnat/s-pack52.ads: Likewise.
* libgnat/s-pack53.adb: Likewise.
* libgnat/s-pack53.ads: Likewise.
* libgnat/s-pack54.adb: Likewise.
* libgnat/s-pack54.ads: Likewise.
* libgnat/s-pack55.adb: Likewise.
* libgnat/s-pack55.ads: Likewise.
* libgnat/s-pack56.adb: Likewise.
* libgnat/s-pack56.ads: Likewise.
* libgnat/s-pack57.adb: Likewise.
* libgnat/s-pack57.ads: Likewise.
* libgnat/s-pack58.adb: Likewise.
* libgnat/s-pack58.ads: Likewise.
* libgnat/s-pack59.adb: Likewise.
* libgnat/s-pack59.ads: Likewise.
* libgnat/s-pack60.adb: Likewise.
* libgnat/s-pack60.ads: Likewise.
* libgnat/s-pack61.adb: Likewise.
* libgnat/s-pack61.ads: Likewise.
* libgnat/s-pack62.adb: Likewise.
* libgnat/s-pack62.ads: Likewise.
* libgnat/s-pack63.adb: Likewise.
* libgnat/s-pack63.ads: Likewise.
* libgnat/s-pack65.adb: Likewise.
* libgnat/s-pack65.ads: Likewise.
* libgnat/s-pack66.adb: Likewise.
* libgnat/s-pack66.ads: Likewise.
* libgnat/s-pack67.adb: Likewise.
* libgnat/s-pack67.ads: Likewise.
* libgnat/s-pack68.adb: Likewise.
* libgnat/s-pack68.ads: Likewise.
* libgnat/s-pack69.adb: Likewise.
* libgnat/s-pack69.ads: Likewise.
* libgnat/s-pack70.adb: Likewise.
* libgnat/s-pack70.ads: Likewise.
* libgnat/s-pack71.adb: Likewise.
* libgnat/s-pack71.ads: Likewise.
* libgnat/s-pack72.adb: Likewise.
* libgnat/s-pack72.ads: Likewise.
* libgnat/s-pack73.adb: Likewise.
* libgnat/s-pack73.ads: Likewise.
* libgnat/s-pack74.adb: Likewise.
* libgnat/s-pack74.ads: Likewise.
* libgnat/s-pack75.adb: Likewise.
* libgnat/s-pack75.ads: Likewise.
* libgnat/s-pack76.adb: Likewise.
* libgnat/s-pack76.ads: Likewise.
* libgnat/s-pack77.adb: Likewise.
* libgnat/s-pack77.ads: Likewise.
* libgnat/s-pack78.adb: Likewise.
* libgnat/s-pack78.ads: Likewise.
* libgnat/s-pack79.adb: Likewise.
* libgnat/s-pack79.ads: Likewise.
* libgnat/s-pack80.adb: Likewise.
* libgnat/s-pack80.ads: Likewise.
* libgnat/s-pack81.adb: Likewise.
* libgnat/s-pack81.ads: Likewise.
* libgnat/s-pack82.adb: Likewise.
* libgnat/s-pack82.ads: Likewise.
* libgnat/s-pack83.adb: Likewise.
* libgnat/s-pack83.ads: Likewise.
* libgnat/s-pack84.adb: Likewise.
* libgnat/s-pack84.ads: Likewise.
* libgnat/s-pack85.adb: Likewise.
* libgnat/s-pack85.ads: Likewise.
* libgnat/s-pack86.adb: Likewise.
* libgnat/s-pack86.ads: Likewise.
* libgnat/s-pack87.adb: Likewise.
* libgnat/s-pack87.ads: Likewise.
* libgnat/s-pack88.adb: Likewise.
* libgnat/s-pack88.ads: Likewise.
* libgnat/s-pack89.adb: Likewise.
* libgnat/s-pack89.ads: Likewise.
* libgnat/s-pack90.adb: Likewise.
* libgnat/s-pack90.ads: Likewise.
* libgnat/s-pack91.adb: Likewise.
* libgnat/s-pack91.ads: Likewise.
* libgnat/s-pack92.adb: Likewise.
* libgnat/s-pack92.ads: Likewise.
* libgnat/s-pack93.adb: Likewise.
* libgnat/s-pack93.ads: Likewise.
* libgnat/s-pack94.adb: Likewise.
* libgnat/s-pack94.ads: Likewise.
* libgnat/s-pack95.adb: Likewise.
* libgnat/s-pack95.ads: Likewise.
* libgnat/s-pack96.adb: Likewise.
* libgnat/s-pack96.ads: Likewise.
* libgnat/s-pack97.adb: Likewise.
* libgnat/s-pack97.ads: Likewise.
* libgnat/s-pack98.adb: Likewise.
* libgnat/s-pack98.ads: Likewise.
* libgnat/s-pack99.adb: Likewise.
* libgnat/s-pack99.ads: Likewise.
* libgnat/s-parame.adb: Likewise.
* libgnat/s-parame.ads: Likewise.
* libgnat/s-parame__hpux.ads: Likewise.
* libgnat/s-parame__posix2008.ads: Likewise.
* libgnat/s-parame__rtems.adb: Likewise.
* libgnat/s-parame__vxworks.adb: Likewise.
* libgnat/s-parame__vxworks.ads: Likewise.
* libgnat/s-parint.adb: Likewise.
* libgnat/s-parint.ads: Likewise.
* libgnat/s-pehage.adb: Likewise.
* libgnat/s-pehage.ads: Likewise.
* libgnat/s-pooglo.adb: Likewise.
* libgnat/s-pooglo.ads: Likewise.
* libgnat/s-pooloc.adb: Likewise.
* libgnat/s-pooloc.ads: Likewise.
* libgnat/s-poosiz.adb: Likewise.
* libgnat/s-poosiz.ads: Likewise.
* libgnat/s-powflt.ads: Likewise.
* libgnat/s-powlfl.ads: Likewise.
* libgnat/s-powllf.ads: Likewise.
* libgnat/s-purexc.ads: Likewise.
* libgnat/s-putima.adb: Likewise.
* libgnat/s-putima.ads: Likewise.
* libgnat/s-rannum.adb: Likewise.
* libgnat/s-rannum.ads: Likewise.
* libgnat/s-ransee.adb: Likewise.
* libgnat/s-ransee.ads: Likewise.
* libgnat/s-regexp.adb: Likewise.
* libgnat/s-regexp.ads: Likewise.
* libgnat/s-regpat.adb: Likewise.
* libgnat/s-regpat.ads: Likewise.
* libgnat/s-resfil.adb: Likewise.
* libgnat/s-resfil.ads: Likewise.
* libgnat/s-restri.adb: Likewise.
* libgnat/s-restri.ads: Likewise.
* libgnat/s-rident.ads: Likewise.
* libgnat/s-rpc.adb: Likewise.
* libgnat/s-rpc.ads: Likewise.
* libgnat/s-scaval.adb: Likewise.
* libgnat/s-scaval.ads: Likewise.
* libgnat/s-scaval__128.adb: Likewise.
* libgnat/s-scaval__128.ads: Likewise.
* libgnat/s-secsta.adb: Likewise.
* libgnat/s-secsta.ads: Likewise.
* libgnat/s-sequio.adb: Likewise.
* libgnat/s-sequio.ads: Likewise.
* libgnat/s-shabig.ads: Likewise.
* libgnat/s-shasto.adb: Likewise.
* libgnat/s-shasto.ads: Likewise.
* libgnat/s-soflin.adb: Likewise.
* libgnat/s-soflin.ads: Likewise.
* libgnat/s-soliin.adb: Likewise.
* libgnat/s-soliin.ads: Likewise.
* libgnat/s-spsufi.adb: Likewise.
* libgnat/s-spsufi.ads: Likewise.
* libgnat/s-stache.adb: Likewise.
* libgnat/s-stache.ads: Likewise.
* libgnat/s-stalib.adb: Likewise.
* libgnat/s-stalib.ads: Likewise.
* libgnat/s-statxd.adb: Likewise.
* libgnat/s-statxd.ads: Likewise.
* libgnat/s-stausa.adb: Likewise.
* libgnat/s-stausa.ads: Likewise.
* libgnat/s-stchop.adb: Likewise.
* libgnat/s-stchop.ads: Likewise.
* libgnat/s-stchop__limit.ads: Likewise.
* libgnat/s-stchop__vxworks.adb: Likewise.
* libgnat/s-stoele.adb: Likewise.
* libgnat/s-stoele.ads: Likewise.
* libgnat/s-stopoo.adb: Likewise.
* libgnat/s-stopoo.ads: Likewise.
* libgnat/s-stposu.adb: Likewise.
* libgnat/s-stposu.ads: Likewise.
* libgnat/s-stratt.adb: Likewise.
* libgnat/s-stratt.ads: Likewise.
* libgnat/s-strcom.adb: Likewise.
* libgnat/s-strcom.ads: Likewise.
* libgnat/s-strhas.adb: Likewise.
* libgnat/s-strhas.ads: Likewise.
* libgnat/s-string.adb: Likewise.
* libgnat/s-string.ads: Likewise.
* libgnat/s-ststop.adb: Likewise.
* libgnat/s-ststop.ads: Likewise.
* libgnat/s-tasloc.adb: Likewise.
* libgnat/s-tasloc.ads: Likewise.
* libgnat/s-traceb.adb: Likewise.
* libgnat/s-traceb.ads: Likewise.
* libgnat/s-traceb__hpux.adb: Likewise.
* libgnat/s-traceb__mastop.adb: Likewise.
* libgnat/s-traent.adb: Likewise.
* libgnat/s-traent.ads: Likewise.
* libgnat/s-trasym.adb: Likewise.
* libgnat/s-trasym.ads: Likewise.
* libgnat/s-trasym__dwarf.adb: Likewise.
* libgnat/s-tsmona.adb: Likewise.
* libgnat/s-tsmona__linux.adb: Likewise.
* libgnat/s-tsmona__mingw.adb: Likewise.
* libgnat/s-unstyp.ads: Likewise.
* libgnat/s-utf_32.adb: Likewise.
* libgnat/s-utf_32.ads: Likewise.
* libgnat/s-vade128.ads: Likewise.
* libgnat/s-vade32.ads: Likewise.
* libgnat/s-vade64.ads: Likewise.
* libgnat/s-vaen16.ads: Likewise.
* libgnat/s-vaen32.ads: Likewise.
* libgnat/s-vaenu8.ads: Likewise.
* libgnat/s-vafi128.ads: Likewise.
* libgnat/s-vafi32.ads: Likewise.
* libgnat/s-vafi64.ads: Likewise.
* libgnat/s-valboo.adb: Likewise.
* libgnat/s-valboo.ads: Likewise.
* libgnat/s-valcha.adb: Likewise.
* libgnat/s-valcha.ads: Likewise.
* libgnat/s-valflt.ads: Likewise.
* libgnat/s-valint.adb: Likewise.
* libgnat/s-valint.ads: Likewise.
* libgnat/s-vallfl.ads: Likewise.
* libgnat/s-valllf.ads: Likewise.
* libgnat/s-vallli.adb: Likewise.
* libgnat/s-vallli.ads: Likewise.
* libgnat/s-valllli.ads: Likewise.
* libgnat/s-vallllu.ads: Likewise.
* libgnat/s-valllu.adb: Likewise.
* libgnat/s-valllu.ads: Likewise.
* libgnat/s-valrea.adb: Likewise.
* libgnat/s-valrea.ads: Likewise.
* libgnat/s-valued.adb: Likewise.
* libgnat/s-valued.ads: Likewise.
* libgnat/s-valuef.adb: Likewise.
* libgnat/s-valuef.ads: Likewise.
* libgnat/s-valuei.adb: Likewise.
* libgnat/s-valuei.ads: Likewise.
* libgnat/s-valuen.adb: Likewise.
* libgnat/s-valuen.ads: Likewise.
* libgnat/s-valuer.adb: Likewise.
* libgnat/s-valuer.ads: Likewise.
* libgnat/s-valueu.adb: Likewise.
* libgnat/s-valueu.ads: Likewise.
* libgnat/s-valuns.adb: Likewise.
* libgnat/s-valuns.ads: Likewise.
* libgnat/s-valuti.adb: Likewise.
* libgnat/s-valuti.ads: Likewise.
* libgnat/s-valwch.adb: Likewise.
* libgnat/s-valwch.ads: Likewise.
* libgnat/s-veboop.adb: Likewise.
* libgnat/s-veboop.ads: Likewise.
* libgnat/s-vector.ads: Likewise.
* libgnat/s-vercon.adb: Likewise.
* libgnat/s-vercon.ads: Likewise.
* libgnat/s-wchcnv.adb: Likewise.
* libgnat/s-wchcnv.ads: Likewise.
* libgnat/s-wchcon.adb: Likewise.
* libgnat/s-wchcon.ads: Likewise.
* libgnat/s-wchjis.adb: Likewise.
* libgnat/s-wchjis.ads: Likewise.
* libgnat/s-wchstw.adb: Likewise.
* libgnat/s-wchstw.ads: Likewise.
* libgnat/s-wchwts.adb: Likewise.
* libgnat/s-wchwts.ads: Likewise.
* libgnat/s-widboo.adb: Likewise.
* libgnat/s-widboo.ads: Likewise.
* libgnat/s-widcha.adb: Likewise.
* libgnat/s-widcha.ads: Likewise.
* libgnat/s-widenu.adb: Likewise.
* libgnat/s-widenu.ads: Likewise.
* libgnat/s-widint.ads: Likewise.
* libgnat/s-widlli.adb: Likewise.
* libgnat/s-widlli.ads: Likewise.
* libgnat/s-widllli.ads: Likewise.
* libgnat/s-widlllu.ads: Likewise.
* libgnat/s-widllu.adb: Likewise.
* libgnat/s-widllu.ads: Likewise.
* libgnat/s-widthi.adb: Likewise.
* libgnat/s-widthi.ads: Likewise.
* libgnat/s-widthu.adb: Likewise.
* libgnat/s-widthu.ads: Likewise.
* libgnat/s-widuns.ads: Likewise.
* libgnat/s-widwch.adb: Likewise.
* libgnat/s-widwch.ads: Likewise.
* libgnat/s-win32.ads: Likewise.
* libgnat/s-winext.ads: Likewise.
* libgnat/s-wwdcha.adb: Likewise.
* libgnat/s-wwdcha.ads: Likewise.
* libgnat/s-wwdenu.adb: Likewise.
* libgnat/s-wwdenu.ads: Likewise.
* libgnat/s-wwdwch.adb: Likewise.
* libgnat/s-wwdwch.ads: Likewise.
* libgnat/system-aix.ads: Likewise.
* libgnat/system-darwin-arm.ads: Likewise.
* libgnat/system-darwin-ppc.ads: Likewise.
* libgnat/system-darwin-x86.ads: Likewise.
* libgnat/system-djgpp.ads: Likewise.
* libgnat/system-dragonfly-x86_64.ads: Likewise.
* libgnat/system-freebsd.ads: Likewise.
* libgnat/system-hpux-ia64.ads: Likewise.
* libgnat/system-hpux.ads: Likewise.
* libgnat/system-linux-alpha.ads: Likewise.
* libgnat/system-linux-arm.ads: Likewise.
* libgnat/system-linux-hppa.ads: Likewise.
* libgnat/system-linux-ia64.ads: Likewise.
* libgnat/system-linux-m68k.ads: Likewise.
* libgnat/system-linux-mips.ads: Likewise.
* libgnat/system-linux-ppc.ads: Likewise.
* libgnat/system-linux-riscv.ads: Likewise.
* libgnat/system-linux-s390.ads: Likewise.
* libgnat/system-linux-sh4.ads: Likewise.
* libgnat/system-linux-sparc.ads: Likewise.
* libgnat/system-linux-x86.ads: Likewise.
* libgnat/system-lynxos178-ppc.ads: Likewise.
* libgnat/system-lynxos178-x86.ads: Likewise.
* libgnat/system-mingw.ads: Likewise.
* libgnat/system-qnx-aarch64.ads: Likewise.
* libgnat/system-rtems.ads: Likewise.
* libgnat/system-solaris-sparc.ads: Likewise.
* libgnat/system-solaris-x86.ads: Likewise.
* libgnat/system-vxworks-arm-rtp-smp.ads: Likewise.
* libgnat/system-vxworks-arm-rtp.ads: Likewise.
* libgnat/system-vxworks-arm.ads: Likewise.
* libgnat/system-vxworks-e500-kernel.ads: Likewise.
* libgnat/system-vxworks-e500-rtp-smp.ads: Likewise.
* libgnat/system-vxworks-e500-rtp.ads: Likewise.
* libgnat/system-vxworks-ppc-kernel.ads: Likewise.
* libgnat/system-vxworks-ppc-rtp-smp.ads: Likewise.
* libgnat/system-vxworks-ppc-rtp.ads: Likewise.
* libgnat/system-vxworks-x86-kernel.ads: Likewise.
* libgnat/system-vxworks-x86-rtp-smp.ads: Likewise.
* libgnat/system-vxworks-x86-rtp.ads: Likewise.
* libgnat/system-vxworks7-aarch64-rtp-smp.ads: Likewise.
* libgnat/system-vxworks7-aarch64.ads: Likewise.
* libgnat/system-vxworks7-arm-rtp-smp.ads: Likewise.
* libgnat/system-vxworks7-arm.ads: Likewise.
* libgnat/system-vxworks7-e500-kernel.ads: Likewise.
* libgnat/system-vxworks7-e500-rtp-smp.ads: Likewise.
* libgnat/system-vxworks7-e500-rtp.ads: Likewise.
* libgnat/system-vxworks7-ppc-kernel.ads: Likewise.
* libgnat/system-vxworks7-ppc-rtp-smp.ads: Likewise.
* libgnat/system-vxworks7-ppc-rtp.ads: Likewise.
* libgnat/system-vxworks7-ppc64-kernel.ads: Likewise.
* libgnat/system-vxworks7-ppc64-rtp-smp.ads: Likewise.
* libgnat/system-vxworks7-x86-kernel.ads: Likewise.
* libgnat/system-vxworks7-x86-rtp-smp.ads: Likewise.
* libgnat/system-vxworks7-x86-rtp.ads: Likewise.
* libgnat/system-vxworks7-x86_64-kernel.ads: Likewise.
* libgnat/system-vxworks7-x86_64-rtp-smp.ads: Likewise.
* link.c: Likewise.
* live.adb: Likewise.
* live.ads: Likewise.
* locales.c: Likewise.
* make.adb: Likewise.
* make.ads: Likewise.
* make_util.adb: Likewise.
* make_util.ads: Likewise.
* makeusg.adb: Likewise.
* makeusg.ads: Likewise.
* mdll-fil.adb: Likewise.
* mdll-fil.ads: Likewise.
* mdll-utl.adb: Likewise.
* mdll-utl.ads: Likewise.
* mdll.adb: Likewise.
* mdll.ads: Likewise.
* mingw32.h: Likewise.
* mkdir.c: Likewise.
* namet-sp.adb: Likewise.
* namet-sp.ads: Likewise.
* namet.adb: Likewise.
* namet.ads: Likewise.
* namet.h: Likewise.
* nlists.adb: Likewise.
* nlists.ads: Likewise.
* nlists.h: Likewise.
* opt.adb: Likewise.
* opt.ads: Likewise.
* osint-b.adb: Likewise.
* osint-b.ads: Likewise.
* osint-c.adb: Likewise.
* osint-c.ads: Likewise.
* osint-l.adb: Likewise.
* osint-l.ads: Likewise.
* osint-m.adb: Likewise.
* osint-m.ads: Likewise.
* osint.adb: Likewise.
* osint.ads: Likewise.
* output.adb: Likewise.
* output.ads: Likewise.
* par-ch10.adb: Likewise.
* par-ch11.adb: Likewise.
* par-ch12.adb: Likewise.
* par-ch13.adb: Likewise.
* par-ch2.adb: Likewise.
* par-ch3.adb: Likewise.
* par-ch4.adb: Likewise.
* par-ch5.adb: Likewise.
* par-ch6.adb: Likewise.
* par-ch7.adb: Likewise.
* par-ch8.adb: Likewise.
* par-ch9.adb: Likewise.
* par-endh.adb: Likewise.
* par-labl.adb: Likewise.
* par-load.adb: Likewise.
* par-prag.adb: Likewise.
* par-sync.adb: Likewise.
* par-tchk.adb: Likewise.
* par-util.adb: Likewise.
* par.adb: Likewise.
* par.ads: Likewise.
* par_sco.adb: Likewise.
* par_sco.ads: Likewise.
* pprint.adb: Likewise.
* pprint.ads: Likewise.
* prep.adb: Likewise.
* prep.ads: Likewise.
* prepcomp.adb: Likewise.
* prepcomp.ads: Likewise.
* put_scos.adb: Likewise.
* put_scos.ads: Likewise.
* raise-gcc.c: Likewise.
* raise.c: Likewise.
* raise.h: Likewise.
* repinfo-input.adb: Likewise.
* repinfo-input.ads: Likewise.
* repinfo.adb: Likewise.
* repinfo.ads: Likewise.
* repinfo.h: Likewise.
* restrict.adb: Likewise.
* restrict.ads: Likewise.
* rident.ads: Likewise.
* rtfinal.c: Likewise.
* rtinit.c: Likewise.
* rtsfind.adb: Likewise.
* rtsfind.ads: Likewise.
* runtime.h: Likewise.
* s-oscons-tmplt.c: Likewise.
* sa_messages.adb: Likewise.
* sa_messages.ads: Likewise.
* scans.adb: Likewise.
* scans.ads: Likewise.
* scil_ll.adb: Likewise.
* scil_ll.ads: Likewise.
* scn.adb: Likewise.
* scn.ads: Likewise.
* scng.adb: Likewise.
* scng.ads: Likewise.
* scos.adb: Likewise.
* scos.ads: Likewise.
* scos.h: Likewise.
* sdefault.ads: Likewise.
* seh_init.c: Likewise.
* sem.adb: Likewise.
* sem.ads: Likewise.
* sem_aggr.adb: Likewise.
* sem_aggr.ads: Likewise.
* sem_attr.adb: Likewise.
* sem_attr.ads: Likewise.
* sem_aux.adb: Likewise.
* sem_aux.ads: Likewise.
* sem_case.adb: Likewise.
* sem_case.ads: Likewise.
* sem_cat.adb: Likewise.
* sem_cat.ads: Likewise.
* sem_ch10.adb: Likewise.
* sem_ch10.ads: Likewise.
* sem_ch11.adb: Likewise.
* sem_ch11.ads: Likewise.
* sem_ch12.adb: Likewise.
* sem_ch12.ads: Likewise.
* sem_ch13.adb: Likewise.
* sem_ch13.ads: Likewise.
* sem_ch2.adb: Likewise.
* sem_ch2.ads: Likewise.
* sem_ch3.adb: Likewise.
* sem_ch3.ads: Likewise.
* sem_ch4.adb: Likewise.
* sem_ch4.ads: Likewise.
* sem_ch5.adb: Likewise.
* sem_ch5.ads: Likewise.
* sem_ch6.adb: Likewise.
* sem_ch6.ads: Likewise.
* sem_ch7.adb: Likewise.
* sem_ch7.ads: Likewise.
* sem_ch8.adb: Likewise.
* sem_ch8.ads: Likewise.
* sem_ch9.adb: Likewise.
* sem_ch9.ads: Likewise.
* sem_dim.adb: Likewise.
* sem_dim.ads: Likewise.
* sem_disp.adb: Likewise.
* sem_disp.ads: Likewise.
* sem_dist.adb: Likewise.
* sem_dist.ads: Likewise.
* sem_elab.adb: Likewise.
* sem_elab.ads: Likewise.
* sem_elim.adb: Likewise.
* sem_elim.ads: Likewise.
* sem_eval.adb: Likewise.
* sem_eval.ads: Likewise.
* sem_intr.adb: Likewise.
* sem_intr.ads: Likewise.
* sem_mech.adb: Likewise.
* sem_mech.ads: Likewise.
* sem_prag.adb: Likewise.
* sem_prag.ads: Likewise.
* sem_res.adb: Likewise.
* sem_res.ads: Likewise.
* sem_scil.adb: Likewise.
* sem_scil.ads: Likewise.
* sem_smem.adb: Likewise.
* sem_smem.ads: Likewise.
* sem_type.adb: Likewise.
* sem_type.ads: Likewise.
* sem_util.adb: Likewise.
* sem_util.ads: Likewise.
* sem_warn.adb: Likewise.
* sem_warn.ads: Likewise.
* set_targ.adb: Likewise.
* set_targ.ads: Likewise.
* sfn_scan.adb: Likewise.
* sfn_scan.ads: Likewise.
* sigtramp-armdroid.c: Likewise.
* sigtramp-ios.c: Likewise.
* sigtramp-qnx.c: Likewise.
* sigtramp-vxworks-target.h: Likewise.
* sigtramp-vxworks.c: Likewise.
* sigtramp.h: Likewise.
* sinfo-cn.adb: Likewise.
* sinfo-cn.ads: Likewise.
* sinfo-utils.adb: Likewise.
* sinfo-utils.ads: Likewise.
* sinfo.adb: Likewise.
* sinfo.ads: Likewise.
* sinput-c.adb: Likewise.
* sinput-c.ads: Likewise.
* sinput-d.adb: Likewise.
* sinput-d.ads: Likewise.
* sinput-l.adb: Likewise.
* sinput-l.ads: Likewise.
* sinput.adb: Likewise.
* sinput.ads: Likewise.
* socket.c: Likewise.
* spark_xrefs.adb: Likewise.
* spark_xrefs.ads: Likewise.
* sprint.adb: Likewise.
* sprint.ads: Likewise.
* stand.ads: Likewise.
* stringt.adb: Likewise.
* stringt.ads: Likewise.
* stringt.h: Likewise.
* strub.adb: Likewise.
* strub.ads: Likewise.
* style.adb: Likewise.
* style.ads: Likewise.
* styleg.adb: Likewise.
* styleg.ads: Likewise.
* stylesw.adb: Likewise.
* stylesw.ads: Likewise.
* switch-b.adb: Likewise.
* switch-b.ads: Likewise.
* switch-c.adb: Likewise.
* switch-c.ads: Likewise.
* switch-m.adb: Likewise.
* switch-m.ads: Likewise.
* switch.adb: Likewise.
* switch.ads: Likewise.
* sysdep.c: Likewise.
* table.adb: Likewise.
* table.ads: Likewise.
* targext.c: Likewise.
* targparm.adb: Likewise.
* targparm.ads: Likewise.
* tbuild.adb: Likewise.
* tbuild.ads: Likewise.
* tempdir.adb: Likewise.
* tempdir.ads: Likewise.
* terminals.c: Likewise.
* tracebak.c: Likewise.
* treepr.adb: Likewise.
* treepr.ads: Likewise.
* ttypes.ads: Likewise.
* types.adb: Likewise.
* types.ads: Likewise.
* types.h: Likewise.
* uintp.adb: Likewise.
* uintp.ads: Likewise.
* uintp.h: Likewise.
* uname.adb: Likewise.
* uname.ads: Likewise.
* urealp.adb: Likewise.
* urealp.ads: Likewise.
* urealp.h: Likewise.
* usage.adb: Likewise.
* usage.ads: Likewise.
* validsw.adb: Likewise.
* validsw.ads: Likewise.
* vast.adb: Likewise.
* vast.ads: Likewise.
* warnsw.adb: Likewise.
* warnsw.ads: Likewise.
* widechar.adb: Likewise.
* widechar.ads: Likewise.
* xoscons.adb: Likewise.
* xr_tabls.adb: Likewise.
* xr_tabls.ads: Likewise.
* xref_lib.adb: Likewise.
* xref_lib.ads: Likewise.
* xsnamest.adb: Likewise.
* xutil.adb: Likewise.
* xutil.ads: Likewise.
Richard Kenner [Tue, 21 Dec 2021 21:47:45 +0000 (16:47 -0500)]
[Ada] Document LLVM-specific flags
gcc/ada/
* debug.adb: Add documentation for new -gnatd_u and old -gnatd_R
flags used for GNAT LLVM and its CCG.
Piotr Trojanek [Thu, 30 Dec 2021 17:05:48 +0000 (18:05 +0100)]
[Ada] Use atomic builtins for atomic counters on x86 (32bit)
gcc/ada/
* Makefile.rtl (X86_TARGET_PAIRS): Use __builtin variant of
System.Atomic_Counters.
* libgnat/s-atocou__x86.adb: Remove.
Jonathan Wakely [Mon, 10 Jan 2022 17:28:19 +0000 (17:28 +0000)]
libstdc++: Make std::variant work with Clang in C++20 mode [PR103891]
Clang has some bugs with destructors that use constraints to be
conditionally trivial, so disable the P2231R1 constexpr changes to
std::variant unless the compiler is GCC 12 or later.
If/when P2493R0 gets accepted and implemented by G++ we can remove the
__GNUC__ check and use __cpp_concepts >= 202002 instead.
libstdc++-v3/ChangeLog:
PR libstdc++/103891
* include/bits/c++config (_GLIBCXX_HAVE_COND_TRIVIAL_SPECIAL_MEMBERS):
Define.
* include/std/variant (__cpp_lib_variant): Only define C++20
value when the compiler is known to support conditionally
trivial destructors.
* include/std/version (__cpp_lib_variant): Likewise.
Jonathan Wakely [Mon, 10 Jan 2022 16:51:49 +0000 (16:51 +0000)]
libstdc++: Make std::common_iterator completely constexpr-able (LWG 3574)
This library issue was approved in the October 2021 plenary.
libstdc++-v3/ChangeLog:
* include/bits/stl_iterator.h (common_iterator): Add constexpr
to all member functions (LWG 3574).
* testsuite/24_iterators/common_iterator/1.cc: Evaluate some
tests as constant expressions.
* testsuite/24_iterators/common_iterator/2.cc: Likewise.
Martin Liska [Tue, 11 Jan 2022 13:10:14 +0000 (14:10 +0100)]
Sort 2 names in ChangeLog.
ChangeLog:
* MAINTAINERS: Sort 2 names.
Martin Liska [Mon, 10 Jan 2022 15:49:31 +0000 (16:49 +0100)]
Check sorting of MAINTAINERS.
contrib/ChangeLog:
* check-MAINTAINERS.py: New file.
Richard Sandiford [Tue, 11 Jan 2022 12:47:05 +0000 (12:47 +0000)]
ira: Fix s390 build
My g:
01f3e6a40e7202310abbeb41c345d325bd69554f broke the s390
build because the rclass variable was still needed by the
IRA_HARD_REGNO_ADD_COST_MULTIPLIER code.
gcc/
* ira-costs.c (ira_tune_allocno_costs): Fix missing rclass
definition in IRA_HARD_REGNO_ADD_COST_MULTIPLIER code.
Roger Sayle [Tue, 11 Jan 2022 12:30:44 +0000 (12:30 +0000)]
Recognize MULT_HIGHPART_EXPR in tree-ssa-math-opts pass.
This is the third iteration of a patch to perceive MULT_HIGHPART_EXPR
in the middle-end. As they say "the third time's a charm". The first
version implemented this in match.pd, which was considered too early.
https://gcc.gnu.org/pipermail/gcc-patches/2020-August/551316.html
The second version attempted to do this during RTL expansion, and was
considered to be too late in the middle-end.
https://gcc.gnu.org/pipermail/gcc-patches/2021-August/576922.html
https://gcc.gnu.org/pipermail/gcc-patches/2021-August/576923.html
This latest version incorporates Richard Biener's feedback/suggestion
to perceive MULT_HIGHPART_EXPR in one of the "instruction selection
passes", specifically tree-ssa-math-opts, where the recognition of
highpart multiplications takes place in the same pass as widening
multiplications.
With each rewrite, the patch is also getting more aggressive in the
set of widening multiplications that it recognizes as highpart multiplies.
Currently any widening multiplication followed by a right shift (either
signed or unsigned) by a bit count sufficient to eliminate the lowpart
is recognized. The result of this shift doesn't need to be truncated.
As previously, this patch confirms the target provides a suitable
optab before introducing the MULT_HIGHPART_EXPR. This is the reason
the testcase is restricted to x86_64, as this pass doesn't do anything
on some platforms, but x86_64 should be sufficient to confirm that the
pass is working/continues to work.
2022-01-11 Roger Sayle <roger@nextmovesoftware.com>
Richard Biener <rguenther@suse.de>
gcc/ChangeLog
* tree-ssa-math-opts.c (struct widen_mul_stats): Add a
highpart_mults_inserted field.
(convert_mult_to_highpart): New function to convert right shift
of a widening multiply into a MULT_HIGHPART_EXPR.
(math_opts_dom_walker::after_dom_children) [RSHIFT_EXPR]:
Call new convert_mult_to_highpart function.
(pass_optimize_widening_mul::execute): Add a statistics counter
for tracking "highpart multiplications inserted" events.
gcc/testsuite/ChangeLog
* gcc.target/i386/mult-highpart.c: New test case.
Xionghu Luo [Mon, 13 Dec 2021 05:17:13 +0000 (23:17 -0600)]
rs6000: powerpc suboptimal boolean test of contiguous bits [PR102239]
Add specialized version to combine two instructions from
9: {r123:CC=cmp(r124:DI&0x600000000,0);clobber scratch;}
REG_DEAD r124:DI
10: pc={(r123:CC==0)?L15:pc}
REG_DEAD r123:CC
to:
10: {pc={(r123:DI&0x600000000==0)?L15:pc};clobber scratch;clobber %0:CC;}
then split2 will split it to one rotate dot instruction (to save one
rotate back instruction) as shifted result doesn't matter when comparing
to 0 in CCEQmode.
Bootstrapped and regression tested pass on Power 8/9/10.
gcc/ChangeLog:
PR target/102239
* config/rs6000/rs6000-protos.h (rs6000_is_valid_rotate_dot_mask): New
declare.
* config/rs6000/rs6000.c (rs6000_is_valid_rotate_dot_mask): New
function.
* config/rs6000/rs6000.md (*branch_anddi3_dot): New.
gcc/testsuite/ChangeLog:
PR target/102239
* gcc.target/powerpc/pr102239.c: New test.
Olivier Hainque [Wed, 5 Jan 2022 09:07:33 +0000 (09:07 +0000)]
State --sysroot option as validated once processed
Since we now save the option in the "switches" table
to let specs use it more generally, we need to explicitly
state that the option was validated else the driver
will consider it "unrecognized".
2022-01-05 Olivier Hainque <hainque@adacore.com>
* gcc.c (driver_handle_option): State --sysroot as
validated.
Olivier Hainque [Thu, 30 Dec 2021 20:47:31 +0000 (20:47 +0000)]
Improve sequence logic in cxx_init_decl_processing
Checking for one_only/weak support is better done
before deciding to turn references to __cxa_pure_virtual weak.
This helps at least on VxWorks where one_only / weak support
varies between kernel and rtp modes as well as across VxWorks
versions.
2021-12-30 Olivier Hainque <hainque@adacore.com>
gcc/cp/
* decl.c (cxx_init_decl_processing): Move code possibly
altering flag_weak before code testing it.
Xionghu Luo [Tue, 11 Jan 2022 02:05:56 +0000 (20:05 -0600)]
testsuite: Fix regression on m32 by r12-6087 [PR103820]
r12-6087 will avoid move cold bb out of hot loop, while the original
intent of this testcase is to hoist divides out of loop and CSE them to
only one divide. So increase the loop count to turn the cold bb to hot
bb again. Then the 3 divides could be rewritten with same reciptmp.
Tested pass on Power-Linux {32,64}, x86 {64,32} and i686-linux.
gcc/testsuite/ChangeLog:
PR testsuite/103820
* gcc.dg/tree-ssa/recip-3.c: Adjust.
Kewen Lin [Tue, 11 Jan 2022 02:39:33 +0000 (20:39 -0600)]
rs6000: Remove useless code related to -mno-power10
Option -mpower10 was made as "WarnRemoved" since commit r11-2318,
so -mno-power10 doesn't take effect any more. This patch is to
remove one line code which respects it.
gcc/ChangeLog:
* config/rs6000/rs6000.c (rs6000_disable_incompatible_switches): Remove
useless related to option -mno-power10.
Haochen Jiang [Thu, 30 Dec 2021 07:47:58 +0000 (15:47 +0800)]
Extend predicate of operands[1] from register_operand to vector_operand for andnot insn.
This can do optimization like
- pcmpeqd %xmm0, %xmm0
- pxor g(%rip), %xmm0
- pand %xmm1, %xmm0
+ movdqa g(%rip), %xmm0
+ pandn %xmm1, %xmm0
gcc/ChangeLog:
PR target/53652
* config/i386/sse.md (*andnot<mode>3): Extend predicate of
operands[1] from register_operand to vector_operand.
gcc/testsuite/ChangeLog:
PR target/53652
* gcc.target/i386/pr53652-1.c: New test.
GCC Administrator [Tue, 11 Jan 2022 00:16:36 +0000 (00:16 +0000)]
Daily bump.
Uros Bizjak [Mon, 10 Jan 2022 19:59:02 +0000 (20:59 +0100)]
i386: Introduce V2QImode vector compares [PR103861]
Add V2QImode vector compares with SSE registers.
2022-01-10 Uroš Bizjak <ubizjak@gmail.com>
gcc/ChangeLog:
PR target/103861
* config/i386/i386-expand.c (ix86_expand_int_sse_cmp):
Handle V2QImode.
* config/i386/mmx.md (<sat_plusminus:insn><mode>3):
Use VI1_16_32 mode iterator.
(*eq<mode>3): Ditto.
(*gt<mode>3): Ditto.
(*xop_maskcmp<mode>3): Ditto.
(*xop_maskcmp_uns<mode>3): Ditto.
(vec_cmp<mode><mode>): Ditto.
(vec_cmpu<mode><mode>): Ditto.
gcc/testsuite/ChangeLog:
PR target/103861
* gcc.target/i386/pr103861-2.c: New test.
Patrick Palka [Mon, 10 Jan 2022 19:57:54 +0000 (14:57 -0500)]
c++: constexpr base-to-derived conversion with offset 0 [PR103879]
r12-136 made us canonicalize an object/offset pair with negative offset
into one with a nonnegative offset, by iteratively absorbing the
innermost component into the offset and stopping as soon as the offset
becomes nonnegative.
This patch strengthens this transformation by making it keep on absorbing
even if the offset is already 0 as long as the innermost component is at
position 0 (and thus absorbing doesn't change the offset). This lets us
accept the two constexpr testcases below, which we'd previously reject
essentially because cxx_fold_indirect_ref would be unable to resolve
*(B*)&b.D123 (where D123 is the base A subobject at position 0) to just b.
PR c++/103879
gcc/cp/ChangeLog:
* constexpr.c (cxx_fold_indirect_ref): Split out object/offset
canonicalization step into a local lambda. Strengthen it to
absorb more components at position 0. Use it before both calls
to cxx_fold_indirect_ref_1.
gcc/testsuite/ChangeLog:
* g++.dg/cpp1y/constexpr-base2.C: New test.
* g++.dg/cpp1y/constexpr-base2a.C: New test.
Patrick Palka [Mon, 10 Jan 2022 19:57:51 +0000 (14:57 -0500)]
c++: "more constrained" vs staticness of memfn [PR103783]
Here we're rejecting the calls to g1 and g2 as ambiguous even though one
overload is more constrained than the other (and they're otherwise tied),
because the implicit 'this' parameter of the non-static overload causes
cand_parms_match to think the function parameter lists aren't equivalent.
This patch fixes this by making cand_parms_match skip over 'this'
appropriately. Note that this bug only affects partial ordering of
non-template member functions because for member function templates
more_specialized_fn seems to already skip over 'this' appropriately.
PR c++/103783
gcc/cp/ChangeLog:
* call.c (cand_parms_match): Skip over 'this' when given one
static and one non-static member function.
gcc/testsuite/ChangeLog:
* g++.dg/cpp2a/concepts-memfun2.C: New test.
Jakub Jelinek [Mon, 10 Jan 2022 19:49:11 +0000 (20:49 +0100)]
c++: Ensure some more that immediate functions aren't gimplified [PR103912]
Immediate functions should never be emitted into assembly, the FE doesn't
genericize them and does various things to ensure they aren't gimplified.
But the following testcase ICEs anyway due to that, because the consteval
function returns a lambda, and operator() of the lambda has
decl_function_context of the consteval function. cgraphunit.c then
does:
/* Preserve a functions function context node. It will
later be needed to output debug info. */
if (tree fn = decl_function_context (decl))
{
cgraph_node *origin_node = cgraph_node::get_create (fn);
enqueue_node (origin_node);
}
which enqueues the immediate function and then tries to gimplify it,
which results in ICE because it hasn't been genericized.
When I try similar testcase with constexpr instead of consteval and
static constinit auto instead of auto in main, what happens is that
the functions are gimplified, later ipa.c discovers they aren't reachable
and sets body_removed to true for them (and clears other flags) and we end
up with a debug info which has the foo and bar functions without
DW_AT_low_pc and other code specific attributes, just stuff from its BLOCK
structure and in there the lambda with DW_AT_low_pc etc.
The following patch attempts to emulate that behavior early, so that cgraph
doesn't try to gimplify those and pretends they were already gimplified
and found unused and optimized away.
2022-01-10 Jakub Jelinek <jakub@redhat.com>
PR c++/103912
* semantics.c (expand_or_defer_fn): For immediate functions, set
node->body_removed to true and clear analyzed, definition and
force_output.
* decl2.c (c_parse_final_cleanups): Ignore immediate functions for
expand_or_defer_fn.
* g++.dg/cpp2a/consteval26.C: New test.
Uros Bizjak [Mon, 10 Jan 2022 19:39:35 +0000 (20:39 +0100)]
tree-optimization/103948 - detect vector vec_cmp in expand_vector_condition
Currently, expand_vector_condition detects only vcondMN and vconduMN
named RTX patterns. Teach it to also consider vec_cmpMN and vec_cmpuMN
RTX patterns when all ones vector is returned for true and all zeros vector
is returned for false.
2022-01-10 Richard Biener <rguenther@suse.de>
gcc/ChangeLog:
PR tree-optimization/103948
* tree-vect-generic.c (expand_vector_condition): Return true if
all ones vector is returned for true, all zeros vector for false
and the target defines corresponding vec_cmp{,u}MN named RTX pattern.
Paul A. Clarke [Thu, 21 Oct 2021 01:34:06 +0000 (20:34 -0500)]
rs6000: Add Power10 optimization for _mm_blendv*
Power10 ISA added `xxblendv*` instructions which are realized in the
`vec_blendv` instrinsic.
Use `vec_blendv` for `_mm_blendv_epi8`, `_mm_blendv_ps`, and
`_mm_blendv_pd` compatibility intrinsics, when `_ARCH_PWR10`.
Update original implementation of _mm_blendv_epi8 to use signed types,
to better match the function parameters. Realization is unchanged.
Also, copy a test from i386 for testing `_mm_blendv_ps`.
This should have come with commit
ed04cf6d73e233c74c4e55c27f1cbd89ae4710e8,
but was inadvertently omitted.
2022-01-10 Paul A. Clarke <pc@us.ibm.com>
gcc
* config/rs6000/smmintrin.h (_mm_blendv_epi8): Use vec_blendv
when _ARCH_PWR10. Use signed types.
(_mm_blendv_ps): Use vec_blendv when _ARCH_PWR10.
(_mm_blendv_pd): Likewise.
gcc/testsuite
* gcc.target/powerpc/sse4_1-blendvps.c: Copy from gcc.target/i386,
adjust dg directives to suit.
Andre Vieira [Thu, 2 Dec 2021 14:34:15 +0000 (14:34 +0000)]
[vect] Re-analyze all modes for epilogues
gcc/ChangeLog:
* tree-vectorizer.c (better_epilogue_loop_than_p): Round factors up for
epilogue costing.
* tree-vect-loop.c (vect_analyze_loop): Re-analyze all modes for
epilogues, unless we are guaranteed that we can't have partial vectors.
* genopinit.c: (partial_vectors_supported): Generate new function.
gcc/testsuite/ChangeLog:
* gcc.target/aarch64/masked_epilogue.c: New test.
Paul Thomas [Mon, 10 Jan 2022 16:54:53 +0000 (16:54 +0000)]
Fortran: Pass unlimited polymorphic argument to assumed type [PR103366].
2022-01-10 Paul Thomas <pault@gcc.gnu.org>
gcc/fortran
PR fortran/103366
* trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Allow unlimited
polymorphic actual argument passed to assumed type formal.
gcc/testsuite/
PR fortran/103366
* gfortran.dg/pr103366.f90: New test.
Jakub Jelinek [Mon, 10 Jan 2022 16:43:23 +0000 (17:43 +0100)]
x86_64: Ignore zero width bitfields in ABI and issue -Wpsabi warning about C zero width bitfield ABI changes [PR102024]
For zero-width bitfields current GCC classify_argument does:
if (DECL_BIT_FIELD (field))
{
for (i = (int_bit_position (field)
+ (bit_offset % 64)) / 8 / 8;
i < ((int_bit_position (field) + (bit_offset % 64))
+ tree_to_shwi (DECL_SIZE (field))
+ 63) / 8 / 8; i++)
classes[i]
= merge_classes (X86_64_INTEGER_CLASS, classes[i]);
}
which I think means that if the zero-width bitfields are at bit-positions
(in the toplevel aggregate) which are multiples of 64 bits doesn't do
anything, (int_bit_position (field) + (bit_offset % 64)) / 64 and
(int_bit_position (field) + (bit_offset % 64) + 63) / 64 should be equal.
But for zero-width bitfields at other bit positions it will call
merge_classes once. Now, the typical case is that the zero width bitfield
is surrounded by some bitfields and in that case, it doesn't change
anything, but it can be sandwitched in between floats too as the testcases
show.
In C we had this behavior, in C++ previously the FE was removing the
zero-width bitfields and therefore they were ignored.
LLVM and ICC seems to ignore those bitfields both in C and C++ (== passing
struct S in SSE register rather than in GPR).
The x86-64 psABI has been recently clarified by
https://gitlab.com/x86-psABIs/x86-64-ABI/-/commit/
1aa4398d26c250b252a0c4a0f777216c9a6789ec
that zero width bitfield should be always ignored.
This patch implements that and emits a warning for C for cases where the ABI
changed from GCC 11.
2022-01-10 Jakub Jelinek <jakub@redhat.com>
PR target/102024
* config/i386/i386.c (classify_argument): Add zero_width_bitfields
argument, when seeing DECL_FIELD_CXX_ZERO_WIDTH_BIT_FIELD bitfields,
always ignore them, when seeing other zero sized bitfields, either
set zero_width_bitfields to 1 and ignore it or if equal to 2 process
it. Pass it to recursive calls. Add wrapper
with old arguments and diagnose ABI differences for C structures
with zero width bitfields. Formatting fixes.
* gcc.target/i386/pr102024.c: New test.
* g++.target/i386/pr102024.C: New test.
Martin Liska [Mon, 10 Jan 2022 16:10:52 +0000 (17:10 +0100)]
Partially sort MAINTAINERS.
ChangeLog:
* MAINTAINERS: Fix obvious issues with sorting.
Richard Sandiford [Mon, 10 Jan 2022 14:47:09 +0000 (14:47 +0000)]
ira: Handle "soft" conflicts between cap and non-cap allocnos
This patch looks for allocno conflicts of the following form:
- One allocno (X) is a cap allocno for some non-cap allocno X2.
- X2 belongs to some loop L2.
- The other allocno (Y) is a non-cap allocno.
- Y is an ancestor of some allocno Y2 in L2.
- Y2 is not referenced in L2 (that is, ALLOCNO_NREFS (Y2) == 0).
- Y can use a different allocation from Y2.
In this case, Y's register is live across L2 but is not used within it,
whereas X's register is used only within L2. The conflict is therefore
only "soft", in that it can easily be avoided by spilling Y2 inside L2
without affecting any insn references.
In principle we could do this for ALLOCNO_NREFS (Y2) != 0 too, with the
callers then taking Y2's ALLOCNO_MEMORY_COST into account. There would
then be no "cliff edge" between a Y2 that has no references and a Y2 that
has (say) a single cold reference.
However, doing that isn't necessary for the PR and seems to give
variable results in practice. (fotonik3d_r improves slightly but
namd_r regresses slightly.) It therefore seemed better to start
with the higher-value zero-reference case and see how things go.
On top of the previous patches in the series, this fixes the exchange2
regression seen in GCC 11.
gcc/
PR rtl-optimization/98782
* ira-int.h (ira_soft_conflict): Declare.
* ira-color.c (max_soft_conflict_loop_depth): New constant.
(ira_soft_conflict): New function.
(spill_soft_conflicts): Likewise.
(assign_hard_reg): Use them to handle the case described by
the comment above ira_soft_conflict.
(improve_allocation): Likewise.
* ira.c (check_allocation): Allow allocnos with "soft" conflicts
to share the same register.
gcc/testsuite/
* gcc.target/aarch64/reg-alloc-4.c: New test.
Richard Sandiford [Mon, 10 Jan 2022 14:47:08 +0000 (14:47 +0000)]
ira: Consider modelling caller-save allocations as loop spills
If an allocno A in an inner loop L spans a call, a parent allocno AP
can choose to handle a call-clobbered/caller-saved hard register R
in one of two ways:
(1) save R before each call in L and restore R after each call
(2) spill R to memory throughout L
(2) can be cheaper than (1) in some cases, particularly if L does
not reference A.
Before the patch we always did (1). The patch adds support for
picking (2) instead, when it seems cheaper. It builds on the
earlier support for not propagating conflicts to parent allocnos.
gcc/
PR rtl-optimization/98782
* ira-int.h (ira_caller_save_cost): New function.
(ira_caller_save_loop_spill_p): Likewise.
* ira-build.c (ira_propagate_hard_reg_costs): Test whether it is
cheaper to spill a call-clobbered register throughout a loop rather
than spill it around each individual call. If so, treat all
call-clobbered registers as conflicts and...
(propagate_allocno_info): ...do not propagate call information
from the child to the parent.
* ira-color.c (move_spill_restore): Update accordingly.
* ira-costs.c (ira_tune_allocno_costs): Use ira_caller_save_cost.
gcc/testsuite/
* gcc.target/aarch64/reg-alloc-3.c: New test.
Richard Sandiford [Mon, 10 Jan 2022 14:47:08 +0000 (14:47 +0000)]
ira: Try to avoid propagating conflicts
Suppose that:
- an inner loop L contains an allocno A
- L clobbers hard register R while A is live
- A's parent allocno is AP
Previously, propagate_allocno_info would propagate conflict sets up the
loop tree, so that the conflict between A and R would become a conflict
between AP and R (and so on for ancestors of AP).
However, when IRA treats loops as separate allocation regions, it can
decide on a loop-by-loop basis whether to allocate a register or spill
to memory. Conflicts in inner loops therefore don't need to become
hard conflicts in parent loops. Instead we can record that using the
“conflicting” registers for the parent allocnos has a higher cost.
In the example above, this higher cost is the sum of:
- the cost of saving R on entry to L
- the cost of keeping the pseudo register in memory throughout L
- the cost of reloading R on exit from L
This value is also a cap on the hard register cost that A can contribute
to AP in general (not just for conflicts). Whatever allocation we pick
for AP, there is always the option of spilling that register to memory
throughout L, so the cost to A of allocating a register to AP can't be
more than the cost of spilling A.
To take an extreme example: if allocating a register R2 to A is more
expensive than spilling A to memory, ALLOCNO_HARD_REG_COSTS (A)[R2]
could be (say) 2 times greater than ALLOCNO_MEMORY_COST (A) or 100
times greater than ALLOCNO_MEMORY_COST (A). But this scale factor
doesn't matter to AP. All that matters is that R2 is more expensive
than memory for A, so that allocating R2 to AP should be costed as
spilling A to memory (again assuming that A and AP are in different
allocation regions). Propagating a factor of 100 would distort the
register costs for AP.
move_spill_restore tries to undo the propagation done by
propagate_allocno_info, so we need some extra processing there.
gcc/
PR rtl-optimization/98782
* ira-int.h (ira_allocno::might_conflict_with_parent_p): New field.
(ALLOCNO_MIGHT_CONFLICT_WITH_PARENT_P): New macro.
(ira_single_region_allocno_p): New function.
(ira_total_conflict_hard_regs): Likewise.
* ira-build.c (ira_create_allocno): Initialize
ALLOCNO_MIGHT_CONFLICT_WITH_PARENT_P.
(ira_propagate_hard_reg_costs): New function.
(propagate_allocno_info): Use it. Try to avoid propagating
hard register conflicts to parent allocnos if we can handle
the conflicts by spilling instead. Limit the propagated
register costs to the cost of spilling throughout the child loop.
* ira-color.c (color_pass): Use ira_single_region_allocno_p to
test whether a child and parent allocno can share the same
register.
(move_spill_restore): Adjust for the new behavior of
propagate_allocno_info.
gcc/testsuite/
* gcc.target/aarch64/reg-alloc-2.c: New test.
Richard Sandiford [Mon, 10 Jan 2022 14:47:07 +0000 (14:47 +0000)]
ira: Add ira_subloop_allocnos_can_differ_p
color_pass has two instances of the same code for propagating non-cap
assignments from parent loops to subloops. This patch adds a helper
function for testing when such propagations are required for correctness
and uses it to remove the duplicated code.
A later patch will use this in ira-build.c too, which is why the
function is exported to ira-int.h.
No functional change intended.
gcc/
PR rtl-optimization/98782
* ira-int.h (ira_subloop_allocnos_can_differ_p): New function,
extracted from...
* ira-color.c (color_pass): ...here.
Richard Sandiford [Mon, 10 Jan 2022 14:47:07 +0000 (14:47 +0000)]
ira: Add comments and fix move_spill_restore calculation
This patch adds comments to describe each use of ira_loop_border_costs.
I think this highlights that move_spill_restore was using the wrong cost
in one case, which came from tranposing [0] and [1] in the original
(pre-ira_loop_border_costs) ira_memory_move_cost expressions. The
difference would only be noticeable on targets that distinguish between
load and store costs.
gcc/
PR rtl-optimization/98782
* ira-color.c (color_pass): Add comments to describe the spill costs.
(move_spill_restore): Likewise. Fix reversed calculation.
Richard Sandiford [Mon, 10 Jan 2022 14:47:07 +0000 (14:47 +0000)]
ira: Add a ira_loop_border_costs class
The final index into (ira_)memory_move_cost is 1 for loads and
0 for stores. Thus the combination:
entry_freq * memory_cost[1] + exit_freq * memory_cost[0]
is the cost of loading a register on entry to a loop and
storing it back on exit from the loop. This is the cost to
use if the register is successfully allocated within the
loop but is spilled in the parent loop. Similarly:
entry_freq * memory_cost[0] + exit_freq * memory_cost[1]
is the cost of storing a register on entry to the loop and
restoring it on exit from the loop. This is the cost to
use if the register is spilled within the loop but is
successfully allocated in the parent loop.
The patch adds a helper class for calculating these values and
mechanically replaces the existing instances. There is no attempt to
editorialise the choice between using “spill inside” and “spill outside”
costs. (I think one of them is the wrong way round, but a later patch
deals with that.)
No functional change intended.
gcc/
PR rtl-optimization/98782
* ira-int.h (ira_loop_border_costs): New class.
* ira-color.c (ira_loop_border_costs::ira_loop_border_costs):
New constructor.
(calculate_allocno_spill_cost): Use ira_loop_border_costs.
(color_pass): Likewise.
(move_spill_restore): Likewise.
Jakub Jelinek [Mon, 10 Jan 2022 14:38:47 +0000 (15:38 +0100)]
libstdc++: Add %j, %U, %w, %W time_get support, fix %y, %Y, %C, %p [PR77760]
glibc strptime passes around some state, what fields in struct tm have been
set and what needs to be finalized through possibly recursive calls, and
at the end performs various finalizations, like applying %p so that it
works for both %I %p and %p %I orders, or applying century so that both
%C %y and %y %C works, or computation of missing fields from others
(e.g. from %Y and %j one can compute tm_mon, tm_mday and tm_wday,
from %Y %U %w, %Y %W %w, %Y %U %a, or %Y %W %w one can compute
tm_mon, tm_mday, tm_yday or e.g. from %Y %m %d one can compute tm_wday
and tm_yday.
As the finalization is quite large and doesn't need to be a template
(doesn't depend on any iterators or char types), I've put it into libstdc++,
and left some padding in the state struct, so that perhaps in the future we
can track some more state without changing ABI.
Unfortunately, there is an ugly problem that the standard mandates that
get method calls the do_get virtual method and I don't see how we can
cary on any state in between those calls (even if we did an ABI change
for the facets, the methods are const, so that I think multiple threads
could use the same time_get objects and we couldn't store state in there).
There is a hack for that for GCC (seems to work with ICC too, doesn't work
with clang++) if the do_get method isn't overriden we can pass the state
around.
For both do_get_year and per IRC discussions also for %y, the behavior is
if 1-2 digits are parsed, the year is treated according to POSIX 2008 %y
rules (0-68 is 2000-2068, 69-99 is 1969-1999), if 3-4 digits are parsed,
it is treated as %Y.
2022-01-10 Jakub Jelinek <jakub@redhat.com>
PR libstdc++/77760
* include/bits/locale_facets_nonio.h (__time_get_state): New struct.
(time_get::_M_extract_via_format): Declare new method with
__time_get_state& as an extra argument.
* include/bits/locale_facets_nonio.tcc (_M_extract_via_format): Add
__state argument, set various fields in it while parsing. Handle %j,
%U, %w and %W, fix up handling of %y, %Y and %C, don't adjust tm_hour
for %p immediately. Add a wrapper around the method without the
__state argument for backwards compatibility.
(_M_extract_num): Remove all __len == 4 special cases.
(time_get::do_get_time, time_get::do_get_date, time_get::do_get): Zero
initialize __state, pass it to _M_extract_via_format and finalize it
at the end.
(do_get_year): For 1-2 digit parsed years, map 0-68 to 2000-2068,
69-99 to 1969-1999. For 3-4 digit parsed years use that as year.
(get): If do_get isn't overloaded from the locale_facets_nonio.tcc
version, don't call do_get but call _M_extract_via_format instead to
pass around state.
* config/abi/pre/gnu.ver (GLIBCXX_3.4.30): Export _M_extract_via_format
with extra __time_get_state and __time_get_state::_M_finalize_state.
* src/c++98/locale_facets.cc (is_leap, day_of_the_week,
day_of_the_year): New functions in anon namespace.
(mon_yday): New var in anon namespace.
(__time_get_state::_M_finalize_state): Define.
* testsuite/22_locale/time_get/get/char/4.cc: New test.
* testsuite/22_locale/time_get/get/wchar_t/4.cc: New test.
* testsuite/22_locale/time_get/get_year/char/1.cc (test01): Parse 197
as year 197AD instead of error.
* testsuite/22_locale/time_get/get_year/char/5.cc (test01): Parse 1 as
year 2001 instead of error.
* testsuite/22_locale/time_get/get_year/char/6.cc: New test.
* testsuite/22_locale/time_get/get_year/wchar_t/1.cc (test01): Parse
197 as year 197AD instead of error.
* testsuite/22_locale/time_get/get_year/wchar_t/5.cc (test01): Parse
1 as year 2001 instead of error.
* testsuite/22_locale/time_get/get_year/wchar_t/6.cc: New test.
Jonathan Wakely [Thu, 6 Jan 2022 13:54:53 +0000 (13:54 +0000)]
libstdc++: Fix and simplify freestanding configuration [PR103866]
This fixes the --disable-hosted-libstdcxx build so that it works with
--without-headers. Currently you need to also use --with-newlib, which
is confusing for users who aren't actually using newlib.
The AM_PROG_LIBTOOL checks are currently skipped for --with-newlib and
--with-avrlibc builds, with this change they are also skipped when using
--without-headers. It would be nice if using --disable-hosted-libstdcxx
automatically skipped those checks, but GLIBCXX_ENABLE_HOSTED comes too
late to make the AM_PROG_LIBTOOL checks depend on $is_hosted.
The checks for EOF, SEEK_CUR etc. cause the build to fail if there is no
<stdio.h> available. Unlike most headers, which get a HAVE_FOO_H macro,
<stdio.h> is in autoconf's default includes, so every check tries to
include it unconditionally. This change skips those checks for
freestanding builds.
Similarly, the checks for <stdint.h> types done by GCC_HEADER_STDINT try
to include <stdio.h> and fail for --without-headers builds. This change
skips the use of GCC_HEADER_STDINT for freestanding. We can probably
stop using GCC_HEADER_STDINT entirely, since only one file uses the
gstdint.h header that is generated, and that could easily be changed to
use <stdint.h> instead. That can wait for stage 1.
We also need to skip the GLIBCXX_CROSSCONFIG stage if --without-headers
was used, since we don't have any of the functions it deals with.
The end result of the changes above is that it should not be necessary
for a --disable-hosted-libstdcxx --without-headers build to also use
--with-newlib.
Finally, compile libsupc++ with -ffreestanding when --without-headers is
used, so that <stdint.h> will use <gcc-stdint.h> instead of expecting it
to come from libc.
libstdc++-v3/ChangeLog:
PR libstdc++/103866
* acinclude.m4 (GLIBCXX_COMPUTE_STDIO_INTEGER_CONSTANTS): Do
nothing for freestanding builds.
(GLIBCXX_ENABLE_HOSTED): Define FREESTANDING_FLAGS.
* configure.ac: Do not use AC_LIBTOOL_DLOPEN when configured
with --without-headers. Do not use GCC_HEADER_STDINT for
freestanding builds.
* libsupc++/Makefile.am (HOSTED_CXXFLAGS): Use -ffreestanding
for freestanding builds.
* configure: Regenerate.
* Makefile.in: Regenerate.
* doc/Makefile.in: Regenerate.
* include/Makefile.in: Regenerate.
* libsupc++/Makefile.in: Regenerate.
* po/Makefile.in: Regenerate.
* python/Makefile.in: Regenerate.
* src/Makefile.in: Regenerate.
* src/c++11/Makefile.in: Regenerate.
* src/c++17/Makefile.in: Regenerate.
* src/c++20/Makefile.in: Regenerate.
* src/c++98/Makefile.in: Regenerate.
* src/filesystem/Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.
Jonathan Wakely [Fri, 7 Jan 2022 21:15:48 +0000 (21:15 +0000)]
libstdc++: Add dg-timeout-factor to some more regex tests
I'm seeing these fail with tool_timeout=30 on a busy machine.
libstdc++-v3/ChangeLog:
* testsuite/28_regex/algorithms/regex_replace/char/103664.cc:
Add dg-timeout-factor directive.
* testsuite/28_regex/basic_regex/84110.cc: Likewise.
* testsuite/28_regex/basic_regex/ctors/char/other.cc: Likewise.
* testsuite/28_regex/match_results/102667.cc: Likewise.