aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/exp_ch3.adb
AgeCommit message (Collapse)AuthorFilesLines
2023-06-15ada: Fix too small secondary stack allocation for returned aggregateEric Botcazou1-3/+14
This restores the specific treatment of aggregates that are returned through an extended return statement in a function returning a class-wide type, and which was incorrectly dropped in an earlier change. gcc/ada/ * exp_ch3.adb (Make_Allocator_For_Return): Deal again specifically with an aggregate returned through an object of a class-wide type.
2023-06-13ada: Factor out tag assignments from type in expanderEric Botcazou1-58/+14
They are performed in a few different places during expansion. gcc/ada/ * exp_util.ads (Make_Tag_Assignment_From_Type): Declare. * exp_util.adb (Make_Tag_Assignment_From_Type): New function. * exp_aggr.adb (Build_Record_Aggr_Code): Call the above function. (Initialize_Simple_Component): Likewise. * exp_ch3.adb (Build_Record_Init_Proc.Build_Assignment): Likewise. (Build_Record_Init_Proc.Build_Init_Procedure ): Likewise. (Make_Tag_Assignment): Likewise. Rename local variable and call Unqualify to go through qualified expressions. * exp_ch4.adb (Expand_Allocator_Expression): Likewise.
2023-06-13ada: Remove explicit decoration of wrapper created in freezingPiotr Trojanek1-2/+0
We create wrapper functions associated with inherited functions with controlling results which are not overridden during freezing. We partly decorated them explicitly, even though they would be fully decorated later anyway. This early decoration didn't work as expected, because flag In_Private_Part that is read by Override_Dispatching_Operation it not set reliably while freezing (as explained in the comment of Is_Private_Declaration). In effect, we were getting a circularity between Alias and Overridden_Operation, which was causing GNATprove to loop infinitely. Apparently the cleanest fix is to not decorate the wrapper with an early call to Override_Dispatching_Operation. gcc/ada/ * exp_ch3.adb (Make_Controlling_Function_Wrappers): Remove early decoration.
2023-05-30ada: Only build access-to-subprogram wrappers when expander is activePiotr Trojanek1-4/+0
For access-to-subprogram types with Pre/Post aspects we create a wrapper routine that evaluates these aspects. Spec of this wrapper was created always, while its body was only created when expansion was enabled. Now we only create these wrappers when expansion is enabled. In particular, we don't create them in GNATprove mode; instead, GNATprove picks the Pre/Post expressions directly from the aspects. gcc/ada/ * exp_ch3.adb (Build_Access_Subprogram_Wrapper_Body): Build wrapper body if requested by routine that builds wrapper spec. * sem_ch3.adb (Analyze_Full_Type_Declaration): Only build wrapper when expander is active. (Build_Access_Subprogram_Wrapper): Remove special-case for GNATprove.
2023-05-29ada: Default_Component_Value trumps Initialize/Normalize_ScalarsSteve Baird1-0/+6
If the Default_Component_Value aspect is specified for an array type, then specifying Initialize_Scalars or Normalize_Scalars should have no effect on the default initialization of an object of the array type. gcc/ada/ * exp_ch3.adb (Expand_N_Object_Declaration.Default_Initialize_Object): Add test for specified Default_Component_Value aspect when deciding whether either Initialize_Scalars or Normalize_Scalars impacts default initialization of an array object.
2023-05-25ada: Avoid duplicated streaming subprogramsSteve Baird1-4/+4
In some common cases, a reference to Some_Type'Some_Streaming_Attribute causes the needed subprogram to be generated "on demand". If there are multiple such references (e.g., two calls to Some_Type'Write) then we want to avoid generating multiple essentially-identical subprograms. This change implies that a generated streaming subprogram may now have multiple call sites, so we can no longer use the source position information from the (one and only) call site. If an exception is raised during a streaming operation, this can make a difference in the reported raise location. gcc/ada/ * exp_attr.adb (Cached_Streaming_Ops): A new package, providing maps to save previously-generated Read/Write/Input/Output procedures. (Expand_N_Attribute_Reference): When a new subprogram is generated for a Read/Write/Input/Output attribute reference, record that type/subp pair in the appropriate Cached_Streaming_Ops map. (Find_Stream_Subprogram): Check the appropriate Cached_Streaming_Ops map to see if an appropriate subprogram has already been generated. If so, then return it. The appropriateness test includes a call to a new nested subprogram, In_Available_Context. * exp_strm.ads, exp_strm.adb: Do not pass in a Loc parameter (or a source-location-bearing Nod parameter) to the 16 procedures provided for building streaming-related subprograms. Use the source location of the type instead. * exp_dist.adb, exp_ch3.adb: Adapt to Exp_Strm spec changes. For these calls the source location of the type was already being used.
2023-05-23ada: Fix bogus error on predicated limited record declared in protected typeEric Botcazou1-22/+9
This happens when the limited record is initialized with a function call because of a couple of issues: incorrect tree sharing when building the predicate check and too late freezing for a compiler-generated subtype. It turns out that building the predicate check manually is redundant here, since predicate checks are automatically generated during the expansion of assignment statements, and the late freezing can be easily fixed. gcc/ada/ * exp_ch3.adb (Build_Record_Init_Proc.Build_Assignment): Do not manually generate a predicate check. Call Unqualify before doing pattern matching on the expression. * sem_ch3.adb (Analyze_Object_Declaration): Also freeze the actual subtype when it is built in the definite case.
2023-05-22ada: Fix spurious freezing error on nonabstract null extensionEric Botcazou1-3/+5
This prevents the wrapper function created for each nonoverridden inherited function with a controlling result of nonabstract null extensions of tagged types from causing premature freezing of types referenced in its profile. gcc/ada/ * exp_ch3.adb (Make_Controlling_Function_Wrappers): Create the body as the expanded body of an expression function.
2023-05-22ada: Remove extra parenthesesArnaud Charlet1-6/+6
In preparation of enhancing -gnatyx to check for these automatically. gcc/ada/ * ali-util.adb, par-endh.adb, par-prag.adb, par-ch2.adb, checks.adb, fmap.adb, libgnat/a-nbnbig.ads, libgnat/g-dynhta.adb, libgnat/s-carun8.adb, libgnat/s-strcom.adb, libgnat/a-dhfina.adb, libgnat/a-direct.adb, libgnat/a-rbtgbo.adb, libgnat/a-strsea.adb, libgnat/a-ststio.adb, libgnat/a-suenco.adb, libgnat/a-costso.adb, libgnat/a-strmap.adb, libgnat/g-alleve.adb, libgnat/g-debpoo.adb, libgnat/g-sercom__linux.adb, libgnat/s-genbig.adb, libgnat/s-mmap.adb, libgnat/s-regpat.adb, par-ch5.adb, sem_case.adb, sem_ch12.adb, sem_ch13.adb, sem_ch8.adb, sem_eval.adb, sem_prag.adb, sem_type.adb, exp_ch11.adb, exp_ch2.adb, exp_ch3.adb, exp_ch4.adb, exp_ch5.adb, exp_ch6.adb, exp_ch9.adb, exp_put_image.adb, freeze.adb, live.adb, sem_aggr.adb, sem_cat.adb, sem_ch10.adb, sem_ch3.adb, sem_ch6.adb, sem_ch9.adb, sem_disp.adb, sem_elab.adb, sem_res.adb, sem_util.adb, sinput.adb, uintp.adb, bcheck.adb, binde.adb, binderr.adb, einfo-utils.adb, clean.adb, sem_ch4.adb, gnatls.adb, gprep.adb, sem_ch11.adb: Remove extra parentheses.
2023-05-22ada: Fix crash on Ada.Containers with No_Dispatching_Calls restrictionEric Botcazou1-1/+5
This makes it so that the compiler does not crash and flags the underlying violation of the restriction instead. gcc/ada/ * exp_ch3.adb (Freeze_Type): Do not associate the Finalize_Address routine for a class-wide type if restriction No_Dispatching_Calls is in effect.
2023-05-15ada: Fix typo in commentMarc Poulhiès1-1/+1
gcc/ada/ * exp_ch3.adb (Make_Allocator_For_Return): Fix typo in comment.
2023-01-16ada: Fix typo in commentEric Botcazou1-1/+1
gcc/ada/ * exp_ch3.adb (Make_Allocator_For_Return): Fix typo in comment.
2023-01-16ada: Fix latent bug exposed by recent work on extended return statementsEric Botcazou1-3/+5
When the type of the return object is a constrained array, there may be an implicit sliding that needs to be preserved during the expansion. gcc/ada/ * exp_ch3.adb (Make_Allocator_For_Return): Convert the expression to the return object's type in the constrained array case as well.
2023-01-16ada: Fix pessimization of some CW objects initialized with function callEric Botcazou1-0/+19
The recent removal of the unconditional call to Remove_Side_Effects on the expression of an object declaration or an allocator with a class-wide type has introduced a pessimization in the former case for function calls that return a specific tagged type, because the object ultimately created on the primary stack has changed from being of a specific tagged type to being of the class-wide type, the latter type always formally requiring finalization. With the current finalization machinery, this means that a dispatching call to the Deep_Finalize routine is generated, which is unnecessary. Although this is a generic finalization issue with class-wide objects, this restores the previous behavior in this case to fix the pessimization for now. gcc/ada/ * exp_ch3.adb (Expand_N_Object_Declaration): For a class-wide non- interface stand-alone object initialized by a function call, call Remove_Side_Effects on the expression to capture the result.
2023-01-16ada: Use static references to tag in more cases for interface objectsEric Botcazou1-38/+34
This extends the use of static references to the interface tag in more cases for (class-wide) interface objects, e.g. for initialization expressions that are qualified aggregates or nondispatching calls returning a specific tagged type implementing the interface. gcc/ada/ * exp_util.ads (Has_Tag_Of_Type): Declare. * exp_util.adb (Has_Tag_Of_Type): Move to package level. Recurse on qualified expressions. * exp_ch3.adb (Expand_N_Object_Declaration): Use a static reference to the interface tag in more cases for class-wide interface objects.
2023-01-16ada: Further optimize interface objects initialized with function callsEric Botcazou1-0/+7
This further optimizes the usual case of (class-wide) interface objects that are initialized with calls to functions whose result type is the type of the objects (this is not necessary as any result type implementing the interface would do) by avoiding a back-and-forth displacement of the objects' address. This exposed a latent issue whereby the displacement was missing in the case of a simple return statement whose expression is a call to a function whose result type is a specific tagged type that needs finalization. And, in order to avoid pessimizing the expanded code, this in turn required avoiding to create temporaries for allocators by calling Remove_Side_Effects up front, in the common cases when they are not necessary. gcc/ada/ * exp_ch3.adb (Expand_N_Object_Declaration): Do not generate a back- and-forth displacement of the object's address when using a renaming for an interface object with an expression of the same type. * exp_ch4.adb (Expand_Allocator_Expression): Do not remove the side effects of the expression up front for the simple allocators. Do not call the Adjust primitive if the expression is a function call. * exp_ch6.adb (Expand_Ctrl_Function_Call): Do not expand the call unnecessarily for a special return object. (Expand_Simple_Function_Return): Restore the displacement of the return object's address in the case where the expression is the call to a function whose result type is a type that needs finalization. * exp_util.adb (Expand_Subtype_From_Expr): Do not remove the side effects of the expression before calling Make_Subtype_From_Expr. (Make_CW_Equivalent_Type): If the expression has the tag of its type and this type has a uniform size, use 'Object_Size of this type in lieu of 'Size of the expression to compute the expression's size.
2023-01-16ada: Put back conversion to interface in more casesEric Botcazou1-1/+1
This needs to be done for all expressions with class-wide type. gcc/ada/ * exp_ch3.adb (Make_Allocator_For_Return): Put back an interface conversion for expressions with non-interface class-wide type.
2023-01-16ada: Lift restriction on optimization of aliased objectsEric Botcazou1-3/+3
It turns out that the only blocking case is an aliased object whose nominal subtype is an unconstrained array because the bounds must be allocated. gcc/ada/ * exp_ch3.adb (Expand_N_Object_Declaration): Also optimize aliased objects if their nominal subtype is not an unconstrained array.
2023-01-16ada: Optimize interface objects initialized with function callsEric Botcazou1-112/+171
This optimizes the implementation of (class-wide) interface objects that are initialized with function calls, by avoiding an unnecessary copy operation. This also removes useless access checks generated by the expansion of return statements involving class-wide types. gcc/ada/ * exp_ch3.adb (Expand_N_Object_Declaration): Factor out conditions needed for an initializating expression that is a function call to be renamable into the Is_Renamable_Function_Call predicate. Use it to implement the renaming in the case of class-wide interface objects. Remove an interface conversion on all paths, separate and optimize the renaming path in the special expansion for interfaces. (Is_Renamable_Function_Call): New predicate. (Make_Allocator_For_Return): Put back an interface conversion. * exp_ch6.adb (Apply_CW_Accessibility_Check): Remove useless access checks on RE_Tag_Ptr.
2023-01-09ada: Update copyright noticeArnaud Charlet1-1/+1
gcc/ada/ * accessibility.adb, accessibility.ads, ada_get_targ.adb: Update copyright year. * adabkend.adb, adabkend.ads, adadecode.c, adadecode.h, adaint.c: Likewise. * adaint.h, affinity.c, ali-util.adb, ali-util.ads, ali.adb: Likewise. * ali.ads, alloc.ads, argv-lynxos178-raven-cert.c, argv.c: Likewise. * aspects.adb, aspects.ads, atree.adb, atree.ads, atree.h: Likewise. * aux-io.c, back_end.adb, back_end.ads, backend_utils.adb: Likewise. * backend_utils.ads, bcheck.adb, bcheck.ads, binde.adb, binde.ads: Likewise. * binderr.adb, binderr.ads, bindgen.adb, bindgen.ads: Likewise. * bindo-augmentors.adb, bindo-augmentors.ads, bindo-builders.adb: Likewise. * bindo-builders.ads, bindo-diagnostics.adb: Likewise. * bindo-diagnostics.ads, bindo-elaborators.adb: Likewise. * bindo-elaborators.ads, bindo-graphs.adb, bindo-graphs.ads: Likewise. * bindo-units.adb, bindo-units.ads, bindo-validators.adb: Likewise. * bindo-validators.ads, bindo-writers.adb, bindo-writers.ads: Likewise. * bindo.adb, bindo.ads, bindusg.adb, bindusg.ads, butil.adb: Likewise. * butil.ads, cal.c, casing.adb, casing.ads, checks.adb: Likewise. * checks.ads, cio.c, clean.adb, clean.ads: Likewise. * comperr.adb, comperr.ads, contracts.adb, contracts.ads: Likewise. * csets.adb, csets.ads, cstand.adb: Likewise. * cstand.ads, cstreams.c, ctrl_c.c, debug.adb, debug.ads: Likewise. * debug_a.adb, debug_a.ads, einfo-utils.adb, einfo-utils.ads: Likewise. * einfo.adb, einfo.ads, elists.adb, elists.ads, elists.h, env.c: Likewise. * env.h, err_vars.ads, errno.c, errout.adb, errout.ads: Likewise. * erroutc.adb, erroutc.ads, errutil.adb, errutil.ads: Likewise. * eval_fat.adb, eval_fat.ads, exit.c, exp_aggr.adb, exp_aggr.ads: Likewise. * exp_atag.adb, exp_atag.ads, exp_attr.adb, exp_attr.ads: Likewise. * exp_cg.adb, exp_cg.ads, exp_ch10.ads, exp_ch11.adb: Likewise. * exp_ch11.ads, exp_ch12.adb, exp_ch12.ads, exp_ch13.adb: Likewise. * exp_ch13.ads, exp_ch2.adb, exp_ch2.ads, exp_ch3.adb: Likewise. * exp_ch3.ads, exp_ch4.adb, exp_ch4.ads, exp_ch5.adb, exp_ch5.ads: Likewise. * exp_ch6.adb, exp_ch6.ads, exp_ch7.adb, exp_ch7.ads, exp_ch8.adb: Likewise. * exp_ch8.ads, exp_ch9.adb, exp_ch9.ads, exp_code.adb: Likewise. * exp_code.ads, exp_dbug.adb, exp_dbug.ads, exp_disp.adb: Likewise. * exp_disp.ads, exp_dist.adb, exp_dist.ads, exp_fixd.adb: Likewise. * exp_fixd.ads, exp_imgv.adb, exp_imgv.ads, exp_intr.adb: Likewise. * exp_intr.ads, exp_pakd.adb, exp_pakd.ads, exp_prag.adb: Likewise. * exp_prag.ads, exp_put_image.adb, exp_put_image.ads, exp_sel.adb: Likewise. * exp_sel.ads, exp_smem.adb, exp_smem.ads, exp_spark.adb: Likewise. * exp_spark.ads, exp_strm.adb, exp_strm.ads, exp_tss.adb: Likewise. * exp_tss.ads, exp_unst.adb, exp_unst.ads, exp_util.adb: Likewise. * exp_util.ads, expander.adb, expander.ads, expect.c, fe.h: Likewise. * final.c, fmap.adb, fmap.ads, fname-sf.adb, fname-sf.ads: Likewise. * fname-uf.adb, fname-uf.ads, fname.adb, fname.ads, freeze.adb: Likewise. * freeze.ads, frontend.adb, frontend.ads, gen_il-fields.ads: Likewise. * gen_il-gen-gen_entities.adb, gen_il-gen-gen_nodes.adb: Likewise. * gen_il-gen.adb, gen_il-gen.ads, gen_il-internals.adb: Likewise. * gen_il-internals.ads, gen_il-main.adb, gen_il-types.ads: Likewise. * gen_il.adb, gen_il.ads, get_scos.adb, get_scos.ads: Likewise. * get_targ.adb, get_targ.ads, ghost.adb, ghost.ads, gnat1drv.adb: Likewise. * gnat1drv.ads, gnat_cuda.adb, gnat_cuda.ads: Likewise. * gnatbind.adb, gnatbind.ads, gnatchop.adb: Likewise. * gnatclean.adb, gnatcmd.adb, gnatcmd.ads, gnatdll.adb: Likewise. * gnatkr.adb, gnatkr.ads, gnatlink.adb, gnatlink.ads, gnatls.adb: Likewise. * gnatls.ads, gnatmake.adb, gnatmake.ads, gnatname.adb: Likewise. * gnatname.ads, gnatprep.adb, gnatprep.ads: Likewise. * gprep.adb, gprep.ads, gsocket.h: Likewise. * hostparm.ads: Likewise. * impunit.adb, impunit.ads, indepsw-aix.adb, indepsw-darwin.adb: Likewise. * indepsw-gnu.adb, indepsw.adb, indepsw.ads, init.c: Likewise. * initialize.c, inline.adb, inline.ads, itypes.adb, itypes.ads: Likewise. * krunch.adb, krunch.ads, layout.adb, layout.ads: Likewise. * lib-list.adb, lib-load.adb, lib-load.ads, lib-sort.adb: Likewise. * lib-util.adb, lib-util.ads, lib-writ.adb, lib-writ.ads: Likewise. * lib-xref-spark_specific.adb, lib-xref.adb, lib-xref.ads: Likewise. * lib.adb, lib.ads, libgnarl/a-astaco.adb, libgnarl/a-dispat.adb: Likewise. * libgnarl/a-dynpri.adb, libgnarl/a-etgrbu.ads: Likewise. * libgnarl/a-exetim__darwin.adb, libgnarl/a-exetim__default.ads: Likewise. * libgnarl/a-exetim__mingw.adb, libgnarl/a-exetim__mingw.ads: Likewise. * libgnarl/a-exetim__posix.adb, libgnarl/a-interr.adb: Likewise. * libgnarl/a-interr.ads, libgnarl/a-intnam.ads: Likewise. * libgnarl/a-intnam__aix.ads, libgnarl/a-intnam__darwin.ads: Likewise. * libgnarl/a-intnam__dragonfly.ads, libgnarl/a-intnam__dummy.ads: Likewise. * libgnarl/a-intnam__freebsd.ads, libgnarl/a-intnam__hpux.ads: Likewise. * libgnarl/a-intnam__linux.ads, libgnarl/a-intnam__lynxos.ads: Likewise. * libgnarl/a-intnam__mingw.ads, libgnarl/a-intnam__qnx.ads: Likewise. * libgnarl/a-intnam__rtems.ads, libgnarl/a-intnam__solaris.ads: Likewise. * libgnarl/a-intnam__vxworks.ads, libgnarl/a-reatim.adb: Likewise. * libgnarl/a-reatim.ads, libgnarl/a-retide.adb: Likewise. * libgnarl/a-retide.ads, libgnarl/a-rttiev.adb: Likewise. * libgnarl/a-rttiev.ads, libgnarl/a-synbar.adb: Likewise. * libgnarl/a-synbar.ads, libgnarl/a-synbar__posix.adb: Likewise. * libgnarl/a-synbar__posix.ads, libgnarl/a-sytaco.adb: Likewise. * libgnarl/a-sytaco.ads, libgnarl/a-tasatt.adb: Likewise. * libgnarl/a-tasatt.ads, libgnarl/a-taside.adb: Likewise. * libgnarl/a-taside.ads, libgnarl/a-tasini.adb: Likewise. * libgnarl/a-tasini.ads, libgnarl/a-taster.adb: Likewise. * libgnarl/g-boubuf.adb, libgnarl/g-boubuf.ads: Likewise. * libgnarl/g-boumai.ads, libgnarl/g-semaph.adb: Likewise. * libgnarl/g-semaph.ads, libgnarl/g-signal.adb: Likewise. * libgnarl/g-signal.ads, libgnarl/g-tastus.ads: Likewise. * libgnarl/g-thread.adb, libgnarl/g-thread.ads: Likewise. * libgnarl/i-vxinco.adb, libgnarl/i-vxinco.ads: Likewise. * libgnarl/s-inmaop.ads, libgnarl/s-inmaop__dummy.adb: Likewise. * libgnarl/s-inmaop__hwint.adb, libgnarl/s-inmaop__posix.adb: Likewise. * libgnarl/s-interr.adb, libgnarl/s-interr.ads: Likewise. * libgnarl/s-interr__dummy.adb, libgnarl/s-interr__hwint.adb: Likewise. * libgnarl/s-interr__sigaction.adb: Likewise. * libgnarl/s-interr__vxworks.adb, libgnarl/s-intman.ads: Likewise. * libgnarl/s-intman__android.adb, libgnarl/s-intman__dummy.adb: Likewise. * libgnarl/s-intman__lynxos.adb, libgnarl/s-intman__mingw.adb: Likewise. * libgnarl/s-intman__posix.adb, libgnarl/s-intman__qnx.adb: Likewise. * libgnarl/s-intman__rtems.adb, libgnarl/s-intman__rtems.ads: Likewise. * libgnarl/s-intman__solaris.adb, libgnarl/s-intman__susv3.adb: Likewise. * libgnarl/s-intman__vxworks.adb, libgnarl/s-intman__vxworks.ads: Likewise. * libgnarl/s-linux.ads, libgnarl/s-linux__alpha.ads: Likewise. * libgnarl/s-linux__android.ads, libgnarl/s-linux__hppa.ads: Likewise. * libgnarl/s-linux__mips.ads, libgnarl/s-linux__riscv.ads: Likewise. * libgnarl/s-linux__sparc.ads, libgnarl/s-linux__x32.ads: Likewise. * libgnarl/s-mudido.adb, libgnarl/s-mudido__affinity.adb: Likewise. * libgnarl/s-osinte__aix.adb, libgnarl/s-osinte__aix.ads: Likewise. * libgnarl/s-osinte__android.adb, libgnarl/s-osinte__android.ads: Likewise. * libgnarl/s-osinte__darwin.adb, libgnarl/s-osinte__darwin.ads: Likewise. * libgnarl/s-osinte__dragonfly.adb: Likewise. * libgnarl/s-osinte__dragonfly.ads, libgnarl/s-osinte__dummy.ads: Likewise. * libgnarl/s-osinte__freebsd.adb, libgnarl/s-osinte__freebsd.ads: Likewise. * libgnarl/s-osinte__gnu.adb, libgnarl/s-osinte__gnu.ads: Likewise. * libgnarl/s-osinte__hpux-dce.adb: Likewise. * libgnarl/s-osinte__hpux-dce.ads, libgnarl/s-osinte__hpux.ads: Likewise. * libgnarl/s-osinte__kfreebsd-gnu.ads: Likewise. * libgnarl/s-osinte__linux.ads, libgnarl/s-osinte__lynxos178.adb: Likewise. * libgnarl/s-osinte__lynxos178e.ads, libgnarl/s-osinte__mingw.ads: Likewise. * libgnarl/s-osinte__posix.adb, libgnarl/s-osinte__qnx.adb: Likewise. * libgnarl/s-osinte__qnx.ads, libgnarl/s-osinte__rtems.adb: Likewise. * libgnarl/s-osinte__rtems.ads, libgnarl/s-osinte__solaris.adb: Likewise. * libgnarl/s-osinte__solaris.ads, libgnarl/s-osinte__vxworks.adb: Likewise. * libgnarl/s-osinte__vxworks.ads, libgnarl/s-osinte__x32.adb: Likewise. * libgnarl/s-proinf.adb, libgnarl/s-proinf.ads: Likewise. * libgnarl/s-putaim.adb, libgnarl/s-putaim.ads: Likewise. * libgnarl/s-qnx.ads, libgnarl/s-solita.adb: Likewise. * libgnarl/s-solita.ads, libgnarl/s-stusta.adb: Likewise. * libgnarl/s-stusta.ads, libgnarl/s-taasde.adb: Likewise. * libgnarl/s-taasde.ads, libgnarl/s-tadeca.adb: Likewise. * libgnarl/s-tadeca.ads, libgnarl/s-tadert.adb: Likewise. * libgnarl/s-tadert.ads, libgnarl/s-taenca.adb: Likewise. * libgnarl/s-taenca.ads, libgnarl/s-taprob.adb: Likewise. * libgnarl/s-taprob.ads, libgnarl/s-taprop.ads: Likewise. * libgnarl/s-taprop__dummy.adb, libgnarl/s-taprop__hpux-dce.adb: Likewise. * libgnarl/s-taprop__linux.adb, libgnarl/s-taprop__mingw.adb: Likewise. * libgnarl/s-taprop__posix.adb, libgnarl/s-taprop__qnx.adb: Likewise. * libgnarl/s-taprop__rtems.adb, libgnarl/s-taprop__solaris.adb: Likewise. * libgnarl/s-taprop__vxworks.adb, libgnarl/s-tarest.adb: Likewise. * libgnarl/s-tarest.ads, libgnarl/s-tasdeb.adb: Likewise. * libgnarl/s-tasdeb.ads, libgnarl/s-tasinf.adb: Likewise. * libgnarl/s-tasinf.ads, libgnarl/s-tasinf__linux.adb: Likewise. * libgnarl/s-tasinf__linux.ads, libgnarl/s-tasinf__mingw.adb: Likewise. * libgnarl/s-tasinf__mingw.ads, libgnarl/s-tasinf__solaris.adb: Likewise. * libgnarl/s-tasinf__solaris.ads, libgnarl/s-tasinf__vxworks.ads: Likewise. * libgnarl/s-tasini.adb, libgnarl/s-tasini.ads: Likewise. * libgnarl/s-taskin.adb, libgnarl/s-taskin.ads: Likewise. * libgnarl/s-taspri__dummy.ads, libgnarl/s-taspri__hpux-dce.ads: Likewise. * libgnarl/s-taspri__lynxos.ads, libgnarl/s-taspri__mingw.ads: Likewise. * libgnarl/s-taspri__posix-noaltstack.ads: Likewise. * libgnarl/s-taspri__posix.ads, libgnarl/s-taspri__solaris.ads: Likewise. * libgnarl/s-taspri__vxworks.ads, libgnarl/s-tasque.adb: Likewise. * libgnarl/s-tasque.ads, libgnarl/s-tasren.adb: Likewise. * libgnarl/s-tasren.ads, libgnarl/s-tasres.ads: Likewise. * libgnarl/s-tassta.adb, libgnarl/s-tassta.ads: Likewise. * libgnarl/s-tasuti.adb, libgnarl/s-tasuti.ads: Likewise. * libgnarl/s-tataat.adb, libgnarl/s-tataat.ads: Likewise. * libgnarl/s-tpinop.adb, libgnarl/s-tpinop.ads: Likewise. * libgnarl/s-tpoaal.adb, libgnarl/s-tpoben.adb: Likewise. * libgnarl/s-tpoben.ads, libgnarl/s-tpobmu.adb: Likewise. * libgnarl/s-tpobmu.ads, libgnarl/s-tpobop.adb: Likewise. * libgnarl/s-tpobop.ads, libgnarl/s-tpopmo.adb: Likewise. * libgnarl/s-tpopsp__posix-foreign.adb: Likewise. * libgnarl/s-tpopsp__posix.adb, libgnarl/s-tpopsp__solaris.adb: Likewise. * libgnarl/s-tpopsp__tls.adb, libgnarl/s-tpopsp__vxworks-rtp.adb: Likewise. * libgnarl/s-tpopsp__vxworks-tls.adb: Likewise. * libgnarl/s-tpopsp__vxworks.adb, libgnarl/s-tporft.adb: Likewise. * libgnarl/s-tposen.adb, libgnarl/s-tposen.ads: Likewise. * libgnarl/s-vxwext.adb, libgnarl/s-vxwext.ads: Likewise. * libgnarl/s-vxwext__kernel-smp.adb: Likewise. * libgnarl/s-vxwext__kernel.adb, libgnarl/s-vxwext__kernel.ads: Likewise. * libgnarl/s-vxwext__rtp-smp.adb, libgnarl/s-vxwext__rtp.adb: Likewise. * libgnarl/s-vxwext__rtp.ads, libgnarl/s-vxwork__aarch64.ads: Likewise. * libgnarl/s-vxwork__arm.ads, libgnarl/s-vxwork__ppc.ads: Likewise. * libgnarl/s-vxwork__x86.ads, libgnarl/thread.c: Likewise. * libgnat/a-assert.adb, libgnat/a-assert.ads: Likewise. * libgnat/a-btgbso.adb, libgnat/a-btgbso.ads: Likewise. * libgnat/a-calari.adb, libgnat/a-calari.ads: Likewise. * libgnat/a-calcon.adb, libgnat/a-calcon.ads: Likewise. * libgnat/a-caldel.adb, libgnat/a-caldel.ads: Likewise. * libgnat/a-calend.adb, libgnat/a-calend.ads: Likewise. * libgnat/a-calfor.adb, libgnat/a-calfor.ads: Likewise. * libgnat/a-catizo.adb, libgnat/a-cbdlli.adb: Likewise. * libgnat/a-cbdlli.ads, libgnat/a-cbhama.adb: Likewise. * libgnat/a-cbhama.ads, libgnat/a-cbhase.adb: Likewise. * libgnat/a-cbhase.ads, libgnat/a-cbmutr.adb: Likewise. * libgnat/a-cbmutr.ads, libgnat/a-cborma.adb: Likewise. * libgnat/a-cborma.ads, libgnat/a-cborse.adb: Likewise. * libgnat/a-cborse.ads, libgnat/a-cbprqu.adb: Likewise. * libgnat/a-cbprqu.ads, libgnat/a-cbsyqu.adb: Likewise. * libgnat/a-cbsyqu.ads, libgnat/a-cdlili.adb: Likewise. * libgnat/a-cdlili.ads, libgnat/a-cfdlli.ads: Likewise. * libgnat/a-cfhama.ads, libgnat/a-cfhase.ads: Likewise. * libgnat/a-cfidll.ads, libgnat/a-cfinse.ads: Likewise. * libgnat/a-cfinve.ads, libgnat/a-cforma.ads: Likewise. * libgnat/a-cforse.ads, libgnat/a-cgaaso.adb: Likewise. * libgnat/a-cgaaso.ads, libgnat/a-cgarso.adb: Likewise. * libgnat/a-cgcaso.adb, libgnat/a-chacon.adb: Likewise. * libgnat/a-chacon.ads, libgnat/a-chahan.adb: Likewise. * libgnat/a-chahan.ads, libgnat/a-chlat9.ads: Likewise. * libgnat/a-chtgbk.adb, libgnat/a-chtgbk.ads: Likewise. * libgnat/a-chtgbo.adb, libgnat/a-chtgbo.ads: Likewise. * libgnat/a-chtgfk.adb, libgnat/a-chtgfk.ads: Likewise. * libgnat/a-chtgfo.adb, libgnat/a-chtgfo.ads: Likewise. * libgnat/a-chtgke.adb, libgnat/a-chtgke.ads: Likewise. * libgnat/a-chtgop.adb, libgnat/a-chtgop.ads: Likewise. * libgnat/a-chzla1.ads, libgnat/a-chzla9.ads: Likewise. * libgnat/a-cidlli.adb, libgnat/a-cidlli.ads: Likewise. * libgnat/a-cihama.adb, libgnat/a-cihama.ads: Likewise. * libgnat/a-cihase.adb, libgnat/a-cihase.ads: Likewise. * libgnat/a-cimutr.adb, libgnat/a-cimutr.ads: Likewise. * libgnat/a-ciorma.adb, libgnat/a-ciorma.ads: Likewise. * libgnat/a-ciormu.adb, libgnat/a-ciormu.ads: Likewise. * libgnat/a-ciorse.adb, libgnat/a-ciorse.ads: Likewise. * libgnat/a-clrefi.adb, libgnat/a-clrefi.ads: Likewise. * libgnat/a-coboho.adb, libgnat/a-coboho.ads: Likewise. * libgnat/a-cobove.adb, libgnat/a-cobove.ads: Likewise. * libgnat/a-cofove.ads, libgnat/a-cofuma.ads: Likewise. * libgnat/a-cofuse.ads, libgnat/a-cofuve.ads: Likewise. * libgnat/a-cogeso.adb, libgnat/a-cogeso.ads: Likewise. * libgnat/a-cohama.adb, libgnat/a-cohama.ads: Likewise. * libgnat/a-cohase.adb, libgnat/a-cohase.ads: Likewise. * libgnat/a-cohata.ads, libgnat/a-coinho.adb: Likewise. * libgnat/a-coinho.ads, libgnat/a-coinho__shared.adb: Likewise. * libgnat/a-coinho__shared.ads, libgnat/a-coinve.adb: Likewise. * libgnat/a-coinve.ads, libgnat/a-colien.adb: Likewise. * libgnat/a-colien.ads, libgnat/a-colire.adb: Likewise. * libgnat/a-colire.ads, libgnat/a-comlin.adb: Likewise. * libgnat/a-comlin.ads, libgnat/a-comutr.adb: Likewise. * libgnat/a-comutr.ads, libgnat/a-conhel.adb: Likewise. * libgnat/a-conhel.ads, libgnat/a-convec.adb: Likewise. * libgnat/a-convec.ads, libgnat/a-coorma.adb: Likewise. * libgnat/a-coorma.ads, libgnat/a-coormu.adb: Likewise. * libgnat/a-coormu.ads, libgnat/a-coorse.adb: Likewise. * libgnat/a-coorse.ads, libgnat/a-coprnu.adb: Likewise. * libgnat/a-coprnu.ads, libgnat/a-costso.adb: Likewise. * libgnat/a-costso.ads, libgnat/a-crbltr.ads: Likewise. * libgnat/a-crbtgk.adb, libgnat/a-crbtgk.ads: Likewise. * libgnat/a-crbtgo.adb, libgnat/a-crbtgo.ads: Likewise. * libgnat/a-crdlli.adb, libgnat/a-crdlli.ads: Likewise. * libgnat/a-csquin.ads, libgnat/a-cuprqu.adb: Likewise. * libgnat/a-cuprqu.ads, libgnat/a-cusyqu.adb: Likewise. * libgnat/a-cusyqu.ads, libgnat/a-cwila1.ads: Likewise. * libgnat/a-cwila9.ads, libgnat/a-decima.adb: Likewise. * libgnat/a-decima.ads, libgnat/a-decima__128.ads: Likewise. * libgnat/a-dhfina.adb, libgnat/a-dhfina.ads: Likewise. * libgnat/a-diocst.adb, libgnat/a-diocst.ads: Likewise. * libgnat/a-direct.adb, libgnat/a-direct.ads: Likewise. * libgnat/a-direio.adb, libgnat/a-direio.ads: Likewise. * libgnat/a-dirval.adb, libgnat/a-dirval.ads: Likewise. * libgnat/a-dirval__mingw.adb, libgnat/a-einuoc.adb: Likewise. * libgnat/a-einuoc.ads, libgnat/a-elchha.adb: Likewise. * libgnat/a-elchha.ads, libgnat/a-envvar.adb: Likewise. * libgnat/a-excach.adb, libgnat/a-except.adb: Likewise. * libgnat/a-except.ads, libgnat/a-exctra.adb: Likewise. * libgnat/a-exctra.ads, libgnat/a-exexda.adb: Likewise. * libgnat/a-exexpr.adb, libgnat/a-exextr.adb: Likewise. * libgnat/a-exstat.adb, libgnat/a-finali.adb: Likewise. * libgnat/a-finali.ads, libgnat/a-locale.adb: Likewise. * libgnat/a-locale.ads, libgnat/a-nagefl.ads: Likewise. * libgnat/a-naliop.ads, libgnat/a-naliop__nolibm.ads: Likewise. * libgnat/a-nallfl.ads, libgnat/a-nallfl__wraplf.ads: Likewise. * libgnat/a-nalofl.ads, libgnat/a-nalofl__simd.ads: Likewise. * libgnat/a-nashfl.ads, libgnat/a-nashfl__wraplf.ads: Likewise. * libgnat/a-nbnbig.adb, libgnat/a-nbnbin.adb: Likewise. * libgnat/a-nbnbin__gmp.adb, libgnat/a-nbnbre.adb: Likewise. * libgnat/a-ngcefu.adb, libgnat/a-ngcoar.adb: Likewise. * libgnat/a-ngcoty.adb, libgnat/a-ngcoty.ads: Likewise. * libgnat/a-ngelfu.adb, libgnat/a-ngelfu.ads: Likewise. * libgnat/a-ngrear.adb, libgnat/a-ngrear.ads: Likewise. * libgnat/a-nuauco.ads, libgnat/a-nuauco__x86.ads: Likewise. * libgnat/a-nuaufl.ads, libgnat/a-nuaufl__simd.ads: Likewise. * libgnat/a-nuaufl__wraplf.ads, libgnat/a-nudira.adb: Likewise. * libgnat/a-nudira.ads, libgnat/a-nuflra.adb: Likewise. * libgnat/a-nuflra.ads, libgnat/a-numaux.ads: Likewise. * libgnat/a-rbtgbk.adb, libgnat/a-rbtgbk.ads: Likewise. * libgnat/a-rbtgbo.adb, libgnat/a-rbtgbo.ads: Likewise. * libgnat/a-rbtgso.adb, libgnat/a-rbtgso.ads: Likewise. * libgnat/a-sbecin.adb, libgnat/a-sbecin.ads: Likewise. * libgnat/a-sbhcin.adb, libgnat/a-sbhcin.ads: Likewise. * libgnat/a-sblcin.adb, libgnat/a-sblcin.ads: Likewise. * libgnat/a-secain.adb, libgnat/a-secain.ads: Likewise. * libgnat/a-sequio.adb, libgnat/a-sequio.ads: Likewise. * libgnat/a-sfecin.ads, libgnat/a-sfhcin.ads: Likewise. * libgnat/a-sflcin.ads, libgnat/a-shcain.adb: Likewise. * libgnat/a-shcain.ads, libgnat/a-siocst.adb: Likewise. * libgnat/a-siocst.ads, libgnat/a-slcain.adb: Likewise. * libgnat/a-slcain.ads, libgnat/a-ssicst.adb: Likewise. * libgnat/a-ssicst.ads, libgnat/a-stboha.adb: Likewise. * libgnat/a-stbubo.adb, libgnat/a-stbubo.ads: Likewise. * libgnat/a-stbufi.adb, libgnat/a-stbufi.ads: Likewise. * libgnat/a-stbufo.adb, libgnat/a-stbufo.ads: Likewise. * libgnat/a-stbuun.adb, libgnat/a-stbuut.adb: Likewise. * libgnat/a-stbuut.ads, libgnat/a-stmaco.ads: Likewise. * libgnat/a-storio.adb, libgnat/a-strbou.adb: Likewise. * libgnat/a-strbou.ads, libgnat/a-stream.adb: Likewise. * libgnat/a-stream.ads, libgnat/a-strfix.adb: Likewise. * libgnat/a-strhas.adb, libgnat/a-strmap.adb: Likewise. * libgnat/a-strmap.ads, libgnat/a-strsea.adb: Likewise. * libgnat/a-strsea.ads, libgnat/a-strsto.ads: Likewise. * libgnat/a-strsup.adb, libgnat/a-strsup.ads: Likewise. * libgnat/a-strunb.adb, libgnat/a-strunb.ads: Likewise. * libgnat/a-strunb__shared.adb, libgnat/a-strunb__shared.ads: Likewise. * libgnat/a-ststbo.adb, libgnat/a-ststbo.ads: Likewise. * libgnat/a-ststio.adb, libgnat/a-ststio.ads: Likewise. * libgnat/a-ststun.adb, libgnat/a-ststun.ads: Likewise. * libgnat/a-sttebu.adb, libgnat/a-stunau.adb: Likewise. * libgnat/a-stunau.ads, libgnat/a-stunau__shared.adb: Likewise. * libgnat/a-stunha.adb, libgnat/a-stuten.adb: Likewise. * libgnat/a-stwibo.adb, libgnat/a-stwibo.ads: Likewise. * libgnat/a-stwifi.adb, libgnat/a-stwiha.adb: Likewise. * libgnat/a-stwima.adb, libgnat/a-stwima.ads: Likewise. * libgnat/a-stwise.adb, libgnat/a-stwise.ads: Likewise. * libgnat/a-stwisu.adb, libgnat/a-stwisu.ads: Likewise. * libgnat/a-stwiun.adb, libgnat/a-stwiun.ads: Likewise. * libgnat/a-stwiun__shared.adb, libgnat/a-stwiun__shared.ads: Likewise. * libgnat/a-stzbou.adb, libgnat/a-stzbou.ads: Likewise. * libgnat/a-stzfix.adb, libgnat/a-stzhas.adb: Likewise. * libgnat/a-stzmap.adb, libgnat/a-stzmap.ads: Likewise. * libgnat/a-stzsea.adb, libgnat/a-stzsea.ads: Likewise. * libgnat/a-stzsup.adb, libgnat/a-stzsup.ads: Likewise. * libgnat/a-stzunb.adb, libgnat/a-stzunb.ads: Likewise. * libgnat/a-stzunb__shared.adb, libgnat/a-stzunb__shared.ads: Likewise. * libgnat/a-suecin.adb, libgnat/a-suecin.ads: Likewise. * libgnat/a-suenco.adb, libgnat/a-suenst.adb: Likewise. * libgnat/a-suewst.adb, libgnat/a-suezst.adb: Likewise. * libgnat/a-suhcin.adb, libgnat/a-suhcin.ads: Likewise. * libgnat/a-sulcin.adb, libgnat/a-sulcin.ads: Likewise. * libgnat/a-suteio.adb, libgnat/a-suteio.ads: Likewise. * libgnat/a-suteio__shared.adb, libgnat/a-swbwha.adb: Likewise. * libgnat/a-swmwco.ads, libgnat/a-swunau.adb: Likewise. * libgnat/a-swunau.ads, libgnat/a-swunau__shared.adb: Likewise. * libgnat/a-swuwha.adb, libgnat/a-swuwti.adb: Likewise. * libgnat/a-swuwti.ads, libgnat/a-swuwti__shared.adb: Likewise. * libgnat/a-szbzha.adb, libgnat/a-szmzco.ads: Likewise. * libgnat/a-szunau.adb, libgnat/a-szunau.ads: Likewise. * libgnat/a-szunau__shared.adb, libgnat/a-szuzha.adb: Likewise. * libgnat/a-szuzti.adb, libgnat/a-szuzti.ads: Likewise. * libgnat/a-szuzti__shared.adb, libgnat/a-tags.adb: Likewise. * libgnat/a-tags.ads, libgnat/a-teioed.adb, libgnat/a-teioed.ads: Likewise. * libgnat/a-textio.adb, libgnat/a-textio.ads: Likewise. * libgnat/a-tiboio.adb, libgnat/a-ticoau.adb: Likewise. * libgnat/a-ticoau.ads, libgnat/a-ticoio.adb: Likewise. * libgnat/a-ticoio.ads, libgnat/a-tideau.adb: Likewise. * libgnat/a-tideau.ads, libgnat/a-tideio.adb: Likewise. * libgnat/a-tideio.ads, libgnat/a-tideio__128.adb: Likewise. * libgnat/a-tienau.adb, libgnat/a-tienau.ads: Likewise. * libgnat/a-tienio.adb, libgnat/a-tifiau.adb: Likewise. * libgnat/a-tifiau.ads, libgnat/a-tifiio.adb: Likewise. * libgnat/a-tifiio__128.adb, libgnat/a-tiflau.adb: Likewise. * libgnat/a-tiflau.ads, libgnat/a-tiflio.adb: Likewise. * libgnat/a-tiflio.ads, libgnat/a-tigeau.adb: Likewise. * libgnat/a-tigeau.ads, libgnat/a-tigeli.adb: Likewise. * libgnat/a-tiinau.adb, libgnat/a-tiinau.ads: Likewise. * libgnat/a-tiinio.adb, libgnat/a-tiinio.ads: Likewise. * libgnat/a-tiinio__128.adb, libgnat/a-timoio.adb: Likewise. * libgnat/a-timoio.ads, libgnat/a-timoio__128.adb: Likewise. * libgnat/a-tiocst.adb, libgnat/a-tiocst.ads: Likewise. * libgnat/a-tirsfi.adb, libgnat/a-tirsfi.ads: Likewise. * libgnat/a-titest.adb, libgnat/a-undesu.adb: Likewise. * libgnat/a-wichha.adb, libgnat/a-wichun.adb: Likewise. * libgnat/a-wichun.ads, libgnat/a-witeio.adb: Likewise. * libgnat/a-witeio.ads, libgnat/a-wrstfi.adb: Likewise. * libgnat/a-wrstfi.ads, libgnat/a-wtcoau.adb: Likewise. * libgnat/a-wtcoau.ads, libgnat/a-wtcoio.adb: Likewise. * libgnat/a-wtcstr.adb, libgnat/a-wtcstr.ads: Likewise. * libgnat/a-wtdeau.adb, libgnat/a-wtdeau.ads: Likewise. * libgnat/a-wtdeio.adb, libgnat/a-wtdeio__128.adb: Likewise. * libgnat/a-wtedit.adb, libgnat/a-wtedit.ads: Likewise. * libgnat/a-wtenau.adb, libgnat/a-wtenau.ads: Likewise. * libgnat/a-wtenio.adb, libgnat/a-wtfiau.adb: Likewise. * libgnat/a-wtfiau.ads, libgnat/a-wtfiio.adb: Likewise. * libgnat/a-wtfiio__128.adb, libgnat/a-wtflau.adb: Likewise. * libgnat/a-wtflau.ads, libgnat/a-wtflio.adb: Likewise. * libgnat/a-wtgeau.adb, libgnat/a-wtgeau.ads: Likewise. * libgnat/a-wtinau.adb, libgnat/a-wtinau.ads: Likewise. * libgnat/a-wtinio.adb, libgnat/a-wtinio__128.adb: Likewise. * libgnat/a-wtmoio.adb, libgnat/a-wtmoio.ads: Likewise. * libgnat/a-wtmoio__128.adb, libgnat/a-wttest.adb: Likewise. * libgnat/a-wwboio.adb, libgnat/a-zchhan.adb: Likewise. * libgnat/a-zchuni.adb, libgnat/a-zchuni.ads: Likewise. * libgnat/a-zrstfi.adb, libgnat/a-zrstfi.ads: Likewise. * libgnat/a-ztcoau.adb, libgnat/a-ztcoio.adb: Likewise. * libgnat/a-ztcstr.adb, libgnat/a-ztcstr.ads: Likewise. * libgnat/a-ztdeau.adb, libgnat/a-ztdeau.ads: Likewise. * libgnat/a-ztdeio.adb, libgnat/a-ztdeio__128.adb: Likewise. * libgnat/a-ztedit.adb, libgnat/a-ztedit.ads: Likewise. * libgnat/a-ztenau.adb, libgnat/a-ztenau.ads: Likewise. * libgnat/a-ztenio.adb, libgnat/a-ztexio.adb: Likewise. * libgnat/a-ztexio.ads, libgnat/a-ztfiau.adb: Likewise. * libgnat/a-ztfiau.ads, libgnat/a-ztfiio.adb: Likewise. * libgnat/a-ztfiio__128.adb, libgnat/a-ztflau.adb: Likewise. * libgnat/a-ztflau.ads, libgnat/a-ztflio.adb: Likewise. * libgnat/a-ztgeau.adb, libgnat/a-ztgeau.ads: Likewise. * libgnat/a-ztinau.adb, libgnat/a-ztinau.ads: Likewise. * libgnat/a-ztinio.adb, libgnat/a-ztinio__128.adb: Likewise. * libgnat/a-ztmoio.adb, libgnat/a-ztmoio__128.adb: Likewise. * libgnat/a-zttest.adb, libgnat/a-zzboio.adb: Likewise. * libgnat/g-allein.ads, libgnat/g-alleve.adb: Likewise. * libgnat/g-alleve.ads, libgnat/g-alleve__hard.adb: Likewise. * libgnat/g-alleve__hard.ads, libgnat/g-altcon.adb: Likewise. * libgnat/g-altcon.ads, libgnat/g-altive.ads: Likewise. * libgnat/g-alveop.adb, libgnat/g-alveop.ads: Likewise. * libgnat/g-alvety.ads, libgnat/g-alvevi.ads: Likewise. * libgnat/g-arrspl.adb, libgnat/g-arrspl.ads, libgnat/g-awk.adb: Likewise. * libgnat/g-awk.ads, libgnat/g-binenv.adb, libgnat/g-binenv.ads: Likewise. * libgnat/g-binsea.adb, libgnat/g-binsea.ads: Likewise. * libgnat/g-brapre.ads, libgnat/g-bubsor.adb: Likewise. * libgnat/g-bubsor.ads, libgnat/g-busora.adb: Likewise. * libgnat/g-busora.ads, libgnat/g-busorg.adb: Likewise. * libgnat/g-busorg.ads, libgnat/g-byorma.adb: Likewise. * libgnat/g-byorma.ads, libgnat/g-bytswa.adb: Likewise. * libgnat/g-bytswa.ads, libgnat/g-calend.adb: Likewise. * libgnat/g-calend.ads, libgnat/g-casuti.adb: Likewise. * libgnat/g-casuti.ads, libgnat/g-catiio.adb: Likewise. * libgnat/g-catiio.ads, libgnat/g-cgi.adb, libgnat/g-cgi.ads: Likewise. * libgnat/g-cgicoo.adb, libgnat/g-cgicoo.ads: Likewise. * libgnat/g-cgideb.adb, libgnat/g-cgideb.ads: Likewise. * libgnat/g-comlin.adb, libgnat/g-comlin.ads: Likewise. * libgnat/g-comver.adb, libgnat/g-comver.ads: Likewise. * libgnat/g-cppexc.adb, libgnat/g-cppexc.ads, libgnat/g-crc32.adb: Likewise. * libgnat/g-crc32.ads, libgnat/g-ctrl_c.adb, libgnat/g-ctrl_c.ads: Likewise. * libgnat/g-curexc.ads, libgnat/g-debpoo.adb: Likewise. * libgnat/g-debpoo.ads, libgnat/g-debuti.adb: Likewise. * libgnat/g-debuti.ads, libgnat/g-decstr.adb: Likewise. * libgnat/g-decstr.ads, libgnat/g-deutst.ads: Likewise. * libgnat/g-diopit.adb, libgnat/g-diopit.ads: Likewise. * libgnat/g-dirope.adb, libgnat/g-dirope.ads: Likewise. * libgnat/g-dynhta.adb, libgnat/g-dynhta.ads: Likewise. * libgnat/g-dyntab.adb, libgnat/g-dyntab.ads: Likewise. * libgnat/g-eacodu.adb, libgnat/g-encstr.adb: Likewise. * libgnat/g-encstr.ads, libgnat/g-enutst.ads: Likewise. * libgnat/g-excact.adb, libgnat/g-excact.ads: Likewise. * libgnat/g-except.ads, libgnat/g-exctra.adb: Likewise. * libgnat/g-exctra.ads, libgnat/g-expect.adb: Likewise. * libgnat/g-expect.ads, libgnat/g-exptty.adb: Likewise. * libgnat/g-exptty.ads, libgnat/g-flocon.ads: Likewise. * libgnat/g-forstr.adb, libgnat/g-forstr.ads: Likewise. * libgnat/g-gfmafu.ads, libgnat/g-graphs.adb: Likewise. * libgnat/g-graphs.ads, libgnat/g-heasor.adb: Likewise. * libgnat/g-heasor.ads, libgnat/g-hesora.adb: Likewise. * libgnat/g-hesora.ads, libgnat/g-hesorg.adb: Likewise. * libgnat/g-hesorg.ads, libgnat/g-htable.adb: Likewise. * libgnat/g-htable.ads, libgnat/g-io.adb, libgnat/g-io.ads: Likewise. * libgnat/g-io_aux.adb, libgnat/g-io_aux.ads, libgnat/g-lists.adb: Likewise. * libgnat/g-lists.ads, libgnat/g-locfil.adb, libgnat/g-locfil.ads: Likewise. * libgnat/g-mbdira.adb, libgnat/g-mbdira.ads: Likewise. * libgnat/g-mbflra.adb, libgnat/g-mbflra.ads, libgnat/g-md5.adb: Likewise. * libgnat/g-md5.ads, libgnat/g-memdum.adb, libgnat/g-memdum.ads: Likewise. * libgnat/g-moreex.adb, libgnat/g-moreex.ads: Likewise. * libgnat/g-os_lib.adb, libgnat/g-os_lib.ads: Likewise. * libgnat/g-pehage.adb, libgnat/g-pehage.ads: Likewise. * libgnat/g-rannum.adb, libgnat/g-rannum.ads: Likewise. * libgnat/g-regexp.adb, libgnat/g-regexp.ads: Likewise. * libgnat/g-regist.adb, libgnat/g-regist.ads: Likewise. * libgnat/g-regpat.adb, libgnat/g-regpat.ads: Likewise. * libgnat/g-rewdat.adb, libgnat/g-rewdat.ads: Likewise. * libgnat/g-sechas.adb, libgnat/g-sechas.ads: Likewise. * libgnat/g-sehamd.adb, libgnat/g-sehamd.ads: Likewise. * libgnat/g-sehash.adb, libgnat/g-sehash.ads: Likewise. * libgnat/g-sercom.adb, libgnat/g-sercom.ads: Likewise. * libgnat/g-sercom__linux.adb, libgnat/g-sercom__mingw.adb: Likewise. * libgnat/g-sestin.ads, libgnat/g-sets.adb, libgnat/g-sets.ads: Likewise. * libgnat/g-sha1.adb, libgnat/g-sha1.ads, libgnat/g-sha224.ads: Likewise. * libgnat/g-sha256.ads, libgnat/g-sha384.ads: Likewise. * libgnat/g-sha512.ads, libgnat/g-shsh32.adb: Likewise. * libgnat/g-shsh32.ads, libgnat/g-shsh64.adb: Likewise. * libgnat/g-shsh64.ads, libgnat/g-shshco.adb: Likewise. * libgnat/g-shshco.ads, libgnat/g-soccon.ads: Likewise. * libgnat/g-socket.adb, libgnat/g-socket.ads: Likewise. * libgnat/g-socket__dummy.adb, libgnat/g-socket__dummy.ads: Likewise. * libgnat/g-socpol.adb, libgnat/g-socpol.ads: Likewise. * libgnat/g-socpol__dummy.adb, libgnat/g-socpol__dummy.ads: Likewise. * libgnat/g-socthi.adb, libgnat/g-socthi.ads: Likewise. * libgnat/g-socthi__dummy.adb, libgnat/g-socthi__dummy.ads: Likewise. * libgnat/g-socthi__mingw.adb, libgnat/g-socthi__mingw.ads: Likewise. * libgnat/g-socthi__vxworks.adb, libgnat/g-socthi__vxworks.ads: Likewise. * libgnat/g-soliop.ads, libgnat/g-soliop__lynxos.ads: Likewise. * libgnat/g-soliop__mingw.ads, libgnat/g-soliop__qnx.ads: Likewise. * libgnat/g-soliop__solaris.ads, libgnat/g-sopowa.adb: Likewise. * libgnat/g-sopowa__mingw.adb, libgnat/g-sopowa__posix.adb: Likewise. * libgnat/g-sothco.adb, libgnat/g-sothco.ads: Likewise. * libgnat/g-sothco__dummy.adb, libgnat/g-sothco__dummy.ads: Likewise. * libgnat/g-souinf.ads, libgnat/g-spchge.adb: Likewise. * libgnat/g-spchge.ads, libgnat/g-speche.adb: Likewise. * libgnat/g-speche.ads, libgnat/g-spipat.adb: Likewise. * libgnat/g-spipat.ads, libgnat/g-spitbo.adb: Likewise. * libgnat/g-spitbo.ads, libgnat/g-spogwa.adb: Likewise. * libgnat/g-spogwa.ads, libgnat/g-sptabo.ads: Likewise. * libgnat/g-sptain.ads, libgnat/g-sptavs.ads, libgnat/g-sse.ads: Likewise. * libgnat/g-ssvety.ads, libgnat/g-sthcso.adb: Likewise. * libgnat/g-stheme.adb, libgnat/g-strhas.ads: Likewise. * libgnat/g-string.adb, libgnat/g-string.ads: Likewise. * libgnat/g-strspl.ads, libgnat/g-stseme.adb: Likewise. * libgnat/g-stsifd__sockets.adb, libgnat/g-table.adb: Likewise. * libgnat/g-table.ads, libgnat/g-tasloc.adb, libgnat/g-tasloc.ads: Likewise. * libgnat/g-timsta.adb, libgnat/g-timsta.ads: Likewise. * libgnat/g-traceb.adb, libgnat/g-traceb.ads: Likewise. * libgnat/g-trasym.adb, libgnat/g-trasym.ads, libgnat/g-tty.adb: Likewise. * libgnat/g-tty.ads, libgnat/g-u3spch.adb, libgnat/g-u3spch.ads: Likewise. * libgnat/g-utf_32.adb, libgnat/g-utf_32.ads: Likewise. * libgnat/g-wispch.adb, libgnat/g-wispch.ads: Likewise. * libgnat/g-wistsp.ads, libgnat/g-zspche.adb: Likewise. * libgnat/g-zspche.ads, libgnat/g-zstspl.ads, libgnat/gnat.ads: Likewise. * libgnat/i-c.adb, libgnat/i-cexten.ads: Likewise. * libgnat/i-cexten__128.ads, libgnat/i-cobol.adb: Likewise. * libgnat/i-cobol.ads, libgnat/i-cpoint.adb, libgnat/i-cpoint.ads: Likewise. * libgnat/i-cstrea.adb, libgnat/i-cstrea.ads: Likewise. * libgnat/i-cstrin.adb, libgnat/i-cstrin.ads: Likewise. * libgnat/i-fortra.adb, libgnat/i-pacdec.adb: Likewise. * libgnat/i-pacdec.ads, libgnat/i-vxwoio.adb: Likewise. * libgnat/i-vxwoio.ads, libgnat/i-vxwork.ads: Likewise. * libgnat/i-vxwork__x86.ads, libgnat/interfac.ads: Likewise. * libgnat/interfac__2020.ads, libgnat/memtrack.adb: Likewise. * libgnat/s-addima.adb, libgnat/s-addima.ads: Likewise. * libgnat/s-addope.adb, libgnat/s-addope.ads: Likewise. * libgnat/s-aoinar.adb, libgnat/s-aoinar.ads: Likewise. * libgnat/s-aomoar.adb, libgnat/s-aomoar.ads: Likewise. * libgnat/s-aotase.adb, libgnat/s-aotase.ads: Likewise. * libgnat/s-aridou.adb, libgnat/s-aridou.ads: Likewise. * libgnat/s-arit128.adb, libgnat/s-arit128.ads: Likewise. * libgnat/s-arit32.adb, libgnat/s-arit32.ads: Likewise. * libgnat/s-arit64.adb, libgnat/s-arit64.ads: Likewise. * libgnat/s-assert.adb, libgnat/s-assert.ads: Likewise. * libgnat/s-atacco.adb, libgnat/s-atacco.ads: Likewise. * libgnat/s-atocou.adb, libgnat/s-atocou.ads: Likewise. * libgnat/s-atocou__builtin.adb, libgnat/s-atoope.ads: Likewise. * libgnat/s-atopex.adb, libgnat/s-atopex.ads: Likewise. * libgnat/s-atopri.adb, libgnat/s-atopri.ads: Likewise. * libgnat/s-auxdec.adb, libgnat/s-auxdec.ads: Likewise. * libgnat/s-bignum.adb, libgnat/s-bignum.ads: Likewise. * libgnat/s-bitfie.ads, libgnat/s-bitops.adb: Likewise. * libgnat/s-bitops.ads, libgnat/s-bituti.adb: Likewise. * libgnat/s-bituti.ads, libgnat/s-boarop.ads: Likewise. * libgnat/s-boustr.adb, libgnat/s-boustr.ads: Likewise. * libgnat/s-bytswa.ads, libgnat/s-carsi8.adb: Likewise. * libgnat/s-carsi8.ads, libgnat/s-carun8.adb: Likewise. * libgnat/s-carun8.ads, libgnat/s-casi128.adb: Likewise. * libgnat/s-casi128.ads, libgnat/s-casi16.adb: Likewise. * libgnat/s-casi16.ads, libgnat/s-casi32.adb: Likewise. * libgnat/s-casi32.ads, libgnat/s-casi64.adb: Likewise. * libgnat/s-casi64.ads, libgnat/s-casuti.adb: Likewise. * libgnat/s-casuti.ads, libgnat/s-caun128.adb: Likewise. * libgnat/s-caun128.ads, libgnat/s-caun16.adb: Likewise. * libgnat/s-caun16.ads, libgnat/s-caun32.adb: Likewise. * libgnat/s-caun32.ads, libgnat/s-caun64.adb: Likewise. * libgnat/s-caun64.ads, libgnat/s-chepoo.ads: Likewise. * libgnat/s-commun.adb, libgnat/s-commun.ads: Likewise. * libgnat/s-conca2.adb, libgnat/s-conca2.ads: Likewise. * libgnat/s-conca3.adb, libgnat/s-conca3.ads: Likewise. * libgnat/s-conca4.adb, libgnat/s-conca4.ads: Likewise. * libgnat/s-conca5.adb, libgnat/s-conca5.ads: Likewise. * libgnat/s-conca6.adb, libgnat/s-conca6.ads: Likewise. * libgnat/s-conca7.adb, libgnat/s-conca7.ads: Likewise. * libgnat/s-conca8.adb, libgnat/s-conca8.ads: Likewise. * libgnat/s-conca9.adb, libgnat/s-conca9.ads, libgnat/s-crc32.adb: Likewise. * libgnat/s-crc32.ads, libgnat/s-crtl.ads, libgnat/s-dfmkio.ads: Likewise. * libgnat/s-dfmopr.ads, libgnat/s-dgmgop.ads: Likewise. * libgnat/s-diflio.adb, libgnat/s-diflio.ads: Likewise. * libgnat/s-diflmk.ads, libgnat/s-digemk.ads: Likewise. * libgnat/s-diinio.adb, libgnat/s-diinio.ads: Likewise. * libgnat/s-dilomk.ads, libgnat/s-dim.ads, libgnat/s-dimkio.ads: Likewise. * libgnat/s-dimmks.ads, libgnat/s-direio.adb: Likewise. * libgnat/s-direio.ads, libgnat/s-dlmkio.ads: Likewise. * libgnat/s-dlmopr.ads, libgnat/s-dmotpr.ads: Likewise. * libgnat/s-dorepr.adb, libgnat/s-dorepr__fma.adb: Likewise. * libgnat/s-dourea.adb, libgnat/s-dourea.ads: Likewise. * libgnat/s-dsaser.ads, libgnat/s-dwalin.adb: Likewise. * libgnat/s-dwalin.ads, libgnat/s-elaall.adb: Likewise. * libgnat/s-elaall.ads, libgnat/s-excdeb.adb: Likewise. * libgnat/s-excdeb.ads, libgnat/s-except.adb: Likewise. * libgnat/s-except.ads, libgnat/s-excmac__arm.adb: Likewise. * libgnat/s-excmac__arm.ads, libgnat/s-excmac__gcc.adb: Likewise. * libgnat/s-excmac__gcc.ads, libgnat/s-exctab.adb: Likewise. * libgnat/s-exctab.ads, libgnat/s-exctra.adb: Likewise. * libgnat/s-exctra.ads, libgnat/s-exnflt.ads: Likewise. * libgnat/s-exnint.adb, libgnat/s-exnint.ads: Likewise. * libgnat/s-exnlfl.ads, libgnat/s-exnllf.adb: Likewise. * libgnat/s-exnllf.ads, libgnat/s-exnlli.adb: Likewise. * libgnat/s-exnlli.ads, libgnat/s-exnllli.ads: Likewise. * libgnat/s-expint.adb, libgnat/s-expint.ads: Likewise. * libgnat/s-explli.adb, libgnat/s-explli.ads: Likewise. * libgnat/s-expllli.ads, libgnat/s-explllu.ads: Likewise. * libgnat/s-expllu.adb, libgnat/s-expllu.ads: Likewise. * libgnat/s-expmod.adb, libgnat/s-expmod.ads: Likewise. * libgnat/s-exponn.adb, libgnat/s-exponn.ads: Likewise. * libgnat/s-exponr.adb, libgnat/s-exponr.ads: Likewise. * libgnat/s-expont.adb, libgnat/s-expont.ads: Likewise. * libgnat/s-exponu.adb, libgnat/s-exponu.ads: Likewise. * libgnat/s-expuns.adb, libgnat/s-expuns.ads: Likewise. * libgnat/s-fatflt.ads, libgnat/s-fatgen.adb: Likewise. * libgnat/s-fatgen.ads, libgnat/s-fatlfl.ads: Likewise. * libgnat/s-fatllf.ads, libgnat/s-ficobl.ads: Likewise. * libgnat/s-filatt.ads, libgnat/s-fileio.adb: Likewise. * libgnat/s-fileio.ads, libgnat/s-finmas.adb: Likewise. * libgnat/s-finmas.ads, libgnat/s-finroo.adb: Likewise. * libgnat/s-finroo.ads, libgnat/s-flocon.adb: Likewise. * libgnat/s-flocon.ads, libgnat/s-flocon__none.adb: Likewise. * libgnat/s-fode128.ads, libgnat/s-fode32.ads: Likewise. * libgnat/s-fode64.ads, libgnat/s-fofi128.ads: Likewise. * libgnat/s-fofi32.ads, libgnat/s-fofi64.ads: Likewise. * libgnat/s-fore_d.adb, libgnat/s-fore_d.ads: Likewise. * libgnat/s-fore_f.adb, libgnat/s-fore_f.ads: Likewise. * libgnat/s-forrea.adb, libgnat/s-forrea.ads: Likewise. * libgnat/s-gearop.adb, libgnat/s-gearop.ads: Likewise. * libgnat/s-genbig.adb, libgnat/s-genbig.ads: Likewise. * libgnat/s-geveop.adb, libgnat/s-geveop.ads: Likewise. * libgnat/s-gloloc.adb, libgnat/s-gloloc.ads: Likewise. * libgnat/s-gloloc__mingw.adb, libgnat/s-htable.adb: Likewise. * libgnat/s-htable.ads, libgnat/s-imageb.adb: Likewise. * libgnat/s-imageb.ads, libgnat/s-imaged.adb: Likewise. * libgnat/s-imaged.ads, libgnat/s-imagef.adb: Likewise. * libgnat/s-imagef.ads, libgnat/s-imagei.adb: Likewise. * libgnat/s-imagei.ads, libgnat/s-imagen.adb: Likewise. * libgnat/s-imagen.ads, libgnat/s-imager.adb: Likewise. * libgnat/s-imager.ads, libgnat/s-imageu.adb: Likewise. * libgnat/s-imageu.ads, libgnat/s-imagew.adb: Likewise. * libgnat/s-imagew.ads, libgnat/s-imde128.ads: Likewise. * libgnat/s-imde32.ads, libgnat/s-imde64.ads: Likewise. * libgnat/s-imen16.ads, libgnat/s-imen32.ads: Likewise. * libgnat/s-imenu8.ads, libgnat/s-imfi128.ads: Likewise. * libgnat/s-imfi32.ads, libgnat/s-imfi64.ads: Likewise. * libgnat/s-imgbiu.adb, libgnat/s-imgbiu.ads: Likewise. * libgnat/s-imgboo.adb, libgnat/s-imgboo.ads: Likewise. * libgnat/s-imgcha.adb, libgnat/s-imgcha.ads: Likewise. * libgnat/s-imgflt.ads, libgnat/s-imgint.adb: Likewise. * libgnat/s-imgint.ads, libgnat/s-imglfl.ads: Likewise. * libgnat/s-imgllb.adb, libgnat/s-imgllb.ads: Likewise. * libgnat/s-imgllf.ads, libgnat/s-imglli.adb: Likewise. * libgnat/s-imglli.ads, libgnat/s-imglllb.ads: Likewise. * libgnat/s-imgllli.ads, libgnat/s-imglllu.ads: Likewise. * libgnat/s-imglllw.ads, libgnat/s-imgllu.adb: Likewise. * libgnat/s-imgllu.ads, libgnat/s-imgllw.adb: Likewise. * libgnat/s-imgllw.ads, libgnat/s-imgrea.adb: Likewise. * libgnat/s-imgrea.ads, libgnat/s-imguns.adb: Likewise. * libgnat/s-imguns.ads, libgnat/s-imguti.adb: Likewise. * libgnat/s-imguti.ads, libgnat/s-imgwch.adb: Likewise. * libgnat/s-imgwch.ads, libgnat/s-imgwiu.adb: Likewise. * libgnat/s-imgwiu.ads, libgnat/s-io.adb, libgnat/s-io.ads: Likewise. * libgnat/s-llflex.ads, libgnat/s-maccod.ads: Likewise. * libgnat/s-mantis.adb, libgnat/s-mantis.ads: Likewise. * libgnat/s-mastop.adb, libgnat/s-mastop.ads: Likewise. * libgnat/s-memcop.ads, libgnat/s-memory.adb: Likewise. * libgnat/s-memory.ads, libgnat/s-mmap.adb, libgnat/s-mmap.ads: Likewise. * libgnat/s-mmauni__long.ads, libgnat/s-mmosin__mingw.adb: Likewise. * libgnat/s-mmosin__mingw.ads, libgnat/s-mmosin__unix.adb: Likewise. * libgnat/s-mmosin__unix.ads, libgnat/s-multip.adb: Likewise. * libgnat/s-objrea.adb, libgnat/s-objrea.ads: Likewise. * libgnat/s-optide.adb, libgnat/s-os_lib.adb: Likewise. * libgnat/s-os_lib.ads, libgnat/s-osprim.ads: Likewise. * libgnat/s-osprim__darwin.adb, libgnat/s-osprim__lynxos.ads: Likewise. * libgnat/s-osprim__mingw.adb, libgnat/s-osprim__posix.adb: Likewise. * libgnat/s-osprim__posix2008.adb, libgnat/s-osprim__rtems.adb: Likewise. * libgnat/s-osprim__solaris.adb, libgnat/s-osprim__unix.adb: Likewise. * libgnat/s-osprim__x32.adb, libgnat/s-pack03.adb: Likewise. * libgnat/s-pack03.ads, libgnat/s-pack05.adb: Likewise. * libgnat/s-pack05.ads, libgnat/s-pack06.adb: Likewise. * libgnat/s-pack06.ads, libgnat/s-pack07.adb: Likewise. * libgnat/s-pack07.ads, libgnat/s-pack09.adb: Likewise. * libgnat/s-pack09.ads, libgnat/s-pack10.adb: Likewise. * libgnat/s-pack10.ads, libgnat/s-pack100.adb: Likewise. * libgnat/s-pack100.ads, libgnat/s-pack101.adb: Likewise. * libgnat/s-pack101.ads, libgnat/s-pack102.adb: Likewise. * libgnat/s-pack102.ads, libgnat/s-pack103.adb: Likewise. * libgnat/s-pack103.ads, libgnat/s-pack104.adb: Likewise. * libgnat/s-pack104.ads, libgnat/s-pack105.adb: Likewise. * libgnat/s-pack105.ads, libgnat/s-pack106.adb: Likewise. * libgnat/s-pack106.ads, libgnat/s-pack107.adb: Likewise. * libgnat/s-pack107.ads, libgnat/s-pack108.adb: Likewise. * libgnat/s-pack108.ads, libgnat/s-pack109.adb: Likewise. * libgnat/s-pack109.ads, libgnat/s-pack11.adb: Likewise. * libgnat/s-pack11.ads, libgnat/s-pack110.adb: Likewise. * libgnat/s-pack110.ads, libgnat/s-pack111.adb: Likewise. * libgnat/s-pack111.ads, libgnat/s-pack112.adb: Likewise. * libgnat/s-pack112.ads, libgnat/s-pack113.adb: Likewise. * libgnat/s-pack113.ads, libgnat/s-pack114.adb: Likewise. * libgnat/s-pack114.ads, libgnat/s-pack115.adb: Likewise. * libgnat/s-pack115.ads, libgnat/s-pack116.adb: Likewise. * libgnat/s-pack116.ads, libgnat/s-pack117.adb: Likewise. * libgnat/s-pack117.ads, libgnat/s-pack118.adb: Likewise. * libgnat/s-pack118.ads, libgnat/s-pack119.adb: Likewise. * libgnat/s-pack119.ads, libgnat/s-pack12.adb: Likewise. * libgnat/s-pack12.ads, libgnat/s-pack120.adb: Likewise. * libgnat/s-pack120.ads, libgnat/s-pack121.adb: Likewise. * libgnat/s-pack121.ads, libgnat/s-pack122.adb: Likewise. * libgnat/s-pack122.ads, libgnat/s-pack123.adb: Likewise. * libgnat/s-pack123.ads, libgnat/s-pack124.adb: Likewise. * libgnat/s-pack124.ads, libgnat/s-pack125.adb: Likewise. * libgnat/s-pack125.ads, libgnat/s-pack126.adb: Likewise. * libgnat/s-pack126.ads, libgnat/s-pack127.adb: Likewise. * libgnat/s-pack127.ads, libgnat/s-pack13.adb: Likewise. * libgnat/s-pack13.ads, libgnat/s-pack14.adb: Likewise. * libgnat/s-pack14.ads, libgnat/s-pack15.adb: Likewise. * libgnat/s-pack15.ads, libgnat/s-pack17.adb: Likewise. * libgnat/s-pack17.ads, libgnat/s-pack18.adb: Likewise. * libgnat/s-pack18.ads, libgnat/s-pack19.adb: Likewise. * libgnat/s-pack19.ads, libgnat/s-pack20.adb: Likewise. * libgnat/s-pack20.ads, libgnat/s-pack21.adb: Likewise. * libgnat/s-pack21.ads, libgnat/s-pack22.adb: Likewise. * libgnat/s-pack22.ads, libgnat/s-pack23.adb: Likewise. * libgnat/s-pack23.ads, libgnat/s-pack24.adb: Likewise. * libgnat/s-pack24.ads, libgnat/s-pack25.adb: Likewise. * libgnat/s-pack25.ads, libgnat/s-pack26.adb: Likewise. * libgnat/s-pack26.ads, libgnat/s-pack27.adb: Likewise. * libgnat/s-pack27.ads, libgnat/s-pack28.adb: Likewise. * libgnat/s-pack28.ads, libgnat/s-pack29.adb: Likewise. * libgnat/s-pack29.ads, libgnat/s-pack30.adb: Likewise. * libgnat/s-pack30.ads, libgnat/s-pack31.adb: Likewise. * libgnat/s-pack31.ads, libgnat/s-pack33.adb: Likewise. * libgnat/s-pack33.ads, libgnat/s-pack34.adb: Likewise. * libgnat/s-pack34.ads, libgnat/s-pack35.adb: Likewise. * libgnat/s-pack35.ads, libgnat/s-pack36.adb: Likewise. * libgnat/s-pack36.ads, libgnat/s-pack37.adb: Likewise. * libgnat/s-pack37.ads, libgnat/s-pack38.adb: Likewise. * libgnat/s-pack38.ads, libgnat/s-pack39.adb: Likewise. * libgnat/s-pack39.ads, libgnat/s-pack40.adb: Likewise. * libgnat/s-pack40.ads, libgnat/s-pack41.adb: Likewise. * libgnat/s-pack41.ads, libgnat/s-pack42.adb: Likewise. * libgnat/s-pack42.ads, libgnat/s-pack43.adb: Likewise. * libgnat/s-pack43.ads, libgnat/s-pack44.adb: Likewise. * libgnat/s-pack44.ads, libgnat/s-pack45.adb: Likewise. * libgnat/s-pack45.ads, libgnat/s-pack46.adb: Likewise. * libgnat/s-pack46.ads, libgnat/s-pack47.adb: Likewise. * libgnat/s-pack47.ads, libgnat/s-pack48.adb: Likewise. * libgnat/s-pack48.ads, libgnat/s-pack49.adb: Likewise. * libgnat/s-pack49.ads, libgnat/s-pack50.adb: Likewise. * libgnat/s-pack50.ads, libgnat/s-pack51.adb: Likewise. * libgnat/s-pack51.ads, libgnat/s-pack52.adb: Likewise. * libgnat/s-pack52.ads, libgnat/s-pack53.adb: Likewise. * libgnat/s-pack53.ads, libgnat/s-pack54.adb: Likewise. * libgnat/s-pack54.ads, libgnat/s-pack55.adb: Likewise. * libgnat/s-pack55.ads, libgnat/s-pack56.adb: Likewise. * libgnat/s-pack56.ads, libgnat/s-pack57.adb: Likewise. * libgnat/s-pack57.ads, libgnat/s-pack58.adb: Likewise. * libgnat/s-pack58.ads, libgnat/s-pack59.adb: Likewise. * libgnat/s-pack59.ads, libgnat/s-pack60.adb: Likewise. * libgnat/s-pack60.ads, libgnat/s-pack61.adb: Likewise. * libgnat/s-pack61.ads, libgnat/s-pack62.adb: Likewise. * libgnat/s-pack62.ads, libgnat/s-pack63.adb: Likewise. * libgnat/s-pack63.ads, libgnat/s-pack65.adb: Likewise. * libgnat/s-pack65.ads, libgnat/s-pack66.adb: Likewise. * libgnat/s-pack66.ads, libgnat/s-pack67.adb: Likewise. * libgnat/s-pack67.ads, libgnat/s-pack68.adb: Likewise. * libgnat/s-pack68.ads, libgnat/s-pack69.adb: Likewise. * libgnat/s-pack69.ads, libgnat/s-pack70.adb: Likewise. * libgnat/s-pack70.ads, libgnat/s-pack71.adb: Likewise. * libgnat/s-pack71.ads, libgnat/s-pack72.adb: Likewise. * libgnat/s-pack72.ads, libgnat/s-pack73.adb: Likewise. * libgnat/s-pack73.ads, libgnat/s-pack74.adb: Likewise. * libgnat/s-pack74.ads, libgnat/s-pack75.adb: Likewise. * libgnat/s-pack75.ads, libgnat/s-pack76.adb: Likewise. * libgnat/s-pack76.ads, libgnat/s-pack77.adb: Likewise. * libgnat/s-pack77.ads, libgnat/s-pack78.adb: Likewise. * libgnat/s-pack78.ads, libgnat/s-pack79.adb: Likewise. * libgnat/s-pack79.ads, libgnat/s-pack80.adb: Likewise. * libgnat/s-pack80.ads, libgnat/s-pack81.adb: Likewise. * libgnat/s-pack81.ads, libgnat/s-pack82.adb: Likewise. * libgnat/s-pack82.ads, libgnat/s-pack83.adb: Likewise. * libgnat/s-pack83.ads, libgnat/s-pack84.adb: Likewise. * libgnat/s-pack84.ads, libgnat/s-pack85.adb: Likewise. * libgnat/s-pack85.ads, libgnat/s-pack86.adb: Likewise. * libgnat/s-pack86.ads, libgnat/s-pack87.adb: Likewise. * libgnat/s-pack87.ads, libgnat/s-pack88.adb: Likewise. * libgnat/s-pack88.ads, libgnat/s-pack89.adb: Likewise. * libgnat/s-pack89.ads, libgnat/s-pack90.adb: Likewise. * libgnat/s-pack90.ads, libgnat/s-pack91.adb: Likewise. * libgnat/s-pack91.ads, libgnat/s-pack92.adb: Likewise. * libgnat/s-pack92.ads, libgnat/s-pack93.adb: Likewise. * libgnat/s-pack93.ads, libgnat/s-pack94.adb: Likewise. * libgnat/s-pack94.ads, libgnat/s-pack95.adb: Likewise. * libgnat/s-pack95.ads, libgnat/s-pack96.adb: Likewise. * libgnat/s-pack96.ads, libgnat/s-pack97.adb: Likewise. * libgnat/s-pack97.ads, libgnat/s-pack98.adb: Likewise. * libgnat/s-pack98.ads, libgnat/s-pack99.adb: Likewise. * libgnat/s-pack99.ads, libgnat/s-parame.adb: Likewise. * libgnat/s-parame.ads, libgnat/s-parame__hpux.ads: Likewise. * libgnat/s-parame__posix2008.ads, libgnat/s-parame__rtems.adb: Likewise. * libgnat/s-parame__vxworks.adb, libgnat/s-parame__vxworks.ads: Likewise. * libgnat/s-parint.adb, libgnat/s-parint.ads: Likewise. * libgnat/s-pehage.adb, libgnat/s-pehage.ads: Likewise. * libgnat/s-pooglo.adb, libgnat/s-pooglo.ads: Likewise. * libgnat/s-pooloc.adb, libgnat/s-pooloc.ads: Likewise. * libgnat/s-poosiz.adb, libgnat/s-poosiz.ads: Likewise. * libgnat/s-powflt.ads, libgnat/s-powlfl.ads: Likewise. * libgnat/s-powllf.ads, libgnat/s-purexc.ads: Likewise. * libgnat/s-putima.adb, libgnat/s-putima.ads: Likewise. * libgnat/s-rannum.adb, libgnat/s-rannum.ads: Likewise. * libgnat/s-ransee.adb, libgnat/s-ransee.ads: Likewise. * libgnat/s-regexp.adb, libgnat/s-regexp.ads: Likewise. * libgnat/s-regpat.adb, libgnat/s-regpat.ads: Likewise. * libgnat/s-resfil.adb, libgnat/s-resfil.ads: Likewise. * libgnat/s-restri.adb, libgnat/s-restri.ads: Likewise. * libgnat/s-retsta.ads, libgnat/s-rident.ads, libgnat/s-rpc.adb: Likewise. * libgnat/s-rpc.ads, libgnat/s-scaval.adb, libgnat/s-scaval.ads: Likewise. * libgnat/s-scaval__128.adb, libgnat/s-scaval__128.ads: Likewise. * libgnat/s-secsta.adb, libgnat/s-secsta.ads: Likewise. * libgnat/s-sequio.adb, libgnat/s-sequio.ads: Likewise. * libgnat/s-shabig.ads, libgnat/s-shasto.adb: Likewise. * libgnat/s-shasto.ads, libgnat/s-soflin.adb: Likewise. * libgnat/s-soflin.ads, libgnat/s-soliin.adb: Likewise. * libgnat/s-soliin.ads, libgnat/s-spark.ads, libgnat/s-spcuop.adb: Likewise. * libgnat/s-spcuop.ads, libgnat/s-spsufi.adb: Likewise. * libgnat/s-spsufi.ads, libgnat/s-stache.adb: Likewise. * libgnat/s-stache.ads, libgnat/s-stalib.adb: Likewise. * libgnat/s-stalib.ads, libgnat/s-statxd.adb: Likewise. * libgnat/s-statxd.ads, libgnat/s-stausa.adb: Likewise. * libgnat/s-stausa.ads, libgnat/s-stchop.adb: Likewise. * libgnat/s-stchop.ads, libgnat/s-stchop__limit.ads: Likewise. * libgnat/s-stchop__vxworks.adb, libgnat/s-stoele.adb: Likewise. * libgnat/s-stoele.ads, libgnat/s-stopoo.adb: Likewise. * libgnat/s-stopoo.ads, libgnat/s-stposu.adb: Likewise. * libgnat/s-stposu.ads, libgnat/s-stratt.adb: Likewise. * libgnat/s-stratt.ads, libgnat/s-strcom.adb: Likewise. * libgnat/s-strcom.ads, libgnat/s-strhas.adb: Likewise. * libgnat/s-strhas.ads, libgnat/s-string.adb: Likewise. * libgnat/s-string.ads, libgnat/s-ststop.adb: Likewise. * libgnat/s-ststop.ads, libgnat/s-tasloc.adb: Likewise. * libgnat/s-tasloc.ads, libgnat/s-traceb.adb: Likewise. * libgnat/s-traceb.ads, libgnat/s-traceb__hpux.adb: Likewise. * libgnat/s-traceb__mastop.adb, libgnat/s-traent.adb: Likewise. * libgnat/s-traent.ads, libgnat/s-trasym.adb: Likewise. * libgnat/s-trasym.ads, libgnat/s-trasym__dwarf.adb: Likewise. * libgnat/s-tsmona.adb, libgnat/s-tsmona__linux.adb: Likewise. * libgnat/s-tsmona__mingw.adb, libgnat/s-unstyp.ads: Likewise. * libgnat/s-utf_32.adb, libgnat/s-utf_32.ads: Likewise. * libgnat/s-vade128.ads, libgnat/s-vade32.ads: Likewise. * libgnat/s-vade64.ads, libgnat/s-vaen16.ads: Likewise. * libgnat/s-vaen32.ads, libgnat/s-vaenu8.ads: Likewise. * libgnat/s-vafi128.ads, libgnat/s-vafi32.ads: Likewise. * libgnat/s-vafi64.ads, libgnat/s-vaispe.adb: Likewise. * libgnat/s-vaispe.ads, libgnat/s-valboo.adb: Likewise. * libgnat/s-valboo.ads, libgnat/s-valcha.adb: Likewise. * libgnat/s-valcha.ads, libgnat/s-valflt.ads: Likewise. * libgnat/s-valint.adb, libgnat/s-valint.ads: Likewise. * libgnat/s-vallfl.ads, libgnat/s-valllf.ads: Likewise. * libgnat/s-vallli.adb, libgnat/s-vallli.ads: Likewise. * libgnat/s-valllli.ads, libgnat/s-vallllu.ads: Likewise. * libgnat/s-valllu.adb, libgnat/s-valllu.ads: Likewise. * libgnat/s-valrea.adb, libgnat/s-valrea.ads: Likewise. * libgnat/s-valued.adb, libgnat/s-valued.ads: Likewise. * libgnat/s-valuef.adb, libgnat/s-valuef.ads: Likewise. * libgnat/s-valuei.adb, libgnat/s-valuei.ads: Likewise. * libgnat/s-valuen.adb, libgnat/s-valuen.ads: Likewise. * libgnat/s-valuer.adb, libgnat/s-valuer.ads: Likewise. * libgnat/s-valueu.adb, libgnat/s-valueu.ads: Likewise. * libgnat/s-valuns.adb, libgnat/s-valuns.ads: Likewise. * libgnat/s-valuti.adb, libgnat/s-valuti.ads: Likewise. * libgnat/s-valwch.adb, libgnat/s-valwch.ads: Likewise. * libgnat/s-vauspe.adb, libgnat/s-vauspe.ads: Likewise. * libgnat/s-veboop.adb, libgnat/s-veboop.ads: Likewise. * libgnat/s-vector.ads, libgnat/s-vercon.adb: Likewise. * libgnat/s-vercon.ads, libgnat/s-wchcnv.adb: Likewise. * libgnat/s-wchcnv.ads, libgnat/s-wchcon.adb: Likewise. * libgnat/s-wchcon.ads, libgnat/s-wchjis.adb: Likewise. * libgnat/s-wchjis.ads, libgnat/s-wchstw.adb: Likewise. * libgnat/s-wchstw.ads, libgnat/s-wchwts.adb: Likewise. * libgnat/s-wchwts.ads, libgnat/s-widboo.adb: Likewise. * libgnat/s-widboo.ads, libgnat/s-widcha.adb: Likewise. * libgnat/s-widcha.ads, libgnat/s-widenu.adb: Likewise. * libgnat/s-widenu.ads, libgnat/s-widint.ads: Likewise. * libgnat/s-widlli.adb, libgnat/s-widlli.ads: Likewise. * libgnat/s-widllli.ads, libgnat/s-widlllu.ads: Likewise. * libgnat/s-widllu.adb, libgnat/s-widllu.ads: Likewise. * libgnat/s-widthi.adb, libgnat/s-widthi.ads: Likewise. * libgnat/s-widthu.adb, libgnat/s-widthu.ads: Likewise. * libgnat/s-widuns.ads, libgnat/s-widwch.adb: Likewise. * libgnat/s-widwch.ads, libgnat/s-win32.ads, libgnat/s-winext.ads: Likewise. * libgnat/s-wwdcha.adb, libgnat/s-wwdcha.ads: Likewise. * libgnat/s-wwdenu.adb, libgnat/s-wwdenu.ads: Likewise. * libgnat/s-wwdwch.adb, libgnat/s-wwdwch.ads: Likewise. * libgnat/system-aix.ads, libgnat/system-darwin-arm.ads: Likewise. * libgnat/system-darwin-ppc.ads, libgnat/system-darwin-x86.ads: Likewise. * libgnat/system-djgpp.ads, libgnat/system-dragonfly-x86_64.ads: Likewise. * libgnat/system-freebsd.ads, libgnat/system-hpux-ia64.ads: Likewise. * libgnat/system-hpux.ads, libgnat/system-linux-alpha.ads: Likewise. * libgnat/system-linux-arm.ads, libgnat/system-linux-hppa.ads: Likewise. * libgnat/system-linux-ia64.ads, libgnat/system-linux-m68k.ads: Likewise. * libgnat/system-linux-mips.ads, libgnat/system-linux-ppc.ads: Likewise. * libgnat/system-linux-riscv.ads, libgnat/system-linux-s390.ads: Likewise. * libgnat/system-linux-sh4.ads, libgnat/system-linux-sparc.ads: Likewise. * libgnat/system-linux-x86.ads, libgnat/system-lynxos178-ppc.ads: Likewise. * libgnat/system-lynxos178-x86.ads, libgnat/system-mingw.ads: Likewise. * libgnat/system-qnx-arm.ads, libgnat/system-rtems.ads: Likewise. * libgnat/system-solaris-sparc.ads: Likewise. * libgnat/system-solaris-x86.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-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-ppc-kernel.ads: Likewise. * libgnat/system-vxworks7-ppc-rtp-smp.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_64-kernel.ads: Likewise. * libgnat/system-vxworks7-x86_64-rtp-smp.ads, link.c, live.adb: Likewise. * live.ads, locales.c, make.adb, make.ads, make_util.adb: Likewise. * make_util.ads, makeusg.adb, makeusg.ads, mdll-fil.adb: Likewise. * mdll-fil.ads, mdll-utl.adb, mdll-utl.ads, mdll.adb, mdll.ads: Likewise. * mingw32.h, mkdir.c, namet-sp.adb, namet-sp.ads, namet.adb: Likewise. * namet.ads, namet.h, nlists.adb, nlists.ads, nlists.h, opt.adb: Likewise. * opt.ads, osint-b.adb, osint-b.ads, osint-c.adb, osint-c.ads: Likewise. * osint-l.adb, osint-l.ads, osint-m.adb, osint-m.ads, osint.adb: Likewise. * osint.ads, output.adb, output.ads, par-ch10.adb, par-ch11.adb: Likewise. * par-ch12.adb, par-ch13.adb, par-ch2.adb, par-ch3.adb: Likewise. * par-ch4.adb, par-ch5.adb, par-ch6.adb, par-ch7.adb, par-ch8.adb: Likewise. * par-ch9.adb, par-endh.adb, par-labl.adb, par-load.adb: Likewise. * par-prag.adb, par-sync.adb, par-tchk.adb, par-util.adb, par.adb: Likewise. * par.ads, par_sco.adb, par_sco.ads: Likewise. * pprint.adb, pprint.ads, prep.adb, prep.ads: Likewise. * prepcomp.adb, prepcomp.ads, put_scos.adb, put_scos.ads: Likewise. * raise-gcc.c, raise.c, raise.h, repinfo-input.adb: Likewise. * repinfo-input.ads, repinfo.adb, repinfo.ads, repinfo.h: Likewise. * restrict.adb, restrict.ads, rident.ads, rtfinal.c, rtinit.c: Likewise. * rtsfind.adb, rtsfind.ads, runtime.h, s-oscons-tmplt.c: Likewise. * scans.adb, scans.ads, scil_ll.adb, scil_ll.ads, scn.adb: Likewise. * scn.ads, scng.adb, scng.ads, scos.adb, scos.ads: Likewise. * scos.h, sdefault.ads, seh_init.c, sem.adb, sem.ads: Likewise. * sem_aggr.adb, sem_aggr.ads, sem_attr.adb, sem_attr.ads: Likewise. * sem_aux.adb, sem_aux.ads, sem_case.adb, sem_case.ads: Likewise. * sem_cat.adb, sem_cat.ads, sem_ch10.adb, sem_ch10.ads: Likewise. * sem_ch11.adb, sem_ch11.ads, sem_ch12.adb, sem_ch12.ads: Likewise. * sem_ch13.adb, sem_ch13.ads, sem_ch2.adb, sem_ch2.ads: Likewise. * sem_ch3.adb, sem_ch3.ads, sem_ch4.adb, sem_ch4.ads, sem_ch5.adb: Likewise. * sem_ch5.ads, sem_ch6.adb, sem_ch6.ads, sem_ch7.adb, sem_ch7.ads: Likewise. * sem_ch8.adb, sem_ch8.ads, sem_ch9.adb, sem_ch9.ads, sem_dim.adb: Likewise. * sem_dim.ads, sem_disp.adb, sem_disp.ads, sem_dist.adb: Likewise. * sem_dist.ads, sem_elab.adb, sem_elab.ads, sem_elim.adb: Likewise. * sem_elim.ads, sem_eval.adb, sem_eval.ads, sem_intr.adb: Likewise. * sem_intr.ads, sem_mech.adb, sem_mech.ads, sem_prag.adb: Likewise. * sem_prag.ads, sem_res.adb, sem_res.ads, sem_scil.adb: Likewise. * sem_scil.ads, sem_smem.adb, sem_smem.ads, sem_type.adb: Likewise. * sem_type.ads, sem_util.adb, sem_util.ads, sem_warn.adb: Likewise. * sem_warn.ads, set_targ.adb, set_targ.ads, sfn_scan.adb: Likewise. * sfn_scan.ads, sigtramp-arm-qnx.c, sigtramp-armdroid.c: Likewise. * sigtramp-ios.c, sigtramp-qnx.c: Likewise. * sigtramp-vxworks-target.h, sigtramp-vxworks.c, sigtramp.h: Likewise. * sinfo-cn.adb, sinfo-cn.ads, sinfo-utils.adb, sinfo-utils.ads: Likewise. * sinfo.adb, sinfo.ads, sinput-c.adb, sinput-c.ads, sinput-d.adb: Likewise. * sinput-d.ads, sinput-l.adb, sinput-l.ads, sinput.adb: Likewise. * sinput.ads, socket.c, spark_xrefs.adb, spark_xrefs.ads: Likewise. * sprint.adb, sprint.ads, stand.ads: Likewise. * stringt.adb, stringt.ads, stringt.h, strub.adb, strub.ads: Likewise. * style.adb, style.ads, styleg.adb, styleg.ads, stylesw.adb: Likewise. * stylesw.ads, switch-b.adb, switch-b.ads, switch-c.adb: Likewise. * switch-c.ads, switch-m.adb, switch-m.ads, switch.adb: Likewise. * switch.ads, sysdep.c, table.adb: Likewise. * table.ads, targext.c, targparm.adb, targparm.ads, tbuild.adb: Likewise. * tbuild.ads, tempdir.adb, tempdir.ads, terminals.c, tracebak.c: Likewise. * treepr.adb, treepr.ads, ttypes.ads, types.adb, types.ads: Likewise. * types.h, uintp.adb, uintp.ads, uintp.h, uname.adb, uname.ads: Likewise. * urealp.adb, urealp.ads, urealp.h, usage.adb, usage.ads: Likewise. * validsw.adb, validsw.ads, vast.adb, vast.ads, warnsw.adb: Likewise. * warnsw.ads, widechar.adb, widechar.ads, xoscons.adb: Likewise. * xsnamest.adb, xutil.adb, xutil.ads, gnatvsn.adb: Likewise. * gnatvsn.ads (Current_Year): Likewise and bump to 2023.
2023-01-05ada: Clean up interface handling in Expand_N_Object_DeclarationEric Botcazou1-96/+59
The code performing the expansion of objects with (class-wide) interface type in Expand_N_Object_Declaration is fairly low-level, fiddling with the homonym and entity chains, which is unnecessary. gcc/ada/ * exp_ch3.adb (Expand_N_Object_Declaration): Rewrite the end of the handling of objects with (class-wide) interface type by using the same idiom as the other cases generating a renaming. * exp_util.adb (Is_Displacement_Of_Object_Or_Function_Result): Tweak pattern matching code and exclude special return objects. (Requires_Cleanup_Actions): Adjust comment. * exp_ch7.adb (Build_Finalizer): Likewise.
2023-01-05ada: Optimize class-wide objects initialized with function callsEric Botcazou1-23/+31
This optimizes the implementation of class-wide objects initialized with function calls in the non-interface case, by avoiding an unnecessary copy operation and/or a dispatching call to the _Size primitive when possible. gcc/ada/ * exp_ch3.adb (Expand_N_Object_Declaration): New local variable Func_Id holding the function for a special return object. Use a direct renaming in the class-wide case when the initializing expression is a captured function call, except for a special return object when the two functions do not return on the same stack. Apply the accessibility check for class-wide special return objects. * exp_util.adb (Make_CW_Equivalent_Type) <Has_Tag_Of_Type>: New. Do not force a dispatching call to the primitive operation _Size if the expression is known to statically have the tag of its type.
2023-01-05ada: Fix pasto in commentEric Botcazou1-2/+2
gcc/ada/ * exp_ch3.adb (Expand_N_Object_Declaration): Fix pasto in comment.
2023-01-05ada: Revert to constrained allocation for string concatenationEric Botcazou1-13/+16
Using an unconstrained allocation is less efficient in the general case. gcc/ada/ * exp_ch3.adb (Expand_N_Object_Declaration): New local variable used throughout instead of testing Is_Special_Return_Object every time. Do not rename an OK_To_Rename object for a special return object. * exp_ch4.adb (Expand_Concatenate): Revert to constrained allocation if the result is allocated on the secondary stack.
2023-01-05ada: Fix finalization issues in extended return statementsEric Botcazou1-2/+32
The first issue pertains to return objects of (class-wide) interface types, which need to be adjusted if the type is not inherently limited. The second issue is for return objects of non-class-wide types that are initialized by a function call, which can use a direct renaming only if the object doing the capture of the function call is flagged by Is_Related_To_Func_Return. The third one is that, in the second case, we may need to reassign the tag. gcc/ada/ * exp_ch3.adb (Expand_N_Object_Declaration): For a special return object of an interface type that is not inherently limited, make a call to the Adjust primitive after doing the copy. For a special return object of a non-class-wide type initialized by a function call, use a direct renaming only if the object doing the capture is flagged by Is_Related_To_Func_Return. For a special return object using a direct renaming, reassign the tag, if need be. * exp_ch6.adb (Expand_Simple_Function_Return): Fix comment. * exp_util.adb (Is_Related_To_Func_Return): Accept both regular and renaming object declarations for return objects.
2023-01-03ada: Fix detection of function calls in object declarationsEric Botcazou1-6/+4
The current code has relied on Original_Node to detect rewritten function calls in object declarations but that's not robust enough in the presence of function calls written in object notation. gcc/ada/ * exp_util.ads (Is_Captured_Function_Call): Declare. * exp_util.adb (Is_Captured_Function_Call): New predicate. * exp_ch3.adb (Expand_N_Object_Declaration): Use it to detect a rewritten function call as the initializing expression. * exp_ch6.adb (Expand_Simple_Function_Return): Use it to detect a rewritten function call as the returned expression.
2022-12-06ada: Elide the copy in extended returns for nonlimited by-reference typesEric Botcazou1-119/+349
This implements elision of the copy operation for extended return statements in the case of nonlimited by-reference types (the copy operation is already elided for limited types by the front-end and nonlimited non-by-reference types by the code generator), which comprise controlled and tagged types. The implementation partly reuses the machinery implemented for limited types (the build-in-place machinery) to allocate the return object directly on the primary or the secondary stack, depending on whether the result type of the function is constrained or not. This requires further special-casing for the allocators generated by this machinery as well as an adjustment to the implementation of a specific case of string concatenation. gcc/ada/ * einfo.ads (Actual_Subtype): Document additional usage. * exp_aggr.adb (Expand_Array_Aggregate): Replace test on Is_Build_In_Place_Return_Object with Is_Special_Return_Object. * exp_ch3.adb (Expand_N_Object_Declaration): Factor out parts of the processing done for build-in-place return objects and reuse them to implement a similar processing for specific return objects. * exp_ch4.adb (Expand_Allocator_Expression): Do not generate a tag assignment or an adjustment if the allocator was made for a special return object. (Expand_Concatenate): If the result is allocated on the secondary stack, use an unconstrained allocation. * exp_ch6.ads (Apply_CW_Accessibility_Check): New declaration. (Is_By_Reference_Return_Object): Likewise. (Is_Secondary_Stack_Return_Object): Likewise. (Is_Special_Return_Object): Likewise. * exp_ch6.adb (Expand_Ctrl_Function_Call): Do not bail out for the expression in the declaration of a special return object. (Expand_N_Extended_Return_Statement): Add missing guard and move the class-wide accessibility check to Expand_N_Object_Declaration. (Expand_Simple_Function_Return): Delete obsolete commentary. Skip the special processing for types that require finalization or are returned on the secondary stack if the return originally comes from an extended return statement. Add missing Constant_Present. (Is_By_Reference_Return_Object): New predicate. (Is_Secondary_Stack_Return_Object): Likewise. (Is_Special_Return_Object): Likewise. * exp_util.adb (Is_Related_To_Func_Return): Also return true if the parent of the expression is the renaming declaration generated for the expansion of a return object. * gen_il-fields.ads (Opt_Field_Enum): Replace Alloc_For_BIP_Return with For_Special_Return_Object. * gen_il-gen-gen_nodes.adb (N_Allocator): Likewise. * gen_il-internals.adb (Image): Remove Alloc_For_BIP_Return. * sem_ch3.adb (Check_Return_Subtype_Indication): New procedure moved from sem_ch6.adb. (Analyze_Object_Declaration): Call it on a return object. * sem_ch4.adb: Add with and use clauses for Rtsfind. (Analyze_Allocator): Test For_Special_Return_Object to skip checks for allocators made for special return objects. Do not report restriction violations for the return stack pool. * sem_ch5.adb (Analyze_Assignment.Set_Assignment_Type): Return the Actual_Subtype for return objects that live on the secondary stack. * sem_ch6.adb (Check_Return_Subtype_Indication): Move procedure to sem_ch3.adb. (Analyze_Function_Return): Do not call above procedure. * sem_res.adb (Resolve_Allocator): Replace Alloc_For_BIP_Return with For_Special_Return_Object. * sinfo.ads: Likewise. * treepr.adb (Image): Remove Alloc_For_BIP_Return. * gcc-interface/trans.cc (gnat_to_gnu): Do not convert to the result type in the unconstrained array type case if the parent is a simple return statement.
2022-12-06ada: Accessibility code reorganization and bug fixesJustin Squirek1-0/+1
This patch performs a large reorganization of accessibility related sources, and also corrects some latent issues with accessibility checks - namely the calculation of accessibility levels for expanded iterators and type conversions. gcc/ada/ * accessibility.adb, accessibility.ads (Accessibility_Message): Moved from sem_attr. (Apply_Accessibility_Check): Moved from checks. (Apply_Accessibility_Check_For_Allocator): Moved from exp_ch4 and renamed (Check_Return_Construct_Accessibility): Moved from sem_ch6. (Innermost_Master_Scope_Depth): Moved from sem_util. Add condition to detect expanded iterators. (Prefix_With_Safe_Accessibility_Level): Moved from sem_attr. (Static_Accessibility_Level): Moved from sem_util. (Has_Unconstrained_Access_Discriminants): Likewise. (Has_Anonymous_Access_Discriminant): Likewise. (Is_Anonymous_Access_Actual): Likewise. (Is_Special_Aliased_Formal_Access): Likewise. (Needs_Result_Accessibility_Level): Likewise. (Subprogram_Access_Level): Likewise. (Type_Access_Level): Likewise. (Deepest_Type_Access_Level): Likewise. (Effective_Extra_Accessibility): Likewise. (Get_Dynamic_Accessibility): Likewise. (Has_Access_Values): Likewise. (Accessibility_Level): Likewise. * exp_attr.adb (Access_Cases): Obtain the proper enclosing object which applies to a given 'Access by looking through type conversions. * exp_ch4.adb (Apply_Accessibility_Check): Moved to accessibility. * exp_ch5.adb: Likewise. * exp_ch6.adb: Likewise. * exp_ch9.adb: Likewise. * exp_disp.adb: Likewise. * gen_il-fields.ads: Add new flag Comes_From_Iterator. * gen_il-gen-gen_nodes.adb: Add new flag Comes_From_Iterator for N_Object_Renaming_Declaration. * sem_ch5.adb (Analyze_Iterator_Specification): Mark object renamings resulting from iterator expansion with the new flag Comes_From_Iterator. * sem_aggr.adb (Resolve_Container_Aggregate): Refine test. * sem_ch13.adb: Add dependence on the accessibility package. * sem_ch3.adb: Likewise. * sem_ch4.adb: Likewise. * sem_ch9.adb: Likewise. * sem_res.adb: Likewise. * sem_warn.adb: Likewise. * exp_ch3.adb: Likewise. * sem_attr.adb (Accessibility_Message): Moved to accessibility. (Prefix_With_Safe_Accessibility_Level): Likewise. * checks.adb, checks.ads (Apply_Accessibility_Check): Likewise. * sem_ch6.adb (Check_Return_Construct_Accessibility): Likewise. * sem_util.adb, sem_util.ads (Accessibility_Level): Likewise. (Deepest_Type_Access_Level): Likewise. (Effective_Extra_Accessibility): Likewise. (Get_Dynamic_Accessibility): Likewise. (Has_Access_Values): Likewise. (Has_Anonymous_Access_Discriminant): Likewise. (Static_Accessibility_Level): Likewise. (Has_Unconstrained_Access_Discriminants): Likewise. (Is_Anonymous_Access_Actual): Likewise. (Is_Special_Aliased_Formal_Access): Likewise. (Needs_Result_Accessibility_Level): Likewise. (Subprogram_Access_Level): Likewise. (Type_Access_Level): Likewise. * sinfo.ads: Document new flag Comes_From_Iterator. * gcc-interface/Make-lang.in: Add entry for new Accessibility package.
2022-11-22ada: Fix formatting glitches in Make_Tag_AssignmentEric Botcazou1-19/+21
gcc/ada/ * exp_ch3.adb (Make_Tag_Assignment): Fix formatting glitches.
2022-11-21ada: Small cleanup in Expand_N_Object_DeclarationEric Botcazou1-49/+45
This reuses a local constant more consistently, removes a duplicate of this local constant, renames local variables, alphabetizes declarations, makes a few consistency tweaks and adjusts a couple of comments. No functional changes. gcc/ada/ * exp_ch3.adb (Expand_N_Object_Declaration): Use Typ local constant throughout, remove Ret_Obj_Typ local constant, rename Ref_Type into Acc_Typ in a couple of places, remove a useless call to Set_Etype, use a consistent checks suppression scheme, adjust comments for the sake of consistencty and alphabetize some local declarations. * exp_ch6.adb (Expand_Simple_Function_Return): Remove a couple of redundant local constants.
2022-11-08ada: Enforce matching of extra formalsJavier Miranda1-20/+116
This patch enforces matching of extra formals in overridden subprograms, subprogram renamings, and subprograms to which attributes 'Access, 'Unchecked_Access, or 'Unrestricted_Access is applied (for these access cases the subprogram is checked against its corresponding subprogram type). This enforcement is an internal consistency check, not an implementation of some language legality rule. gcc/ada/ * debug.adb (Debug_Flag_Underscore_XX): Switch -gnatd_X used temporarily to allow disabling extra formal checks. * exp_attr.adb (Expand_N_Attribute_Reference [access types]): Add extra formals to the subprogram referenced in the prefix of 'Unchecked_Access, 'Unrestricted_Access or 'Access; required to check that its extra formals match the extra formals of the corresponding subprogram type. * exp_ch3.adb (Stream_Operation_OK): Declaration moved to the public part of the package. (Validate_Tagged_Type_Extra_Formals): New subprogram. (Expand_Freeze_Record_Type): Improve the code that takes care of adding the extra formals of dispatching primitives; extended to add also the extra formals to renamings of dispatching primitives. * exp_ch3.ads (Stream_Operation_OK): Declaration moved from the package body. * exp_ch6.adb (Check_BIP_Actuals): Complete documentation. (Has_BIP_Extra_Formal): Subprogram declaration moved to the public part of the package. In addition, a parameter has been added to disable an assertion that requires its use with frozen entities. (Duplicate_Params_Without_Extra_Actuals): New subprogram. (Check_Subprogram_Variant): Emit the call without duplicating the extra formals since they will be added when the call is analyzed. (Expand_Call_Helper): Ensure that the called subprogram has all its extra formals, enforce assertion checking extra formals on thunks, and mark calls from thunks as processed-BIP-calls to avoid adding their extra formals twice. (Is_Build_In_Place_Function): Return False for entities with foreign convention. (Is_Build_In_Place_Function_Call): Return True also for not BIP functions that have BIP formals since the extra actuals are required. (Make_Build_In_Place_Call_In_Object_Declaration): Occurrences of Is_Return_Object replaced by the local variable Is_OK_Return_Object that evaluates to False for scopes with foreign convention. (Might_Have_Tasks): Fix check of class-wide limited record types. (Needs_BIP_Task_Actuals): Remove assertion to allow calling this function in more contexts; in addition it returns False for functions returning objects with foreign convention. (Needs_BIP_Finalization_Master): Likewise. (Needs_BIP_Alloc_Form): Likewise. (Validate_Subprogram_Calls): Check that the number of actuals (including extra actuals) of calls in the subtree N match their corresponding formals. * exp_ch6.ads (Has_BIP_Extra_Formal): Subprogram declaration moved to the public part of the package. In addition, a parameter has been added to disable an assertion that requires its use with frozen entities. (Is_Build_In_Place_Function_Call): Complete documentation. (Validate_Subprogram_Calls): Check that the number of actuals (including extra actuals) of calls in the subtree N match their corresponding formals. * freeze.adb (Check_Itype): Add extra formals to anonymous access subprogram itypes. (Freeze_Expression): Improve code that disables the addition of extra formals to functions with foreign convention. (Check_Extra_Formals): Moved to package Sem_Ch6 as Extra_Formals_OK. (Freeze_Subprogram): Add extra formals to non-dispatching subprograms. * frontend.adb (Frontend): Validate all the subprogram calls; it can be disabled using switch -gnatd_X * sem_ch3.adb (Access_Subprogram_Declaration): Defer the addition of extra formals to the freezing point so that we know the convention. (Check_Anonymous_Access_Component): Likewise. (Derive_Subprogram): Fix documentation. * sem_ch6.adb (Has_Reliable_Extra_Formals): New subprogram. (Check_Anonymous_Return): Fix check of access to class-wide limited record types. (Check_Untagged_Equality): Placed in alphabetical order. (Extra_Formals_OK): Subprogram moved from freeze.adb. (Extra_Formals_Match_OK): New subprogram. (Has_BIP_Formals): New subprogram. (Has_Extra_Formals): New subprograms. (Needs_Accessibility_Check_Extra): New subprogram. (Parent_Subprogram): New subprogram. (Add_Extra_Formal): Minor code cleanup. (Create_Extra_Formals): Enforce matching extra formals on overridden and aliased entities. * sem_ch6.ads (Extra_Formals_Match_OK): New subprogram. (Extra_Formals_OK): Subprogram moved from freeze.adb. * sem_eval.adb (Compile_Time_Known_Value): Improve predicate to avoid assertion failure; found working on this ticket; this change does not affect the behavior of the compiler because this subprogram has an exception handler that returns False when the assertion fails. * sem_util.adb (Needs_Result_Accessibility_Level): Do not return False for dispatching operations compiled with Ada_Version < 2012 since they they may be overridden by primitives compiled with Ada_Version >= Ada_2012.
2022-11-07ada: New warning about noncomposing user-defined "="Bob Duff1-1/+2
Print warning for a user-defined "=" that does not compose as might be expected (i.e. is ignored for predefined "=" of a containing record or array type). This warning is enabled by -gnatw_q; we don't enable it by default because it generates too many false positives. We also don't enable it via -gnatwa. gcc/ada/ * exp_ch4.adb (Expand_Array_Equality): Do not test Ltyp = Rtyp here, because that is necessarily true. Move assertion thereof to more general place. (Expand_Composite_Equality): Pass in Outer_Type, for use in warnings. Rename Typ to be Comp_Type, to more clearly distinguish it from Outer_Type. Print warning when appropriate. * exp_ch4.ads: Minor comment fix. * errout.ads: There is no such pragma as Warning_As_Pragma -- Warning_As_Error must have been intended. Improve comment for ?x?. * exp_ch3.adb (Build_Untagged_Equality): Update comment to be accurate for more recent versions of Ada. * sem_case.adb (Choice_Analysis): Declare user-defined "=" functions as abstract. * sem_util.ads (Is_Bounded_String): Give RM reference in comment. * warnsw.ads, warnsw.adb (Warn_On_Ignored_Equality): Implement new warning switch -gnatw_q. * doc/gnat_ugn/building_executable_programs_with_gnat.rst: Document new warning switch. * gnat_ugn.texi: Regenerate.
2022-09-12[Ada] Revert "Enforce matching of extra formals"Javier Miranda1-109/+20
This reverts commit 51abc0cc8691daecd7cec8372e4988e9f3f1913c.
2022-09-06[Ada] Enforce matching of extra formalsJavier Miranda1-20/+109
This patch enforces matching of extra formals in overridden subprograms, subprogram renamings, and subprograms to which attributes 'Access, 'Unchecked_Access, or 'Unrestricted_Access is applied (for these access cases the subprogram is checked against its corresponding subprogram type). gcc/ada/ * debug.adb (Debug_Flag_Underscore_X): Switch added temporarily to allow disabling extra formal checks. * exp_attr.adb (Expand_N_Attribute_Reference [access types]): Add extra formals to the subprogram referenced in the prefix of 'Unchecked_Access, 'Unrestricted_Access or 'Access; required to check that its extra formals match the extra formals of the corresponding subprogram type. * exp_ch3.adb (Stream_Operation_OK): Declaration moved to the public part of the package. (Validate_Tagged_Type_Extra_Formals): New subprogram. (Expand_Freeze_Record_Type): Improve the code that takes care of adding the extra formals of dispatching primitives; extended to add also the extra formals to renamings of dispatching primitives. * exp_ch3.ads (Stream_Operation_OK): Declaration moved from the package body. * exp_ch6.adb (Has_BIP_Extra_Formal): Subprogram declaration moved to the public part of the package. In addition, a parameter has been added to disable an assertion that requires its use with frozen entities. (Expand_Call_Helper): Enforce assertion checking extra formals on thunks. (Is_Build_In_Place_Function): Return False for entities with foreign convention. (Make_Build_In_Place_Call_In_Object_Declaration): Occurrences of Is_Return_Object replaced by the local variable Is_OK_Return_Object that evaluates to False for scopes with foreign convention. (Might_Have_Tasks): Fix check of class-wide limited record types. (Needs_BIP_Task_Actuals): Remove assertion to allow calling this function in more contexts; in addition it returns False for functions returning objects with foreign convention. (Needs_BIP_Finalization_Master): Likewise. (Needs_BIP_Alloc_Form): Likewise. * exp_ch6.ads (Stream_Operation_OK): Declaration moved from the package body. In addition, a parameter has been added to disable assertion that requires its use with frozen entities. * freeze.adb (Check_Itype): Add extra formals to anonymous access subprogram itypes. (Freeze_Expression): Improve code that disables the addition of extra formals to functions with foreign convention. (Check_Extra_Formals): Moved to package Sem_Ch6 as Extra_Formals_OK. (Freeze_Subprogram): Add extra formals to non-dispatching subprograms. * sem_ch3.adb (Access_Subprogram_Declaration): Defer the addition of extra formals to the freezing point so that we know the convention. (Check_Anonymous_Access_Component): Likewise. (Derive_Subprogram): Fix documentation. * sem_ch6.adb (Check_Anonymous_Return): Fix check of access to class-wide limited record types. (Check_Untagged_Equality): Placed in alphabetical order. (Extra_Formals_OK): Subprogram moved from freeze.adb. (Extra_Formals_Match_OK): New subprogram. (Has_BIP_Formals): New subprogram. (Has_Extra_Formals): New subprograms. (Needs_Accessibility_Check_Extra): New subprogram. (Needs_Constrained_Extra): New subprogram. (Parent_Subprogram): New subprogram. (Add_Extra_Formal): Minor code cleanup. (Create_Extra_Formals): Enforce matching extra formals on overridden and aliased entities. (Has_Reliable_Extra_Formals): New subprogram. * sem_ch6.ads (Extra_Formals_OK): Subprogram moved from freeze.adb. (Extra_Formals_Match_OK): New subprogram. * sem_eval.adb (Compile_Time_Known_Value): Improve predicate to avoid assertion failure; found working on this ticket; this change does not affect the behavior of the compiler because this subprogram has an exception handler that returns False when the assertion fails. * sem_util.adb (Needs_Result_Accessibility_Level): Do not return False for dispatching operations compiled with Ada_Version < 2012 since they they may be overridden by primitives compiled with Ada_Version >= Ada_2012.
2022-09-05[Ada] Bad Default_Initial_Condition check for a not-default-initialized objectSteve Baird1-0/+1
No Default_Initial_Condition check should be generated for an object declaration that has an explicit initial value. Previously this was implemented by testing the Has_Init_Expression flag, but this only works if the object declaration was created by the parser (since only the parser sets that attribute, at least currently). gcc/ada/ * exp_ch3.adb (Expand_N_Object_Declaration): In deciding whether to emit a DIC check, we were previously testing the Has_Init_Expression flag. Continue to test that flag as before, but add a test for the syntactic presence of an initial value in the object declaration. This new test would not supersede the old test in the case where an explicit initial value has been eliminated as part of some tree transformation.
2022-09-05[Ada] Fix crash for Default_Initial_Condition on derived enumeration typeEric Botcazou1-2/+5
This fixes a crash on the declaration of a private derived enumeration type with the Default_Initial_Condition aspect and in the process makes a couple of related adjustments: 1) removes the early freezing of implicit character and numeric base types and 2) fixes an oversight in the implementation of delayed representation aspects. gcc/ada/ * aspects.ads (Delaying Evaluation of Aspect): Fix typos. * exp_ch3.adb (Freeze_Type): Do not generate Invariant and DIC procedures for internal types. * exp_util.adb (Build_DIC_Procedure_Body): Adjust comment. * freeze.adb (Freeze_Entity): Call Inherit_Delayed_Rep_Aspects for subtypes and derived types only after the base or parent type has been frozen. Remove useless freezing for first subtype. (Freeze_Fixed_Point_Type): Call Inherit_Delayed_Rep_Aspects too. * layout.adb (Set_Elem_Alignment): Deal with private types. * sem_ch3.adb (Build_Derived_Enumeration_Type): Build the implicit base as an itype and do not insert its declaration in the tree. (Build_Derived_Numeric_Type): Do not freeze the implicit base. (Derived_Standard_Character): Likewise. (Constrain_Enumeration): Inherit the chain of representation items instead of replacing it. * sem_ch13.ads (Inherit_Aspects_At_Freeze_Point): Add ??? comment. (Inherit_Delayed_Rep_Aspects): Declare. * sem_ch13.adb (Analyze_Aspects_At_Freeze_Point): Do not invoke Inherit_Delayed_Rep_Aspects. (Inherit_Aspects_At_Freeze_Point): Deal with private types. (Inherit_Delayed_Rep_Aspects): Move to library level.
2022-07-06[Ada] Fix incorrect itype sharing for case expression in limited type returnEric Botcazou1-72/+76
The compiler aborts with an internal error in gigi, but the problem is an itype incorrectly shared between several branches of an if_statement that has been created for a Build-In-Place return. Three branches of this if_statement contain an allocator statement and the latter two have been obtained as the result of calling New_Copy_Tree on the first; now the initialization expression of the first had also been obtained as the result of calling New_Copy_Tree on the original tree, and these chained calls to New_Copy_Tree run afoul of an issue with the copy of itypes after the rewrite of an aggregate as an expression with actions. Fixing this issue looks quite delicate, so this fixes the incorrect sharing by replacing the chained calls to New_Copy_Tree with repeated calls on the original expression, which is more elegant in any case. gcc/ada/ * exp_ch3.adb (Make_Allocator_For_BIP_Return): New local function. (Expand_N_Object_Declaration): Use it to build the three allocators for a Build-In-Place return with an unconstrained type. Update the head comment after other recent changes.
2022-07-05[Ada] Reuse Get_Pragma_Arg to handle pragma argument associationsPiotr Trojanek1-5/+3
Code cleanup related to looking at pragma Thread_Local_Storage. Semantics is unaffected. gcc/ada/ * exp_ch3.adb (Build_Init_Statements): Reuse Get_Pragma_Arg. * exp_prag.adb (Arg_N): Likewise.
2022-07-05[Ada] Perform object rewriting as renaming only in the expanderEric Botcazou1-38/+33
The rewriting as renaming optimization for object declarations is done partly during analysis, guarded with Expander_Active, and partly during expansion, so it makes sense to do it entirely during expansion. This merges the two cases and removes obsolete or unnecessary conditions guarding the transformation in the process. gcc/ada/ * exp_ch3.adb (Expand_N_Object_Declaration): Rewrite as a renaming for any nonaliased local object with nominal unconstrained subtype originally initialized with the result of a function call that has been rewritten as the dereference of a reference to the result. * sem_ch3.adb (Analyze_Object_Declaration): Do not do it here
2022-07-05[Ada] Fix dangling bounds for array result of BIP functionsEric Botcazou1-55/+781
The implementation of the build-in-place return protocol for functions whose result type is an unconstrained array type generates dangling references to local bounds built on the stack for the result as soon as these bounds are not static. The reason is that the implementation treats the return object, either explicitly present in the source or synthesized by the compiler, as a regular constrained object until very late in the game, although it needs to be ultimately rewritten as the renaming of the dereference of an allocator with unconstrained designated type in order for the bounds to be part of the allocation. Recently a partial fix was implemented for the case where the result is an aggregate, by preventing the return object from being expanded after it has been analyzed. However, it does not work for the general case of extended return statements, because the statements therein are still analyzed with the constrained version of the return object so, after it is changed into the unconstrained renaming, this yields (sub)type mismatches. Therefore this change goes the other way around: it rolls back the partial fix and instead performs the transformation of the return object into the unconstrained renaming during the expansion of its declaration, in other words before statements referencing it, if any, are analyzed, thus ensuring that they see the final version of the object. gcc/ada/ * exp_aggr.adb (Expand_Array_Aggregate): Remove obsolete code. Delay the expansion of aggregates initializing return objects of build-in-place functions. * exp_ch3.ads (Ensure_Activation_Chain_And_Master): Delete. * exp_ch3.adb (Ensure_Activation_Chain_And_Master): Fold back to... (Expand_N_Object_Declaration): ...here. Perform the expansion of return objects of build-in-place functions here instead of... * exp_ch6.ads (Is_Build_In_Place_Return_Object): Declare. * exp_ch6.adb (Expand_N_Extended_Return_Statement): ...here. (Is_Build_In_Place_Result_Type): Alphabetize. (Is_Build_In_Place_Return_Object): New predicate. * exp_ch7.adb (Enclosing_Function): Delete. (Process_Object_Declaration): Tidy up handling of return objects. * sem_ch3.adb (Analyze_Object_Declaration): Do not decorate and freeze the actual type if it is the same as the nominal type. * sem_ch6.adb: Remove use and with clauses for Exp_Ch3. (Analyze_Function_Return): Analyze again all return objects. (Create_Extra_Formals): Do not force the definition of an Itype if the subprogram is a compilation unit.
2022-07-04[Ada] Small housekeeping work in Expand_N_Object_DeclarationEric Botcazou1-137/+119
The local function Rewrite_As_Renaming can be called twice in certain circumstances, which is both not quite safe and unnecessary, so this replaces it with a local variable whose value is computed only once. No functional changes. gcc/ada/ * exp_ch3.adb (Expand_N_Object_Declaration) <OK_To_Rename_Ref>: New local function. <Rewrite_As_Renaming>: Change to a local variable whose value is computed once and generate a call to Finalize after this is done. Simplify the code creating the renaming at the end.
2022-07-04[Ada] Adjust previous change to Rewrite_As_RenamingEric Botcazou1-6/+13
gcc/ada/ * exp_ch3.adb (Expand_N_Object_Declaration.Rewrite_As_Renaming): Do not rewrite if the declaration has got constraints. * sinfo.ads (Case Expression Alternative): Fix typo.
2022-07-04[Ada] Use static stack allocation for small dynamic string concatenationsEric Botcazou1-4/+20
This changes the expanded code generated for dynamic concatenations to use a static array subtype for the temporary created on the stack if a small upper bound can be computed for the length of the result. Static stack allocation is preferred over dynamic allocation for code generation purposes. gcc/ada/ * exp_ch3.adb (Expand_N_Object_Declaration.Rewrite_As_Renaming): Be prepared for slices. * exp_ch4.adb (Get_First_Index_Bounds): New procedure. (Expand_Array_Comparison.Length_Less_Than_4): Call it. (Expand_Concatenate): Try to compute a maximum length for operands with variable length and a maximum total length at the end. If the concatenation is dynamic, but a sensible maximum total length has been computed, use this length to create a static array subtype for the temporary and return a slice of it.
2022-07-04[Ada] Call-initialize all controlled objects in placeEric Botcazou1-25/+23
This changes the compiler to build in place almost all objects that need finalization and are initialized with the result of a function call, thus saving a pair of Adjust/Finalize calls for the anonymous return object. gcc/ada/ * exp_ch3.adb (Expand_N_Object_Declaration): Don't adjust the object if the expression is a function call. <Rewrite_As_Renaming>: Return true if the object needs finalization and is initialized with the result of a function call returned on the secondary stack. * exp_ch6.adb (Expand_Ctrl_Function_Call): Add Use_Sec_Stack boolean parameter. Early return if the parent is an object declaration and Use_Sec_Stack is false. (Expand_Call_Helper): Adjust call to Expand_Ctrl_Function_Call. * exp_ch7.adb (Find_Last_Init): Be prepared for initialization still present in the object declaration. * sem_ch3.adb (Analyze_Object_Declaration): Call the predicates Needs_Secondary_Stack and Needs_Finalization to guard the renaming optimization.
2022-06-02[Ada] Fix spurious use of trampolines with interface typesEric Botcazou1-2/+2
Function pointers must always be built with '[Unrestricted_]Access. gcc/ada/ * exp_ch3.adb (Init_Secondary_Tags.Initialize_Tag): Initialize the Offset_Func component by means of 'Unrestricted_Access.
2022-06-02[Ada] Build static dispatch tables always at the end of declarative partEric Botcazou1-32/+1
The static dispatch tables of library-level tagged types are either built on the first object declaration or at the end of the declarative part of the package spec or body. There is no real need for the former case, and the tables are not built for other constructs that freeze (tagged) types. Therefore this change removes the former case, thus causing the tables to be always built at the end of the declarative part; that's orthogonal to freezing and the tagged types are still frozen at the appropriate place. Moreover, it wraps the code in the Actions list of a freeze node (like for the nonstatic case) so that it is considered elaboration code by the processing done in Sem_Elab and does not disturb it. No functional changes. gcc/ada/ * exp_ch3.adb (Expand_Freeze_Record_Type): Adjust comment. (Expand_N_Object_Declaration): Do not build static dispatch tables. * exp_disp.adb (Make_And_Insert_Dispatch_Table): New procedure. (Build_Static_Dispatch_Tables): Call it to build the dispatch tables and wrap them in the Actions list of a freeze node.
2022-06-01[Ada] Another case where freezing incorrectly suppresses checksSteve Baird1-0/+7
Avoid improperly suppressing checks for the wrapper subprogram that is built when a null type extension inherits (and does not override) a function with a controlling result. This is a follow-up to other changes already made on this ticket. gcc/ada/ * exp_ch3.adb (Make_Controlling_Function_Wrappers): Set the Corresponding_Spec field of a wrapper subprogram body before analyzing the subprogram body; the field will be set (again) during analysis, but we need it to be set earlier. * exp_ch13.adb (Expand_N_Freeze_Entity): Add wrapper subprogram bodies to the list of declarations for which we do not want to suppress checks.
2022-06-01[Ada] Missing discriminant checks when accessing variant fieldSteve Baird1-34/+54
In some cases, the compiler would incorrectly fail to generate discriminant checks when accessing fields declared in a variant part. Correct some such cases; detect the remaining cases and flag them as unsupported. The formerly-problematic cases that are now handled correctly involve component references occurring in a predicate expression (e.g., the expression of a Dynamic_Predicate aspect specification) for a type declaration (not for a subtype declaration). The cases which are now flagged as unsupported involve expression functions declared before the discriminated type in question has been frozen. gcc/ada/ * exp_ch3.ads: Replace visible Build_Discr_Checking_Funcs (which did not need to be visible - it was not referenced outside this package) with Build_Or_Copy_Discr_Checking_Funcs. * exp_ch3.adb: Refactor existing code into 3 procedures - Build_Discr_Checking_Funcs, Copy_Discr_Checking_Funcs, and Build_Or_Copy_Discr_Checking_Funcs. This refactoring is intended to be semantics-preserving. * exp_ch4.adb (Expand_N_Selected_Component): Detect case where a call should be generated to the Discriminant_Checking_Func for the component in question, but that subprogram does not yet exist. * sem_ch13.adb (Freeze_Entity_Checks): Immediately before calling Build_Predicate_Function, add a call to Exp_Ch3.Build_Or_Copy_Discr_Checking_Funcs in order to ensure that Discriminant_Checking_Func attributes are already set when Build_Predicate_Function is called. * sem_ch6.adb (Analyze_Expression_Function): If the expression of a static expression function has been transformed into an N_Raise_xxx_Error node, then we need to copy the original expression in order to check the requirement that the expression must be a potentially static expression. We also want to set aside a copy the untransformed expression for later use in checking calls to the expression function via Inline_Static_Function_Call. So introduce a new function, Make_Expr_Copy, for use in these situations. * sem_res.adb (Preanalyze_And_Resolve): When analyzing certain expressions (e.g., a default parameter expression in a subprogram declaration) we want to suppress checks. However, we do not want to suppress checks for the expression of an expression function.
2022-05-30[Ada] Do not freeze profiles for dispatch tablesEric Botcazou1-2/+2
When static dispatch tables are built for library-level tagged types, the primitives (the subprogram themselves) are frozen; that's necessary because their address is taken. However, their profile, i.e. all the types present therein, is also frozen, which is not necessary after AI05-019 and is also inconsistent with the handling of attribute references. The change also removes a couple of pragma Inline on subprograms that are too large for inlining to bring any benefit. gcc/ada/ * exp_ch3.adb (Expand_N_Object_Declaration): Adjust call to Make_DT. * exp_disp.ads (Building_Static_DT): Remove pragma Inline. (Building_Static_Secondary_DT): Likewise. (Convert_Tag_To_Interface): Likewise. (Make_DT): Remove second parameter. * exp_disp.adb (Make_DT): Likewise. (Check_Premature_Freezing): Delete. Pass Do_Freeze_Profile as False in call to Freeze_Entity. * freeze.ads (Freezing_Library_Level_Tagged_Type): Delete. * freeze.adb (Freeze_Profile): Remove obsolete code. (Freeze_Entity): Tweak comment.
2022-05-17[Ada] Fix small glitch in Expand_N_Full_Type_DeclarationEric Botcazou1-2/+1
The original node is not guaranteed to also be an N_Full_Type_Declaration, so the code needs to look into the node itself. gcc/ada/ * exp_ch3.adb (Expand_N_Full_Type_Declaration): Look into N.