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.
Jonathan Wakely [Mon, 10 Jan 2022 11:23:12 +0000 (11:23 +0000)]
libstdc++: Update default -std option in manual
libstdc++-v3/ChangeLog:
* doc/xml/manual/using.xml: Update documentation around default
-std option.
* doc/html/*: Regenerate.
Jonathan Wakely [Fri, 7 Jan 2022 15:21:03 +0000 (15:21 +0000)]
libstdc++: Add -nostdinc++ for c++17 sources [PR100017]
When building a build!=host compiler, the just-built gcc can't be used
to build the target libstdc++ (because it is built for the host triplet,
not the build triplet). The top-level configure.ac sets up the build
flags for libstdc++ (and other "raw_cxx" libs) like this:
GCC_TARGET_TOOL(c++ for libstdc++, RAW_CXX_FOR_TARGET, CXX,
[gcc/xgcc -shared-libgcc -B$$r/$(HOST_SUBDIR)/gcc -nostdinc++ -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/libsupc++/.libs],
c++)
The -nostdinc++ flag is only used for the IN-TREE-TOOL, i.e. when using
the just-built gcc/xgcc compiler. This means that the cross-compiler
used to build libstdc++ will add its own libstdc++ headers to the
include path. That results in the #include <cfenv> in
src/c++17/floating_to_chars.cc and src/c++17/floating_from_chars.cc
doing #include_next <fenv.h> and finding the libstdc++ fenv.h wrapper
from the host compiler. Because that has the same include guard as the
<fenv.h> in the libstdc++ we're trying to build, we never reach the
underlying <fenv.h> from libc. That results in several errors of the
form:
error: 'fenv_t' has not been declared in '::'
The most correct fix would be to add -nostdinc++ to the
RAW_CXX_FOR_TARGET variable in configure.ac, or the
RAW_CXX_TARGET_EXPORTS variable in Makefile.tpl.
Another solution would be to make the libstdc++ <fenv.h> wrapper use
_GLIBCXX_INCLUDE_NEXT_C_HEADERS like our <stdlib.h> and other C header
wrappers.
For now though, the simplest and safest solution is to just add
-nostdinc++ to the CXXFLAGS used for src/c++17/*.cc, which is what this
does.
libstdc++-v3/ChangeLog:
PR libstdc++/100017
* src/c++17/Makefile.am (AM_CXXFLAGS): Add -nostdinc++.
* src/c++17/Makefile.in: Regenerate.
Eric Botcazou [Mon, 10 Jan 2022 11:40:10 +0000 (12:40 +0100)]
Properly enable -freorder-blocks-and-partition on 64-bit Windows
The PR uncovered that -freorder-blocks-and-partition was working by accident
on 64-bit Windows, i.e. the middle-end was supposed to disable it with SEH.
After the change installed on mainline, the middle-end properly disables it,
which is too bad since a significant amount of work went into it for SEH.
gcc/
PR target/103465
* coretypes.h (unwind_info_type): Swap UI_SEH and UI_TARGET.
Francois-Xavier Coudert [Sun, 2 Jan 2022 10:36:23 +0000 (11:36 +0100)]
Fortran: Allow IEEE_CLASS to identify signaling NaNs
We use the issignaling macro, present in some libc's (notably glibc),
when it is available. Compile all IEEE-related files in the library
(both C and Fortran sources) with -fsignaling-nans to ensure maximum
compatibility.
libgfortran/ChangeLog:
PR fortran/82207
* Makefile.am: Pass -fsignaling-nans for IEEE files.
* Makefile.in: Regenerate.
* ieee/ieee_helper.c: Use issignaling macro to recognized
signaling NaNs.
gcc/testsuite/ChangeLog:
PR fortran/82207
* gfortran.dg/ieee/signaling_1.f90: New test.
* gfortran.dg/ieee/signaling_1_c.c: New file.
Richard Biener [Wed, 5 Jan 2022 14:13:33 +0000 (15:13 +0100)]
middle-end/101530 - fix shufflevector lowering
This makes __builtin_shufflevector lowering force the result
of the BIT_FIELD_REF lowpart operation to a temporary as to
fulfil the IL verifier constraint that BIT_FIELD_REFs should
be always in outermost handled component position. Trying to
enforce this during gimplification isn't as straight-forward
as here where we know we're dealing with an rvalue.
FAIL: c-c++-common/torture/builtin-shufflevector-1.c -O0 execution test
2022-01-05 Richard Biener <rguenther@suse.de>
PR middle-end/101530
gcc/c-family/
* c-common.c (c_build_shufflevector): Wrap the BIT_FIELD_REF
in a TARGET_EXPR to force a temporary.
gcc/testsuite/
* c-c++-common/builtin-shufflevector-3.c: New testcase.
Richard Biener [Wed, 5 Jan 2022 15:29:53 +0000 (16:29 +0100)]
tree-optimization/100359 - restore unroll at -O3
This fixes a mistake done with r8-5008 when introducing
allow_peel to the unroll code. The intent was to allow
peeling that doesn't grow code but the result was that
with -O3 and UL_ALL this wasn't done. The following
instantiates the desired effect by adjusting ul to UL_NO_GROWTH
if peeling is not allowed.
2022-01-05 Richard Biener <rguenther@suse.de>
PR tree-optimization/100359
* tree-ssa-loop-ivcanon.c (try_unroll_loop_completely):
Allow non-growing peeling with !allow_peel and UL_ALL.
* gcc.dg/tree-ssa/pr100359.c: New testcase.
Eric Botcazou [Thu, 23 Dec 2021 15:48:11 +0000 (16:48 +0100)]
[Ada] Fix bogus error on call to subprogram with incomplete profile
gcc/ada/
* gcc-interface/trans.c (Identifier_to_gnu): Use correct subtype.
(elaborate_profile): New function.
(Call_to_gnu): Call it on the formals and the result type before
retrieving the translated result type from the subprogram type.
Eric Botcazou [Tue, 21 Dec 2021 23:02:15 +0000 (00:02 +0100)]
[Ada] Fix internal error on unchecked union with component clauses
gcc/ada/
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: Fix
computation of boolean result in the unchecked union case.
(components_to_record): Rename MAYBE_UNUSED parameter to IN_VARIANT
and remove local variable of the same name. Pass NULL recursively
as P_GNU_REP_LIST for nested variants in the unchecked union case.
Eric Botcazou [Sat, 18 Dec 2021 21:36:40 +0000 (22:36 +0100)]
[Ada] Make pragma Inspection_Point work for constants
gcc/ada/
* gcc-interface/trans.c (lvalue_required_p) <N_Pragma>: New case.
<N_Pragma_Argument_Association>: Likewise.
(Pragma_to_gnu) <Pragma_Inspection_Point>: Fetch the corresponding
variable of a constant before marking it as addressable.
Arnaud Charlet [Mon, 29 Nov 2021 10:15:26 +0000 (10:15 +0000)]
[Ada] Reduce runtime dependencies on stage1
gcc/ada/
* gcc-interface/Make-lang.in (ADA_GENERATED_FILES): Remove
s-casuti.ad?, s-crtl.ad?, s-os_lib.ad?. Update list of object
files accordingly.
Piotr Trojanek [Fri, 31 Dec 2021 10:40:47 +0000 (11:40 +0100)]
[Ada] Switch from __sync to __atomic builtins for Lock_Free_Try_Write
gcc/ada/
* libgnat/s-atopri.ads (Atomic_Compare_Exchange): Replaces
deprecated Sync_Compare_And_Swap.
* libgnat/s-atopri.adb (Lock_Free_Try_Write): Switch from __sync
to __atomic builtins.
Piotr Trojanek [Thu, 30 Dec 2021 12:15:56 +0000 (13:15 +0100)]
[Ada] Remove CodePeer annotations for pragma Loop_Variant
gcc/ada/
* libgnat/s-exponn.adb, libgnat/s-expont.adb,
libgnat/s-exponu.adb, libgnat/s-widthi.adb,
libgnat/s-widthu.adb: Remove CodePeer annotations for pragma
Loop_Variant.
Piotr Trojanek [Thu, 30 Dec 2021 12:08:58 +0000 (13:08 +0100)]
[Ada] Disable expansion of pragma Loop_Variant in CodePeer mode
gcc/ada/
* exp_prag.adb (Expand_Pragma_Loop_Variant): Disable expansion
in CodePeer mode.
Piotr Trojanek [Mon, 27 Dec 2021 19:41:42 +0000 (20:41 +0100)]
[Ada] Fix typo in comment about unit families
gcc/ada/
* sem_util.adb (Is_Child_Or_Sibling): Fix typo in comment.
Eric Botcazou [Thu, 30 Dec 2021 19:06:50 +0000 (20:06 +0100)]
[Ada] Adjust the alignment to the size for bit-packed arrays
gcc/ada/
* exp_pakd.adb (Install_PAT): If the PAT is a scalar type, apply
the canonical adjustment to its alignment.
Piotr Trojanek [Thu, 30 Dec 2021 17:07:19 +0000 (18:07 +0100)]
[Ada] Switch from __sync to __atomic builtins for atomic counters
gcc/ada/
* libgnat/s-atocou__builtin.adb (Decrement, Increment): Switch
from __sync to __atomic builtins; use 'Address to be consistent
with System.Atomic_Primitives.
Eric Botcazou [Wed, 29 Dec 2021 22:33:21 +0000 (23:33 +0100)]
[Ada] Fix error on too large size clause for bit-packed array
gcc/ada/
* exp_pakd.adb (Install_PAT): Do not reset the alignment here.
* layout.adb (Layout_Type): Call Adjust_Esize_Alignment after having
copied the RM_Size onto the Esize when the latter is too small.
Justin Squirek [Thu, 23 Dec 2021 04:09:05 +0000 (04:09 +0000)]
[Ada] Task arrays trigger spurious unreferenced warnings
gcc/ada/
* sem_warn.adb (Check_References): Handle arrays of tasks
similar to task objects.
GCC Administrator [Mon, 10 Jan 2022 00:16:20 +0000 (00:16 +0000)]
Daily bump.
Harald Anlauf [Mon, 20 Dec 2021 21:59:53 +0000 (22:59 +0100)]
Fortran: check arguments of MASKL/MASKR intrinsics before simplification
gcc/fortran/ChangeLog:
PR fortran/103777
* simplify.c (gfc_simplify_maskr): Check validity of argument 'I'
before simplifying.
(gfc_simplify_maskl): Likewise.
gcc/testsuite/ChangeLog:
PR fortran/103777
* gfortran.dg/masklr_3.f90: New test.
Harald Anlauf [Sun, 9 Jan 2022 21:08:14 +0000 (22:08 +0100)]
Fortran: reject invalid non-constant pointer initialization targets
gcc/fortran/ChangeLog:
PR fortran/101762
* expr.c (gfc_check_pointer_assign): For pointer initialization
targets, check that subscripts and substring indices in
specifications are constant expressions.
gcc/testsuite/ChangeLog:
PR fortran/101762
* gfortran.dg/pr101762.f90: New test.
Mikael Morin [Fri, 7 Jan 2022 21:34:59 +0000 (22:34 +0100)]
Fortran: Ignore KIND argument of a few more intrinsics. [PR103789]
After PR97896 for which some code was added to ignore the KIND argument
of the INDEX intrinsics, and PR87711 for which that was extended to LEN_TRIM
as well, this propagates it further to MASKL, MASKR, SCAN and VERIFY.
PR fortran/103789
gcc/fortran/ChangeLog:
* trans-array.c (arg_evaluated_for_scalarization): Add MASKL, MASKR,
SCAN and VERIFY to the list of intrinsics whose KIND argument is to be
ignored.
gcc/testsuite/ChangeLog:
* gfortran.dg/maskl_1.f90: New test.
* gfortran.dg/maskr_1.f90: New test.
* gfortran.dg/scan_3.f90: New test.
* gfortran.dg/verify_3.f90: New test.
Sandra Loosemore [Sun, 9 Jan 2022 06:02:13 +0000 (22:02 -0800)]
Testsuite: Make dependence on -fdelete-null-pointer-checks explicit
nios2-elf target defaults to -fno-delete-null-pointer-checks, breaking
tests that implicitly depend on that optimization. Add the option
explicitly on these tests.
2022-01-08 Sandra Loosemore <sandra@codesourcery.com>
gcc/testsuite/
* g++.dg/cpp0x/constexpr-compare1.C: Add explicit
-fdelete-null-pointer-checks option.
* g++.dg/cpp0x/constexpr-compare2.C: Likewise.
* g++.dg/cpp0x/constexpr-typeid2.C: Likewise.
* g++.dg/cpp1y/constexpr-94716.C: Likewise.
* g++.dg/cpp1z/constexpr-compare1.C: Likewise.
* g++.dg/cpp1z/constexpr-if36.C: Likewise.
* gcc.dg/init-compare-1.c: Likewise.
libstdc++-v3/
* testsuite/18_support/type_info/constexpr.cc: Add explicit
-fdelete-null-pointer-checks option.
GCC Administrator [Sun, 9 Jan 2022 00:16:20 +0000 (00:16 +0000)]
Daily bump.
Roger Sayle [Sat, 8 Jan 2022 12:27:50 +0000 (12:27 +0000)]
x86_64: Improve (interunit) moves from TImode to V1TImode.
This patch improves the code generated when moving a 128-bit value
in TImode, represented by two 64-bit registers, to V1TImode, which
is a single SSE register.
Currently, the simple move:
typedef unsigned __int128 uv1ti __attribute__ ((__vector_size__ (16)));
uv1ti foo(__int128 x) { return (uv1ti)x; }
is always transferred via memory, as:
foo: movq %rdi, -24(%rsp)
movq %rsi, -16(%rsp)
movdqa -24(%rsp), %xmm0
ret
with this patch, we now generate (with -msse2):
foo: movq %rdi, %xmm1
movq %rsi, %xmm2
punpcklqdq %xmm2, %xmm1
movdqa %xmm1, %xmm0
ret
and with -mavx2:
foo: vmovq %rdi, %xmm1
vpinsrq $1, %rsi, %xmm1, %xmm0
ret
Even more dramatic is the improvement of zero extended transfers.
uv1ti bar(unsigned char c) { return (uv1ti)(__int128)c; }
Previously generated:
bar: movq $0, -16(%rsp)
movzbl %dil, %eax
movq %rax, -24(%rsp)
vmovdqa -24(%rsp), %xmm0
ret
Now generates:
bar: movzbl %dil, %edi
movq %rdi, %xmm0
ret
My first attempt at this functionality attempted to use a simple
define_split, but unfortunately, this triggers very late during the
compilation preventing some of the simplifications we'd like (in
combine). For example the foo case above becomes:
foo: movq %rsi, -16(%rsp)
movq %rdi, %xmm0
movhps -16(%rsp), %xmm0
transferring half directly, and the other half via memory.
And for the bar case above, GCC fails to appreciate that
movq/vmovq clears the high bits, resulting in:
bar: movzbl %dil, %eax
xorl %edx, %edx
vmovq %rax, %xmm1
vpinsrq $1, %rdx, %xmm1, %xmm0
ret
Hence the solution (i.e. this patch) is to add a special case
to ix86_expand_vector_move for TImode to V1TImode transfers.
2022-01-08 Roger Sayle <roger@nextmovesoftware.com>
gcc/ChangeLog
* config/i386/i386-expand.c (ix86_expand_vector_move): Add
special case for TImode to V1TImode moves, going via V2DImode.
gcc/testsuite/ChangeLog
* gcc.target/i386/sse2-v1ti-mov-1.c: New test case.
* gcc.target/i386/sse2-v1ti-zext.c: New test case.
Jakub Jelinek [Sat, 8 Jan 2022 08:53:00 +0000 (09:53 +0100)]
c++, match.pd: Evaluate in constant evaluation comparisons like &var1 + 12 == &var2 + 24 [PR89074]
The match.pd address_comparison simplification can only handle
ADDR_EXPR comparisons possibly converted to some other type (I wonder
if we shouldn't restrict it in address_compare to casts to pointer
types or pointer-sized integer types, I think we shouldn't optimize
(short) (&var) == (short) (&var2) because we really don't know whether
it will be true or false). On GIMPLE, most of pointer to pointer
casts are useless and optimized away and further we have in
gimple_fold_stmt_to_constant_1 an optimization that folds
&something p+ const_int
into
&MEM_REF[..., off]
On GENERIC, we don't do that and e.g. for constant evaluation it
could be pretty harmful if e.g. such pointers are dereferenced, because
it can lose what exact field it was starting with etc., all it knows
is the base and offset, type and alias set.
Instead of teaching the match.pd address_compare about 3 extra variants
where one or both compared operands are pointer_plus, this patch attempts
to fold operands of comparisons similarly to gimple_fold_stmt_to_constant_1
before calling fold_binary on it.
There is another thing though, while we do have (x p+ y) p+ z to
x p+ (y + z) simplification which works on GIMPLE well because of the
useless pointer conversions, on GENERIC we can have pointer casts in between
and at that point we can end up with large expressions like
((type3) (((type2) ((type1) (&var + 2) + 2) + 2) + 2))
etc. Pointer-plus doesn't really care what exact pointer type it has as
long as it is a pointer, so the following match.pd simplification for
GENERIC only (it is useless for GIMPLE) also moves the cast so that nested
p+ can be simplified.
Note, I've noticed we don't really diagnose going out of bounds with
pointer_plus (unlike e.g. with ARRAY_REF) during constant evaluation, I
think another patch for cxx_eval_binary_expression with POINTER_PLUS will be
needed. But it isn't clear to me what exactly it should do in case of
subobjects. If we start with address of a whole var, (&var), I guess we
should diagnose if the pointer_plus gets before start of the var (i.e.
"negative") or 1 byte past the end of the var, but what if we start with
&var.field or &var.field[3] ? For &var.field, shall we diagnose out of
bounds of field (except perhaps flexible members?) or the whole var?
For ARRAY_REFs, I assume we must at least strip all the outer ARRAY_REFs
and so start with &var.field too, right?
2022-01-08 Jakub Jelinek <jakub@redhat.com>
PR c++/89074
gcc/
* match.pd ((ptr) (x p+ y) p+ z -> (ptr) (x p+ (y + z))): New GENERIC
simplification.
gcc/cp/
* constexpr.c (cxx_maybe_fold_addr_pointer_plus): New function.
(cxx_eval_binary_expression): Use it.
gcc/testsuite/
* g++.dg/cpp1y/constexpr-89074-2.C: New test.
* g++.dg/cpp1z/constexpr-89074-1.C: New test.
Jason Merrill [Sat, 8 Jan 2022 06:18:51 +0000 (01:18 -0500)]
c++: default mem-init of array [PR103946]
In the patch for PR92385 I added asserts to see if we tried to make a
vec_init of a vec_init, but didn't see any in regression testing. This
testcase is one case, which seems reasonable: we create a VEC_INIT_EXPR for
the aggregate initializer, and then again to express the actual
initialization of the member. We already do similar collapsing of
TARGET_EXPR. So let's just remove the asserts.
PR c++/103946
gcc/cp/ChangeLog:
* init.c (build_vec_init): Remove assert.
* tree.c (build_vec_init_expr): Likewise.
gcc/testsuite/ChangeLog:
* g++.dg/cpp0x/nsdmi-array1.C: New test.
Jason Merrill [Thu, 6 Jan 2022 18:26:21 +0000 (13:26 -0500)]
c++: destroying delete, throw in new-expr [PR100588]
The standard says that a destroying operator delete is preferred, but that
only applies to the delete-expression, not the cleanup if a new-expression
initialization throws. As a result of this patch, several of the destroying
delete tests don't get EH cleanups, but I'm turning off the warning in cases
where the initialization can't throw anyway.
It's unclear what should happen if the class does not declare a non-deleting
operator delete; a proposal in CWG was to call the global delete, which
makes sense to me if the class doesn't declare its own operator new. If it
does, we warn and don't call any deallocation function if initialization
throws.
PR c++/100588
gcc/cp/ChangeLog:
* call.c (build_op_delete_call): Ignore destroying delete
if alloc_fn.
gcc/testsuite/ChangeLog:
* g++.dg/cpp2a/destroying-delete5.C: Expect warning.
* g++.dg/cpp2a/destroying-delete6.C: New test.
GCC Administrator [Sat, 8 Jan 2022 00:16:27 +0000 (00:16 +0000)]
Daily bump.
David Malcolm [Thu, 6 Jan 2022 16:43:36 +0000 (11:43 -0500)]
analyzer: add logging of aliasing
gcc/analyzer/ChangeLog:
* engine.cc (impl_run_checkers): Pass logger to engine ctor.
* region-model-manager.cc
(region_model_manager::region_model_manager): Add logger param and
use it to initialize m_logger.
* region-model.cc (engine::engine): New.
* region-model.h (region_model_manager::region_model_manager):
Add logger param.
(region_model_manager::get_logger): New.
(region_model_manager::m_logger): New field.
(engine::engine): New.
* store.cc (store_manager::get_logger): New.
(store::set_value): Log scope. Log when marking a cluster as
unknown due to possible aliasing.
* store.h (store_manager::get_logger): New decl.
David Malcolm [Fri, 7 Jan 2022 18:36:00 +0000 (13:36 -0500)]
analyzer: implement __analyzer_dump_escaped
PR analyzer/103546 seems to involve an issue in how the analyzer
tracks which decls have escaped, so this patch adds a way to directly
test this from DejaGnu.
gcc/analyzer/ChangeLog:
* region-model-impl-calls.cc (cmp_decls): New.
(cmp_decls_ptr_ptr): New.
(region_model::impl_call_analyzer_dump_escaped): New.
* region-model.cc (region_model::on_stmt_pre): Handle
__analyzer_dump_escaped.
* region-model.h (region_model::impl_call_analyzer_dump_escaped):
New decl.
* store.h (binding_cluster::get_base_region): New accessor.
gcc/ChangeLog:
* doc/analyzer.texi
(Special Functions for Debugging the Analyzer): Document
__analyzer_dump_escaped.
gcc/testsuite/ChangeLog:
* gcc.dg/analyzer/analyzer-decls.h (__analyzer_dump_escaped): New
decl.
* gcc.dg/analyzer/escaping-1.c: New test.
David Malcolm [Fri, 7 Jan 2022 18:49:28 +0000 (13:49 -0500)]
analyzer: add region::is_named_decl_p
This patch adds a debug function that I've found handy when debugging
a problem with handling the decl "yy_buffer_stack" in PR analyzer/103546.
gcc/analyzer/ChangeLog:
* region.cc (region::is_named_decl_p): New.
* region.h (region::is_named_decl_p): New decl.
gcc/ChangeLog:
* doc/analyzer.texi (Other Debugging Techniques): Document
region::is_named_decl_p.
Signed-off-by: David Malcolm <dmalcolm@redhat.com>
Jason Merrill [Thu, 6 Jan 2022 21:13:04 +0000 (16:13 -0500)]
c++: check delete access with trivial init [PR20040]
Apparently we need to check the accessibility of the deallocation function
even if there is no initialization.
PR c++/20040
gcc/cp/ChangeLog:
* init.c (build_new_1): Also build pointer cleanup if
TYPE_GETS_DELETE.
* cp-tree.h (TYPE_GETS_VEC_DELETE): New.
gcc/testsuite/ChangeLog:
* g++.dg/init/delete4.C: New test.
Andrew Pinski [Tue, 26 Oct 2021 07:28:09 +0000 (07:28 +0000)]
target: [PR102941] Fix inline-asm flags with non-REG_P output
So the problem here is that arm_md_asm_adjust would
just create a set directly to the output memory which is wrong.
It needs to output to a temp register first and then do a
move.
OK? Bootstrapped and tested on aarch64-linux-gnu with no regressions.
I have no way to test on arm even though this touches common code.
PR target/102941
gcc/ChangeLog:
* config/arm/aarch-common.c (arm_md_asm_adjust):
Use a temp if !REG_P.
gcc/testsuite/ChangeLog:
* gcc.target/aarch64/asm-flag-7.c: New test.
* gcc.target/arm/asm-flag-7.c: New test.
Uros Bizjak [Fri, 7 Jan 2022 19:40:35 +0000 (20:40 +0100)]
i386: Robustify V2QI and V4QI move patterns
Add sse2 isa attribute where needed and remove where not needed.
2022-01-07 Uroš Bizjak <ubizjak@gmail.com>
gcc/ChangeLog:
* config/i386/mmx.md (*move<V_32:mode>_internal): Add isa attribute.
(*movv2qi_internal): Remve sse2 requirement for alternatives 4,5.
Patrick Bernardi [Wed, 22 Dec 2021 21:32:41 +0000 (16:32 -0500)]
[Ada] Read directory in Ada.Directories.Start_Search rather than Get_Next_Entry
gcc/ada/
* libgnat/a-direct.adb (Search_Data): Remove type.
(Directory_Vectors): New package instantiation.
(Search_State): New type.
(Fetch_Next_Entry): Remove.
(Close): Remove.
(Finalize): Rewritten.
(Full_Name): Ditto.
(Get_Next_Entry): Return next entry from Search results vector
rather than querying the directory directly using readdir.
(Kind): Rewritten.
(Modification_Time): Rewritten.
(More_Entries): Use Search state cursor to determine if more
entries are available for users to read.
(Simple_Name): Rewritten.
(Size): Rewritten.
(Start_Search_Internal): Rewritten to load the contents of the
directory that matches the pattern and filter into the search
object.
* libgnat/a-direct.ads (Search_Type): New type.
(Search_Ptr): Ditto.
(Directory_Entry_Type): Rewritten to support new Start_Search
procedure.
* libgnat/s-filatt.ads (File_Length_Attr): New function.
Etienne Servais [Thu, 16 Dec 2021 13:17:40 +0000 (14:17 +0100)]
[Ada] Fix the check of the 'Old prefix
gcc/ada/
* sem_attr.adb (Check_Reference): Fix condition.
Ghjuvan Lacambre [Wed, 22 Dec 2021 09:24:29 +0000 (10:24 +0100)]
[Ada] Fix uses of pragma Unreferenced in MinGW runtime unit
gcc/ada/
* libgnarl/s-taprop__mingw.adb (Timed_Sleep): Remove "pragma
Unreferenced" for Result.
(Timed_Delay): Likewise.
Piotr Trojanek [Tue, 21 Dec 2021 14:44:47 +0000 (15:44 +0100)]
[Ada] Fix layout of pragma Inline in generated AST unit
gcc/ada/
* gen_il-gen.adb (Put_Make_Decls): Put pragma Inline in a
dedicated line, so that the current indentation is taken into
account.
Piotr Trojanek [Tue, 21 Dec 2021 14:33:56 +0000 (15:33 +0100)]
[Ada] Fix style in expansion of multi-dimensional array aggregates
gcc/ada/
* exp_aggr.adb (Build_Array_Aggr_Code): Fix inconsistent style
in comments and code.