[Ada] GNAT.Expect (Expect_Internal): Try to call 'poll' few times
[gcc.git] / gcc / ada / ChangeLog
index d06fd4ef53add7b90895d35c289c187ba45c4c6e..ab8c8a52226f858621c3d52f56ab26a0617ce354 100644 (file)
@@ -1,3 +1,811 @@
+2019-09-17  Vadim Godunko  <godunko@adacore.com>
+
+       * libgnat/g-expect.adb (Expect_Internal): Try to call 'poll' few
+       times.
+
+2019-09-17  Vadim Godunko  <godunko@adacore.com>
+
+       * libgnat/g-expect.ads, libgnat/g-expect.adb (Close_Input): New
+       subprogram.
+       (Get_Command_Output): Call Close_Input to close input stream.
+       (Expect_Internal): Likewise.
+       (Close): Likewise.
+       * libgnat/g-exptty.adb (Close): Likewise.
+
+2019-09-17  Piotr Trojanek  <trojanek@adacore.com>
+
+       * sem_util.ads, sem_util.adb (Is_Attribute_Old): New utility
+       routine.
+
+2019-09-17  Yannick Moy  <moy@adacore.com>
+
+       * inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Add handling
+       for dispatching operations.
+
+2019-09-17  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): In a
+       generic context, for a Predicate aspect, use
+       Preanalyze_Spec_Expression to verify conformance.
+
+2019-09-17  Javier Miranda  <miranda@adacore.com>
+
+       * sem_ch3.adb (Constrain_Corresponding_Record): Propagate
+       attribute Is_Tagged_Type.
+
+2019-09-17  Javier Miranda  <miranda@adacore.com>
+
+       * exp_ch3.adb (Build_Record_Init_Proc): Do not generate code to
+       adjust the tag component when the record is initialized with a
+       raise expression.
+       * sem_aggr.adb (Valid_Limited_Ancestor): Return True for
+       N_Raise_Expression nodes.
+       (Valid_Ancestor_Type): Return True for raise expressions.
+       * sem_ch3.adb (Analyze_Component_Declaration): Do not report an
+       error when a component is initialized with a raise expression.
+       * sem_ch4.adb (Analyze_Qualified_Expression): Do not report an
+       error when the aggregate has a raise expression.
+
+2019-09-17  Piotr Trojanek  <trojanek@adacore.com>
+
+       * ali.ads: Fix casing in comment.
+       * ali-util.ads, ali-util.adb (Read_Withed_ALIs): Remove
+       Ignore_Errors parameter; it was only set to non-default value of
+       True when running in GNATprove_Mode and wrongly reset to False
+       when calling this routine recursively. Now in GNATprove mode we
+       want it to be always True, so in fact it is equivalent to
+       GNATProve_Mode flag itself (which was already used in this
+       routine).
+
+2019-09-17  Arnaud Charlet  <charlet@adacore.com>
+
+       * adaint.c (_REENTRANT, _THREAD_SAFE): Only define if needed.
+
+2019-09-17  Arnaud Charlet  <charlet@adacore.com>
+
+       * libgnat/s-bitfie.ads (Val_Bits, Val_Bytes): Define from
+       Long_Long_Integer'Size.
+
+2019-09-17  Javier Miranda  <miranda@adacore.com>
+
+       * exp_ch6.ads (Needs_BIP_Task_Actuals): New subprogram.
+       * exp_ch6.adb (Add_Task_Actuals_To_Build_In_Place_Call): Code
+       cleanup.
+       (Check_Number_Of_Actuals): New subprogram.
+       (Make_Build_In_Place_Call_In_Allocator): Adding assertion.
+       (Make_Build_In_Place_Call_In_Anonymous_Context): Adding
+       assertion.
+       (Make_Build_In_Place_Call_In_Assignment): Adding assertion.
+       (Make_Build_In_Place_Call_In_Object_Declaration): Code cleanup
+       plus assertion addition.
+       (Needs_BIP_Task_Actuals): New subprogram.
+       * sem_ch6.adb (Create_Extra_Formals): Rely on
+       Needs_BIP_Task_Actuals() to check if the master of the tasks to
+       be created, and the caller's activation chain formals are
+       needed.
+
+2019-09-17  Bob Duff  <duff@adacore.com>
+
+       * libgnat/s-bituti.adb (Get_Val_2, Set_Val_2): Use new routines
+       for getting and setting a Val_2, avoiding touching the second
+       half when that half might not exist.
+       * exp_ch5.adb (Expand_Assign_Array_Loop_Or_Bitfield): Correct
+       tests for potential volatile or independent components. In
+       particular, do not call Prefix unless we know it's a slice.
+
+2019-09-17  Dmitriy Anisimkov  <anisimko@adacore.com>
+
+       * gsocket.h: Include sys/un.h.
+       * s-oscons-tmplt.c (AF_UNIX): New constant generation.
+       (SIZEOF_sockaddr_un): Idem.
+       * libgnat/g-socket.ads (Family_Type): New value Family_Unix
+       added.
+       (Family_Inet_4_6): New subtype only for network families.
+       (Sock_Addr_Type): Add Unbounded_String field for Family_Unix
+       variant.
+       (Unix_Socket_Address): Create Sock_Addr_Type from socket
+       pathname.
+       (Network_Socket_Address): Create Sock_Addr_Type from
+       Inet_Addr_Type and Port_Type parameters.
+       * libgnat/g-socket.adb: Support local unix address in socket
+       routines.
+       (Get_Address_Info): Disable warning about Result may be
+       referenced before it has a value. Remove duplicated code to exit
+       from Look_For_Supported.
+       * libgnat/g-sothco.ads (Unix_Name_Length): New constant defining
+       maximum number of characters in local socket address path.
+       (Sockaddr): Add variant for Family_Unix address family. Move
+       Sin_Port and Sin_Family to Family_Inet section. Add Sin6_Port
+       and Sin6_Family to Family_Inet6 section.
+       (Set_Address): Add out parameter Length to return valuable
+       Sockaddr data length.
+       (Get_Address): Add input parameter Length to set valuable
+       Sockaddr data length.
+       * libgnat/g-sothco.adb: Support local unix address in socket
+       routines.
+
+2019-09-17  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * exp_attr.adb (Expand_Size_Attribute): Chain the special cases
+       on the back-end path and rewrite the attribute appled to slices
+       of bit-packed arrays into the product of the Length and the
+       Compoent_Size attributes of the slices.
+       * exp_ch5.adb (Expand_Assign_Array_Bitfield): Use Size attribute
+       directly to compute the bitfield's size.
+
+2019-09-17  Bob Duff  <duff@adacore.com>
+
+       * exp_ch5.adb (Expand_Assign_Array_Loop_Or_Bitfield): Add tests
+       for potential volatile or independent components.
+       * libgnat/s-bituti.adb (Copy_Small_Bitfield,
+       Copy_Large_Bitfield): Move declarations to more appropriate
+       place.
+
+2019-09-13  Maciej W. Rozycki  <macro@wdc.com>
+
+       * make.adb (Scan_Make_Arg): Also accept `--sysroot=' for the 
+       compiler and the linker.
+2019-08-30  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/decl.c (maybe_saturate_size): New function.
+       (gnat_to_gnu_entity): Invoke it on the Esize of types before sending
+       it for back-annotations.
+       * gcc-interface/trans.c: Fix typo.
+
+2019-08-30  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/ada-tree.h (DECL_FORCED_BY_REF_P): New macro.
+       * gcc-interface/decl.c (gnat_to_gnu_param): Set it on parameters
+       whose mechanism was forced to by-reference.
+       * gcc-interface/trans.c (Call_to_gnu): Do not issue a warning about a
+       misaligned actual parameter if it is based on a CONSTRUCTOR.  Remove
+       obsolete warning for users of Starlet.  Issue a warning if a temporary
+       is make around the call for a parameter with DECL_FORCED_BY_REF_P set.
+       (addressable_p): Return true for REAL_CST and ADDR_EXPR.
+
+2019-08-30  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/trans.c (gnat_to_gnu): Do not set the location on an
+       expression used for a tag.
+
+2019-08-30  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/gigi.h (aggregate_type_contains_array_p): Declare.
+       * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: For an
+       extension, test Has_Record_Rep_Clause instead of Has_Specified_Layout.
+       (adjust_packed): Return 0 if the type of the field is an aggregate
+       type that contains (or is) a self-referential array.
+       (type_has_variable_size): Delete.
+       * gcc-interface/utils.c (inish_record_type): Constify a variable.
+       (aggregate_type_contains_array_p): Add parameter SELF_REFERENTIAL.
+       <RECORD_TYPE>: Pass it in the recursive call.
+       <ARRAY_TYPE>: If it is true, return true only if the array type is
+       self-referential.
+       (create_field_decl): Streamline the setting of the alignment on the
+       field.  Pass false to aggregate_type_contains_array_p.
+
+2019-08-30  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/trans.c (lvalue_required_p) <N_Slice>: Adjust GNU_TYPE
+       in the recursive call.
+       <N_Selected_Component>: Likewise.
+
+2019-08-30  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/utils.c (build_template): Deal with parameters
+       passed by pointer to component of multi-dimensional arrays.
+
+2019-08-30  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/decl.c (annotate_value) <CALL_EXPR>: Inline the call
+       also if List_Representation_Info is greater than 3.
+
+2019-08-30  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/trans.c (Attribute_to_gnu) <Attr_Size>: Add assertion.
+
+2019-08-30  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/gigi.h (gigi_checking_assert): New macro.
+       * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Modular_Integer_Type>:
+       Remove redundant test and adjust comments.  Minor tweaks.
+       * gcc-interface/trans.c (Call_to_gnu): Do not generate range checks,
+       instead assert that the Do_Range_Check flag is not set.  Adjust call
+       to convert_with_check.
+       (gnat_to_gnu): Likewise.
+       (assoc_to_constructor): Likewise.
+       (pos_to_constructor): Likewise.  Remove GNAT_COMPONENT_TYPE parameter.
+       (emit_range_check): Delete.
+       (convert_with_check): Remove RANGE_P parameter and adjust.  Do a single
+       overflow check for modular types.
+
+2019-08-23  Jakub Jelinek  <jakub@redhat.com>
+
+       PR middle-end/91283
+       * gcc-interface/misc.c (gnat_post_options): Set flag_excess_precision
+       instead of flag_excess_precision_cmdline.
+
+2019-08-21  Vadim Godunko  <godunko@adacore.com>
+
+       * libgnat/g-expect.adb (Expect_Internal): Attempt to read
+       several times when 'read' returns non-positive.
+
+2019-08-21  Piotr Trojanek  <trojanek@adacore.com>
+
+       * einfo.adb (Is_Discriminal): Remove extra parens.
+       (Is_Constant_Object): Simplify by reusing Ekind_In.
+       (Is_Prival): Remove extra parens.
+       * checks.adb, exp_ch4.adb, sem_ch3.adb, sem_spark.adb: Minor
+       reformattings.
+
+2019-08-21  Claire Dross  <dross@adacore.com>
+
+       * libgnat/a-cofove.ads (Vector): Add an Iterable aspect to allow
+       iteration.
+       (Iter_First, Iter_Next): Primitives used for iteration.
+
+2019-08-21  Yannick Moy  <moy@adacore.com>
+
+       * sem_ch3.adb (Analyze_Subtype_Declaration): Inherit RM_Size
+       field for formal type parameters in generic instantiations.
+
+2019-08-21  Yannick Moy  <moy@adacore.com>
+
+       * sem_spark.adb: Update references to the SPARK RM.
+
+2019-08-21  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * repinfo.adb (List_Array_Info): In -gnatR4 mode, set the
+       relevant flag on the component type here instead of...
+       (List_Object_Info): Likewise for the object type.
+       (List_Entities): ...here.  In -gnatR4 mode, recurse into
+       entities local to a record type.
+       (List_Component_Layout): In -gnatR4 mode, mark the type as
+       relevant.
+
+2019-08-21  Bob Duff  <duff@adacore.com>
+
+       * Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add s-bitutil.o and
+       s-biutin.o.
+       * exp_ch5.adb (Expand_Assign_Array_Bitfield): New function to
+       generate a call to Copy_Bitfield. This is disabled for now.
+       (Expand_Assign_Array_Loop_Or_Bitfield): New function to decide
+       whether to call Expand_Assign_Array_Bitfield.
+       (Expand_Assign_Array): Call Expand_Assign_Array_Loop_Or_Bitfield
+       instead of Expand_Assign_Array_Loop.
+       * libgnat/s-bitfie.ads, libgnat/s-bituti.adb,
+       libgnat/s-bituti.ads: New units.
+       * rtsfind.ads: Add enum literals for accessing Copy_Bitfield.
+
+2019-08-21  Piotr Trojanek  <trojanek@adacore.com>
+
+       * bindo-graphs.ads (Iterate_Edges_To_Successors): Fix typo in
+       pragma Inline.
+       * bindo-graphs.adb (Delete_Edge): Fix layout in parameter list.
+
+2019-08-21  Gary Dismukes  <dismukes@adacore.com>
+
+       * exp_ch3.adb (Build_Master): Suppress call to
+       Build_Class_Wide_Master in the case where the
+       access-to-limited-class-wide type was created for a component in
+       an entry's formal parameter
+       block (Is_Parameter_Block_Component_Type), to prevent a master
+       from being created for such access types generated by the front
+       end in a task spec for entry formals in a parameter block.  Add
+       a ??? about whether this suppression should be done more
+       generally (such as by using Comes_From_Source).
+
+2019-08-21  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * exp_ch6.adb (Expand_N_Extended_Return_Statement): In the case
+       of a built-in-place function that doesn't need a BIP_Alloc_Form
+       parameter but returns unconstrained, build the return
+       consistently using the function's result subtype.  Remove bypass
+       added in previous change.
+
+2019-08-21  Piotr Trojanek  <trojanek@adacore.com>
+
+       * sem_prag.adb (Max_Entry_Queue_Length): Do not substitute
+       expression of the pragma argument with its value during
+       analysis.
+       * sem_util.adb (Get_Max_Queue_Length): Compute value of the
+       pragma argument when needed.
+
+2019-08-21  Yannick Moy  <moy@adacore.com>
+
+       * checks.adb (Install_Null_Excluding_Check): Do not install
+       check in GNATprove mode.
+
+2019-08-21  Yannick Moy  <moy@adacore.com>
+
+       * sem_spark.adb (Process_Path): Do nothing on address of
+       subprogram.
+
+2019-08-21  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * exp_util.adb (Finalize_Address): Deal consistently with
+       subtypes of private protected types.
+
+2019-08-21  Piotr Trojanek  <trojanek@adacore.com>
+
+       * exp_util.adb (Corresponding_Runtime_Package): Use high-level
+       Is_Protected_Type.
+       * sem_ch8.adb (Analyze_Renamed_Entry): Likewise.
+       * sem_ch9.adb (Analyze_Requeue): Likewise.
+
+2019-08-21  Javier Miranda  <miranda@adacore.com>
+
+       * sem_util.adb (Update_Named_Associations): Update
+       First_Named_Actual when the subprogram call has a single named
+       actual.
+
+2019-08-21  Joel Brobecker  <brobecker@adacore.com>
+
+       * doc/Makefile (mk_empty_dirs): New (PHONY) rule.
+       (%.html, %.pdf, %.txt, %.info, %.texinfo): Add dependencies on
+       mk_empty_dirs.
+
+2019-08-21  Justin Squirek  <squirek@adacore.com>
+
+       * doc/gnat_rm/implementation_defined_pragmas.rst: Modify
+       documentation to reflect expected behavior.
+       * gnat_rm.texi: Regenerate.
+       * sem_prag.adb (Analyze_Pragma): Modify handling of pragma
+       Max_Entry_Queue_Length to not reject integer values of negative
+       one.
+       * sem_util.adb (Get_Max_Queue_Length): Add processing for values
+       of negative one to fit within the current scheme.
+
+2019-08-20  Arnaud Charlet  <charlet@adacore.com>
+
+       * exp_unst.adb (Unnest_Subprograms, Unnest_Subprogram): Take
+       inlining (-gnatn) into account.
+
+2019-08-20  Ed Schonberg  <schonberg@adacore.com>
+
+       * exp_ch13.adb (Expand_N_Attribute_Definition_Clause, case
+       Storage_Size): If the expression for Storage_Size is not static
+       it may depend on characterstics of another type that may bot be
+       frozen yet, so the elaboration of the expression for the aspect
+       must be attached directly to the freeze actions of the type to
+       which it applies.
+
+2019-08-20  Piotr Trojanek  <trojanek@adacore.com>
+
+       * exp_util.adb (Build_DIC_Procedure_Declaration): Set the last
+       entity of the generated Default_Initial_Condition procedure in
+       order to construct a proper entity chain.
+
+2019-08-20  Yannick Moy  <moy@adacore.com>
+
+       * exp_spark.adb (Expand_SPARK_N_Slice_Or_Indexed_Component):
+       Renaming of function to apply to slices as well.
+       (Expand_SPARK): Expand prefix of slices of access type.
+
+2019-08-20  Bob Duff  <duff@adacore.com>
+
+       * exp_aggr.adb (Expand_Array_Aggregate): Use build-in-place in
+       the nonlimited case in STEP 4. This improves the efficiency of
+       things like (1 .. 1000 => <>).  We still generate some code for
+       that, unfortunately, but it is much improved.
+       (Aggr_Assignment_OK_For_Backend): Return false if <> components
+       are present.
+
+2019-08-20  Bob Duff  <duff@adacore.com>
+
+       * exp_ch6.adb (Needs_BIP_Alloc_Form): Call
+       Requires_Transient_Scope rather than checking constrainedness
+       and so forth.  We have previously improved
+       Requires_Transient_Scope to return False in various cases,
+       notably a limited record with an access discriminant. This
+       change takes advantage of that to avoid using the secondary
+       stack for functions returning such types.
+       (Make_Build_In_Place_Call_In_Allocator): Be consistent by
+       calling Needs_BIP_Alloc_Form rather than Is_Constrained and so
+       forth.
+       * sem_ch4.adb (Analyze_Allocator): The above change causes the
+       compiler to generate code that is not legal Ada, in particular
+       an uninitialized allocator for indefinite subtype.  This is
+       harmless, so we suppress the error message in this case.
+
+2019-08-20  Gary Dismukes  <dismukes@adacore.com>
+
+       * ali.adb, ali.ads, aspects.adb, checks.ads, checks.adb,
+       doc/gnat_rm/implementation_defined_pragmas.rst,
+       doc/gnat_ugn/building_executable_programs_with_gnat.rst,
+       einfo.ads, exp_aggr.adb, exp_ch11.adb, exp_ch3.ads, exp_ch4.adb,
+       exp_disp.adb, inline.adb, libgnat/a-locale.ads,
+       libgnat/s-soflin.ads, par_sco.adb, repinfo.adb, sem_ch5.adb,
+       sem_disp.adb, sem_elab.adb, sem_eval.adb, sem_spark.adb,
+       sem_spark.ads, sinfo.ads: Minor reformattings, typo fixes and
+       and rewordings.
+
+2019-08-20  Dmitriy Anisimkov  <anisimko@adacore.com>
+
+       * adaint.c (__gnat_to_gm_time): On _WIN32, don't round time up
+       to even second.
+
+2019-08-20  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_ch3.adb (Analyze_Object_Declaration): If actual type is
+       private and distinct from nominal type in declaration, propagate
+       flags Is_Constr_Subt_For_U_Nominal and _UN_Aliased to full view
+       of private type.
+
+2019-08-20  Ed Schonberg  <schonberg@adacore.com>
+
+       * exp_attr.adb (Expand_Loop_Entry_Attribute): When expanding a
+       loop entry attribute for a while_loop we construct a function
+       that incorporates the expanded condition of the loop. The itypes
+       that may be generated in that expansion must carry the scope of
+       the constructed function for proper handling in gigi.
+
+2019-08-20  Ed Schonberg  <schonberg@adacore.com>
+
+       * exp_disp.adb (Build_Class_Wide_Check, Replace_Formals): When a
+       dispatching call tp a subprogram with a class-wide precondition
+       occurrs in the same declarative part as the ancestor subprogram
+       being called, the`expression for the precondition has not been
+       analyzed yet. Such a call may appear, e.g. in an expression
+       function. In that case, the replacement of formals by actuals in
+       the call cannot use the formal entities of the subprogram being
+       called, and the occurrence of the formals in the expression must
+       be located by name (Chars fields) as would be done at a later
+       freeze point, when the expression is resolved in the context of
+       the subprogram itself.
+
+2019-08-20  Bob Duff  <duff@adacore.com>
+
+       * sem_prag.adb (Persistent_BSS): If an initialization is present
+       because of Initialize_Scalars or Normalize_Scalars, generate an
+       implicit pragma Suppress_Initialization to remove that, because
+       initialization is not allowed for these variables. Other
+       initializations remain illegal.
+
+2019-08-20  Gary Dismukes  <dismukes@adacore.com>
+
+       * sem_ch3.adb (OK_For_Limited_Init_In_05): In the case of type
+       conversions, apply the recursive call to the Original_Node of
+       the expression Exp rather than the Expression of the
+       Original_Node, in the case where Exp has been rewritten;
+       otherwise, when Original_Node is the same as Exp, apply the
+       recursive call to the Expression.
+       (Check_Initialization): Revise condition for special check on
+       type conversions of limited function calls to test Original_Node
+       (avoiding spurious errors on expanded unchecked conversions
+       applied to build-in-place dispatching calls).
+
+2019-08-20  Patrick Bernardi  <bernardi@adacore.com>
+
+       * exp_aggr.adb (Expand_Record_Aggregate): Always convert a
+       record Aggregate to assignment statements if the option
+       Aggregate_Individually_Assign is set.
+       * opt.ads (Aggregate_Individually_Assign): New option.
+       * par-prag.adb (Prag): Add Pragma_Aggregate_Individually_Assign.
+       * sem_prag.adb (Analyze_Pragma): Likewise.
+       * snames.ads-tmpl: Add Pragma_Aggregate_Individually_Assign and
+       Name_Aggregate_Individually_Assign.
+       * doc/gnat_rm/implementation_defined_pragmas.rst: Document
+       pragma Aggregate_Individually_Assign.
+       * gnat_rm.texi: Regenerate.
+
+2019-08-20  Bob Duff  <duff@adacore.com>
+
+       * par-ch4.adb: Minor wording change in error messages.
+       * sem_aggr.adb (Resolve_Delta_Aggregate): Emit an error for Ada
+       versions prior to Ada 2020.
+
+2019-08-20  Bob Duff  <duff@adacore.com>
+
+       * freeze.adb (Is_Atomic_VFA_Aggregate): Make the temp for
+       initialization of the atomic variable be constant. This is
+       cleaner, and might improve efficiency.
+
+2019-08-20  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * repinfo.adb (List_Record_Info): In -gnatR4 mode, set the
+       relevant flag on the implicit base type of a record subtype.
+
+2019-08-20  Bob Duff  <duff@adacore.com>
+
+       * sem_eval.adb (Expr_Value): Implement the case of an unchecked
+       conversion of a static expression.
+
+2019-08-20  Bob Duff  <duff@adacore.com>
+
+       * sem_ch13.adb (Is_Null_Array): New function, used to detect the
+       null array case; used to warn about uncheckedly converting to a
+       zero-sized array.  It is unfortunate that we can't just check
+       the size, and warn on all cases of converting from a
+       nonzero-sized type to a zero-sized one. That's because "0" means
+       two different things: "size is zero" and "size is unknown".
+       Until we fix that design flaw, we need this more targeted fix.
+
+2019-08-20  Bob Duff  <duff@adacore.com>
+
+       * libgnat/a-cborma.adb, libgnat/a-cborse.adb (Clear): Repeatedly
+       call Delete. This avoids clearing the free list, which
+       substantially speeds up future Delete operations.
+
+2019-08-20  Bob Duff  <duff@adacore.com>
+
+       * sem_ch13.adb (Component_Order_Check): New procedure to check
+       for out-of-order clauses.
+       * warnsw.ads, warnsw.adb: New -gnatw_r switch.
+       * doc/gnat_ugn/building_executable_programs_with_gnat.rst:
+       Document new switch.
+       * gnat_ugn.texi: Regenerate.
+
+2019-08-20  Bob Duff  <duff@adacore.com>
+
+       * sem_ch13.adb (Object_Size): Give an error for zero. It really
+       rubs me the wrong way that we don't honor "for T'Object_Size use
+       0;", but it's not important enough to fix. In any case, if we're
+       not going to obey the clause, we should give an error.
+
+2019-08-20  Bob Duff  <duff@adacore.com>
+
+       * errout.adb (Error_Msg_Internal): Set Warn_Err in case of
+       Is_Style_Msg.
+       * erroutc.adb (Output_Msg_Text): Do Warnings_Treated_As_Errors
+       processing and [warning-as-error] modification for style
+       messages.  Clean up code, simplify, remove unnecessary block
+       statement, add renaming of table entry.
+       * erroutc.ads (Warning_Treated_As_Error): Fix comment: no such
+       thing as Set_Warning_As_Error.
+       * opt.ads: Clean up comments and move related declarations near
+       each other.
+       * par-prag.adb: Process Warning_As_Error. This is necessary
+       because many style warning happen during parsing.
+       * sem_prag.adb: Use new Acquire_Warning_Match_String.
+       * sem_util.ads, sem_util.adb (Acquire_Warning_Match_String): New
+       function shared by par-prag.adb and sem_prag.adb. Replaces the
+       procedure in sem_prag.adb. Avoid use of global variables.
+       * stringt.ads, stringt.adb (To_String): New function to convert
+       String_Id to String.
+       * doc/gnat_rm/implementation_defined_pragmas.rst: Document the
+       new feature.
+       * gnat_rm.texi: Regenerate.
+
+2019-08-20  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * lib.ads: Add with clause for GNAT.HTable.
+       Add pragma Inline for Is_Loaded and alphabetize the list.
+       (Unit_Name_Table_Size): New constant.
+       (Unit_Name_Header_Num): New subtype.
+       (Unit_Name_Hash): New function declaration.
+       (Unit_Names): New simple hash table.
+       (Init_Unit_Name): New procedure declaration.
+       * lib.adb (Set_Unit_Name): Unregister the old name in the table,
+       if any, and then register the new name.
+       (Init_Unit_Name): New procedure.
+       (Is_Loaded): Reimplement using a lookup in the names table.
+       (Remove_Unit): Unregister the name.
+       (Unit_Name_Hash): New function.
+       * lib-load.adb (Create_Dummy_Package_Unit): Call Init_Unit_Name.
+       (Load_Unit): Use a lookup in the names table to find out whether
+       the unit has already been loaded.  Call Init_Unit_Name and then
+       Remove_Unit if the loading has failed.
+       (Make_Child_Decl_Unit): Call Init_Unit_Name.
+       (Make_Instance_Unit): Likewise.
+       * lib-writ.adb (Ensure_System_Dependency): Likewise.
+
+2019-08-20  Bob Duff  <duff@adacore.com>
+
+       * sem_ch13.adb (Record_Hole_Check): Initialize After_Last.
+
+2019-08-20  Piotr Trojanek  <trojanek@adacore.com>
+
+       * impunit.adb (Get_Kind_Of_Unit): Revert change for adapting
+       this routine for gnatprove.
+
+2019-08-20  Arnaud Charlet  <charlet@adacore.com>
+
+       * doc/gnat_rm/implementation_defined_pragmas.rst: Document
+       requirements for Pragma Lock_Free.
+       * gnat_rm.texi: Regenerate.
+
+2019-08-20  Philippe Gil  <gil@adacore.com>
+
+       * bindgen.adb (Gen_Main): Set gnat_argc/gnat_argv to argc/argv
+       only when still uninitialized.
+
+2019-08-20  Bob Duff  <duff@adacore.com>
+
+       * libgnat/g-comlin.ads (Exit_From_Command_Line): Fix
+       documentation for GNAT.Command_Line.
+
+2019-08-20  Pierre-Marie de Rodat  <derodat@adacore.com>
+
+       PR ada/91492
+       * gcc-interface/lang.opt (-fdump-scos): Add missing dot at the
+       end of the documentation.
+
+2019-08-20  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * gcc-interface/misc.c (default_pass_by_ref): Update call to
+       pass_by_reference.
+
+2019-08-19  Bob Duff  <duff@adacore.com>
+
+       * doc/gnat_rm/implementation_advice.rst: Fix documentation for
+       stream oriented attributes.
+       * gnat_rm.texi: Regenerate.
+
+2019-08-19  Gary Dismukes  <dismukes@adacore.com>
+
+       * einfo.ads (E_Function, E_Procedure): Update comments to
+       reflect that Renamed_Entity is also used for nongeneric
+       subprograms.
+
+2019-08-19  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * sem_prag.adb (Is_Before_First_Decl): Deal with rewritten
+       pragmas.
+
+2019-08-19  Bob Duff  <duff@adacore.com>
+
+       * sem_warn.adb (Warn_On_Unreferenced_Entity): Suppress warning
+       on formal parameters of dispatching operations.
+
+2019-08-19  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_res.adb (Resolve_Call): A call to an expression function
+       freezes when expander is active, unless the call appears within
+       the body of another expression function,
+
+2019-08-19  Dmitriy Anisimkov  <anisimko@adacore.com>
+
+       * libgnat/s-os_lib.ads, libgnat/s-os_lib.adb (To_Ada, To_C): New
+       routines.
+
+2019-08-19  Bob Duff  <duff@adacore.com>
+
+       * exp_attr.adb (Attribute_Valid): Correct the handling of
+       private types where the full type is modular. System.Address is
+       an example. Otherwise, we convert uncheckedly to a signed type,
+       so we get an incorrect range 0 .. -1, for which all values will
+       fail.  The 'Valid attribute is illegal for such types, but we
+       generate such illegal attribute_references for 'Valid_Scalars,
+       and we generate 'Valid_Scalars when the -gnateV switch is used.
+       Rename Btyp --> PBtyp to avoid hiding the outer Btyp, which was
+       confusing.
+       * libgnat/a-except.adb: Set the Exception_Raised component.
+       Otherwise, we have incorrect reads of invalid data.
+
+2019-08-19  Pierre-Marie de Rodat  <derodat@adacore.com>
+
+       * libgnat/a-cgaaso.ads, libgnat/a-cgarso.ads,
+       libgnat/a-cogeso.ads, libgnat/a-contai.ads,
+       libgnat/a-locale.ads: Import documentation from the RM.
+
+2019-08-19  Jerome Guitton  <guitton@adacore.com>
+
+       * Makefile.rtl (system.o): New target to add generation of
+       target properties.
+       * gcc-interface/Makefile.in (install-gnatlib): Install
+       ada_target_properties.
+
+2019-08-19  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * inline.adb (Add_Inlined_Body): Do not special-case instances
+       that are compilation units.
+       (Add_Pending_Instantiation): Likewise.
+       (Instantiate_Body): Skip instantiations that are compilation
+       units and have already been performed.
+       * sem_ch12.adb (Needs_Body_Instantiated): Do not special-case
+       instances that are compilation units.
+       (Load_Parent_Of_Generic): Be prepared for parent that is a
+       compilation unit but whose instantiation node has not been
+       replaced.
+
+2019-08-19  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * inline.adb (Initialize, Lock): Deal with
+       Called_Pending_Instantiations.
+
+2019-08-19  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_ch6.adb (Check_Synchronized_Overriding): Complete
+       predicate that applies legality check in 9.4 (11.9/2): if an
+       inherited subprogram is implemented by a protected procedure or
+       entry, its first paarameter must be out, in_out or
+       access_to_varible.
+
+2019-08-19  Javier Miranda  <miranda@adacore.com>
+
+       PR ada/65696
+       * exp_atag.ads, exp_atag.adb (Build_Inherit_Predefined_Prims):
+       Adding formal to specify how many predefined primitives are
+       inherited from the parent type.
+       * exp_disp.adb (Number_Of_Predefined_Prims): New subprogram.
+       (Make_Secondary_DT): Compute the number of predefined primitives
+       of all tagged types (including tagged types not defined at
+       library level).  Previously we unconditionally relied on the
+       Max_Predef_Prims constant value when building the dispatch
+       tables of tagged types not defined at library level (thus
+       consuming more memory for their dispatch tables than required).
+       (Make_DT): Compute the number of predefined primitives that must
+       be inherited from their parent type when building the dispatch
+       tables of tagged types not defined at library level. Previously
+       we unconditionally relied on the Max_Predef_Prims constant value
+       when building the dispatch tables of tagged types not defined at
+       library level (thus copying more data than required from the
+       parent type).
+
+2019-08-19  Bob Duff  <duff@adacore.com>
+
+       * sem_ch13.adb (Record_Hole_Check): Procedure to check for holes
+       that incudes processing type extensions. A type extension is
+       processed by first calling Record_Hole_Check recursively on the
+       parent type to compute the bit number after the last component
+       of the parent.
+
+2019-08-19  Gary Dismukes  <dismukes@adacore.com>
+
+       * checks.adb (Length_Mismatch_Info_Message): New function in
+       Selected_Length_Checks to return a message indicating the
+       element counts for the mismatched lengths for a failed
+       compile-time length check.
+       (Plural_Or_Singular_Ending): Support function in
+       Length_Mismatch_Info_Message to return either "" or "s", for
+       concatenating to the end of words.
+       (Selected_Length_Checks): Pass the result of
+       Length_Mismatch_Info_Message as an extra warning message to
+       Compile_Time_Constraint_Error to indicate the mismatched lengths
+       for a failed compile-time length check.
+       * sem_util.ads (Compile_Time_Constraint_Error): Add an optional
+       message formal (Extra_Msg), defaulted to the empty string.
+       * sem_util.adb (Compile_Time_Constraint_Error): Output an extra
+       message following the main warning message (when Extra_Msg is
+       not the empty string).
+
+2019-08-19  Patrick Bernardi  <bernardi@adacore.com>
+
+       * socket.c: Removed the redefinition of getaddrinfo, getnameinfo
+       and freeaddrinfo to internal VxWorks kernel calls because they
+       are, well, internal kernel calls and cannot be called from RTPs.
+       VxWorks provides the necessary components to call these routines
+       directly.
+
+2019-08-19  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * exp_dist.adb (Is_Generic_Actual_Subtype): New predicate.
+       (Build_From_Any_Call, Build_To_Any_Call, Build_TypeCode_Call):
+       Use it instead of Is_Generic_Actual_Type flag to detect subtypes
+       representing generic actual types.
+
+2019-08-19  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_warn.adb (Check_References, Generic_Body_Formal): When a
+       formal parameter of a generic subprogram is not referenced in
+       the body, place the corresponding warning on the corresponding
+       entity in the specification of the generic body, as is done for
+       non-generic subprograms.
+
+2019-08-19  Bob Duff  <duff@adacore.com>
+
+       * errout.ads (Size_Too_Small_Message): New constant.
+       * errout.adb, freeze.adb, sem_ch13.adb: Use it.
+
+2019-08-19  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * exp_dist.adb (Build_Package_Stubs): Do not specifically visit
+       the declarations of an N_Subprogram_Instantiation node.
+
+2019-08-19  Bob Duff  <duff@adacore.com>
+
+       * doc/gnat_ugn/gnat_utility_programs.rst: Document missing
+       metrics switches.
+
+2019-08-19  Piotr Trojanek  <trojanek@adacore.com>
+
+       * sem_ch12.adb (Get_Unit_Instantiation_Node): Simplify Nkind_In
+       membership test.
+       * sem.adb (Depends_On_Main): Whitespace cleanup; only assign a
+       local variable if needed.
+
 2019-08-19  Claire Dross  <dross@adacore.com>
 
        * sem_spark.ads, sem_spark.adb (Is_Pledge_Function): New