2019-12-22  Maciej W. Rozycki  <macro@wdc.com>

	* gcc-interface/Makefile.in (toolexeclibdir): New variable.

2019-12-18  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Pragma_to_gnu) <Pragma_Warnings>: Push a
	diagnostics state for pragma Warnings (Off) before turning off all
	the warnings and only pop it for pragma Warnings (On).

2019-12-18  Justin Squirek  <squirek@adacore.com>

	* sem_ch6.adb (Analyze_Function_Return): Modify handling of
	extended return statements to check accessibility of access
	discriminants.
	(Check_Aggregate_Accessibility): Removed.
	(Check_Return_Obj_Accessibility): Added to centralize checking
	of return aggregates and subtype indications in the case of an
	extended return statement.

2019-12-18  Arnaud Charlet  <charlet@adacore.com>

	* libgnat/s-regpat.adb (Parse_Literal, Parse_Piece): Ensure
	Expr_Flags is always fully initialized.

2019-12-18  Arnaud Charlet  <charlet@adacore.com>

	* libgnat/s-atopar.ads, libgnat/s-atopex.ads (Atomic_Type): Can
	now be marked Atomic. This requires marking the unit Ada 202x.

2019-12-18  Arnaud Charlet  <charlet@adacore.com>

	* libgnat/a-nbnbin.ads, libgnat/a-nbnbin.adb,
	libgnat/a-nbnbre.ads, libgnat/a-nbnbre.adb: Replace
	Optional_Big_* types by a simple check and exception raise in
	Get_Bignum.
	(Set_Bignum): Arg should be 'out' and not 'in out'.
	(Invalid_Big_Integer, No_Big_Real): Removed.
	(Is_Valid): Now convention Intrinsic.

2019-12-18  Piotr Trojanek  <trojanek@adacore.com>

	* doc/gnat_rm/implementation_defined_pragmas.rst,
	doc/gnat_rm/obsolescent_features.rst,
	doc/gnat_ugn/gnat_and_program_execution.rst, exp_attr.adb,
	exp_ch9.adb, init.c, libgnat/s-valrea.adb, par-ch6.adb,
	sem_attr.adb, sem_ch4.adb, sem_util.ads: Fix trivial typos.
	* gnat_rm.texi, gnat_ugn.texi: Regenerate.

2019-12-18  Gary Dismukes  <dismukes@adacore.com>

	* sem_res.adb (Resolve_Type_Conversion): Add handling for access
	types with designated operand and target types that are
	referenced in places that have a limited view of an interface
	type by retrieving the nonlimited view when it exists.  Add ???
	comments related to missing limited_with_clause handling for
	Target (in the non-access case).

2019-12-18  Ed Schonberg  <schonberg@adacore.com>

	* par-ch12.adb (P_Formal_Derived_Type_Definition): In Ada_2020
	the keyword WITH can indicate the start of aspect specifications
	and not a private type extension.
	* sem_ch12.adb (Analyze_Formal_Type): Indicate that it is a
	first subtype.
	(Instantiate_Type): New procedure
	Check_Shared_Variable_Control_Aspects to verify matching rules
	between formal and actual types. Note that an array type with
	aspect Atomic_Components is considered compatible with an array
	type whose component type is Atomic, even though the array types
	do not carry the same aspect.
	* sem_ch13.adb (Analyze_One_Aspect): Allow shared variable
	control aspects to appear on formal types.
	(Rep_Item_Too_Early): Exclude aspects on formal types.
	* sem_prag.adb (Mark_Type): Handle properly pragmas that come
	from aspects on formal types.
	(Analyze_Pragma, case Atomic_Components): Handle formal types.

2019-12-18  Eric Botcazou  <ebotcazou@adacore.com>

	* cstand.adb (Create_Standard): Remove duplicate line and
	adjust.

2019-12-18  Javier Miranda  <miranda@adacore.com>

	* debug.adb: Document -gnatd_K as a reserved switch for the
	detection of known problem issues of previous releases.

2019-12-18  Ghjuvan Lacambre  <lacambre@adacore.com>

	* par-ch13.adb: Check if declarations allow aspect
	specifications.

2019-12-18  Piotr Trojanek  <trojanek@adacore.com>

	* einfo.ads (Is_Ghost_Entity): Fix typo in comment.

2019-12-18  Eric Botcazou  <ebotcazou@adacore.com>

	* layout.adb (Layout_Type): In the case of composite types, do
	not copy the Esize onto the RM_Size if the latter is not set.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>:
	Also cap the alignment if an Object_Size clause has been
	specified.  Pass VAR_DECL in the call to validate_size for the
	Esize of a type.
	(validate_size): Be prepared to give an error on an Object_Size
	clause.

2019-12-18  Eric Botcazou  <ebotcazou@adacore.com>

	* einfo.ads (Handling of Type'Size Value): Add references to the
	introduction of Object_Size in Ada 2020.
	* sem_eval.adb (Subtypes_Statically_Match): Likewise.

2019-12-18  Bob Duff  <duff@adacore.com>

	* sem_ch3.adb (Derive_Subprogram): Do not set the
	Requires_Overriding flag in the above-mentioned case.

2019-12-18  Bob Duff  <duff@adacore.com>

	* sem_ch8.adb (Note_Redundant_Use): It was already checking for
	a use clause in the visible part of the child. Add an additional
	check for a use clause in the context clause of the child.

2019-12-16  Bob Duff  <duff@adacore.com>

	* errout.adb (Handle_Serious_Error): Disable the above-mentioned
	warnings.

2019-12-16  Bob Duff  <duff@adacore.com>

	* errout.adb, errout.ads: Improve comments.

2019-12-16  Bob Duff  <duff@adacore.com>

	* sem_util.ads: Minor comment fix.

2019-12-16  Bob Duff  <duff@adacore.com>

	* errout.ads, errout.adb (Is_Size_Too_Small_Message): Check for
	"size for" instead of "size for& too small, minimum allowed is
	^".

2019-12-16  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Set only
	the RM_Size on the subtype built for a Component_Size clause
	when the component type is a biased integer type.

2019-12-16  Arnaud Charlet  <charlet@adacore.com>

	* socket.c: Shutdown warning.

2019-12-16  Arnaud Charlet  <charlet@adacore.com>

	* libgnarl/s-tataat.ads (Deallocator): Mark as Favor_Top_Level.

2019-12-16  Arnaud Charlet  <charlet@adacore.com>

	* libgnat/s-aotase.adb, libgnat/s-aotase.ads,
	libgnat/s-atoope.ads, libgnat/s-atopar.adb,
	libgnat/s-atopar.ads, libgnat/s-atopex.adb,
	libgnat/s-atopex.ads: New files.
	* libgnat/s-atopri.ads: Add new intrinsics.
	* Makefile.rtl: Add new runtime files.
	* impunit.adb: Add new units to Ada 2020 list.

2019-12-16  Eric Botcazou  <ebotcazou@adacore.com>

	* freeze.adb (Check_Strict_Alignment): Remove new check on
	Has_Aliased_Components for array types.

2019-12-16  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Try_Container_Indexing): In the case of a derived
	container type, use the base type to look for candidate indexing
	operations, because the object may be a constrained subtype or
	itype with no explicit declaration.  Candidate indexing
	operations are found in the same scope and list of declarations
	as the declaration of the base type.

2019-12-16  Ed Schonberg  <schonberg@adacore.com>

	* scng.adb (Scan): In Ada2020, a left-bracket indicates the
	start of an homogenous aggregate.
	* par-ch4.adb (P_Reduction_Attribute_Reference): New procedure.
	(P_Aggregate): Recognize Ada2020 bracket-delimited aggregates.
	(P_Primary): Ditto.
	* par-util.adb (Comma_Present): Return false on a right bracket
	in Ada2020, indicating the end of an aggregate.
	* snames.ads-tmpl: Introduce Name_Reduce and Attribute Reduce.
	* sinfo.ads, sinfo.adb (Is_Homogeneous_Aggregate): New flag on
	aggregates, to designate an Ada2020 array or container aggregate
	that is bracket-delimited in the source.
	* sem_attr.adb (Analyze_Attribute): For attribute Reduce, verify
	that two arguments are present, and verify that the prefix is a
	stream or an object that is iterable (array or contrainer).
	(Resolve_Attribute): For attribute Reduce, resolve initial value
	with the type of the context. Type-checking of element type of
	prefix is performed after expansion.
	* exp_attr.adb (Expand_N_Attribute_Reference): For attribute
	Reduce, expand into a loop: a) If prefix is an aggregate with a
	single iterated component association, use its iterator
	specification to construct a loop, b) If prefix is a name, build
	a loop using an element iterator loop.
	* scans.ads: Add brackets tokens.

2019-12-16  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity): Adjust calls to
	validate_size.
	(gnat_to_gnu_component_type): Likewise.
	(gnat_to_gnu_field): Likewise and pass string for error messages.
	(components_need_strict_alignment): Remove test on Is_Aliased and
	add test for the independence of the component.
	(validate_size): Add S1 and S2 string parameters and use them to
	give better error messages for fields.  Tweak a couple of messages.
	* einfo.ads (Has_Independent_Components): Document more cases.
	(Is_Independent): Likewise.
	(Strict_Alignment): Document new semantics.
	* exp_ch9.adb (Install_Private_Data_Declarations): Also set the
	Is_Independent flag along with Is_Aliased on the renaming
	entity.
	* freeze.adb (Size_Known): Remove always-false test and add test
	for the strict-alignment on the record type.  Remove redundant
	tests and add test for the strict-alignment on the component
	type.
	(Check_Strict_Alignment): Set the flag if the type is by-ref and
	remove now redundant conditions.  Set the flag on an array type
	if it has aliased components.  In the record type case, do not
	set type for C_Pass_By_Copy convention.
	(Freeze_Array_Type): Move code checking for conflicts between
	representation aspects and clauses to before specific handling
	of packed array types. Give a warnind instead of an error for a
	conflict with pragma Pack.  Do not test Has_Pragma_Pack for the
	specific handling of packed array types.
	(Freeze_Record_Type): Move error checking of representation
	clause to...
	(Freeze_Entity): ...here after Check_Strict_Alignment is called.
	* sem_aggr.adb (Array_Aggr_Subtype): Also set the Is_Independent
	flag along with Is_Aliased on the Itype.
	* sem_ch13.adb (Check_Record_Representation_Clause): Do not set
	the RM size for a strict-alignment type.
	* sem_ch3.adb (Add_Interface_Tag_Components): Also set the
	Is_Independent flag along with Is_Aliased on the tag.
	(Add_Interface_Tag_Components): Likewise on the offset.
	(Analyze_Component_Declaration): Likewise on the component.
	(Analyze_Object_Declaration): Likewise on the object.
	(Constrain_Array): Likewise on the array.
	(Record_Type_Declaration: Likewise on the tag.
	(Array_Type_Declaration): Also set the
	Has_Independent_Components flag along with
	Has_Aliased_Components on the array.
	(Copy_Array_Base_Type_Attributes): Copy
	Has_Independent_Components.
	(Copy_Array_Subtype_Attributes): Copy Is_Atomic, Is_Independent
	and Is_Volatile_Full_Access.
	(Analyze_Iterator_Specification): Set Is_Independent on the loop
	variable according to Independent_Components on the array.
	* sem_ch5.adb: Likewise.
	* sem_ch6.adb (Process_Formals): Also set the Is_Independent
	flag along with Is_Aliased on the formal.

2019-12-16  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch8.adb (Analyze_Object_Renaming): Set Atomic, Independent
	and Volatile_Full_Access aspects on the entity of the renaming
	the same way as the Volatile aspect is set.
	* sem_util.ads (Is_Atomic_Object_Entity): Move declaration to...
	(Is_Independent_Object): New function.
	(Is_Volatile_Full_Access_Object): Likewise.
	* sem_util.adb (Is_Atomic_Object_Entity): ...here.
	(Prefix_Has_Atomic_Components): Minor tweak.
	(Is_Atomic_Object): Test Is_Atomic on the Etype uniformly.
	(Is_Atomic_Or_VFA_Object): Call Is_Volatile_Full_Access_Object.
	(Is_Independent_Object): New predicate.
	(Is_Subcomponent_Of_Atomic_Object): Remove redundant test.
	(Is_Volatile_Full_Access_Object): New predicate.
	(Is_Volatile_Prefix): Rename into...
	(Prefix_Has_Volatile_Components): ... and call
	Is_Volatile_Object.
	(Object_Has_Volatile_Components): Delete.
	(Is_Volatile_Object): Simplify.
	* gcc-interface/trans.c (node_is_volatile_full_access): Adjust
	comment.

2019-12-16  Bob Duff  <duff@adacore.com>

	* par.adb: Add Scopes function to do range checking on the scope
	stack.  Call Scopes all over the parser.  Add
	SIS_Aspect_Import_Seen flag.
	* par-ch6.adb (P_Subprogram): Initialize SIS_Aspect_Import_Seen
	to False at the start, and check it at the end.
	* par-ch13.adb (Get_Aspect_Specifications): Set
	SIS_Aspect_Import_Seen to True when appropriate.
	* par-ch10.adb, par-ch12.adb, par-ch2.adb, par-ch3.adb,
	par-ch5.adb, par-ch7.adb, par-ch9.adb, par-endh.adb,
	par-util.adb: Call Scopes.

2019-12-16  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_prag.adb (Atomic_Components): Remove local variable and
	fix consistency issues.  Call Component_Type on the Etype of E.
	(Independent_Components): Remove local variable.
	* sem_util.adb (Is_Subcomponent_Of_Atomic_Object): Properly deal
	with prefixes that are access values.
	* gcc-interface/trans.c (atomic_acces_t): New enumeral type.
	(node_is_atomic) <N_Indexed_Component>: Test the prefix.
	(node_has_volatile_full_access): Rename into...
	(node_is_volatile_full_access): ...this.
	(node_is_component): New predicare.
	(gnat_strip_type_conversion): Delete.
	(outer_atomic_access_required_p): Likewise.
	(atomic_access_required_p): Rename into...
	(get_atomic_access): ...this.  Implement the 3 different semantics
	of Atomic and Volatile_Full_Access.
	(simple_atomic_access_required_p): New predicate.
	(Call_to_gnu): Remove outer_atomic_access parameter and change the
	type of atomic_access parameter to atomic_acces_t.  Replace call to
	atomic_access_required_p with simple_atomic_access_required_p for
	the in direction and call get_atomic_access for the out direction
	instead of [outer_]atomic_access_required_p.
	(lhs_or_actual_p): Constify local variables.
	(present_in_lhs_or_actual_p): Likewise.
	(gnat_to_gnu) <N_Identifier>: Replace call to atomic_access_required_p
	with simple_atomic_access_required_p.
	<N_Explicit_Dereference>: Likewise.
	<N_Indexed_Component>: Likewise.
	<N_Selected_Component>: Likewise.
	<N_Assignment_Statement>: Call get_atomic_access for the name instead
	of [outer_]atomic_access_required_p.  Adjust call to Call_to_gnu.
	<N_Function_Call>: Adjust call to Call_to_gnu.
	(get_controlling_type): Fix typo in comment.

2019-12-16  Eric Botcazou  <ebotcazou@adacore.com>

	* fe.h (Ada_Version_Type): New typedef.
	(Ada_Version): Declare.
	* opt.ads (Ada_Version_Type): Add Convention C and WARNING line.
	(Ada_Version): Add WARNING line.
	(Exception_Mechanism_Type): Likewise.

2019-12-16  Gary Dismukes  <dismukes@adacore.com>

	* checks.adb, sem_util.adb: Minor reformatting and U.S. spelling
	adjustment.

2019-12-16  Bob Duff  <duff@adacore.com>

	* sem_ch10.adb (Analyze_Subunit): Give an error if the subunit
	is not a proper body. This hides the confusing "duplicate body"
	message that was previously given.

2019-12-16  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch8.adb (Expand_N_Object_Renaming_Declaration): Document
	third special case of renamings requiring special handling.
	(Evaluation_Required): Return true for an atomic or VFA prefix.

2019-12-16  Ed Schonberg  <schonberg@adacore.com>

	* checks.adb (Apply_Float_Conversion_Check): Use node of type
	conversion and not its parent, when inserting the declaration
	for the temporary that hold the result of the conversion.
	Previously the declaration was inserted above the parent of the
	conversion, apparently as a small optimization for the
	subsequent traversal in Insert_Actions.  Unfortunately a similar
	optimization takes place in Insert_Actions, assuming that the
	insertion point must be above the expression that creates the
	actions to insert.  This is not correct in the presence of
	conditional expressions (i.e.  since Ada2012), where the
	insertion must be in the list of actions attached to the current
	alternative.

2019-12-16  Bob Duff  <duff@adacore.com>

	* sem_attr.adb (Analyze_Attribute): Use Known_RM_Size. But we
	still need Size_Known_At_Compile_Time, because when the size
	really is known, sometimes only one or the other of these is
	True.

2019-12-16  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_util.adb (Is_Atomic_Or_VFA_Object): Also return true for
	components whose type is Volatile_Full_Access or which are
	subject to the aspect/pragma individually.
	* sem_util.ads (Is_Atomic_Object_Entity): Small comment fix.

2019-12-16  Yannick Moy  <moy@adacore.com>

	* exp_ch6.adb: Fix comment.
	* sem_res.adb (Resolve_Call): Do not check No_Recursion
	restriction or indirectly No_Secondary_Stack restriction, when
	inside an ignored ghost subprogram.

2019-12-16  Arnaud Charlet  <charlet@adacore.com>

	* impunit.adb: Add a-nbnbin, a-nbnbre, a-nubinu to Ada 2020
	units.
	* Makefile.rtl: Enable new file.
	* libgnat/a-nbnbin.adb, libgnat/a-nbnbin.ads,
	libgnat/a-nbnbre.adb, libgnat/a-nbnbre.ads,
	libgnat/a-nubinu.ads: New files. Provide default standalone
	implementation of Ada.Numerics.Big_Numbers.Big_* based on
	System.Generic_Bignum.
	* libgnat/a-nbnbin__gmp.adb: Alternate implementation of
	Ada.Numerics.Big_Numbers.Big_Integers based on GMP. Not enabled
	for now.
	* libgnat/s-bignum.ads, libgnat/s-bignum.adb: Now a simple
	wrapper on top of s-genbig.ads.
	* libgnat/s-genbig.ads, libgnat/s-genbig.adb: New files, making
	s-bignum generic for reuse in Ada.Numerics.Big_Numbers.

2019-12-16  Bob Duff  <duff@adacore.com>

	* doc/gnat_ugn/building_executable_programs_with_gnat.rst:
	Correct documentation of -gnatw_C switch
	* gnat_ugn.texi: Regenerate.

2019-12-16  Joel Brobecker  <brobecker@adacore.com>

	* doc/gnat_ugn/building_executable_programs_with_gnat.rst
	(_Switches_for_gnatbind): Reword the section explaining the
	impact of -minimal on debugging.
	* gnat_ugn.texi: Regenerate.

2019-12-16  Gary Dismukes  <dismukes@adacore.com>

	* libgnat/g-exptty.adb, libgnat/g-exptty.ads: Typo fixes and
	minor reformatting.

2019-12-16  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch6.adb (Requires_Atomic_Or_Volatile_Copy): New predicate.
	(Expand_Actuals): Use it to decide whether to add call by copy
	code as per the RM C.6(19) clause.
	* fe.h (Is_Atomic_Object): Remove.
	(Is_Volatile_Object): Likewise.
	* sem_util.ads (Is_Atomic_Object): Remove WARNING note.
	(Is_Volatile_Object): Likewise.
	* gcc-interface/trans.c (atomic_or_volatile_copy_required_p): Delete.
	(Call_to_gnu): Do not implement the  RM C.6(19) clause.

2019-12-16  Ghjuvan Lacambre  <lacambre@adacore.com>

	* sem_ch12.adb (Validate_Access_Subprogram_Instance): Add
	Can_Never_Be_Null checks.

2019-12-16  Eric Botcazou  <ebotcazou@adacore.com>

	* doc/gnat_rm/implementation_defined_pragmas.rst (VFA): Document
	extension of the no-aliasing rule to any subcomponent.
	* freeze.adb (Freeze_Object_Declaration): Small comment tweak.
	(Freeze_Record_Type): Do not deal with delayed aspect
	specifications for components here but...
	(Freeze_Entity): ...here instead.
	* sem_ch12.adb (Instantiate_Object): Improve wording of errors
	given for legality rules in C.6(12) and implement the new rule
	in C.6(13).
	* sem_res.adb (Resolve_Actuals): Likewise.
	* sem_prag.adb (Check_Atomic_VFA): New procedure implementing
	the new legality rules in C.6(13).
	(Process_Atomic_Independent_Shared_Volatile): Call
	Check_Atomic_VFA to check the legality rules.  Factor out code
	marking types into...
	(Mark_Type): ...this new procedure.
	(Check_VFA_Conflicts): Do not check the legality rules here.
	(Pragma_Atomic_Components): Call Check_Atomic_VFA on component
	type.
	* sem_util.ads (Is_Subcomponent_Of_Atomic_Object): Declare.
	* sem_util.adb (Is_Subcomponent_Of_Atomic_Object): New
	predicate.
	* gnat_rm.texi: Regenerate.

2019-12-13  Gary Dismukes  <dismukes@adacore.com>

	* doc/gnat_rm/implementation_defined_pragmas.rst: Minor
	rewording of one sentence.
	* gnat_rm.texi: Regenerate.

2019-12-13  Arnaud Charlet  <charlet@adacore.com>

	* exp_unst.adb (Unnest_Subprogram): Account for trees produced
	by Annex E constructs.

2019-12-13  Ghjuvan Lacambre  <lacambre@adacore.com>

	* doc/gnat_rm/implementation_defined_pragmas.rst: Update
	Initialize_Scalars documentation.
	* gnat_rm.texi: Regenerate.

2019-12-13  Javier Miranda  <miranda@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specification): Processing a
	precondition, if the expression is of the form A and then B, do
	not generate separate Pre/Post aspects for the separate clases
	when we are processing a generic unit. Required to avoid
	reporting spurious visibility errors on the instantiations.

2019-12-13  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_res.adb (Resolve_Actuals): Give canonical error for
	illegal case of atomic/volatile parameter also if the formal is
	aliased.

2019-12-13  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_util.ads (Is_Atomic_Object): Mention relevant RM clauses.
	* sem_util.adb (Is_Atomic_Object): For an indexed component,
	only look at the Has_Atomic_Components aspect of the prefix and
	do not recurse on it; for a selected component, do not look at
	the prefix.
	(Is_Atomic_Or_VFA_Object): Minor tweak.

2019-12-13  Arnaud Charlet  <charlet@adacore.com>

	* libgnat/a-calfor.ads, libgnat/a-calfor.adb (Split_Duration):
	New procedure.
	(Split, Image): Use Split_Duration. Update Image spec.

2019-12-13  Javier Miranda  <miranda@adacore.com>

	* exp_unst.adb (Unnest_Subprogram): Generate an extra temporary
	to facilitate the C backend processing dereferences.

2019-12-13  Javier Miranda  <miranda@adacore.com>

	* sem_prag.adb (Analyze_Pragma): Propagate the
	Linker_Section_Attribute to the ultimate alias of the subprogram
	to facilitate the C backend processing this attribute.

2019-12-13  Yannick Moy  <moy@adacore.com>

	* sem_util.adb (Original_Aspect_Pragma_Name): Go through
	Original_Node for pragma.

2019-12-13  Piotr Trojanek  <trojanek@adacore.com>

	* exp_aggr.adb, exp_unst.adb: Minor fix typo in comment.

2019-12-13  Steve Baird  <baird@adacore.com>

	* sem_res.adb (Resolve, Valid_Conversion): Add Base_Type call
	when testing whether a type is a general access type.

2019-12-13  Javier Miranda  <miranda@adacore.com>

	* exp_ch4.adb (Expand_N_Unchecked_Type_Conversion): Generate an
	extra temporary for cases unsupported by the C backend.

2019-12-13  Steve Baird  <baird@adacore.com>

	* einfo.ads: Correct comment for Derived_Type_Link to reflect
	that fact that this function is now used for more than just
	generation of warnings.
	* sem_ch3.adb (Build_Derived_Type): Do not call
	Set_Derived_Type_Link if the derived type and the parent type
	are in different compilation units. Such a derivation cannot be
	a problematic "early" derivation (identifying these is what the
	Derived_Type_Link attribute is used for) and we don't like
	inter-unit references that go in the opposite direction of
	semantic dependencies.
	* sem_ch13.adb (Is_Type_Related_Rep_Item): A new function,
	analogous to the existing function Is_Operational_Item.
	(Rep_Item_Too_Late): Generate a hard error (with same text as
	the warning that was previously being generated) if the
	AI12-0109 legality rule is violated.

2019-12-13  Eric Botcazou  <ebotcazou@adacore.com>

	* doc/gnat_rm/implementation_defined_pragmas.rst: Minor tweak to
	Volatile_Full_Access wording in GNAT RM.
	* gnat_rm.texi: Regenerate.

2019-12-13  Gary Dismukes  <dismukes@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference,
	Attribute_Address): Suppress generation of a call to
	Base_Address in the case where the Address attribute is being
	used to initialize a corresponding component of an activation
	record.
	(Is_Unnested_Component_Init): New function to determine whether
	an attribute reference for Address is used to initialized a
	component of an activation record object that corresponds to the
	object denoted by the prefix of the attribute (an assignment
	used in support of unnesting for back ends like LLVM).

2019-12-13  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve): IF an entity reference is overloaded
	because its type has an Implicit_Dereference aspect, we must
	examine the discriminants of the type to determine whether an
	explicit dereference must be inserted for use in code
	generation. Previously this was done for other expressions but
	not for entity references by themselves.  This was sufficient to
	handle uses of the aspect in container handling and iteration,
	but not more generally.

2019-12-13  Javier Miranda  <miranda@adacore.com>

	* exp_disp.ads (Expand_Interface_Thunk): Adding one formal (the
	interface type).
	* exp_disp.adb (Expand_Interface_Thunk): Using the added formal
	to ensure the correct profile of the thunk generated for
	predefined primitives; in addition, the added formal is also
	used to perform a check that ensures that the controlling type
	of the thunk is the one expected by the GCC backend.
	(Make_Secondary_DT, Register_Primitive): Adding the new formal
	to the calls to Expand_Interface_Thunk.
	* exp_ch6.adb (Register_Predefined_DT_Entry): Adding the new
	formal to the call to Expand_Interface_Thunk.
	* exp_intr.adb (Expand_Unc_Deallocation): When deallocating a
	controlled type and the call to unchecked deallocation is
	performed with a pointer to one of the convered interface types,
	displace the pointer to the object to reference the base of the
	object to deallocate its memory.
	* gcc-interface/trans.c (maybe_make_gnu_thunk): Assert that the
	controlling type of the thunk is an interface type.

2019-12-13  Bob Duff  <duff@adacore.com>

	* exp_attr.adb (Is_Available): Remove this function, and replace
	all calls with RTE_Available. RTE_Available will return True if
	"not Configurable_Run_Time_Mode". Remove the "???" comment.

2019-12-13  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch7.adb (Analyze_Package_Body_Helper): Do not call
	Declare_Inherited_Private_Subprograms on s child body: the
	required operations have already been created when analyzing the
	corresponding package declaration. This prevents a redeclaration
	of inehrited operation, and a crash when inserting the new
	operation in the current scope.

2019-12-13  Yannick Moy  <moy@adacore.com>

	* sem_prag.adb (Analyze_Depends_In_Decl_Part,
	Analyze_Global_In_Decl_Part,
	Analyze_Refined_Depends_In_Decl_Part,
	Analyze_Refined_Global_In_Decl_Part, Check_Missing_Part_Of):
	Skip redundant checking involving visibility inside
	instantiations.

2019-12-13  Yannick Moy  <moy@adacore.com>

	* sem_res.adb (Resolve_Call): Prevent inlining inside while loop
	conditions.
	* sem_util.adb, sem_util.ads (In_While_Loop_Condition): New
	query function.

2019-12-13  Bob Duff  <duff@adacore.com>

	* impunit.ads: Add Ada_202X_Unit.
	* impunit.adb: Add a table Non_Imp_File_Names_2X analogous to
	the other tables. Add code to search this table.
	* opt.ads: Add Warn_On_Ada_202X_Compatibility flag, currently
	always True.
	* sem_ch10.adb (Analyze_With_Clause): Give a warning if an Ada
	2020 unit is with-ed when Ada_Version < Ada_2020.  Change 'if'
	to 'case': Full coverage rules rule.

2019-12-13  Bob Duff  <duff@adacore.com>

	* rtsfind.ads: Minor comment fix.

2019-12-13  Gary Dismukes  <dismukes@adacore.com>

	* sem_util.adb (Scope_Within): For the case of checking for a
	task type procedure, check the Implementation_Base_Type of Curr.
	(Scope_Within_Or_Same): For the case of checking for a task type
	procedure, check the Implementation_Base_Type of Curr.

2019-12-13  Arnaud Charlet  <charlet@adacore.com>

	* impunit.adb (Non_Imp_File_Names_12): Add
	Ada.Containers.Vectors.Generic_Parallel_Sorting.

2019-12-13  Justin Squirek  <squirek@adacore.com>

	* sem_res.adb (Resolve_Allocator): Add calls to
	Check_Cond_Expr_Accessibility when a conditional expression is
	found.
	(Check_Allocator_Discrim_Accessibility_Exprs): Created to
	recursively traverse a potentially compound conditional
	expression and perform accessibility checks for each
	alternative.
	* sem_util.adb (Dynamic_Accessibility_Level): Avoid use of
	original node of the expression in question so we can handle
	dynamic accessibility in the limited case of a constant folded
	conditional expression.

2019-12-13  Steve Baird  <baird@adacore.com>

	* exp_ch4.adb (Expand_N_Op_Eq.Is_Equality): Move this function
	from within Expand_N_Op_Eq.Find_Equality out to immediately
	within Expand_N_Op_Eq in order to give it greater visibility.
	Add a new Typ parameter (defaulted to Empty) which, if
	non-empty, means the function will return False in the case of
	an equality op for some other type.
	* (Expand_N_Op_Eq.User_Defined_Primitive_Equality_Op): A new
	function. Given an untagged record type, finds the corresponding
	user-defined primitive equality op (if any).  May return Empty.
	Ignores visibility.
	* (Expand_N_Op): For Ada2012 or later, check for presence of a
	user-defined primitive equality op before falling back on the
	usual predefined component-by-component comparison. If found,
	then call the user-defined op instead.

2019-12-13  Justin Squirek  <squirek@adacore.com>

	* sem_ch6.adb (Check_Overriding_Indicator): Modify condition to
	take into account the modification of the Is_Hidden flag within
	generic instances.
	(Verify_Overriding_Indicator): Add an exception for controlled
	primitives within an instance.

2019-12-13  Ed Schonberg  <schonberg@adacore.com>

	* sinfo.ads, sinfo.adb (Aspect_On_Partial_View,
	Set_Aspect_On_Partial_View): New flag for use by SPARK, to
	indicate whether an aspect that appears on a type declaration
	applies to the partial view of that type.
	* sem_ch13.adb (Analyze_Aspect_Specification): Set new flag
	appropriately.

2019-12-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Same_Reprewentation): if the actual in a call is
	a generic actual type, use its bsae type to determine whether a
	change of representastion may be necessary for proper parameter
	passing.

2019-12-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_type.adb (Find_Unique_Type): A call to the universal
	access equality operator requires one operand to be a universal
	access, and the other to be an access type. There is no
	requirement, as previously implied by this routine, that
	pool-specific access types were illegal in this context.

2019-12-12  Steve Baird  <baird@adacore.com>

	* sem_ch6.adb
	(New_Overloaded_Entity.Check_Conforming_Paramters): Add new
	Conformance_Type parameter. With the value of
	Subtype_Conformant, the behavior of Check_Conforming_Parameters
	is unchanged.  The call in Matching_Entry_Or_Subprogram to
	instead passes in Type_Conformant. This corresponds to the use
	of "type conformant" in Ada RM 9.4(11.4/3).
	(New_Overloaded_Entity.Has_Matching_Entry_Or_Subprogram): Add
	new Normalized_First_Parameter_Type function to help in ignoring
	the distinction between protected and access-to-protected first
	parameters when checking prefixed-view profile matching. Replace
	computations of the type of the first parameter with calls to
	this function as appropriate.

2019-12-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb: (Analyze_Iterator_Specification): If the
	iteration is over a slice, complete the resolution of its
	bounds, which may be aebitrary expressions. The previous
	pre-analysis may have created itypes for the slice but has not
	performed the expansion that for example may introduce actions
	that specify explicit dereferences and run-time checks.

2019-12-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb: Improve error message for dispatching subprogram
	formals.

2019-12-12  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch9.adb (Build_Protected_Entry): Set the Scope of the new
	block to be the entity of the procedure created for the entry.

2019-12-12  Steve Baird  <baird@adacore.com>

	* sem_ch10.adb (Install_With_Clause): Check for the case of a
	circular dependency involving a predefined (or GNAT-defined)
	unit and handle that case by generating an appropropriate error
	message.

2019-12-12  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch4.adb, sem_res.adb: Minor reformatting.

2019-12-12  Justin Squirek  <squirek@adacore.com>

	* sem_ch4.adb (Analyze_One_Call): Add condition to check for
	incorrectly resolved hidden controlled primitives.

2019-12-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb: Fix processing of standard predefined operators.

2019-12-12  Piotr Trojanek  <trojanek@adacore.com>

	* libgnarl/a-dispat.ads (Yield): Update Global contract.

2019-12-12  Piotr Trojanek  <trojanek@adacore.com>

	* libgnat/g-altive.ads: Fix typo in comment.
	* bindo-graphs.adb: Fix repeated words in comment.
	* exp_ch4.adb: Likewise.
	* exp_ch5.adb: Likewise.
	* exp_ch7.adb: Likewise.
	* exp_pakd.adb: Likewise.
	* exp_unst.adb: Likewise.
	* exp_util.adb: Likewise.
	* freeze.adb: Likewise.
	* inline.adb: Likewise.
	* layout.adb: Likewise.
	* sem_ch12.adb: Likewise.
	* sem_ch13.adb: Likewise.
	* sem_ch4.adb: Likewise.
	* sem_ch9.adb: Likewise.
	* sem_elab.adb: Likewise.
	* doc/gnat_ugn/gnat_and_program_execution.rst: Fix repeated
	words in user documentation.
	* gnat_ugn.texi: Regenerate.

2019-12-12  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_attr.adb (Expand_Size_Attribute): Look directly at the
	prefix to detect the bit-packed slices.  Apply the checks last
	in case the attribute needs to be processed by the back-end.
	* exp_ch4.adb (Expand_N_Slice): Do not create a temporary for
	a prefix of the Size attribute.

2019-12-12  Steve Baird  <baird@adacore.com>

	* sem_ch12.adb
	(Instantiate_Type.Validate_Derived_Type_Instance): Implement the
	legality check of AI12-0036

2019-12-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch10.adb (Analyze_Subunit): Fix spurious visibility error
	on subunit with optimization.

2019-12-12  Arnaud Charlet  <charlet@adacore.com>

	* raise-gcc.c (__gnat_personality_v0): Define for SEH.

2019-12-12  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch9.adb (Build_Protected_Entry): Analyze the block created
	to hold the declarations and statements of the protected entry
	body right after it's created, and then call Reset_Scopes_To on
	that block to reset the Scope of nested entities to the block
	scope.
	(Reset_Scope): Add handling for N_Freeze_Entity nodes, calling
	Reset_Scopes recursively on the Actions of such nodes. Also, for
	subprogram bodies that are encountered that might not have a
	separate declaration (such as type init procedures), reset the
	Scope of the subprogram's entity.

2019-12-12  Justin Squirek  <squirek@adacore.com>

	* sem_attr.adb (Analyze_Attribute): Add error message for
	invalid usage of Attribute_Result.

2019-12-12  Bob Duff  <duff@adacore.com>

	* sem_attr.adb (Eval_Attribute): Never mark T'Descriptor_Size as
	static, even if T is a static subtype, because otherwise we will
	request the value of the attribute, which will crash because we
	have not evaluated it.

2019-12-12  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Expand_N_Assognment_Statement): Extend the
	processing involving private types with unknown discriminants to
	handle the case where the full view of the type is an
	unconstrained array type.

2019-12-12  Bob Duff  <duff@adacore.com>

	* sem_ch4.adb (Transform_Object_Operation): Deal properly with
	prefix notation in instances.

2019-12-12  Claire Dross  <dross@adacore.com>

	* libgnat/a-cofove.adb, libgnat/a-cfinve.adb (Find_Index): Use
	Extended_Index for call to Last.

2019-12-12  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch3.adb, sem_util.adb: Minor reformatting.

2019-12-12  Bob Duff  <duff@adacore.com>

	* doc/gnat_ugn/gnat_utility_programs.rst: Update gnatmetric
	documentation for average lengths

2019-12-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Constrain_Access): Remove obsolete comments and
	warning concerning component types of an access type whose
	designated type is a constrained record type. (Such constraints
	were previously ignored). Set scope of itype for component to
	the scope of the enclosing record.
	* sem_ch4.adb: Remove call to Set_Ekind.
	* sem_util.adb (Build_Actual_Subtype_Of_Component): Handle
	components whose type is an access to a constrained
	discriminant, where the constraints may be given by the
	discriminants of the enclosing type. New subprogram
	Build_Access_Record_Constraint.

2019-12-12  Justin Squirek  <squirek@adacore.com>

	* exp_ch6.adb (Expand_Call_Helper): Added null case for
	'Loop_Entry, 'Old, and 'Result when calculating whether to
	create extra accessibility parameters.
	* sem_util.adb (Dynamic_Accessibility_Level): Added null case
	for 'Loop_Entry, 'Old, and 'Result when  calculating
	accessibility level based on access-valued attributes.  Also
	added special handling for uses of 'Loop_Entry when used in its
	indexed component form.

2019-12-12  Arnaud Charlet  <charlet@adacore.com>

	* raise-gcc.c: Remove references to VMS

2019-12-12  Eric Botcazou  <ebotcazou@adacore.com>

	* atree.ads, comperr.ads, debug.ads, einfo.ads, elists.ads,
	err_vars.ads, errout.ads, exp_ch11.ads, exp_code.ads,
	exp_dbug.ads, exp_tss.ads, exp_util.ads, lib.ads, namet.ads,
	nlists.ads, opt.ads, repinfo.ads, restrict.ads, scos.ads,
	sem_aggr.ads, sem_aux.ads, sem_eval.ads, sem_util.ads,
	sinfo.ads, sinput.ads, stringt.ads, targparm.ads, types.ads,
	urealp.ads warnsw.ads: Add WARNING line(s) in commentary.
	* atree.h, elists.h, namet.h, nlists.h, repinfo.h, scos.h,
	stringt.h, types.h, uintp.h, urealp.h: Tidy up.
	* fe.h: Likewise.  Document WARNING mark.

2019-12-12  Dmitriy Anisimkov  <anisimko@adacore.com>

	* libgnat/g-comlin.ads (Get_Argument): New routine similar to
	original Get_Argument but with one more out parameter
	End_Of_Arguments.
	(Get_Arguments): Comment improved.
	* libgnat/g-comlin.adb (Get_Argument): Implementation taken from
	original Get_Argument and improved.
	(Get_Argument): Calls new routine Get_Argument with additional
	parameter.

2019-12-03  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (potential_alignment_gap): Delete.
	(rest_of_record_type_compilation): Do not call above function.  Use
	the alignment of the field instead of that of its type, if need be.
	When the original field has variable size, always lower the alignment
	of the pointer type.  Reset the bit-field status of the new field if
	it does not encode a bit-field.

2019-12-03  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (fold_convert_size): New function.
	(fold_bit_position): Invoke it to do further folding.

2019-12-03  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_subprog_type): With the Copy-In/
	Copy-Out mechanism, do not promote the mode of the return type to an
	integral mode if it contains a field on a non-integral type and even
	demote it for 64-bit targets.

2019-11-25  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/92362
	* gcc-interface/trans.c (gnat_to_gnu) <N_Attribute_Definition_Clause>:
	Use a temporary instead of clobbering the result with a freeze node.

2019-11-25  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/92575
	* expect.c (__gnat_expect_poll [VMS, HPUX]): Fix typo.

2019-11-06  Eric Botcazou  <ebotcazou@adacore.com>
	    Alexandre Oliva  <oliva@adacore.com>

	* gcc-interface/misc.c (callgraph_info_file): Delete.

2019-10-27  Jakub Jelinek  <jakub@redhat.com>

	* locales.c (iso_3166): Add missing comma after "United-States".

2019-10-15  Arnaud Charlet  <charlet@adacore.com>

	* Makefile.rtl (a-except.o): Put -O1 earlier so that it can be
	overriden if needed by other variables.

2019-10-12  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/91995
	* sem_ch8.adb (Chain_Use_Clause): Remove second argument in calls
	to Defining_Entity.
	* sem_elab.adb (Find_Unit_Entity): Likewise.  Deal with N_Subunit
	here in lieu of in Defining_Entity.
	* sem_util.ads (Defining_Entity): Remove 2nd and 3th parameters.
	* sem_util.adb (Defining_Entity): Remove 2nd and 3th parameters,
	and adjust accordingly.  Deal with N_Compilation_Unit.

2019-10-11  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (elaborate_reference_1): Specifically deal with
	pointer displacement.

	* gcc-interface/decl.c (components_to_record): Use proper name.

	* gcc-interface/trans.c (Sloc_to_locus): Use standard types.

2019-10-11  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_field): Adjust again the packing
	for a field without strict alignment and with an oversized clause.

2019-10-11  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (annotate_value) <INTEGER_CST>: Really test the
	sign of the value when deciding to build a NEGATE_EXPR.
	<PLUS_EXPR>: Remove redundant line.
	<BIT_AND_EXPR>: Do the negation here.

2019-10-11  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (Gigi_Equivalent_Type) <E_Array_Subtype>: New
	case.  Return the base type if the subtype is not constrained.

2019-10-11  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Named_{Integer|Real}>:
	New case to deal with the definition of named numbers.
	<E_Variable>: Minor tweaks.  Set DECL_IGNORED_P on the CONST_DECL
	if a corresponding variable is built.
	* gcc-interface/trans.c (gnat_to_gnu) <N_Integer_Literal>: Return
	error_mark_node instead of aborting on overflow for named numbers.
	<N_Number_Declaration>: Reuse the <N_Object_Declaration> case and
	deal with error_mark_node specifically.
	* gcc-interface/utils.c (create_var_decl): Do not set DECL_IGNORED_P
	on CONST_DECLs.
	(gnat_write_global_declarations): Output global constants.

2019-10-10  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch7.adb (Check_Unnesting_In_Decls_Or_Stmts): When
	encountering a loop at the top level of a package declaration
	list (that is, within the declarations of a package spec or
	body) that has nested subprograms, call Unnest_Loop to create a
	new library-level procedure that will contain the loop, to allow
	for proper handling of up-level references from within nested
	subprograms, such as to loop parameters.
	(Unnest_Loop): New procedure that takes a loop statement and
	creates a new procedure body to enclose the loop statement,
	along with generating a call to the procedure.

2019-10-10  Arnaud Charlet  <charlet@adacore.com>

	* freeze.adb (Freeze_Subprogram): Ensure constructor is a C++
	constructor.

2019-10-10  Gary Dismukes  <dismukes@adacore.com>

	* libgnat/a-ststio.ads (File_Type): Apply pragma
	Preelaborable_Initialization to the type.

2019-10-10  Yannick Moy  <moy@adacore.com>

	* inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Do not peek
	under private types whose completion is SPARK_Mode Off.

2019-10-10  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch4.adb, sem_cat.adb, sem_ch12.adb, sem_ch3.adb,
	sem_ch6.adb, sem_prag.adb, sem_util.adb, sem_util.ads: Minor
	typo fixes.

2019-10-10  Ed Schonberg  <schonberg@adacore.com>

	* sem_warn.adb (Warn_On_Useless_Assignment): Do not warn if the
	second assignment is at the same source position as the first.

2019-10-10  Gary Dismukes  <dismukes@adacore.com>

	* sem_util.adb (Enclosing_Subprogram): Handle the case of
	E_Entry_Family, returning the entry family's associated
	Protected_Body_Subprogram (as was already done for E_Entry).
	* exp_ch9.adb (Expand_N_Accept_Statement): Call Reset_Scopes_To
	on the block created for an accept statement to reset the scopes
	of any local entities to the block scope.

2019-10-10  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Analyze_Formal_Package_Declaration): Propagate
	an aspect specification for Abstract_State from generic package
	to formal package, so that it is available when analyzing the
	constructed formal.

2019-10-10  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch6.adb (Set_Actual_Subtypes): Put the freeze node of the
	actual subtype after its declaration when the type of the formal
	has a predicate.

2019-10-10  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch13.adb (Adjust_Record_For_Reverse_Bit_Order): Do not use
	the Esize of the component to compute its layout, but only the
	Component_Clause.  Do not issue a warning for the _Tag
	component.  Also set the Esize of the component at the end of
	the layout.
	(Analyze_Record_Representation_Clause): Remove Hbit local
	variable.  Lay out the Original_Record_Component only if it's
	distinct from the component.
	(Check_Record_Representation_Clause): Fix off-by-one bug for the
	Last_Bit of the artificial clause built for the _Tag component.

2019-10-10  Bob Duff  <duff@adacore.com>

	* treepr.ads, treepr.adb (ppar): New procedure.

2019-10-10  Bob Duff  <duff@adacore.com>

	* sem_aggr.adb (Resolve_Aggregate): Add missing cases in the
	Others_Allowed => True case -- N_Case_Expression_Alternative and
	N_If_Expression.  Use Nkind_In.
	* atree.adb, atree.ads, sinfo.adb, sinfo.ads (Nkind_In): New
	16-parameter version.

2019-10-10  Ed Schonberg  <schonberg@adacore.com>

	* sem_aggr.adb (Resolve_Array_Aggregate): Set properly the
	Predicated_Parent link of an itype created for an aggregate, so
	that the predicate_function of the parent can support proofs on
	the object that it initializes.

2019-10-10  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch3.adb (Analyze_Number_Declaration): Set
	Debug_Info_Needed in the case where the expression is an integer
	literal.

2019-10-10  Yannick Moy  <moy@adacore.com>

	* inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Add subprograms
	with deep parameter or result type as not candidates for
	inlining.

2019-10-10  Vadim Godunko  <godunko@adacore.com>

	* libgnat/g-exptty.ads (TTY_Process_Descriptor): Set default
	value for Process.

2019-10-10  Bob Duff  <duff@adacore.com>

	* sem_prag.adb (Defer_Compile_Time_Warning_Error_To_BE): In
	addition to saving the pragma for further processing, copy the
	pragma into the main unit if necessary.

2019-10-10  Bob Duff  <duff@adacore.com>

	* einfo.ads, einfo.adb (Invariants_Ignored): New flag on types.
	This leaves just one unused flag.
	* sem_prag.adb (Invariant): Set the flag if appropriate.
	* exp_util.adb (Make_Invariant_Call): Check the flag.

2019-10-10  Arnaud Charlet  <charlet@adacore.com>

	* gnat1drv.adb (Gnat1drv): Skip code generation when handling an
	incomplete unit with -gnatceg.

2019-10-10  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch7.adb (Check_Unnesting_Elaboration_Code): Various
	cleanups.
	(Set_Elab_Proc): New procedure to create the defining identifier
	for a procedure created to encapsulate top-level blocks
	occurring as a part of library package elaboration.
	(First_Local_Scope): Function replaced by
	Reset_Scopes_To_Elab_Proc.
	(Reset_Scopes_To_Elab_Proc): New recursive procedure based on
	First_Local_Scope, which it replaces, that is called to traverse
	the statements of a library package body to locate top-level
	blocks and determine whether they contain nested subprograms
	that might address library-level objects of the package. Such
	blocks (and loops) and certain top-level subprograms within the
	statements will have their Scope reset here to match an
	encapsulating procedure created by
	Check_Unnesting_Elaboration_Code that will contain the
	statements.
	(Check_Unnesting_In_Decls_Or_Stmts): Code for handling blocks
	factored out into Unnest_Block. Add handling for package
	declarations and bodies, making recursive calls for
	visible/private declarations, body declarations, statements, and
	exception handlers. Also remove test for Is_Compilation_Unit:
	caller tests for Is_Library_Level_Entity instead.  Also, this
	proc's name was changed from Check_Unnesting_In_Declarations.
	(Check_Unnesting_In_Handlers): New procedure to traverse a
	sequence of exception handlers, calling
	Check_Unnesting_In_Decls_Or_Stmts on the statements of each
	handler.
	(Expand_N_Package_Body): Call Check_Unnesting_* routines only
	when Unnest_Subprogram_Mode is set and the current scope is a
	library-level entity (which includes packages and instantiations
	nested directly within a library unit).
	(Expand_N_Package_Declaration): Call Check_Unnesting_* routines
	only when Unnest_Subprogram_Mode is set and the current scope is
	a library-level entity (which includes packages and
	instantiations nested directly within a library unit).
	(Unnest_Block): New procedure factored out of
	Check_Unnesting_In_Decls_Or_Stmts, for creating a new procedure
	to replace a block statement and resetting the Scope fields of
	the block's top-level entities.

2019-10-10  Anthony Leonardo Gracio  <leonardo@adacore.com>

	* doc/gnat_ugn/about_this_guide.rst,
	doc/gnat_ugn/building_executable_programs_with_gnat.rst,
	doc/gnat_ugn/getting_started_with_gnat.rst,
	doc/gnat_ugn/gnat_and_program_execution.rst, errout.ads,
	exp_ch3.adb, gnatls.adb, impunit.adb, lib-writ.ads, opt.ads,
	sem_ch7.adb, sem_prag.adb, sem_res.adb, sem_warn.adb,
	terminals.c: Replace GPS by GNAT Studio.
	* gnat_ugn.texi: Regenerate.

2019-10-10  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Expand_Simple_Function_Return_Statement): If the
	function to which the return statement applies is an
	Ignored_Ghost_Function, do not indicate that it uses the
	secondary stack when the return type is unconstrained.

2019-10-10  Bob Duff  <duff@adacore.com>

	* libgnat/a-cbdlli.adb, libgnat/a-cbhama.adb,
	libgnat/a-cbhase.adb, libgnat/a-cbmutr.adb,
	libgnat/a-cborma.adb, libgnat/a-cborse.adb,
	libgnat/a-cdlili.adb, libgnat/a-cidlli.adb,
	libgnat/a-cihama.adb, libgnat/a-cihase.adb,
	libgnat/a-cimutr.adb, libgnat/a-ciorma.adb,
	libgnat/a-ciorse.adb, libgnat/a-cobove.adb,
	libgnat/a-cohama.adb, libgnat/a-cohase.adb,
	libgnat/a-coinve.adb, libgnat/a-comutr.adb,
	libgnat/a-conhel.adb, libgnat/a-convec.adb,
	libgnat/a-coorma.adb, libgnat/a-coorse.adb (Reference,
	Constant_Reference): Use Busy instead of Lock, so we forbid
	tampering with cursors, rather than tampering with elements.

2019-10-10  Ed Schonberg  <schonberg@adacore.com>

	* sem_cat.adb (Set_Categorization_From_Pragma): Do not modify
	any visibility settings if there are no compilation_unit pragmas
	following the package declaration. Add comments for future
	cleanup.

2019-10-10  Patrick Bernardi  <bernardi@adacore.com>

	* bindgen.adb (System_Secondary_Stack_Package_In_Closure):
	Renamed flag System_Secondary_Stack_Used to be clearer of what
	it represents.
	(Gen_Adainit): Refactor secondary stack related code to make it
	clearer.
	* rtsfind.adb (Load_RTU): Don't set Sec_Stack_Used flag here
	(RTE): Set Sec_Stack_Used if the System.Secondary_Stack is
	referenced, but not if we're ignoring ghost code.

2019-10-10  Piotr Trojanek  <trojanek@adacore.com>

	* sem_prag.adb (Analyze_Global_In_Decl_Part): Simplify previous
	test, just like in a recent commit we simplified a similar test
	for Depends contract.

2019-10-04  Joseph Myers  <joseph@codesourcery.com>

	* gcc-interface/utils.c (flag_isoc2x): New variable.

2019-10-01  Maciej W. Rozycki  <macro@wdc.com>

	* gcc-interface/Makefile.in (ADA_RTL_DSO_DIR): New variable.
	(install-gnatlib): Use it in place of ADA_RTL_OBJ_DIR for shared 
	library installation.

2019-10-01  Maciej W. Rozycki  <macro@wdc.com>

	* gcc-interface/Make-lang.in (ada.install-common): Split into...
	(gnat-install-tools, gnat-install-lib): ... these.

2019-09-26  Alexandre Oliva <oliva@adacore.com>

	* gcc-interface/decl.c (components_to_record): Set
	DECL_SIZE_UNIT for zero-sized fields.

2019-09-26  Arnaud Charlet  <charlet@adacore.com>

	* osint.adb (OS_Time_To_GNAT_Time): Remove dependency on To_C/To_Ada

2019-09-23  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* libgnarl/s-osinte__solaris.ads (sysconf): Declare.
	(SC_NPROCESSORS_ONLN): Define.
	* libgnarl/s-tasinf__solaris.ads (Number_Of_Processors): Declare.
	* libgnarl/s-tasinf__solaris.adb (N_CPU): New variable.
	(Number_Of_Processors): New function.

2019-09-23  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Regular_Loop_to_gnu): Do not rotate the loop
	if -Og is enabled.
	(build_return_expr): Do not perform NRV if -Og is enabled.
	(Subprogram_Body_to_gnu): Likewise.
	(gnat_to_gnu) <N_Simple_Return_Statement>: Likewise.
	(Handled_Sequence_Of_Statements_to_gnu): Do not inline finalizers if
	-Og is enabled.
	* gcc-interface/utils.c (convert_to_index_type): Return early if -Og
	is enabled.

2019-09-23  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (gnat_compile_time_expr_list): New variable.
	(Pragma_to_gnu): Rename local variable.  Save the (first) expression
	of pragma Compile_Time_{Error|Warning} for later processing.
	(Compilation_Unit_to_gnu): Process the expressions saved above.

2019-09-23  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Attribute_to_gnu): Test Can_Use_Internal_Rep
	on the underlying type of the node.
	(Call_to_gnu): Likewise with the type of the prefix.

2019-09-23  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (components_to_record): Do not reorder fields
	in packed record types if they contain fixed-size fields that cannot
	be laid out in a packed manner.

2019-09-19  Tom Tromey  <tromey@adacore.com>

	* gcc-interface/misc.c (gnat_get_type_bias): Return the bias
	when -fgnat-encodings=gdb.

2019-09-19  Steve Baird  <baird@adacore.com>

	* sem_prag.adb (Preferred_String_Type): A new function. Given an
	expression, determines whether the preference rules defined for
	the third-and-later arguments of pragma Annotate suffice to
	determine the type of the expression. If so, then the preferred
	type is returned; if not then Empty is returned. Handles
	concatenations.
	(Analyze_Pragma): Replace previous code, which dealt only with
	string literals, with calls to the new Preferred_String_Type
	function, which also handles concatenations.
	* doc/gnat_rm/implementation_defined_pragmas.rst: Update
	documentation for pragma Annotate.
	* gnat_rm.texi: Regenerate.

2019-09-19  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_util.adb (Is_Possibly_Unaligned_Slice): Do not return true
	on pure alignment considerations if the target does not require
	the strict alignment of memory accesses.

2019-09-19  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch12.adb (Check_Private_View): Add a comment to indicate
	future work.

2019-09-19  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_aggr.adb (Has_Mutable_Components): Look at the underlying
	type of components to find out whether they are mutable.

2019-09-19  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch12.adb (Instantiate_Package_Body): Check that the body
	has not already been instantiated when the body of the parent
	was being loaded.

2019-09-19  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_util.adb (In_Instance): Test whether the current unit has
	been analyzed instead of being on the scope stack to detect the
	case of actuals of an instantiation of a generic child unit done
	as a compilation unit.

2019-09-19  Dmitriy Anisimkov  <anisimko@adacore.com>

	* libgnat/g-socket.ads, libgnat/g-socket.adb
	(Create_Socket_Pair): New routine.
	* libgnat/g-socthi.ads (OS_Has_Socketpair): Boolean constant.
	(C_Socketpair): New imported routine.
	* libgnat/g-socthi__mingw.ads, libgnat/g-socthi__vxworks.ads
	(Default_Socket_Pair_Family): New constant.
	(C_Socketpair): New routine.
	* libgnat/g-socthi__mingw.adb, libgnat/g-socthi__vxworks.adb
	(C_Socketpair): Is separated in anouther file.
	* libgnat/g-sthcso.adb (C_Socketpair): Non UNIX implementation.
	* libgnat/g-stsifd__sockets.adb: Reuse C_Socketpair.

2019-09-19  Yannick Moy  <moy@adacore.com>

	* sem_prag.adb (Analyze_Depends_In_Decl_Part): Simplify previous
	test.

2019-09-19  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch7.adb (Install_Parent_Private_Declarations): If a
	generic child unit is instantiated within a sibling child unit,
	the analysis of its private part requires that the private part
	of the ancestor be available, as is done when the context
	includes an instance of the ancestor.

2019-09-19  Yannick Moy  <moy@adacore.com>

	* inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Add special
	case for traversal functions.

2019-09-19  Yannick Moy  <moy@adacore.com>

	* sem_prag.adb (Analyze_Global_In_Decl_Part): Do not issue an
	error when a constant of an access type is used as output in a
	Global contract.
	(Analyze_Depends_In_Decl_Part): Do not issue an error when a
	constant of an access type is used as output in a Depends
	contract.

2019-09-19  Arnaud Charlet  <charlet@adacore.com>

	* exp_attr.adb: Remove obsolete comment.

2019-09-19  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch3.adb (Build_Derived_Access_Type): If this is an access-
	to-subprogram type, copy Can_Use_Internal_Rep from the parent.

2019-09-19  Yannick Moy  <moy@adacore.com>

	* gcc-interface/Make-lang.in: Remove references to sem_spark.
	* sem_spark.adb, sem_spark.ads: Remove unit.

2019-09-19  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_attr.adb (Is_Inline_Floating_Point_Attribute): Treat
	Machine_Rounding as an alias for Rounding.
	* sem_res.adb (Simplify_Type_Conversion): Likewise.

2019-09-19  Gary Dismukes  <dismukes@adacore.com>

	* exp_unst.adb (Unnest_Subprogram): Bypass the transformation of
	up-level references unless Opt.Generate_C_Code is enabled.

2019-09-19  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch4.adb (Expand_Array_Equality): If optimization is
	enabled, generate a simple conjunction of comparisons for the
	specific case of constrained 1-dimensional 2-element arrays.
	Fix formatting.

2019-09-19  Piotr Trojanek  <trojanek@adacore.com>

	* exp_dbug.ads, exp_dbug.adb (Get_Homonym_Number): Remove.
	(Append_Homonym_Number): Use Homonym_Number instead of
	Get_Homonym_Number.
	* exp_util.ads, exp_util.adb (Homonym_Number): Mirror style of
	the removed Get_Homonym_Number routine, i.e. initialize local
	objects at declaration and refine the type of result.
	* sem_util.adb (Add_Homonym_Suffix): Use Homonym_Number instead
	of Get_Homonym_Number.

2019-09-19  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): Simplify
	handling of expressions in predicates when the context is a
	generic unit.

2019-09-19  Bob Duff  <duff@adacore.com>

	* sem_attr.adb (Resolve_Attribute): Make sure the secondary
	stack is properly managed in the case of a 'Range attribute in a
	loop.

2019-09-19  Raphael Amiard  <amiard@adacore.com>

	* libgnat/a-cfhase.ads (Set): Add comments to public primitives.

2019-09-19  Raphael Amiard  <amiard@adacore.com>

	* libgnat/a-cbhama.ads, libgnat/a-cbhase.ads,
	libgnat/a-chtgop.ads (Clear): Refine comments

2019-09-19  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch12.adb (Restore_Private_Views): Comment out new code
	that clear the Is_Generic_Actual_Type also on the full view.

2019-09-19  Bob Duff  <duff@adacore.com>

	* exp_ch3.adb (Rewrite_As_Renaming): Return False if there are
	any aspect specifications, because otherwise Insert_Actions
	blows up.

2019-09-19  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch6.adb (Add_Simple_Call_By_Copy_Code): Add
	Bit_Packed_Array parameter and documet it. Always insert a copy
	if it is set True.
	(Expand_Actuals): Adjust the calls to
	Add_Simple_Call_By_Copy_Code.

2019-09-19  Bob Duff  <duff@adacore.com>

	* xref_lib.adb (Get_Symbol_Name): If we reach EOF in the first
	loop without finding the symbol, return "???". Otherwise, it's
	an infinite loop.
	(Parse_EOL): Assert that we're not already at EOF.  Remove
	processing of LF/CR -- there are no operating systems that use
	that.

2019-09-19  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch6.adb (Is_Legal_Copy): Also return false for an aliased
	formal and a formal passed by reference in convention Ada.  Add
	missing guard to the existing test on Is_Valued_Procedure.

2019-09-19  Bob Duff  <duff@adacore.com>

	* rtsfind.ads (RTE_Available): Improve comment.

2019-09-18  Bob Duff  <duff@adacore.com>

	* exp_ch5.adb (Expand_Assign_Array_Loop_Or_Bitfield): Move call
	to RTE_Available later, so it doesn't disturb the elab order.
	The RE_Copy_Bitfield entity is defined in package
	System.Bitfields which has a dependency on package
	System.Bitfield_Utils, which has it its spec:
	   pragma Elaborate_Body;
	The query on RTE_Available forces loading and analyzing
	System.Bitfields and all its withed units.

2019-09-18  Eric Botcazou  <ebotcazou@adacore.com>

	* checks.ads (Alignment_Warnings_Record): Add P component.
	* checks.adb (Apply_Address_Clause_Check): Be prepared to kill
	the warning also if the clause is of the form X'Address.
	(Validate_Alignment_Check_Warning): Kill the warning if the
	clause is of the form X'Address and the alignment of X is
	compatible.

2019-09-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Set_Mixed_Node_Expression): If a conditional
	expression has universal_real alternaitves and the context is
	Universal_Fixed, as when it is an operand in a fixed-point
	multiplication or division, resolve the expression with a
	visible fixed-point type, which must be unique.

2019-09-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Constrain_Component_Type): For a discriminated
	type, handle the case of a constraint given by a conversion of a
	discriminant of the enclosing type. Necessary when compiling a
	discriminated task for a restricted run-time, when the generated
	Secondary_Stack component may be set by means of an aspect on
	the task type.

2019-09-18  Ed Schonberg  <schonberg@adacore.com>

	* exp_aggr.adb (Expand_Record_Aggregate, Rewrite_Discriminant):
	After rewriting a reference to an outer discriminant as a
	selected component of the enclosing object, analyze the selected
	component to ensure that the entity of the selector name is
	properly set. This is necessary when the aggregate appears
	within an expression that may have been analyzed already.

2019-09-18  Justin Squirek  <squirek@adacore.com>

	* sem_ch8.adb (Use_One_Type): Add guard to prevent warning on a
	reundant use package clause where there is no previous
	use_clause in the chain.

2019-09-18  Justin Squirek  <squirek@adacore.com>

	* exp_ch4.adb (Expand_N_Type_Conversion): Add calculation of an
	alternative operand for the purposes of generating accessibility
	checks.

2019-09-18  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_aggr.adb (Build_Array_Aggr_Code): In STEP 1 (c), duplicate
	the expression and reset the Loop_Actions for each loop
	generated for an others choice.

2019-09-18  Justin Squirek  <squirek@adacore.com>

	* einfo.adb, einfo.ads (Minimum_Accessibility): Added new field.
	(Set_Minimum_Accessibility): Added to set new field.
	(Minimum_Accessibility): Added to fetch new field.
	* exp_ch6.adb (Expand_Subprogram_Call): Modify calls to fetch
	accessibility levels to the new subprogram Get_Accessibility
	which handles cases where minimum accessibility might be needed.
	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Add section to
	generate a Minimum_Accessibility object within relevant
	subprograms.
	* sem_util.adb, sem_util.ads (Dynamic_Accessibility_Level):
	Additional documentation added and modify section to use new
	function Get_Accessibility.
	(Get_Accessibility): Added to centralize processing of
	accessibility levels.

2019-09-18  Steve Baird  <baird@adacore.com>

	* sem_util.ads (Interval_Lists): A new visible package. This
	package is visible because it is also intended for eventual use
	in Sem_Eval.Subtypes_Statically_Compatible when that function is
	someday upgraded to handle static predicates correctly.  This
	new package doesn't really need to be visible for now, but it
	still seems like a good idea.
	* sem_util.adb (Gather_Components): Implement AI12-0086 via the
	following strategy. The existing code knows how to take a static
	discriminant value and identify the corresponding variant; in
	the newly-permitted case of a non-static value of a static
	subtype, we arbitrarily select a value of the subtype and find
	the corresponding variant using the existing code. Subsequently,
	we check that every other value of the discriminant's subtype
	corresponds to the same variant; this is done using the newly
	introduced Interval_Lists package.
	(Interval_Lists): Provide a body for the new package.

2019-09-18  Javier Miranda  <miranda@adacore.com>

	* exp_ch4.adb (Expand_N_Op_Eq): The frontend assumes that we can
	do a bit-for-bit comparison of two access to protected
	subprogram pointers. However, there are two reasons why we may
	not be able to do that: (1) there may be padding bits for
	alignment before the access to subprogram, and (2) the access to
	subprogram itself may not be compared bit-for- bit because the
	activation record part is undefined: two pointers are equal iff
	the subprogram addresses are equal. This patch fixes it by
	forcing a field-by-field comparison.
	* bindgen.adb (Gen_Adainit): The type No_Param_Proc is defined
	in the library as having Favor_Top_Level, but when we create an
	object of that type in the binder file we don't have that
	pragma, so the types are different. This patch fixes this issue.
	* libgnarl/s-interr.adb, libgnarl/s-interr__hwint.adb,
	libgnarl/s-interr__sigaction.adb, libgnarl/s-interr__vxworks.adb
	(Is_Registered): This routine erroneously assumes that the
	access to protected subprogram is two addresses. We need to
	create the same record that the compiler makes to ensure that
	any padding is the same. Then we have to look at just the first
	word of the access to subprogram. This patch fixes this issue.

2019-09-18  Bob Duff  <duff@adacore.com>

	* exp_ch5.adb (Expand_Assign_Array_Loop_Or_Bitfield): The call
	to Copy_Bitfield is now enabled.
	(Expand_Assign_Array_Bitfield): Multiply 'Length times
	'Component_Size "by hand" instead of using 'Size.

2019-09-18  Vasiliy Fofanov  <fofanov@adacore.com>

	* doc/gnat_rm/implementation_defined_pragmas.rst: Fix minor
	formatting issue.

2019-09-18  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Make_DT, Make_Secondary_DT): Remove generation
	of alignment representation clause for the following tables:
	Predef_Prims, Iface_DT, TSD, ITable, DT.

2019-09-18  Steve Baird  <baird@adacore.com>

	* sem_eval.adb (Expr_Value): Do not fail "the type of a null
	literal must be an access type" assertion if errors have already
	been posted on the given node.

2019-09-18  Piotr Trojanek  <trojanek@adacore.com>

	* exp_dbug.ads, exp_dbug.adb (Get_Homonym_Number): Refine type
	from Nat to Pos.
	* sem_util.adb (Add_Homonym_Suffix): Refine type of a local
	variable.

2019-09-18  Yannick Moy  <moy@adacore.com>

	* exp_dbug.adb (Append_Homonym_Number): Use new function
	Get_Homonym_Number.
	(Get_Homonym_Number): New function to return the homonym number.
	(Qualify_Entity_Name): Remove special case for GNATprove.
	* exp_dbug.ads (Get_Homonym_Number): Make the new function
	public for use in GNATprove.
	* frontend.adb (Frontend): Do not qualify names in GNATprove
	mode.
	* sem_util.adb (Unique_Name): Append homonym suffix where needed
	for entities which have local homonyms in the same scope.

2019-09-18  Nicolas Roche  <roche@adacore.com>

	* libgnat/s-valrea.adb (Scan_Integral_Digits): New procedure.
	(Scan_Decimal_Digits): New procedure.
	(As_Digit): New function.
	(Scan_Real): Use Scan_Integral_Digits and Scan_Decimal_Digits.

2019-09-18  Claire Dross  <dross@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference): Call routine from
	Exp_Util to know the value of the Constrained attribute in the
	static case.
	* exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Make
	implicit dereferences inside the Constrained attribute explicit.
	* exp_util.ads, exp_util.adb
	(Attribute_Constrained_Static_Value): New routine to compute the
	value of a statically known reference to the Constrained
	attribute.

2019-09-18  Vadim Godunko  <godunko@adacore.com>

	* libgnat/g-expect.adb (Expect_Internal): Don't include invalid
	file descriptors into the set of file descriptors for Poll.
	Raise Process_Died exception when computed set of file
	descriptors to monitor is empty.

2019-09-18  Frederic Konrad  <konrad@adacore.com>

	* adaint.c: Include dosFsLib.h and vwModNum.h for VxWorks 6.
	(__gnat_rename): Map S_dosFsLib_FILE_NOT_FOUND to ENOENT.

2019-09-18  Steve Baird  <baird@adacore.com>

	* freeze.adb (Freeze_Object_Declaration): Do not call
	Check_Large_Modular_Array when the object declaration being
	frozen is an ignored ghost entity.

2019-09-18  Tom Tromey  <tromey@adacore.com>

	* make.adb (Initialize): Fix typo.

2019-09-18  Olivier Hainque  <hainque@adacore.com>

	* libgnat/s-win32.ads (DWORD_PTR): New type, pointer size
	unsigned int.
	(SYSTEM_INFO): Use it for dwActiveProcessorMask.

2019-09-18  Arnaud Charlet  <charlet@adacore.com>

	* doc/gnat_rm/implementation_defined_pragmas.rst: Improve doc on
	Warning_As_Error.
	* gnat_rm.texi: Regenerate.

2019-09-18  Arnaud Charlet  <charlet@adacore.com>

	* doc/gnat_rm/implementation_defined_characteristics.rst,
	doc/gnat_rm/implementation_defined_pragmas.rst,
	doc/gnat_rm/implementation_of_specific_ada_features.rst: Remove
	remaining references to VMS support
	* gnat_rm.texi: Regenerate.

2019-09-18  Arnaud Charlet  <charlet@adacore.com>

	* libgnat/s-stausa.adb: Fix a typo

2019-09-18  Bob Duff  <duff@adacore.com>

	* libgnat/a-cbhama.adb, libgnat/a-cbhase.adb,
	libgnat/a-cbmutr.adb, libgnat/a-cborma.adb,
	libgnat/a-cborse.adb, libgnat/a-cobove.adb (Copy): Avoid reading
	the uninitialized variable C in the Checks = False case. Change
	variable to be a constant.

2019-09-18  Claire Dross  <dross@adacore.com>

	* libgnat/a-cofuma.adb (Remove, Elements_Equal_Except,
	Keys_Included, Keys_Included_Except): Rename loop indexes and
	global constants from I to J.

2019-09-18  Arnaud Charlet  <charlet@adacore.com>

	* exp_unst.adb (Unnest_Subprograms): Refine previous change.

2019-09-17  Claire Dross  <dross@adacore.com>

	* libgnat/a-cofuma.ads, libgnat/a-cofuma.adb (Remove): New
	function which returns a copy of the input container without a
	given mapping.

2019-09-17  Yannick Moy  <moy@adacore.com>

	* libgnat/s-arit64.adb (Double_Divide): Correctly handle the
	special case when rounding.

2019-09-17  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Complete_Private_Subtype): Propagate attributes
	Has_Attributes and Predicate_Function to the cloned subtype.

2019-09-17  Eric Botcazou  <ebotcazou@adacore.com>

	* sem.adb (Do_Analyze): Save Style_Check_Max_Line_Length on
	entry and restore it on exit instead of recomputing it.

2019-09-17  Tom Tromey  <tromey@adacore.com>

	* exp_dbug.ads: Update character type comment.

2019-09-17  Yannick Moy  <moy@adacore.com>

	* libgnat/s-arit64.adb (Double_Divide): Simplify needlessly
	complex computation. Fix comments.
	(Scaled_Divide): Fix comments. Explain why implementation does
	not suffer from bugs in Algorithm D from 2nd Edition of TAOCP.

2019-09-17  Yannick Moy  <moy@adacore.com>

	* libgnat/s-arit64.adb (Scaled_Divide): Add protection against
	undesirable wrap-around.

2019-09-17  Yannick Moy  <moy@adacore.com>

	* libgnat/s-arit64.adb (Double_Divide): Fix two possible
	overflows.

2019-09-17  Dmitriy Anisimkov  <anisimko@adacore.com>

	* make_util.ads (On_Windows): Move...
	* osint.ads (On_Windows): There.
	* osint.adb (OS_Time_To_GNAT_Time): If odd incremented on
	Windows before conversion to Time_Stamp_Type.

2019-09-17  Yannick Moy  <moy@adacore.com>

	* sem_spark.adb (Check_Declaration): Do not check the assignment
	from an illegal declaration.

2019-09-17  Bob Duff  <duff@adacore.com>

	* doc/gnat_ugn/gnat_and_program_execution.rst: Clarify
	documentation.
	* gnat_ugn.texi: Regenerate.
	* libgnat/s-stausa.ads: Clarify comments.

2019-09-17  Steve Baird  <baird@adacore.com>

	* sem_util.adb (Wrong_Type): In deciding to suppress a message,
	it is not enough for In_Instance to be True; in addition,
	In_Generic_Actual (Expr) must be False.
	* sem_type.adb (In_Generic_Actual): Fix bug where traversal of
	parents skips every other node.

2019-09-17  Claire Dross  <dross@adacore.com>

	* sem_spark.adb (Get_Observed_Or_Borrowed_Expr): If the
	definition of a local borrower contains calls to traversal
	functions, the borrowed expression is the first parameter of the
	first traversal function call in the definition.

2019-09-17  Ed Falis  <falis@adacore.com>

	* doc/gnat_rm/implementation_defined_pragmas.rst: Remove
	section.
	* gnat_rm.texi, gnat_ugn.texi: Regenerate.

2019-09-17  Vadim Godunko  <godunko@adacore.com>

	* libgnat/g-exptty.ads (Close_Input): New subprogram.
	* libgnat/g-exptty.adb (Close_Input): New subprogram.
	(Close): Move close of TTY to Close_Input.
	* terminals.c (__gnat_close_tty): Set file descriptors to
	invalid value after close.

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
	parameter of the generic. Function used to decide whether a
	function is a pledge function.
	(Check_Not_Borrowed): Disable check inside the second parameter
	of a pledge function for the path borrowed by the first
	parameter. Also disable checks for entities inside a Global
	contract.

2019-08-19  Joffrey Huguet  <huguet@adacore.com>

	* libgnat/a-cfdlli.ads, libgnat/a-cfhama.ads,
	libgnat/a-cfinve.ads, libgnat/a-cforma.ads,
	libgnat/a-cofove.ads, libgnat/a-cofuma.ads,
	libgnat/a-cofuve.ads: Add formal function parameter "=" (L, R :
	Element_Type) to the generic packages.

2019-08-19  Eric Botcazou  <ebotcazou@adacore.com>

	* opt.ads: Clean up left-overs of earlier implementation in
	comment:

2019-08-19  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Derived_Enumeration_Type): Do no freeze anonymous
	base type if the bounds in the derived type declaration are
	literals of the type.

2019-08-19  Yannick Moy  <moy@adacore.com>

	* sem_res.adb (Resolve_Call): Check non-aliasing rules before
	GNATprove inlining.

2019-08-19  Eric Botcazou  <ebotcazou@adacore.com>

	* inline.adb (Add_Inlined_Body): Do not add pending
	instantiations.
	* sem_ch12.adb (Needs_Body_Instantiated): New predicate.
	(Analyze_Package_Instantiation): Use it to decide whether to add
	a pending instantiation for the body of the package.

2019-08-19  Olivier Hainque  <hainque@adacore.com>

	* gcc-interface/trans.c (Acc_Loop_to_gnu): Return the openacc
	BIND_EXPR node we have constructed on purpose.  Remove unused
	variable.

2019-08-19  Pierre-Marie de Rodat  <derodat@adacore.com>

	* gcc-interface/lang.opt (fdump-scos): Define.
	* gcc-interface/misc.c (gnat_handle_option): Handle
	OPT_fdump_scos.

2019-08-14  Joffrey Huguet  <huguet@adacore.com>

	* libgnat/a-cofuba.ads: Add a Length attribute to type
	Container. Add a type Array_Base which replaces the previous
	Elements attribute of Container.
	(Content_Init): New subprogram. It is used to initialize the
	Base attribute of Container.
	* libgnat/a-cofuba.adb (Resize): New subprogram. It is used to
	resize the underlying array of a container if necessary.
	(=, <=, Find, Get, Intersection, Length, Num_Overlaps, Set,
	Union): Update to match changes in type declarations.
	(Add): Modify body to damp the time and space cost in a specific
	case.
	(Content_Init): New subprogram. It is used to initialize the
	Base attribute of Container.
	(Remove): Modify body to damp the time and space cost in a
	specific case.

2019-08-14  Bob Duff  <duff@adacore.com>

	* sem_ch13.adb (Get_Alignment_Value): Return 1 for Alignment 0,
	and do not give an error.
	* doc/gnat_rm/representation_clauses_and_pragmas.rst: Update the
	corresponding documentation.
	* gnat_rm.texi: Regenerate.

2019-08-14  Eric Botcazou  <ebotcazou@adacore.com>

	* inline.adb (Add_Pending_Instantiation): Fix off-by-one error
	in the comparison against the maximum number of instantiations.

2019-08-14  Eric Botcazou  <ebotcazou@adacore.com>

	* inline.adb (Add_Pending_Instantiation): Use greater-or-equal
	in the comparison against the maximum number of instantiations.

2019-08-14  Ed Schonberg  <schonberg@adacore.com>

	* sem_aux.adb (Next_Rep_Item): If a node in the rep chain
	involves a Ghost aspect it may have been replaced by a null
	statement; use the original node to find next Rep_Item.
	* repinfo.adb (List_Entities): Do not list an Ignored
	Ghost_Entity, for which information may have been deleted.

2019-08-14  Bob Duff  <duff@adacore.com>

	* sem_prag.ads, sem_prag.adb
	(Process_Compile_Time_Warning_Or_Error): In parameterless
	version, improve detection of whether we are in a generic unit
	to cover the case of an instance within a generic unit.
	(Process_Compile_Time_Warning_Or_Error): Rename the
	two-parameter version to be
	Validate_Compile_Time_Warning_Or_Error, and do not export it.
	Issue a warning if the condition is not known at compile time.
	The key point is that the warning must be given only for pragmas
	deferred to the back end, because the back end discovers
	additional values that are known at compile time.  Previous
	changes in this ticket have enabled this by deferring to the
	back end without checking for special cases such as 'Size.
	(Validate_Compile_Time_Warning_Or_Error): Rename to be
	Defer_Compile_Time_Warning_Error_To_BE.
	* warnsw.ads, warnsw.adb (Warn_On_Unknown_Compile_Time_Warning):
	Add new switches -gnatw_c and -gnatw_C to control the above
	warning.
	* doc/gnat_ugn/building_executable_programs_with_gnat.rst:
	Document new switches.
	* gnat_ugn.texi: Regenerate.

2019-08-14  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch12.adb (Might_Inline_Subp): Rework comment and restrict
	the shortcut based on Is_Inlined to the back-end inlining case.

2019-08-14  Bob Duff  <duff@adacore.com>

	* inline.adb (Check_And_Split_Unconstrained_Function): Ignore
	protected functions to get rid of spurious error. The
	transformation done by this procedure triggers legality errors
	in the generated code in this case.

2019-08-14  Bob Duff  <duff@adacore.com>

	* sem_prag.adb (Process_Compile_Time_Warning_Or_Error): Defer
	processing to the back end in all cases where the pragma's
	condition is not known at compile time during the front end
	(except in generics), as opposed to detecting 'Size attributes
	and the like. This ensures that we take advantage of whatever
	can be compile-time known after running the back end, as opposed
	to having the front end guess what the back end can do.  Remove
	a little duplicated code at the call site.
	* gnat1drv.adb (Post_Compilation_Validation_Checks): Unlock the
	Elists while in Validate_Compile_Time_Warning_Errors, because it
	does analysis and name resolution, which sometimes involves
	adding Elists.

2019-08-14  Eric Botcazou  <ebotcazou@adacore.com>

	* einfo.ads (Is_Called): Document new usage on E_Package
	entities.
	* einfo.adb (Is_Called): Accept E_Package entities.
	(Set_Is_Called): Likewise.
	* exp_ch6.adb (Expand_Call_Helper): Move code dealing with
	instances for back-end inlining to Add_Inlined_Body.
	* inline.ads: Remove with clauses for Alloc and Table.
	(Pending_Instantiations): Move to...
	* inline.adb: Add with clauses for Alloc, Uintp, Table and
	GNAT.HTable.
	(Backend_Instances): New variable.
	(Pending_Instantiations): ...here.
	(Called_Pending_Instantiations): New table.
	(Node_Table_Size): New constant.
	(Node_Header_Num): New subtype.
	(Node_Hash): New function.
	(To_Pending_Instantiations): New hash table.
	(Add_Inlined_Body): Bail out early for subprograms in the main
	unit or subunit.  Likewise if the Is_Called flag is set.  If the
	subprogram is an instance, invoke Add_Inlined_Instance.  Call
	Set_Is_Called earlier.  If the subrogram is within an instance,
	invoke Add_Inlined_Instance.  Also deal with the case where the
	call itself is within an instance.
	(Add_Inlined_Instance): New procedure.
	(Add_Inlined_Subprogram): Remove conditions always fulfilled.
	(Add_Pending_Instantiation): Move the defence against ludicruous
	number of instantiations to here. When back-end inlining is
	enabled, associate an instantiation with its index in table and
	mark a few selected kinds of instantiations as always needed.
	(Initialize): Set Backend_Instances to No_Elist.
	(Instantiate_Body): New procedure doing the work extracted
	from...
	(Instantiate_Bodies): ...here.  When back-end inlining is
	enabled, loop over Called_Pending_Instantiations instead of
	Pending_Instantiations.
	(Is_Nested): Minor tweak.
	(List_Inlining_Info): Also list the contents of
	Backend_Instances.
	* sem_ch12.adb (Might_Inline_Subp): Return early if Is_Inlined
	is set and otherwise set it before returning true.
	(Analyze_Package_Instantiation): Remove the defence against
	ludicruous number of instantiations.  Invoke
	Remove_Dead_Instance instead of doing the removal manually if
	there is a guaranteed ABE.

2019-08-14  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch3.adb (Predef_Spec_Or_Body): For an equality operation
	of an interface type, create an expression function (that
	returns False) rather than declaring an abstract function.
	* freeze.adb (Check_Inherited_Conditions): Set Needs_Wrapper to
	False unconditionally at the start of the loop creating wrappers
	for inherited operations.

2019-08-14  Bob Duff  <duff@adacore.com>

	* table.adb: Assert that the table is not locked when increasing
	Last, even if it doesn't cause reallocation.  In other words,
	assert that on operations that MIGHT cause reallocation.
	* table.ads: Fix comment accordingly.

2019-08-14  Arnaud Charlet  <charlet@adacore.com>

	* doc/gnat_ugn/gnat_and_program_execution.rst: Remove
	documentation of gnatelim.

2019-08-14  Bob Duff  <duff@adacore.com>

	* sem_prag.adb (Validate_Compile_Time_Warning_Error): Attach the
	warning to the Sloc of the first pragma argument, rather than to
	the pragma itself. This is to make pragmas processed after the
	back end use the same Sloc as pragmas processed earlier, in the
	front end. There's no reason for this discrepancy, and it
	hinders further work on this ticket.

2019-08-14  Bob Duff  <duff@adacore.com>

	* sem.ads (Inside_A_Generic): Remove the ??? comment.

2019-08-14  Eric Botcazou  <ebotcazou@adacore.com>

	* inline.ads (Pending_Descriptor): Delete.
	* inline.adb (Initialize): Do not initialize it.
	* sem_ch12.adb (Delay_Descriptors): Delete.
	(Analyze_Package_Instantiation): Call
	Set_Delay_Subprogram_Descriptors instead of Delay_Descriptors
	throughout.

2019-08-14  Bob Duff  <duff@adacore.com>

	* exp_aggr.adb (Init_Hidden_Discriminants): Avoid processing the
	wrong discriminant, which could be of the wrong type.

2019-08-14  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch12.adb (Analyze_Instance_And_Renamings): Do not reset
	the Is_Generic_Instance flag previously set on the package
	generated for the instantiation of a generic subprogram.

2019-08-14  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch4.adb (Expand_N_Quantified_Expression): Freeze
	explicitly the type of the loop parameter.

2019-08-14  Javier Miranda  <miranda@adacore.com>

	* sem_util.adb (New_Copy_Tree.Copy_Node_With_Replacement):
	Update the Chars attribute of identifiers.

2019-08-14  Yannick Moy  <moy@adacore.com>

	* sem_spark.adb, sem_spark.ads (Is_Legal): New function exposed
	for use in GNATprove, to test legality rules not related to
	permissions.
	(Check_Declaration_Legality): Extract the part of
	Check_Declaration that checks rules not related to permissions.
	(Check_Declaration): Call the new Check_Declaration_Legality.
	(Check_Type_Legality): Rename of Check_Type. Introduce
	parameters to force or not checking, and update a flag detecting
	illegalities.
	(Check_Node): Ignore attribute references in statement position.

2019-08-14  Yannick Moy  <moy@adacore.com>

	* sem_spark.adb (Check_Old_Loop_Entry): New procedure to check
	correct use of Old  and Loop_Entry.
	(Check_Node): Check subprogram contracts.
	(Check_Pragma): Check Loop_Variant.
	(Check_Safe_Pointers): Apply checking to library-level
	subprogram  declarations as well, in order to check their
	contract.

2019-08-14  Yannick Moy  <moy@adacore.com>

	* sem_spark.adb (Is_Subpath_Expression): Take into account
	conversion and qualification.

2019-08-14  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch7.adb (Install_Private_Declarations)
	<Swap_Private_Dependents>: Do not rely solely on the
	Is_Child_Unit flag on the unit to recurse.
	(Uninstall_Declarations) <Swap_Private_Dependents>: New
	function.  Use it to recurse on the private dependent entities
	for child units.

2019-08-14  Javier Miranda  <miranda@adacore.com>

	* exp_aggr.adb (Is_CCG_Supported_Aggregate): Return False for
	arrays with bounds not known at compile time.

2019-08-14  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (New_Copy_Tree, Visit_Entity): A quantified
	expression includes the implicit declaration of the loop
	parameter. When a quantified expression is copied during
	expansion, for example when building the precondition code from
	the generated pragma, a new loop parameter must be created for
	the new tree, to prevent duplicate declarations for the same
	symbol.

2019-08-14  Yannick Moy  <moy@adacore.com>

	* sem_disp.adb (Check_Dispatching_Operation): Update assertion
	for the separate declarations created in GNATprove mode.
	* sem_disp.ads (Is_Overriding_Subprogram): Update comment.
	* sem_elab.adb (SPARK_Processor): Fix test for checking of
	overriding primitives.

2019-08-14  Eric Botcazou  <ebotcazou@adacore.com>

	* inline.adb (Add_Inlined_Body): Tweak comments.
	(List_Inlining_Info): Also list information about non-main
	units.

2019-08-14  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch4.adb (Analyze_Selected_Component): In the case where
	the prefix is of a concurrent type, and the selected entity
	matching the selector is the first private declaration of the
	type (such as the first local variable in a task's body), set
	Is_Private_Op.

2019-08-14  Piotr Trojanek  <trojanek@adacore.com>

	* einfo.adb (Is_Generic_Actual_Subprogram): Replace repeated
	calls to Ekind with Ekind_In.

2019-08-13  Richard Sandiford  <richard.sandiford@arm.com>

	PR middle-end/91421
	* gcc-interface/trans.c (gigi): Call set_decl_buillt_in_function.
	(Call_to_gnu): Use DECL_FE_FUNCTION_CODE instead of DECL_FUNCTION_CODE.

2019-08-13  Eric Botcazou  <ebotcazou@adacore.com>

	* ali.ads (Linker_Option_Record): Remove Original_Pos component.
	* ali.adb (Scan_ALI): Do not set it.

2019-08-13  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch3.adb (Build_Derived_Concurrent_Type): Add a couple of
	local variables and use them.  When the derived type fully
	constrains the parent type, rewrite it as a subtype of an
	implicit (unconstrained) derived type instead of the other way
	around.
	(Copy_And_Build): Deal with concurrent types and use predicates.
	(Build_Derived_Private_Type): Build the full derivation if
	needed for concurrent types too.
	(Build_Derived_Record_Type): Add marker comment.
	(Complete_Private_Subtype): Use predicates.

2019-08-13  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Check_Generic_Ancestor): New subprogram,
	aubsidiary to Build_Derived_Record_Type. to enforce the rule
	that a type extension declared in a generic body cznnot have an
	ancestor that is a generic formal (RM 3.9.1 (4/2)). The rule
	applies to all ancestors of the type, including interface
	progenitors.

2019-08-13  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch3.adb (Build_Underlying_Full_View): Delete.
	(Complete_Private_Subtype): Do not set the full view on the
	private subtype here.  If the full base is itself derived from
	private, do not re-derive the parent type but instead constrain
	an existing underlying full view.
	(Prepare_Private_Subtype_Completion): Do not get to the
	underlying full view, if any.  Set the full view on the private
	subtype here.
	(Process_Full_View): Likewise.
	* sem_ch12.adb (Check_Generic_Actuals): Also set
	Is_Generic_Actual_Type on the full view if the type of the
	actual is private.
	(Restore_Private_Views): Also reset Is_Generic_Actual_Type on
	the full view if the type of the actual is private.
	* sem_eval.adb (Subtypes_Statically_Match): Remove bypass for
	generic actual types.

2019-08-13  Javier Miranda  <miranda@adacore.com>

	* sem_res.adb (Resolve_Selected_Component): When the type of the
	component is an access to a class-wide type and the type of the
	context is an access to a tagged type the relevant type is that
	of the component (since in such case we may need to generate
	implicit type conversions or dispatching calls).

2019-08-13  Ed Schonberg  <schonberg@adacore.com>

	* exp_aggr.adb (Aggr_Assignment_OK_For_Backend):  Preanalyze
	expression, rather do a full analysis, to prevent unwanted
	removal of side effects which mask the intent of the expression.

2019-08-13  Eric Botcazou  <ebotcazou@adacore.com>

	* impunit.adb (Non_Imp_File_Names_95): Add
	GNAT.Branch_Prediction.

2019-08-13  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch6.adb: Remove with and use clauses for Sem_Ch12.
	(Expand_Call_Helper): Swap the back-end inlining case and the
	special front-end expansion case.  In back-end inlining mode, do
	not invoke Add_Inlined_Body unless the call may be inlined.
	* inline.ads (Add_Pending_Instantiation): New function moved
	from...
	* inline.adb (Add_Inlined_Body): Simplify comment.  Turn test on
	the enclosing unit into assertion.
	(Add_Pending_Instantiation): New function moved from...
	* sem_ch12.ads (Add_Pending_Instantiation): ...here.
	* sem_ch12.adb (Add_Pending_Instantiation): ...here.

2019-08-13  Eric Botcazou  <ebotcazou@adacore.com>

	* sem.adb (Do_Analyze): Recompute Style_Check_Max_Line_Length
	after restoring Style_Max_Line_Length.

2019-08-13  Arnaud Charlet  <charlet@adacore.com>

	* sem_ch13.adb (Check_Iterator_Functions): Protect against
	cascaded errors.

2019-08-13  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Analyze_Subprogram_Renaming): Do no suppress mode
	conformance checks on child unit instance that is a compilation
	unit.

2019-08-13  Gary Dismukes  <dismukes@adacore.com>

	* exp_dbug.adb (Fully_Qualify_Name): Add full name qualification
	for the E_Exception case.

2019-08-13  Gary Dismukes  <dismukes@adacore.com>

	* exp_aggr.adb (Aggr_Size_OK): Compute the aggregate size using
	universal arithmetic, to avoid situations where the size
	computation overflows.

2019-08-13  Justin Squirek  <squirek@adacore.com>

	* repinfo.adb (List_Scalar_Storage_Order): Modify conditionals
	for displaying ordering to always be triggered when -gnatR4 is
	in effect.

2019-08-13  Justin Squirek  <squirek@adacore.com>

	* aspects.adb, aspects.ads: Register new aspect.
	* par-prag.adb (Prag): Register new pragma
	* sem_ch13.adb (Analyze_Aspect_Specifications): Add processing
	for new aspect similar to Aspect_Max_Entry_Queue_Length.
	* sem_prag.adb, sem_prag.ads (Analyze_Pragma): Register new
	pragma and set it to use the same processing as
	Pragma_Max_Queue_Length.
	* snames.ads-tmpl: Move definition of
	Name_Max_Entry_Queue_Length so that it can be processed as a
	pragma in addition to a restriction and add an entry for the
	pragma itself.

2019-08-13  Yannick Moy  <moy@adacore.com>

	* sem_ch4.adb (Analyze_Allocator): Do not insert subtype
	declaration for allocator inside a spec expression.

2019-08-13  Yannick Moy  <moy@adacore.com>

	* sem_res.adb (Resolve_Call): Do not inline calls inside record
	types.

2019-08-13  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch4.adb (Analyze_One_Call): Remove bypass for type
	mismatch in nested instantiations.
	* sem_ch8.adb (Find_Nearer_Entity): New function.
	(Find_Renamed_Entity): Use it to disambiguate the candidates for
	the renaming generated for an instantiation when it is
	ambiguous.

2019-08-13  Eric Botcazou  <ebotcazou@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): Do not set
	Back_End_Inlining in ASIS mode either.

2019-08-13  Olivier Hainque  <hainque@adacore.com>

	* libgnat/s-win32.ads: Define size_t and fix the MapViewOfFile
	binding to use it instead of DWORD for the dwNumberOfBytesToMap
	argument.
	* libgnat/g-sercom__mingw.adb (Read): State which definition of
	size_t to fetch in call to Last_Index.

2019-08-13  Arnaud Charlet  <charlet@adacore.com>

	* gcc-interface/Make-lang.in: Remove unused TRACE variable. Pass
	LN_S to relevant gnatlib targets.
	* gcc-interface/Makefile.in: Systematically pass LN_S to
	relevant gnatlib targets.

2019-08-13  Yannick Moy  <moy@adacore.com>

	* sem_dim.adb (Analyze_Dimension,
	Analyze_Dimension_Array_Aggregate, Analyze_Dimension_Call,
	Analyze_Dimension_Extension_Or_Record_Aggregate): Return
	immediately when inside an inlined body.
	* sem_res.adb (Resolve_Call): Remove special checking now done
	inside Analyze_Dimension_Call.

2019-08-13  Justin Squirek  <squirek@adacore.com>

	* exp_ch4.adb (Expand_N_Allocator): Add condition to detect
	library-level object declarations

2019-08-13  Eric Botcazou  <ebotcazou@adacore.com>

	* doc/gnat_ugn/building_executable_programs_with_gnat.rst
	(-gnateT): Document Double_Float_Alignment parameter and fix
	description of Double_Scalar_Alignment parameter.
	* gnat_ugn.texi: Regenerate.

2019-08-13  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch6.adb (Expand_Call_Helper): If back-end inlining is
	enabled, also instantiate the body of a generic unit containing
	a subprogram subject to aspect/pragma Inline_Always at
	optimization level zero.
	* sem_ch12.adb (Might_Inline_Subp): Minor tweak.
	(Analyze_Package_Instantiation): Do not instantiate the package
	body because of inlining considerations if the instantiation is
	done in a generic unit.  Move around similar condition involving
	the main unit.  Add test on Back_End_Inlining to processing for
	front-end inlining.

2019-08-13  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Make_Secondary_DT): Handle record type
	derivations that have interface components located at fixed
	positions and interface components located at variable offset.
	The offset of components located at fixed positions is computed
	using the dummy object (similar to the case where all the
	interface components are located at fixed positions).
	(Make_DT): Build the dummy object for all tagged types that
	implement interface types (that is, build it also for types with
	variable size components), and use the dummy object to compute
	the offset of all tag components located at fixed positions when
	initializing the Interface_Table object.

2019-08-13  Justin Squirek  <squirek@adacore.com>

	* gnatcmd.adb (GNATCmd): Add constant for new compiler switch
	--help-ada, and include usage subprogram. Add line to usage help
	explaining the new flag.
	(GNATCmd_Usage): Rename from locally declared Usage so as not to
	confuse with the newly imported version. Add new argument case
	for --help-ada and add bug report email to implicit display of
	help without the --help flag so as to unify output between the
	two cases.

2019-08-13  Dmitriy Anisimkov  <anisimko@adacore.com>

	* libgnat/g-comlin.adb (Getopt): Quote unrecognized switch in
	Invalid_Switch exception message.

2019-08-13  Yannick Moy  <moy@adacore.com>

	* sem_util.adb (Traverse_More_Func): Take into account
	Loop_Actions inside N_Iterated_Component_Association nodes.
	* sinfo.ads: Document correctly Loop_Actions as a field of nodes
	of kind N_Iterated_Component_Association.

2019-08-13  Claire Dross  <dross@adacore.com>

	* libgnat/a-cfinve.adb, libgnat/a-cofove.adb (Find_Index,
	Reverse_Find_Index): Use bigger type to avoid range check
	failure at the last loop iteration.

2019-08-12  Dmitriy Anisimkov  <anisimko@adacore.com>

	* libgnat/g-socket.adb (Is_IPv6_Address): Check that no less
	then 2 colons in IPv6 numeric address.

2019-08-12  Dmitriy Anisimkov  <anisimko@adacore.com>

	* libgnat/g-comlin.ads, libgnat/g-comlin.adb (Getopt): Add
	parameter Quiet. Need to do not output error messages to
	console. Invalid_Switch exception generation surrounded by an
	error message.

2019-08-12  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Expand_Actuals. Add_Call_By_Copy_Code): Add code
	to generate proper checks when an actual for an in-out or out
	parameter has a non-null access type.  No constraints are
	applied to an inbound access parameter, but on exit a not-null
	check must be performed if the type of the actual requires it.

2019-08-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Is_Expaned_Priority_Attribute): Check whether
	call comes from a rewritten attribute before comparing name with
	Get_Ceiling run-time subprogram.

2019-08-12  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_util.ads (Component_May_Be_Bit_Aligned): Small comment
	tweaks.
	(Possible_Bit_Aligned_Component): Likewise.
	(Type_May_Have_Bit_Aligned_Components): Likewise.
	* exp_util.adb (Component_May_Be_Bit_Aligned): Likewise.
	(Possible_Bit_Aligned_Component): Likewise.
	(Type_May_Have_Bit_Aligned_Components): Likewise.

2019-08-12  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch4.adb (Expand_N_Op_Eq): Expand the array equality if
	either operand is a possibly unaligned slice.
	* exp_ch6.adb (Expand_Simple_Function_Return): Do not generate a
	copy for a possibly unaligned object if it is represented as a
	scalar.
	* exp_util.adb (Is_Possibly_Unaligned_Slice): Do not always
	return false if the target doesn't have strict alignment.

2019-08-12  Bob Duff  <duff@adacore.com>

	* sem_ch12.adb (Instantiate_Package_Body): Remove suppression of
	checks in instances of internal units.
	* sem_ch6.adb (Analyze_Function_Return): Do not generate a
	constraint check on an extended_return_statement if the subtype
	of the return object in the statement is identical to the return
	subtype of the function.

2019-08-12  Bob Duff  <duff@adacore.com>

	* libgnat/a-cbmutr.adb (Is_Reachable): Declare Idx to be of the
	base subtype.  Clearly it makes no sense to loop "while Idx >=
	0", if Idx is of a nonnegative subtype.

2019-08-12  Bob Duff  <duff@adacore.com>

	* libgnat/a-tifiio.adb (Put_Scaled): Prevent AA from being
	negative, since Field is range 0 .. something.

2019-08-12  Bob Duff  <duff@adacore.com>

	* doc/gnat_ugn/gnat_utility_programs.rst (gnatmetric, gnatpp,
	gnatstub): Remove documentation for Ada language version
	switches, and note that they are no longer needed.

2019-08-12  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch5.adb (Prepare_Param_Spec_Loop): Set the parents of the
	copied low and high bounds in the case where the loop range is
	given by a discrete_subtype_indication, to prevent hanging (or
	Assert_Failure) in Insert_Actions.

2019-08-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (heck_Untagged_Equality): Verify that user-defined
	equality has the same profile as the predefined equality before
	applying legality rule in RM 4.5.2 (9.8).

2019-08-12  Bob Duff  <duff@adacore.com>

	* libgnat/a-except.ads: Update obsolete comment, still making
	clear that this is a variant.  Add explicit default for Id
	component of Exception_Occurrence, because that value is used.
	Define Null_Occurrence less redundantly.
	* libgnat/a-einuoc.adb: Minor simplification of code.

2019-08-12  Justin Squirek  <squirek@adacore.com>

	* libgnat/a-dhfina.adb, libgnat/a-dhfina.ads (Is_Simple_Name,
	Is_Root_Directory, Is_Parent_Directory,
	Is_Current_Directory_Name, Is_Relative_Name, Initial_Directory,
	Relative_Name, Compose): Add implementation and documentation.
	* libgnat/a-direct.adb (Containing_Directory): Modify routine to
	use routines from Ada.Directories.Hierarchical_File_Names and
	remove incorrect special case for parent directories.
	(Fetch_Next_Entry): Add check for current directory and parent
	directory and ignore them under certain circumstances.
	(Simple_Nmae): Add check for null result from
	Simple_Name_Internal and raise Name_Error.
	(Simple_Name_Internal): Add explicit check for root directories,
	sanitize trailing directory separators, and modify behavior so
	that current and parent directories are considered valid
	results.
	* Makefile.rtl: Add entry to GNATRTL_NONTASKING_OBJS.

2019-08-12  Eric Botcazou  <ebotcazou@adacore.com>

	* freeze.adb (Freeze_Entity): Give the same error for an
	Object_Size clause on a variable-sized type as for a Size
	clause.

2019-08-12  Gary Dismukes  <dismukes@adacore.com>

	* sem_prag.adb (Analyze_Pragma, Pragma_Suppress_Initialization):
	For private types, set the Suppress_Initialization flag on the
	Full_View of the entity rather than the entity's base type.

2019-08-12  Yannick Moy  <moy@adacore.com>

	* aspects.adb, aspects.ads (Aspect_No_Caching): New aspect.
	* contracts.adb, contracts.ads (Add_Contract_Item): Add handling
	of No_Caching.
	(Analyze_Object_Contract): Add handling of No_Caching.
	* einfo.adb, einfo.ads
	(Get_Pragma): Add handling of No_Caching.
	* doc/gnat_rm/implementation_defined_aspects.rst,
	doc/gnat_rm/implementation_defined_pragmas.rst: Document new
	aspect/pragma.
	* gnat_rm.texi: Regenerate.
	* par-prag.adb (Prag): New pragma Pragma_No_Caching.
	* sem_ch13.adb (Analyze_Aspect_Specifications,
	Check_Aspect_At_Freeze_Point): Add handling of No_Caching.
	* sem_prag.adb (Analyze_Pragma): Deal with pragma No_Caching.
	* sem_prag.ads (Analyze_External_Property_In_Decl_Part): Now
	applies to No_Caching.
	* sem_util.adb, sem_util.ads (Is_Effectively_Volatile): Add
	handling of No_Caching.
	(No_Caching_Enabled): New query function.
	* snames.ads-tmpl: New names for pragma.

2019-08-12  Yannick Moy  <moy@adacore.com>

	* sem_util.adb, sem_util.ads (Traverse_More_Func,
	Traverse_More_Proc): Add formal parameter for Itypes traversal.

2019-08-12  Yannick Moy  <moy@adacore.com>

	* exp_attr.adb, exp_attr.ads (Expand_Size_Attribute): New
	procedure to share part of the attribute expansion with
	GNATprove mode.
	(Expand_N_Attribute_Reference): Extract part of the
	Size/Object_Size expansion in the new procedure
	Expand_Size_Attribute.
	* exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Expand
	Size/Object_Size attributes using the new procedure
	Expand_Size_Attribute.

2019-08-12  Yannick Moy  <moy@adacore.com>

	* exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Only
	expand Enum_Rep attribute when its parameter is a literal.

2019-08-12  Justin Squirek  <squirek@adacore.com>

	* sem_eval.adb (Check_Non_Static_Context): Add a condition to
	determine if a range violation constitues a warning or an error.
	(Out_Of_Range): Add a condition to determine if a range
	violation constitues a warning or an error.

2019-08-12  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch4.adb (Real_Range_Check): Do not rewrite the conversion
	node but its expression instead, after having fetched its
	current value.  Clear the Do_Range_Check flag on entry.  Return
	early for a rewritten float-to-float conversion.  Remove
	redundant local variable.  Suppress all checks when inserting
	the temporary and do not reanalyze the node.

2019-08-12  Eric Botcazou  <ebotcazou@adacore.com>

	* sprint.ads: Minor comment tweak.

2019-08-12  Eric Botcazou  <ebotcazou@adacore.com>

	* checks.adb (Insert_Valid_Check): Do not retrieve the
	Do_Range_Check flag from the Original_Node but from the
	Validated_Object.  Remove useless bypass for floating-point
	types.

2019-08-12  Yannick Moy  <moy@adacore.com>

	* sem_util.adb, sem_util.ads (Traverse_More_Func,
	Traverse_More_Proc): New traversal subprograms.

2019-08-12  Jerome Lambourg  <lambourg@adacore.com>

	* libgnarl/s-taprop__vxworks.adb (Abort_Handler): Only call
	s-tpopsp.Self when actually needed.

2019-08-12  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch4.adb (Discrete_Range_Check): Return if checks are
	suppressed.

2019-08-12  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_res.adb: Add with & use clause for Sem_Mech and
	alphabetize.
	(Resolve_Actuals): Do not apply a scalar range check for the
	source of a conversion whose result is passed by reference to a
	valued procedure.

2019-08-12  Eric Botcazou  <ebotcazou@adacore.com>

	* checks.adb (Insert_Valid_Check): Reset the Do_Range_Check flag
	on the validated object.
	* exp_ch6.adb (Add_Call_By_Copy_Code): Reset the Do_Range_Check
	flag on the actual here, as well as on the Expression if the
	actual is a N_Type_Conversion node.
	(Add_Validation_Call_By_Copy_Code): Generate the incoming range
	check if needed and reset the Do_Range_Check flag on the
	Expression if the actual is a N_Type_Conversion node.
	(Expand_Actuals): Do not reset the Do_Range_Check flag here.
	Generate the incoming range check for In parameters here instead
	of...
	(Expand_Call_Helper): ...here.  Remove redudant condition.
	* sem_res.adb (Resolve_Actuals): Use local variable A_Typ and
	remove obsolete comments.
	(Resolve_Type_Conversion): Do not force the Do_Range_Check flag
	on the operand if range checks are suppressed.

2019-08-12  Eric Botcazou  <ebotcazou@adacore.com>

	* checks.adb (Activate_Range_Check): Remove redundant argument.
	(Generate_Range_Check): Likewise.
	(Apply_Float_Conversion_Check): Reset the Do_Range_Check flag on
	entry and remove redundant condition.

2019-08-02  Alexandre Oliva  <oliva@adacore.com>

	* libgnat/a-exexpr.adb (Begin_Handler_v1, End_Handler_v1): New.
	(Claimed_Cleanup): New.
	(Begin_Handler, End_Handler): Document.
	* gcc-interface/trans.c (gigi): Switch to exception handler
	ABI #1.
	(Exception_Handler_to_gnu_gcc): Save the original cleanup
	returned by begin handler, pass it to end handler, and use
	EH_ELSE_EXPR to pass a propagating exception to end handler.
	(gnat_to_gnu): Leave the exception pointer alone for reraise.
	(add_cleanup): Handle EH_ELSE_EXPR, require it by itself.

2019-07-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Check_Aspect_At_End_Of_Declarations,
	Freeze_Entity_Checks): Include Aspect_CPU with other aspects
	whose expresssion may depend on a discriminant, and thus require
	that components of the type be made visible.

2019-07-23  Eric Botcazou  <ebotcazou@adacore.com>

	* checks.adb (Convert_And_Check_Range): Add Suppress parameter
	and pass it in the call to Insert_Actions.  Rename local
	variable.
	(Generate_Range_Check): Minor comment fixes.  Pass Range_Check
	in the first call to Convert_And_Check_Range and All_Checks in
	the second call.
	* exp_ch4.adb (Expand_N_Type_Conversion): Reset the
	Do_Overflow_Check flag in the float-to-float case too if there
	is also a range check.

2019-07-23  Eric Botcazou  <ebotcazou@adacore.com>

	* checks.adb (Activate_Overflow_Check): Remove redundant
	argument.
	* exp_ch4.adb (Discrete_Range_Check): Reset the overflow flag.
	(Expand_N_Type_Conversion): Do not reset it here.

2019-07-23  Eric Botcazou  <ebotcazou@adacore.com>

	* repinfo.adb (List_Component_Layout): Pass Decimal to UI_Write.
	(Write_Val): Likewise.

2019-07-23  Ed Schonberg  <schonberg@adacore.com>

	* aspects.ads: New table Operational_Aspect, used to distinguish
	between aspects that are view-specific, such as those related to
	iterators, and representation aspects that apply to all views of
	a type.
	* aspects.adb (Find_Aspect): If the aspect being sought is
	operational, do not ecamine the full view of a private type to
	retrieve it.
	* sem_ch5.adb (Analyze_Iterator_Specification): Improve error
	message when the intended domain of iteration does not implement
	the required iterator aspects.

2019-07-23  Yannick Moy  <moy@adacore.com>

	* sem_spark.ads (Is_Local_Context): New function.
	* sem_spark.adb (Check_Declaration): Issue errors on violations
	of SPARK RM 3.10(4)
	(Process_Path): Do not issue error on borrow/observe during
	elaboration, as these are caught by the new rule.

2019-07-23  Yannick Moy  <moy@adacore.com>

	* exp_ch7.adb (Create_Finalizer): Force finalizer not to be
	Ghost enabled.
	* exp_dbug.adb (Get_External_Name): Explain special case of
	Ghost finalizer.

2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>

	* repinfo.adb (List_Entities): Also list compiled-generated
	types present as Etype of objects.

2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>

	* sinfo.ads: Update the documentation about the
	Do_Division_Check, Do_Overflow_Check and Do_Range_Check flags.

2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch4.adb (Expand_N_Type_Conversion): Beef up comment.
	(Fixup_Universal_Fixed_Operation): Set the base type instead of
	the type of the enclosing type conversion on the operation.

2019-07-22  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch4.adb (Expand_N_In): Do not suggest the use of attribute
	'Valid as a replacement for a range check on a discrete type
	when the bounds of the range are given by type conversions,
	because in such a case there are distinct types involved and the
	subbested attribute replacement would be misplaced.

2019-07-22  Yannick Moy  <moy@adacore.com>

	* sem_spark.adb (Get_Root_Object, Is_Path_Expression,
	Is_Subpath_Expression): Add parameter Is_Traversal to adapt
	these functions to the case of paths returned from a traversal
	function.
	(Read_Indexes): Handle the case of an if-expression or
	case-expression.
	(Check_Statement): Check Emit_Messages only when issuing an
	error message. This is important as Emit_Messages may store the
	information that an error was detected.

2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>

	* checks.adb (Apply_Type_Conversion_Checks): Do not set
	Do_Range_Check flag on conversions from fixed-point types
	either.
	* exp_attr.adb: Add use and with clause for Expander.
	(Expand_N_Attribute_Reference) <Fixed_Value, Integer_Value>: Set
	the Conversion_OK flag and do not generate overflow/range checks
	manually.
	* exp_ch4.adb (Expand_N_Qualified_Expression): Remove
	superfluous clearing of Do_Range_Check flag.
	(Discrete_Range_Check): New procedure to generate a range check
	for discrete types.
	(Real_Range_Check): Remove redundant local variable and adjust.
	Remove useless shortcut.  Clear Do_Range_Check flag on all
	paths.
	(Expand_N_Type_Conversion): Remove redundant test on
	Conversion_OK.  Call Discrete_Range_Check to generate range
	checks on discrete types.  Remove obsolete code for
	float-to-integer conversions.  Add code to generate range checks
	for conversions involving fixed-point types.

2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>

	* sprint.ads: Fix pasto in comment.

2019-07-22  Javier Miranda  <miranda@adacore.com>

	* sem_res.adb (Resolve_Actuals): Replace code that displaces the
	pointer to an allocated object to reference its secondary
	dispatch table by a type conversion (which takes care of
	handling all cases).

2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>

	* sprint.adb (Sprint_Node_Actual)
	<N_Decimal_Fixed_Point_Definition>: Swap a couple of spaces.
	(Write_Itype): Minor consistency fixes throughout.  Add support
	for printing ordinary and decimal fixed-point types and
	subtypes.

2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_attr.adb (Expand_Loop_Entry_Attribute): Beef up comment.

2019-07-22  Ed Schonberg  <schonberg@adacore.com>

	* libgnat/s-valboo.ads, libgnat/s-valcha.ads,
	libgnat/s-valdec.ads, libgnat/s-valenu.ads,
	libgnat/s-valint.ads, libgnat/s-vallld.ads,
	libgnat/s-vallli.ads, libgnat/s-valllu.ads,
	libgnat/s-valrea.ads, libgnat/s-valuns.ads,
	libgnat/s-valwch.ads: Change categorization of packages that
	implement attribute 'Value from Pure to Preelaborate, to prevent
	undesirable optimizations when the evaluation of the attribute
	raises Constraint_Error, but subsequent use of the result of
	this evsaluation is removed by a subsequent optimization.

2019-07-22  Ed Schonberg  <schonberg@adacore.com>

	* sem_warn.adb (Check_References): Do not emit s warning on a
	referenced entity with no explicit assignment if the type of the
	entity has Preelaborable_Initialixation, such as
	Exception_Occurrence.

2019-07-22  Javier Miranda  <miranda@adacore.com>

	* exp_ch4.adb (Size_In_Storage_Elements): Improve the expansion
	to handle array indexes that are modular type.
	(Expand_N_Allocator): For 32-bit targets improve the generation
	of the runtime check associated with large arrays supporting
	arrays initialized with a qualified expression.
	* libgnat/s-imenne.adb (Image_Enumeration_8,
	Image_Enumeration_16, Image_Enumeration_32): Define the index of
	Index_Table with range Natural'First .. Names'Length since in
	the worst case all the literals of the enumeration type would be
	single letter literals and the Table built by the frontend would
	have as many components as the length of the names string. As a
	result of this enhancement, the internal tables declared using
	Index_Table have a length closer to the real needs, thus
	avoiding the declaration of large arrays on 32-bit CCG targets.

2019-07-22  Yannick Moy  <moy@adacore.com>

	* sem_ch3.adb (Constrain_Access): Issue a message about ignored
	constraint.

2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch8.adb (End_Use_Type): Reset the In_Use flag on the
	class-wide type if the type is tagged.
	(Use_One_Type): Add commentary on the handling of the class-wide
	type.

2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>

	* einfo.ads (Is_For_Access_Subtype): Delete.
	(Set_Is_For_Access_Subtype): Likewise.
	* einfo.adb (Is_For_Access_Subtype): Likewise.
	(Set_Is_For_Access_Subtype): Likewise.
	(Write_Entity_Flags): Do not write Is_For_Access_Subtype.
	* exp_ch4.adb (Expand_N_Selected_Component): Do not deal with
	it.
	* exp_spark.adb (Expand_SPARK_N_Selected_Component): Likewise.
	* sem_ch4.adb (Analyze_Explicit_Dereference): Likewise.
	* sem_ch3.adb (Build_Discriminated_Subtype): Do not build a
	special private subtype for access-to-record subtypes.

2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch3.adb (Complete_Private_Subtype): Rework the setting of
	the Etype of the full view for full base types that cannot
	contain any discriminant.  Remove code and comment about it in
	the main path.

2019-07-22  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Convert_Bound): Subsidiary of
	Floating_Point_Type_Declaration, to handle properly range
	specifications with bounds that may include static constants of
	a given type rather than real literals.

2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_aggr.adb (Rewrite_Bound): Be prepared for discriminals
	too.
	(Rewrite_Range;): Minor tweak.
	(Resolve_Record_Aggregate): For a component with default
	initialization whose expression is an array aggregate, also
	rewrite the bounds of the component associations, if any.

2019-07-22  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch5.adb (Expand_N_Case_Statement): In the case where a
	case statement is rewritten as an equivalent if statement,
	inherit the From_Condition_Expression flag from the case
	statement.

2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch8.adb (Check_Constrained_Object): Further extend the
	special optimization to all limited types.

2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference)
	<Attribute_Enum_Val>: Set No_Truncation on the
	N_Unchecked_Type_Conversion built around the argument passed to
	the attribute.

2019-07-22  Nicolas Roche  <roche@adacore.com>

	* libgnat/s-valrea.adb (Scan_Real): Ignore non significative
	digits to avoid converging to infinity in some cases.

2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>

	* libgnat/g-encstr.adb (Encode_Wide_String): Fix oversight.
	(Encode_Wide_Wide_String): Likewise.

2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_warn.adb (Find_Var): Bail out for a function call with an
	Out or In/Out parameter.

2019-07-22  Nicolas Roche  <roche@adacore.com>

	* terminals.c (__gnat_tty_waitpid): Support both blocking and
	not blocking mode.
	* libgnat/g-exptty.ads (Is_Process_Running): New function.
	* libgnat/g-exptty.adb (Close): Don't try to interrupt/terminate
	a process if it is already dead.

2019-07-22  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Freeze_Fixed_Point_Type): When freezing a
	fixed-point subtype, check whether the parent type declarastion
	includes an aspect specification for the 'Small type attribute,
	and inherit the specified value.

2019-07-22  Javier Miranda  <miranda@adacore.com>

	* freeze.adb (Freeze_Subprogram): Check that C++ constructors
	must have external or link name.

2019-07-22  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Selected_Component): If the prefix has a
	deferred reference, generate the correct reference now, to
	indicate that the previous assignment is used.  This prevents
	spurious warnings on useless assignments when compiling with all
	warnings enabled. when there is a subsequent call in the same
	stqtement list, in which the prefix of the selected component is
	the actual for an out parameter.

2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_attr.adb (Expand_Loop_Entry_Attribute): Copy the condition
	of a while loop instead of simply relocating it.

2019-07-18  Arnaud Charlet  <charlet@adacore.com>

	* Makefile.rtl, expect.c, env.c, aux-io.c, mkdir.c, initialize.c,
	cstreams.c, raise.c, tracebak.c, adadecode.c, init.c, raise-gcc.c,
	argv.c, adaint.c, adaint.h, ctrl_c.c, sysdep.c, rtinit.c, cio.c,
	seh_init.c, exit.c, targext.c: Introduce a "STANDALONE" mode where C
	runtime files do not have any dependency on GCC include files.
	Remove unnecessary includes.
	Remove remaining references to VMS in runtime C file.
	* runtime.h: new File.

2019-07-13  Andreas Schwab  <schwab@linux-m68k.org>

	* Makefile.rtl: Use g-sercom__linux.adb for all linuxes.

2019-07-11  Piotr Trojanek  <trojanek@adacore.com>

	* lib-writ.adb (Ensure_System_Dependency,
	Up_To_Date_ALI_File_Exists, Write_ALI): Replace low-level access
	to table with a high-level query.

2019-07-11  Piotr Trojanek  <trojanek@adacore.com>

	* checks.adb: Fix typo in comment.
	* sem.adb (Semantics): Avoid repeated calls to
	In_Extended_Main_Source_Unit by reusing an already-cached
	result.
	* sem_util.adb (First_Global): Fix style.

2019-07-11  Yannick Moy  <moy@adacore.com>

	* sem_res.adb (Resolve_Call): Do not perform dimensionality
	checking on inlined bodies.

2019-07-11  Yannick Moy  <moy@adacore.com>

	* debug.adb: Flip meaning of debug switch -gnatdF.

2019-07-11  Yannick Moy  <moy@adacore.com>

	* sem_eval.adb (Is_Same_Value): Add special case for rewritten
	Loop_Entry attribute.

2019-07-11  Claire Dross  <dross@adacore.com>

	* gnat1drv.adb: SPARK checking rules for pointer aliasing are
	moved to GNATprove backend.
	* sem_spark.ads, sem_spark.adb (Sem_SPARK): Is now a generic
	unit. Takes as parameters:
	 - Retysp which is used to query the most underlying type
	   visible in SPARK. We do not introduce aliasing checks for
	   types which are not visibly deep.
	 - Component_Is_Visible_In_SPARK is used to avoid doing pointer
	   aliasing checks on components which are not visible in SPARK.
	 - Emit_Messages returns True in the second phase of SPARK
	   analysis. Error messages for failed aliasing checks are only
	   output in this case.
	Additionally, errors on constructs not supported in SPARK are
	removed as duplicates of marking errors. Components are stored
	in the permission map using their original component to avoid
	inconsistencies between components of different views of the
	same type.
	(Check_Expression): Handle delta constraints.
	(Is_Deep): Exported so that we can check for SPARK restrictions
	on deep types inside SPARK semantic checkings.
	(Is_Traversal_Function): Exported so that we can check for SPARK
	restrictions on traversal functions inside SPARK semantic
	checkings.
	(Check_Call_Statement, Read_Indexes): Check wether we are
	dealing with a subprogram pointer type before querying called
	entity.
	(Is_Subpath_Expression): Image attribute can appear inside a
	path.
	(Check_Loop_Statement): Correct order of statements in the loop.
	(Check_Node): Ignore raise nodes.
	(Check_Statement): Use Last_Non_Pragma to get the object
	declaration in an extended return statement.

2019-07-11  Patrick Bernardi  <bernardi@adacore.com>

	* bindgen.adb (Gen_Main): Do not generate a reference to
	Ada_Main_Program_Name when the Minimal_Binder flag is set.
	(Gen_Output_File_Ada): Do not output GNAT_Version and
	Ada_Main_Program_Name info if Minimal_Binder flag is set.
	* bindusg.adb: Add documentation for new -minimal switch.
	* gnatbind.adb (Scan_Bind_Arg): Scan -minimal switch.
	* opt.ads: Add new global flag Minimal_Binder to indicate if the
	binder should not produce global variables.
	* doc/gnat_ugn/building_executable_programs_with_gnat.rst:
	Update documentation with new binder -minimal switch.
	* gnat_ugn.texi: Regenerate.

2019-07-11  Eric Botcazou  <ebotcazou@adacore.com>

	* Makefile.rtl: Add warning note about compilation flags and
	capitalize.

2019-07-11  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch9.adb (Expand_N_Protected_Type_Declaaration): New
	subsidiary routine Replace_Access_Definition, to handle properly
	a protected type PT one of whose private components is of type
	access PT.

2019-07-11  Dmitriy Anisimkov  <anisimko@adacore.com>

	* libgnat/g-socket.ads (Level_Type): Add enumerators for
	IP_Protocol_For_ICMP, IP_Protocol_For_IGMP,
	IP_Protocol_For_RAW_Level.
	* libgnat/g-socket.adb (Levels): Handle them.
	* s-oscons-tmplt.c: Import socket protocols defined in
	netinet/in.h.

2019-07-11  Claire Dross  <dross@adacore.com>

	* libgnat/a-cfhama.adb, libgnat/a-cfhase.adb (Free): Do not
	reset the Has_Element flag if no element is freed.

2019-07-11  Arnaud Charlet  <charlet@adacore.com>

	* errno.c: Remove obsolete support for MaRTE OS.

2019-07-11  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch4.adb (Expand_N_Type_Conversion): If a predicate check
	is generated, analyze it with range check suppressed, because
	that check has been previously applied.
	* exp_ch5.adb (Expand_N_Assignment_Statement): If the RHS is a
	type conversion to the type of the LHS, do not apply a predicate
	check to the RHS because it will have been generated already
	during its expansion.
	* exp_ch6.adb (Can_Fold_Predicate_Call): Extend processing to
	handle a predicate check on a constant entity whose value is
	static.

2019-07-11  Hristian Kirtchev  <kirtchev@adacore.com>

	* bindo.adb: Remove the documentation of switch -d_N because it
	is no longer in use.
	* bindo-graphs.ads, bindo-graphs.adb (Is_Spec_Before_Body_Edge):
	New routine.
	* bindo-writers.adb (Write_Dependency_Edge): Add the missing
	case of a spec-before-body edge.

2019-07-11  Dmitriy Anisimkov  <anisimko@adacore.com>

	* libgnat/g-socket.ads (Mode_Type): Add a Socket_Raw enumerator.
	* libgnat/g-socket.adb (Modes): Handle Socket_Raw.

2019-07-11  Justin Squirek  <squirek@adacore.com>

	* exp_ch9.adb (Build_Private_Protected_Declaration): Add
	exception for the moving of pragmas to internally generated
	specs for pragma Unreferenced.

2019-07-11  Bob Duff  <duff@adacore.com>

	* doc/gnat_ugn/gnat_utility_programs.rst: Fix inconsistent
	documentation for gnatmetric.
	* gnat_ugn.texi: Regenerate.

2019-07-11  Bob Duff  <duff@adacore.com>

	* doc/gnat_ugn/gnat_utility_programs.rst: Document gnatpp's
	--spaces-only switch.

2019-07-11  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_util.adb (Null_Status): Assume that an erroneous construct
	has an undefined null status.

2019-07-11  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb, exp_ch6.adb, gnat1drv.adb, sem_aux.adb,
	sem_ch2.adb, sem_ch8.adb, sem_res.adb: Minor reformatting.

2019-07-11  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch8.adb (Analyze_Object_Renaming): Obtain the object being
	renamed using routine Get_Object_Name which takes care of
	various name forms.
	(Get_Object_Name): New routine.

2019-07-11  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Can_Fold_Predicate_Call): New function,
	subsidiary of Expand_Call_Helper, to compute statically a
	predicate check when the argument is a static integer.

2019-07-11  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_res.adb (Resolve_Op_Not): Do not rewrite an equality
	operator into a function call when the operator is intrinsic.

2019-07-11  Thomas Quinot  <quinot@adacore.com>

	* sem_prag.adb (Analyze_Pragma, case pragma Check): Do not call
	Set_SCO_Pragma_Enabled for the dynamic predicate case.

2019-07-11  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.ads, exp_util.adb (Needs_Finalization): Move to
	Sem_Util.
	* sem_ch9.adb (Analyze_Protected_Definition): Code cleanup. Mark
	the protected type as having controlled components when it
	contains at least one such component.
	* sem_util.ads, sem_util.adb (Needs_Finalization): New
	function.

2019-07-11  Eric Botcazou  <ebotcazou@adacore.com>

	* alloc.ads (Rep_JSON_Table_Initial): New constant.
	(Rep_JSON_Table_Increment): Likewise.
	* debug.adb: Document -gnatd_j switch.
	* gcc-interface/Make-lang.in (GNAT_ADA_OBJS): Add
	repinfo-input.o.
	* gnat1drv.adb: Add with clause for Repinfo.Input.
	Add with and use clauses for Sinput.
	(Read_JSON_Files_For_Repinfo): New procedure.
	(Gnat1drv1): Deal with -gnatd_j switch.
	* repinfo-input.ad[sb]: New unit.
	* snames.ads-tmpl (Name_Discriminant): New constant.
	(Name_Operands): Likewise.

2019-07-11  Justin Squirek  <squirek@adacore.com>

	* checks.adb (Apply_Accessibility_Check): Add check for constant
	folded conditions on accessibility checks.

2019-07-11  Arnaud Charlet  <charlet@adacore.com>

	* libgnarl/g-thread.ads, libgnarl/g-thread.adb (Get_Thread):
	Update comments. Add new version taking a Task_Id.

2019-07-11  Hristian Kirtchev  <kirtchev@adacore.com>

	* bindo.adb: Update the section of switches and debugging
	elaboration issues.
	* bindo.ads: Add type Elaboration_Phase.
	* bindo-augmentors.adb: Add use clause for
	Bindo.Writers.Phase_Writers.
	(Augment_Library_Graph): Signal the start and end of the
	aubmentation phase.
	* bindo-builders.adb: Add with and use clause for Bindo.Writers.
	Add use clause for Bindo.Writers.Phase_Writers.
	(Build_Invocation_Graph): Signal the start and end of the
	invocation graph construction phase.
	(Build_Library_Graph): Signal the start and end of the library
	graph construction phase.
	* bindo-diagnostics.adb: Add use clause for
	Bindo.Writers.Phase_Writers.
	(Diagnose_Cycle): Signal the start and end of the cycle
	diagnostic phase.
	* bindo-elaborators.adb: Add use clause for
	Bindo.Writers.Phase_Writers.
	(Elaborate_Units): Signal the start and end of the unit
	elaboration phase.
	* bindo-graphs.adb: Add use clause for
	Bindo.Writers.Phase_Writers.
	(Find_Components): Signal the start and end of the component
	discovery phase.
	(Find_Cycles): Signal the start and end of the cycle discovery
	phase.
	* bindo-units.adb: Add with and use clause for Bindo.Writers.
	Add use clause for Bindo.Writers.Phase_Writers.
	(Collect_Elaborable_Units): Signal the start and end of the unit
	collection phase.
	* bindo-validators.adb: Add with and use clause for
	Bindo.Writers.  Add use clause for Bindo.Writers.Phase_Writers.
	(Validate_Cycles, Validate_Elaboration_Order,
	Validate_Invocation_Graph, Validate_Library_Graph): Signal the
	start and end of the libray graph validation phase.
	* bindo-writers.ads, bindo-writers.adb: Add new nested package
	Phase_Writers.
	* debug.adb: Update the documentation of switch d_S.

2019-07-11  Yannick Moy  <moy@adacore.com>

	* sem_res.adb (Check_Argument_Order): Special case calls to
	operators.

2019-07-10  Dmitriy Anisimkov  <anisimko@adacore.com>

	* libgnat/s-ststop.adb: Remove System.Strings.Stream_Ops
	dependence on System.Streams.Stream_IO.

2019-07-10  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch2.adb (Analyze_Integer_Literal): Preserve the type of
	the literal if prior analysis determined that its type is a
	modular integer type.

2019-07-10  Doug Rupp  <rupp@adacore.com>

	* init.c: Do not attempt to re-arm guard page on x86_64-vx7(r2).

2019-07-10  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Check_Constrained_Object): A record that is
	limited because of the presence of a limited component is
	constrained, and no subtype indiciation needs to be created for
	it, just as is the case for declared limited records.

2019-07-10  Yannick Moy  <moy@adacore.com>

	* sem_aux.adb, sem_aux.ads (Is_Protected_Operation): New
	function to determine if a subprogram is protected.
	* sem_spark.adb (Setup_Protected_Components): New procedure to
	add protected components to the environment.
	(Check_Callable_Body): Call the new Setup_Protected_Components.
	(Check_Package_Spec): Merge local environment with enclosing one
	when done.

2019-07-10  Claire Dross  <dross@adacore.com>

	* sem_spark.adb (Check_Expression): Allow digits constraints as
	input.
	(Illegal_Global_Usage): Pass in the entity.
	(Is_Subpath_Expression): New function to allow different nodes
	as inner parts of a path expression.
	(Read_Indexes): Allow concatenation and aggregates with box
	expressions.  Allow attributes Update and Loop_Entry.
	(Check_Expression): Allow richer membership test.
	(Check_Node): Ignore bodies of generics.
	(Get_Root_Object): Allow concatenation and attributes.

2019-07-10  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch6.adb (Check_Discriminant_Conformance): Use Find_Type to
	discover the type of a full view discriminant.

2019-07-10  Arnaud Charlet  <charlet@adacore.com>

	* doc/gnat_ugn/gnat_and_program_execution.rst: Improve gnatmem's
	doc for the depth switch.

2019-07-10  Bob Duff  <duff@adacore.com>

	* doc/gnat_ugn/gnat_utility_programs.rst: Document gnatpp's
	--source-line-breaks switch.

2019-07-10  Justin Squirek  <squirek@adacore.com>

	* doc/gnat_rm/implementation_defined_attributes.rst: Add mention
	of 'Image attribute with 'Img's entry to mention additional
	added 2012 usage of Obj'Image.
	* doc/gnat_rm/implementation_defined_pragmas.rst: Correct
	mispelling of Async_Writers.
	* gnat_rm.texi: Regenerate.
	* sem_prag.adb (Analyze_Pragma): Correct mispelling of
	Async_Writers.
	* sem_util.adb (State_Has_Enabled_Property): Correct mispelling
	of Async_Writers.

2019-07-10  Simon Buist  <buist@adacore.com>

	* sem_util.ads (Child_Prefix): New constant.
	* sem_util.adb (Unique_Name): Add a special prefix to child
	units that have a nested subprogram or package.

2019-07-10  Arnaud Charlet  <charlet@adacore.com>

	* sfn_scan.adb (Scan_SFN_Pragmas): Add pragma Assert.

2019-07-10  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch3.adb (Check_Nonoverridable_Aspects): Correct the
	spelling in certain error messages.
	(Check_Pragma_Implemented): Correct the spelling in certain
	error messages.

2019-07-10  Eric Botcazou  <ebotcazou@adacore.com>

	* Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add g-brapre.
	* libgnat/g-brapre.ads: New package specification.
	* doc/gnat_rm/the_gnat_library.rst: Document it.
	* gnat_rm.texi: Regenerate.

2019-07-10  Yannick Moy  <moy@adacore.com>

	* osint-c.adb (Set_File_Name): Always add extension for multiple
	units per file mode.

2019-07-10  Corentin Gay  <gay@adacore.com>

	* sysdep.c: Put include directive for 'vxWorks.h' before any
	other VxWorks headers.

2019-07-10  Eric Botcazou  <ebotcazou@adacore.com>

	* doc/gnat_rm/implementation_defined_attributes.rst
	(Scalar_Storage_Order): Minor tweaks.  Add note about debuggers.
	* gnat_rm.texi: Regenerate.

2019-07-10  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb (Expand_N_Case_Expression): Mark the generated
	assignments to the temporary result as being OK because the
	expansion of case expressions is correct by construction.
	(Is_Copy_Type): Update the predicate to match the comment
	within.

2019-07-10  Hristian Kirtchev  <kirtchev@adacore.com>

	* bindo-graphs.adb, bindo.adb, debug.adb, exp_ch6.adb,
	sem_ch10.adb, sem_ch13.adb, sem_ch3.adb, sem_ch4.adb,
	sem_ch6.adb, sem_ch7.adb, sem_res.adb, sem_spark.adb,
	sem_util.adb, warnsw.ads: Minor reformatting.

2019-07-10  Joffrey Huguet  <huguet@adacore.com>

	* libgnat/a-strbou.ads, libgnat/a-strfix.ads,
	libgnat/a-strunb.ads, libgnat/a-strunb__shared.ads: Add global
	contracts, contract cases, preconditions and postconditions to
	procedures and functions.

2019-07-10  Doug Rupp  <rupp@adacore.com>

	* sysdep.c (__gnat_is_file_not_found_error): Reformulate to also
	work for vxworks7r2 SR0610.

2019-07-10  Doug Rupp  <rupp@adacore.com>

	* env.c (__gnat_environ): Reformulate to also work for
	vxworks7r2 SR0610.

2019-07-10  Patrick Bernardi  <bernardi@adacore.com>

	* Makefile.rtl: Handle vxworks7r2 ppc target

2019-07-10  Hristian Kirtchev  <kirtchev@adacore.com>

	* bindo.adb: Update the section on switches.
	* bindo-graphs.adb
	(Add_Cycle, Add_Vertex_And_Complement): Remove.
	(Create): The graph no longer needs a set of recorded cycles
	because the cycles are not rediscovered in permuted forms.
	(Cycle_End_Vertices): New routine.
	(Destroy): The graph no longer needs a set of recorded cycles
	because the cycles are not rediscovered in permuted forms.
	(Destroy_Library_Graph_Vertex): Move to the library level.
	(Find_All_Cycles_Through_Vertex, Find_All_Cycles_With_Edge):
	Remove.
	(Find_Cycles_From_Successor, Find_Cycles_From_Vertex,
	Find_Cycles_In_Component, Has_Elaborate_All_Edge): New routines.
	(Insert_And_Sort): Remove.
	(Is_Elaborate_Body_Edge): Use predicate
	Is_Vertex_With_Elaborate_Body.
	(Is_Recorded_Cycle): Remove.
	(Is_Vertex_With_Elaborate_Body): New routine.
	(Normalize_And_Add_Cycle): Remove.
	(Precedence): Rename to xxx_Precedence, where xxx relates to the
	input.  These versions better reflect the desired input
	precedence.
	(Record_Cycle): New routine.
	(Remove_Vertex_And_Complement, Set_Is_Recorded_Cycle): Remove.
	(Trace_xxx): Update all versions to use debug switch -d_t.
	(Trace_Component): New routine.
	(Trace_Eol): Removed.
	(Trace_Vertex): Do not output the component as this information
	is already available when the component is traced.
	(Unvisit, Visit): New routine.
	* bindo-graphs.ads: Add new instance LGV_Lists.  Remove instance
	RC_Sets.  Update the structure of type Library_Graph_Attributes
	to remove the set of recorded cycles.
	(Destroy_Library_Graph_Vertex): Move to the library level.
	* bindo-writers.adb (Write_Component_Vertices): Output
	information about the number of vertices.
	* debug.adb: Document the use of binder switch -d_t.  Update the
	use of binder switch -d_T.

2019-07-10  Yannick Moy  <moy@adacore.com>

	* sem_spark.adb (Get_Root_Object): Replace precondition by error
	message.
	(Read_Indexes): Replace precondition by error message.
	(Check_Callable_Body): Check only traversal function returns an
	anonymous access type.
	(Check_Expression): Issue error on unexpected expression as
	path.
	* sem_util.adb (First_Global): Fix access to global on
	entry/task.

2019-07-10  Javier Miranda  <miranda@adacore.com>

	* exp_ch6.adb (Is_Class_Wide_Interface_Type): New subprogram.
	(Expand_Call_Helper): Handle non-limited views when we check if
	any formal is a class-wide interface type.
	* exp_disp.adb (Expand_Interface_Actuals): Handle non-limited
	views when we look for interface type formals to force "this"
	displacement.

2019-07-10  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Equality_Op): Do not replace the resolved
	operator by its alias if expander is not active, because the
	operand type may not be frozen yet and its inherited operations
	have not yet been created.

2019-07-10  Hristian Kirtchev  <kirtchev@adacore.com>

	* bindo-elaborators.adb (Elaborate_Units): Set attribute
	Elab_Position of all elaborated units.
	(Set_Unit_Elaboration_Positions): New routine.

2019-07-10  Gary Dismukes  <dismukes@adacore.com>

	* exp_util.adb: Reformatting and a typo fix.

2019-07-10  Yannick Moy  <moy@adacore.com>

	* exp_util.adb (Remove_Side_Effects): Prefer renamings for
	objects of possible owning type in GNATprove mode.

2019-07-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Analyze_Object_Declaration): If the object type
	is a composite type that has a dynamic predicate and, the
	expression in the declaration is an aggregate, the generated
	predicate check must appear after the expanded code for the
	aggregate, which will appear after the rewritten object
	declarastion.

2019-07-09  Justin Squirek  <squirek@adacore.com>

	* sem_eval.adb (Expr_Value_E): Add conditional to correctly
	handle constant enumerated character types.

2019-07-09  Eric Botcazou  <ebotcazou@adacore.com>

	* libgnarl/s-osinte__mingw.ads (CRITICAL_SECTION): Use proper
	type for SpinCount component.

2019-07-09  Justin Squirek  <squirek@adacore.com>

	* exp_ch4.adb (Expand_N_Allocator): Add conditional to detect
	the presence of anoymous access type allocators and issue a
	warning if the appropriate warning flag is enabled.
	* warnsw.ads: Add new warning flag for anonymous allocators
	* warnsw.adb (All_Warnings, Restore_Warnings, Save_Warnings,
	Set_Underscore_Warning_Switch): Register new flags.
	(WA_Warnings): Register new flag as an "all warnings" switch
	* usage.adb,
	doc/gnat_ugn/building_executable_programs_with_gnat.rst:
	Document new warning switches -gnatw_a and -gnatw_A.
	* gnat_ugn.texi: Regenerate.

2019-07-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Diagnose_Call): Improve error recovery when a
	local subprogram name hides a possible candidate name declared
	in a child package in the context of the current unit.
	* sem_ch6.adb (Process_Formals): Protect against malformed
	formal types when the parameter type does not denote an entity.

2019-07-09  Hristian Kirtchev  <kirtchev@adacore.com>

	* bindo-augmentors.adb (Visit_Elaboration_Root): Do not start a
	DFS from an elaboration root whose corresponding unit lacks
	elaboration code. This behavior mimics that of the old
	elaboration order mechanism.
	* bindo-graphs.adb (Find_All_Cycles_Through_Vertex): Move the
	vertex tracing within the functional branches of the routine.
	This prevents spurious trace output.
	(Has_No_Elaboration_Code): New routine.
	(Trace_Cycle, Trace_Edge): Update the various Ids to use the
	"standard" trace format.
	* bindo-graphs.ads (Has_No_Elaboration_Code): New routine.
	* bindo-units.ads, bindo-units.adb (Has_No_Elaboration_Code):
	New routine.

2019-07-09  Piotr Trojanek  <trojanek@adacore.com>

	* ali.ads, bindo-graphs.adb, bindo-validators.adb, clean.adb,
	doc/gnat_ugn/elaboration_order_handling_in_gnat.rst, einfo.ads,
	exp_aggr.adb, exp_ch13.adb, exp_ch4.adb, exp_ch5.adb,
	exp_ch6.adb, exp_ch7.adb, exp_ch9.adb, exp_pakd.adb,
	fname-uf.ads, gnatlink.adb, inline.adb, lib.ads, make.adb,
	namet.ads, opt.ads, par-ch4.adb, par-ch6.adb, par-labl.adb,
	prep.adb, sem_aggr.adb, sem_ch13.adb, sem_ch4.adb, sem_ch5.adb,
	sem_ch6.adb, sem_ch6.ads, sem_ch7.adb, sem_ch8.adb, sem_dim.adb,
	sem_disp.adb, sem_prag.adb, sem_res.adb, sem_warn.adb,
	sinfo.ads: Replace ".  " with ". ". Minor reformatting and typo
	corrections.
	* gnat_ugn.texi: Generate.

2019-07-09  Hristian Kirtchev  <kirtchev@adacore.com>

	* bindo.ads: Move type Precedence_Kind from the private to the
	visible part of the unit.
	* bindo-augmentors.adb: Remove the use of global data as it is
	bad practice.
	(Augment_Library_Graph): Update the parameter profile.
	(Is_Visited, Set_Is_Visited): Remove.
	(Visit_Elaboration_Root, Visit_Elaboration_Roots): Update the
	parameter profile and comment on usage.
	(Visit_Vertex): Likewise.  Also keep track of which invocation
	edge activates a task.
	* bindo-augmentors.ads (Augment_Library_Graph): Update the
	parameter profile and comment on usage.
	* bindo-builders.adb (Create_Forced_Edge,
	Create_Spec_And_Body_Edge, Create_With_Edge): Update the call to
	Add_Edge.
	* bindo-diagnostics.adb: Add with end use clauses for Restrict
	and Rident.
	(Output_Dynamic_Model_Suggestions): Remove.
	(Output_Invocation_Related_Suggestions): New routine.
	(Output_Suggestions): Output all invocation-related suggestions
	together.
	* bindo-elaborators.adb: Remove types Comparator_Ptr and
	Predicate_Ptr.
	(Find_Best_Vertex): Update the parameter profile.
	* bindo-graphs.adb (Activates_Task): New routine.
	(Add_Body_Before_Spec_Edge): Update the call to
	Add_Edge_With_Return.
	(Add_Edge): Update the parameter profile and the call to
	Add_Edge_With_Return.
	(Add_Edge_With_Return): Update the parameter profile and comment
	on usage.
	(At_Least_One_Edge_Satisfies): New routine.
	(Contains_Elaborate_All_Edge): Reimplement.
	(Contains_Static_Successor_Edge, Contains_Task_Activation): New
	routine.
	(Contains_Weak_Static_Successor): Remove.
	(Is_Static_Successor_Edge): New routine.
	* bindo-graphs.ads: Add types LGE_Predicate_Ptr,
	LGV_Comparator_Ptr, and LGV_Predicate_Ptr.  Update type
	Library_Graph_Edge_Attributes to capture whether an invocation
	edge activates a task.  Update the value of
	No_Library_Graph_Edge_Attributes.
	(Activates_Task): Update the parameter profile and comment on
	usage.
	(Contains_Static_Successor_Edge, Contains_Task_Activation): New
	routines.
	(Contains_Weak_Static_Successor): Remove.
	* doc/gnat_ugn/elaboration_order_handling_in_gnat.rst:
	Update the documentation to reflect the new task-related advice.
	* gnat_ugn.texi: Regenerate.

2019-07-09  Piotr Trojanek  <trojanek@adacore.com>

	* exp_util.adb (Containing_Package_With_Ext_Axioms): Replace
	low-level Ekind test with a high-level wrapper.

2019-07-09  Arnaud Charlet  <charlet@adacore.com>

	* libgnat/s-memory.adb: Disable calls to Abort defer/undefer
	when ZCX_By_Default.

2019-07-09  Javier Miranda  <miranda@adacore.com>

	* sem_ch13.adb (Rep_Item_Too_Early): Representation clauses are
	not allowed for a derivation of a generic type. Extend the
	current test to check that none of the parents is a generic
	type.

2019-07-09  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch9.adb, exp_util.adb, repinfo.adb, sem_ch12.adb,
	sem_prag.adb, sem_res.adb, sem_spark.adb, sem_util.adb: Minor
	reformatting.

2019-07-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Equality_Op): If the node was overloaded,
	set properly the entity to which the node has been resolved. The
	original entity is the first one found during analysis, and is
	not necessarily the resolved one.
	(Resolve_Op_Not): If the argument of negation is an overloaded
	equality operation, call its resolution directly given that the
	context type does not participate in overload resolution.

2019-07-09  Hristian Kirtchev  <kirtchev@adacore.com>

	* bindo.adb: Remove with and use clauses for Debug.  Add with
	and use clauses for Opt.
	(Find_Elaboration_Order): Enable the v4.0 elaboration order. The
	v3.0 mechanism is now available under binder switch -H.
	* bindusg.adb (Display): Enable switch -H.
	* debug.adb: Free compiler switch -gnatd_G.  Free binder switch
	-d_N.
	* sem_elab.adb: Update the section on switches to remove
	-gnatd_G.
	(Invocation_Graph_Recording_OK): The invocation graph is now
	unconditionally recorded in ALI files.
	* switch-b.adb (Scan_Binder_Switches): Scan switch -H.
	* doc/gnat_ugn/building_executable_programs_with_gnat.rst:
	Update the documentation on compiler switches related to
	elaboration.  Update the documentation on binder switches to
	include switch -H.
	* doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update
	the documentation on elaboration order handling in GNAT.
	* gnat_ugn.texi: Regenerate.

2019-07-09  Eric Botcazou  <ebotcazou@adacore.com>

	* repinfo.adb (List_Entities): Disregard formals altogether.
	(List_Name): Properly escape the double quote in the JSON
	output.

2019-07-09  Javier Miranda  <miranda@adacore.com>

	* exp_util.adb (Remove_Side_Effects): Preserve the
	Do_Range_Check flag.

2019-07-09  Yannick Moy  <moy@adacore.com>

	* sinfo.ads: Refine comment for Do_Range_Check.

2019-07-09  Yannick Moy  <moy@adacore.com>

	* exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Expand
	attribute reference on Enum_Rep.

2019-07-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Instantiate_Formal_Package): Handle properly the
	case where the actual for a formal package in an instance is the
	current instance of an enclosing generic package.
	(Check_Formal_Packages): If the formal package declaration is
	box-initialized or lacks associations altogether, no internal
	instance was created to verify conformance, and there is no
	validating package to remove from tree.

2019-07-09  Yannick Moy  <moy@adacore.com>

	* freeze.adb (Build_Renamed_Body): Do not set body to inline in
	GNATprove mode.

2019-07-09  Yannick Moy  <moy@adacore.com>

	* exp_util.adb (Expand_Subtype_From_Expr): Still expand the type
	of static expressions in GNATprove_Mode.
	* sem_ch3.adb (Analyze_Object_Declaration): Remove obsolete
	special case for GNATprove_Mode.

2019-07-09  Piotr Trojanek  <trojanek@adacore.com>

	* doc/gnat_rm/the_gnat_library.rst,
	doc/gnat_ugn/building_executable_programs_with_gnat.rst,
	erroutc.adb, libgnat/g-comlin.adb, libgnat/g-comlin.ads,
	libgnat/g-regexp.ads, libgnat/g-regpat.ads,
	libgnat/g-spipat.ads, libgnat/s-os_lib.ads,
	libgnat/s-regexp.ads: Reword "wild card" to "wildcard".
	* gnat_rm.texi, gnat_ugn.texi: Regenerate.

2019-07-09  Yannick Moy  <moy@adacore.com>

	* sem_spark.adb (Check_Expression): Handle correctly implicit
	assignments as part of allocators and (extension) aggregates.
	(Get_Root_Object): Adapt for new path expressions.
	(Is_Path_Expression): Return True for (extension) aggregate.

2019-07-09  Piotr Trojanek  <trojanek@adacore.com>

	* einfo.ads: Fix a typo.

2019-07-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Scope_Within_Or_Same): Handle properly task
	bodies and protected bodies, so that local variables within have
	their proper scopes after these constructs have been rewritten
	during expansion. This patch resembles but is not identical to
	the code in Scope_Within.

2019-07-09  Arnaud Charlet  <charlet@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): Set
	Dynamic_Elaboration_Checks to True in CodePeer mode.

2019-07-09  Yannick Moy  <moy@adacore.com>

	* sem_spark.adb (Get_Perm_Or_Tree): Issue an error when
	encountering unknown global variable.

2019-07-09  Yannick Moy  <moy@adacore.com>

	* sem_spark.adb (Check_Expression): Change signature to take an
	Extended_Checking_Mode, for handling read permission checking of
	sub-expressions in an assignment.
	(Check_Parameter_Or_Global): Adapt to new behavior of
	Check_Expression for mode Assign.
	(Check_Safe_Pointers): Do not analyze generic bodies.
	(Check_Assignment): Separate checking of the target of an
	assignment.

2019-07-09  Eric Botcazou  <ebotcazou@adacore.com>

	* repinfo.ads (JSON format): Adjust.
	* repinfo.adb (Need_Blank_Line): Rename to...
	(Need_Separator): ...this.
	(Blank_Line): Rename to...
	(Write_Separator): ...this and add JSON specific handling.
	(List_Array_Info): Adjust to above renaming.
	(List_Object_Info): Likewise.
	(List_Record_Info): Likewise.
	(List_Subprogram_Info): Likewise.
	(List_Type_Info): Likewise.
	(List_Entities): Do not set Need_Blank_Line.
	(List_Rep_Info): Set Need_Separator and add JSON specific
	handling. Output a single JSON stream in the  normal case.

2019-07-09  Arnaud Charlet  <charlet@adacore.com>

	* doc/gnat_ugn/the_gnat_compilation_model.rst: Update doc on
	-fdump-ada-spec now that we generate Ada 2012.
	* gnat_ugn.texi: Regenerate.

2019-07-08  Eric Botcazou  <ebotcazou@adacore.com>

	* repinfo.adb (List_Common_Type_Info): New procedure extracted
	from...
	(List_Type_Info): ...here.  Call it for the common information,
	start with a blank line and output the linker section at the
	end, if any.
	(List_Mechanisms): Rename to...
	(List_Subprogram_Info): ...this.
	(List_Array_Info): Call List_Common_Type_Info.
	(List_Entities): Adjust to above change and renaming.
	(List_Record_Info): Call List_Common_Type_Info.

2019-07-08  Dmitriy Anisimkov  <anisimko@adacore.com>

	* libgnat/g-sercom.ads
	(Serial_Port_Descriptor): New type.
	(Serial_Port): Add a comment, make it hold a
	Serial_Port_Descriptor.
	(To_Ada, To_C): New procedures.
	(Port_Data, Port_Data_Access): Remove types.
	* libgnat/g-sercom.adb (To_Ada): New stub.
	* libgnat/g-sercom__linux.adb, libgnat/g-sercom__mingw.adb:
	Update implementations accordingly.
	* s-oscons-tmplt.c: Bind Serial_Port_Descriptor to
	System.Win32.HANDLE on Windows, and to Interfaces.C.int on
	Linux. Add "Interfaces.C." prefix for other basic integer type
	bindings.
	* xoscons.adb (Output_Info): Remove the "Interfaces.C." prefix
	for subtypes generation.

2019-07-08  Arnaud Charlet  <charlet@adacore.com>

	* doc/gnat_rm/standard_and_implementation_defined_restrictions.rst:
	Update documentation on No_Exceptions restriction.
	* gnat_rm.texi: Regenerate.

2019-07-08  Dmitriy Anisimkov  <anisimko@adacore.com>

	* libgnat/s-os_lib.adb: Do not call __gnat_kill for Invalid_Pid.

2019-07-08  Piotr Trojanek  <trojanek@adacore.com>

	* sem_util.adb (Enclosing_Package_Or_Subprogram): Do not expect
	package and subprogram bodies.

2019-07-08  Bob Duff  <duff@adacore.com>

	* doc/gnat_ugn/gnat_utility_programs.rst: Remove documentation
	of ignored GNATpp switch.

2019-07-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* doc/gnat_rm/implementation_defined_pragmas.rst:
	Update the documentation of pragma Initialize_Scalars.
	* gnat_rm.texi: Regenerate.

2019-07-08  Javier Miranda  <miranda@adacore.com>

	* exp_ch4.adb (Tagged_Membership): Fix regression silently
	introduced in r260738 that erroneouslusy causes the evaluation
	to True of the membership test when the left operand of the
	membership test is a class-wide interface object and the right
	operand is a type that implements such interface type.

2019-07-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Do not
	register an address clause when its prefix denotes a generic
	formal object.

2019-07-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* bindo-diagnostics.adb (Diagnose_Cycle): Capture the presence
	of an Elaborate_All edge before iterating over the edges of the
	cycle.
	(Output_Elaborate_Body_Transition): Update the parameter profile
	and the comment on usage. Add a missing case where the edge is
	within the context of an Elaborate_All.
	(Output_Transition): Update the call to
	Output_Elaborate_Body_Transition.
	* bindo-graphs.ads, bindo-graphs.adb
	(Contains_Elaborate_All_Edge): New routine.

2019-07-08  Piotr Trojanek  <trojanek@adacore.com>

	* lib-xref-spark_specific.adb (Create_Heap): Set dummy Etype for
	the fake __HEAP entity.

2019-07-08  Daniel Mercier  <mercier@adacore.com>

	* gnat1drv.adb: Suppress warnings on memory representation in
	CodePeer compiler mode.

2019-07-08  Nicolas Roche  <roche@adacore.com>

	* rtinit.c (__gnat_runtime_initialize): Remove dependency on
	CommandLineToArgvW.

2019-07-08  Doug Rupp  <rupp@adacore.com>

	* Makefile.rtl: Handle vxworks7r2 in x86_64 and x86 vxworks7.

2019-07-08  Dmitriy Anisimkov  <anisimko@adacore.com>

	* Makefile.rtl: Use g-sercom__linux.adb for all linuxes.

2019-07-08  Yannick Moy  <moy@adacore.com>

	* expander.adb (Expand): Do not reset Analyzed flag always.
	* sem_eval.adb (Fold_Ureal): Mark node as analyzed.

2019-07-08  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch9.adb (Expand_N_Timed_Entry_Call): Do not insert twice
	the assignment statement that computes the delay value, to
	prevent improper tree sharing when the value is a type
	conversion and Float_Overflow checks are enabled.

2019-07-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* bindo.adb: Update the section on terminology to include new
	concepts.  Update the section on switches to include new
	entries.
	* bindo.ads: Add type Precedence_Kind.
	* bindo-builders.adb: Add with and use clauses for Debug and
	Bindo.Validators.  Add use clauses for
	Bindo.Validators.Invocation_Graph_Validators and
	Bindo.Validators.Library_Graph_Validators.
	(Build_Invocation_Graph): Validate the graph immediately after
	it was built.
	(Build_Library_Graph): Update the parameter profile. The
	creation of the graph is now elaboration model-agnostic.
	Validate the graph immediately after it was built.
	(Create_With_Edge): Create regular with edges for Elaborate and
	Elaborate_All edges when the appropriate debug switches are in
	effect.
	* bindo-builders.ads (Build_Library_Graph): Update the parameter
	profile.
	* bindo-diagnostics.adb (Diagnose_Cycle): Track the presence of
	an Elaborate_All edge throughout the inspection of the cycle's
	edges.
	(Output_Dynamic_Model_Suggestions): Output the suggestion only
	when the cycle contains at least one weak edge where the
	successor was statically elaborated.
	(Output_Elaborate_Body_Transition, Output_Forced_Transition,
	Output_With_Transition): Update the assertions.
	* bindo-elaborators.adb: Remove use clauses for
	Bindo.Validators.Invocation_Graph_Validators and
	Bindo.Validators.Library_Graph_Validators.  Remove strings
	Add_To_All_Candidates_Msg and Add_To_Comp_Candidates_Msg.
	Remove type String_Ptr.
	(Add_Vertex, Add_Vertex_If_Elaborable, Create_All_Candidates_Set
	Create_Component_Candidates_Set): Remove.
	(Create_Component_Vertex_Sets, Create_Vertex_Sets): New routine.
	(Elaborate_Component): Update the parameter profile and the
	comment on usage.  Reimplement the elaboration of a component.
	The algorithm will now attempt to elaborate as many vertices
	possible. If this is not possible, and a weakly elaborable
	vertex is available use unit was compiled using the dynamic
	model, the algorithm will elaborate it.
	(Elaborate_Library_Graph): Reimplement the elaboration of the
	graph. The algorithm will now attempt to elaborate as many
	vertices along with their components as possible. If this is not
	possible, and a weakly elaborable vertex is available use unit
	was compiled using the dynamic model, the algorithm will
	elaborate it along with its component.
	(Elaborate_Units): Merge with the functionality of
	Elaborate_Units_Common.
	(Elaborate_Units_Common, Elaborate_Units_Dynamic,
	Elaborate_Units_Static): Remove.
	(Elaborate_Vertex): Update the parameter profile and the comment
	on usage.  Reimplemented.
	(Find_Best_Candidate): Remove.
	(Find_Best_Elaborable_Vertex, Find_Best_Vertex,
	Find_Best_Weakly_Elaborable_Vertex, Has_Elaborable_Body,
	Insert_Elaborable_Successor, Insert_Vertex): New routines.
	(Is_Better_Candidate): Remove.
	(Is_Better_Elaborable_Vertex,
	Is_Better_Weakly_Elaborable_Vertex,
	Is_Suitable_Elaborable_Vertex,
	Is_Suitable_Weakly_Elaborable_Vertex): New routines.
	(Trace_Candidate_Vertices): Remove.
	(Trace_Component): Output the number of strong and weak
	predecessors.
	(Trace_Unelaborated_Vertices): Remove.
	(Trace_Vertex): Output the number of strong and weak
	predecessors.
	(Trace_Vertices): New routine.
	(Update_Successor, Update_Successors): Update the parameter
	profile and the comment on usage.
	* bindo-graphs.adb: Remove type Precedence_Kind.
	(Add_Edge_With_Return): Update the increment of pending
	predecessors.
	(Add_Vertex): Provide default values for strong and weak
	predecessors.
	(Complementary_Vertex): Move the initial declaration to the
	spec. Update the parameter profile and the comment on usage.
	(Contains_Weak_Static_Successor): New routine.
	(Create): Update the parameter profile. The creation of the
	graph is now elaboration model-agnostic.
	(Decrement_Pending_Predecessors): Update the parameter profile
	and the comment on usage. Reimplemented.
	(Delete_Edge): Update the decrement of pending predecesors.
	(Has_Elaborate_Body): Do not treat a vertex as being subject to
	Elaborate_Body when a debug switch is in effect.
	(Increment_Pending_Predecessors): Update the parameter profile
	and the comment on usage. Reimplemented.
	(Is_Elaborable_Component): Reimplemented.
	(Is_Elaborable_Vertex): Move the initial declaration to the
	spec.  Reimplemented.
	(Is_Elaborate_Body_Pair): New routine.
	(Is_Dynamically_Elaborated): Update the parameter profile.
	Reimplemented.
	(Is_Weakly_Elaborable_Vertex): New routine.
	(Pending_Predecessors): Removed.
	(Pending_Predecessors_For_Elaboration,
	Pending_Strong_Predecessors, Pending_Weak_Predecessors,
	Update_Pending_Predecessors): New routines.
	(Update_Pending_Predecessors_Of_Components): Update the
	increment of pending predecessors.
	* bindo-graphs.ads: Update the components of type
	Component_Attributes.  Update the components of type
	Library_Graph_Attributes.  Update the components of type
	Library_Graph_Vertex_Attributes.  Update the initialization of
	No_Component_Attributes.  Update the initialization of
	No_Library_Graph_Vertex_Attributes.
	(Complementary_Vertex, Contains_Weak_Static_Successor): New
	routines.
	(Create): Update the parameter profile and the comment on usage.
	(Decrement_Pending_Predecessors, Is_Dynamically_Elaborated):
	Update the parameter profile and the comment on usage.
	(Is_Elaborate_Body_Pair, Is_Weakly_Elaborable_Vertex): New
	routines.
	(Pending_Predecessors): Removed.
	(Pending_Predecessors_For_Elaboration,
	Pending_Strong_Predecessors, Pending_Weak_Predecessors): New
	routines.
	* bindo-writers.adb (Write_Components): Moved from the spec.
	(Write_Component): Output the strong and weak predecessors.
	(Write_Library_Graph): Output the components as part of the
	graph.
	(Write_Library_Graph_Vertex): Output the strong and weak
	predecessors.
	* bindo-writers.ads (Write_Components): Moved to the body.
	* debug.adb: Add and document new GNATbind switches -d_a, -d_b,
	-d_e.
	* bindo-validators.adb: Minor reformattings.

2019-07-08  Bob Duff  <duff@adacore.com>

	* libgnat/g-sercom.ads, libgnat/g-sercom__linux.adb (Data_Rate):
	Support additional data rates.

2019-07-08  Olivier Hainque  <hainque@adacore.com>

	* gcc-interface/trans.c (Compilation_Unit_to_gnu): Don't request
	DECL_ARTIFICIAL_P on elab proc declarations.

2019-07-08  Eric Botcazou  <ebotcazou@adacore.com>

	* repinfo.adb (List_Record_Info): Declare Incomplete_Layout and
	Not_In_Extended_Main local exceptions.
	(List_Structural_Record_Layout): For an extension, raise the
	former if the parent subtype has not been built and the latter
	if it is not declared in the main source unit.  Fall back to the
	flat layout if either exception has been raised.

2019-07-08  Ed Schonberg  <schonberg@adacore.com>

	* libgnat/a-strfix.adb (Delete): The RM describes the semantics
	of Delete as equivalent to that of Replace_String with a null
	argument. As a result, deleting a null string that starts past
	the end of its argument is a noop and must not raise
	Index_Error.

2019-07-08  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Register_Primitive): When registering a
	primitive in the secondary dispatch table, handle primitive
	inherited through several levels of type derivation (required to
	properly handle inherited 'null' primitive).

2019-07-08  Bob Duff  <duff@adacore.com>

	* doc/gnat_ugn/gnat_utility_programs.rst: Document handling of
	preprocessor directives in GNATpp.

2019-07-08  Javier Miranda  <miranda@adacore.com>

	* gnat1drv.adb (Post_Compilation_Validation_Checks:
	Validate_Compile_Time_Warning_Errors is now located in sem_prag
	(instead of sem_ch13).
	* sem_ch13.ads (Validate_Compile_Time_Warning_Error,
	Validate_Compile_Time_Warning_Errors): Move to sem_prag.
	* sem_ch13.adb
	(Compile_Time_Warnings_Errors): Move to sem_prag.
	(Initialize): Remove initialization of table
	Compile_Time_Warning_Errors.
	(Validate_Compile_Time_Warning_Error,
	Validate_Compile_Time_Warning_Errors): Move to sem_prag.
	* sem_prag.ads (Validate_Compile_Time_Warning_Errors): New
	procedure.
	* sem_prag.adb (Initialize): Initialize table
	Compile_Time_Warning_Errors.

2019-07-08  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications): For a
	pre/postcondition of a generic subprogram declaration, do not
	use Relocate_Node on the aspect expression to construct the
	corresponding attribute specification, to prevent tree anomalies
	when the expression is a call with named actual parameters.

2019-07-08  Javier Miranda  <miranda@adacore.com>

	* sem_attr.adb (Analyze_Attribute [Attribute_Size]): For pragmas
	used to report user defined compile time warning or errors
	handle 'Size for types with known static RM size.

2019-07-08  Justin Squirek  <squirek@adacore.com>

	* exp_imgv.adb (Build_Enumeration_Image_Tables): Default SSO for
	the building of image tables.
	(Expand_Image_Attribute): Minor cleanup.

2019-07-08  Dmitriy Anisimkov  <anisimko@adacore.com>

	* libgnat/g-socket.ads, libgnat/g-socket.adb: Improve
	documentation.
	(Get_Socket_Option, Set_Socket_Option): Remove default value for
	the Level formal.

2019-07-08  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): For an
	unanalized aspect in a generic context that has not been
	analyzed yet, if the aspect applies to a type, place the type on
	the scope stack to make its components visible, before checking
	conformance with the version of the expression analyzed at the
	freeze point.

2019-07-05  Justin Squirek  <squirek@adacore.com>

	* checks.adb (Apply_Accessibility_Check): Add logic to fetch the
	function result accessibility level if one is required within
	the generated check.
	* exp_ch6.adb (Needs_Result_Accessibility_Level): Modify
	controlling elsif block to handle more cases such as anonymous
	access results and disable checking for coextensions.

2019-07-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch9.adb (Analyze_Accept_Statement): If this is an illegal
	accept statement for an enclosing entry abandon analysis to
	prevent scope mismatches and potential infinite loops in
	compiler.

2019-07-05  Hristian Kirtchev  <kirtchev@adacore.com>

	* ali.adb (For_Each_Invocation_Construct,
	For_Each_Invocation_Relation): New version.
	(Scan_ALI): Initialize field Invocation_Graph_Encoding.
	(Set_Invocation_Graph_Encoding): Update the setting of the
	invocation graph encoding.
	* ali.ads: Move field Invocation_Graph_Encoding from Unit_Record
	to ALI_Record because the encoding applies to the whole ALI,
	rather than one of the units (spec or body) for which the ALI
	file was created.
	(For_Each_Invocation_Construct, For_Each_Invocation_Relation):
	New version.
	* bindo.adb: Update the section on switches.  Complete the
	section of debugging elaboration order issues.
	(Find_Elaboration_Order): Prepare the routine for the switch
	from the old to the new elaboration order mechanism.
	* bindo-diagnostics.adb (Find_And_Output_Invocation_Paths):
	Manage a visited set used by Visit_Vertex.
	(Output_All_Cycles_Suggestions,
	Output_Dynamic_Model_Suggestions): Clarify the nature of the
	suggested switch.
	(Output_Elaborate_Body_Transition): Update the diagnostic to
	emit a better message.
	(Output_Forced_Suggestions, Output_Full_Encoding_Suggestions):
	Clarify the nature of the suggested switch.
	(Visit_Vertex): Update the parameter profile to add a set of
	invokers visited during the transition. This set prevents
	infinite exploration of the graph in case the invocations are
	recursive.
	* bindo-elaborators.adb: Add a use clause for
	Bindo.Writers.Dependency_Writers.
	(Elaborate_Units_Common): Output the library graph after it has
	been augmented with invocation edges. Output just the components
	instead of outputting the whole library graph again.
	(Elaborate_Units_Dynamic, Elaborate_Units_Static): Output the
	dependencies as expressed in the library graph.
	* bindo-units.adb (Invocation_Graph_Encoding): Update the
	extraction of the invocation graph encoding.
	* bindo-writers.adb: Add with and use clauses for Binderr and
	Butil.
	(palgc, plgc): New debug routine.
	(Write_Components): Moved to the spec. Add a header for the
	output.
	(Write_Dependencies, Write_Dependencies_Of_Vertex,
	Write_Dependency_Edge): New routine.
	(Write_Elaboration_Order): Update the logic to follow the format
	of Binde's order output.
	(Write_Library_Graph): Do not output the components every time
	the graph is written.
	(Write_Unit): Output the invocation graph encoding of the unit.
	Output the invocation constructs and relations for the unit
	only.
	* bindo-writers.ads (Write_Components): Moved from the body.
	(Write_Dependencies): New routine.
	* bindusg.adb: Prepare the routine for the switch from the old
	to the new elaboration order mechanism.
	* debug.adb: Binder switch -d_O is now not associated with any
	functionality.
	* einfo.adb (Is_Elaboration_Target): The attribute applies to
	packages, as specified by the comment on the attribute usage.
	* opt.ads: Add a global flag which controls the choice between
	the new and the legacy elaboration order mechanism.
	* sem_elab.adb: Add Package_Target to type Target_Kind.
	(Build_Elaborate_Body_Procedure, Build_Elaborate_Procedure,
	Build_Elaborate_Spec_Procedure, Check_Elaboration_Scenarios,
	Check_SPARK_Model_In_Effect): Use Main_Unit_Entity to obtain the
	entity of the main unit.
	(Create_Package_Rep): New routine.
	(Create_Target_Rep): Add processing for packages.
	(Declaration_Placement_Of_Node, Has_Prior_Elaboration): Use
	Main_Unit_Entity to obtain the entity of the main
	 unit.
	(Invocation_Graph_Recording_OK): Prepare the routine for the
	switch from the old to the new elaboration order mechanism.
	(Main_Unit_Entity): New routine.
	(Meet_Elaboration_Requirement,
	Process_Conditional_ABE_Variable_Reference): Use
	Main_Unit_Entity to obtain the entity of the main unit.
	(Process_Invocation_Instantiation): New routine.
	(Process_Invocation_Scenario): Add processing for
	instantiations.
	* switch-b.adb (Scan_Binder_Switches): Prepare the routine for
	the switch from the old to the new elaboration order mechanism.

2019-07-05  Joffrey Huguet  <huguet@adacore.com>

	* libgnat/a-textio.adb: Add abstract state refinment.
	* libgnat/a-textio.ads: Add File_System abstract state.  Add
	global contracts, contract cases, preconditions and
	postconditions to procedures and functions.
	(Set_Input, Set_Output, Set_Error, Standard_Input,
	Standard_Output, Standard_Error, Current_Input, Current_Output,
	Current_Error): Turn SPARK_Mode off.
	(Get_Line): Turn SPARK_Mode off on Get_Line functions.
	* libgnat/a-tideio.ads, libgnat/a-tienio.ads,
	libgnat/a-tifiio.ads, libgnat/a-tiflio.ads,
	libgnat/a-tiinio.ads, libgnat/a-timoio.ads: Add global
	contracts, contract cases, preconditions and postconditions to
	procedures and functions.

2019-07-05  Arnaud Charlet  <charlet@adacore.com>

	* doc/gnat_ugn/platform_specific_information.rst: Refresh doc on
	installing from the command line on Windows.  Remove obsolete
	part.
	* gnat_ugn.texi: Regenerate.

2019-07-05  Vasiliy Fofanov  <fofanov@adacore.com>

	* libgnat/a-wichha.ads (Is_Alphanumeric): Replace comment with
	the correct one.  Also capitalize references to False
	throughout.

2019-07-05  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch4.adb (Expand_N_Indexed_Component): Do not expand actual
	parameters of function calls here either.

2019-07-05  Hristian Kirtchev  <kirtchev@adacore.com>

	* bindo-units.adb, checks.adb, exp_attr.adb, exp_ch3.adb,
	exp_ch4.adb, exp_pakd.adb, lib-writ.adb, libgnat/g-traceb.adb,
	libgnat/g-traceb.ads, libgnat/s-stratt.ads, sem_aux.ads,
	sem_util.adb: Minor reformatting.

2019-07-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Build_Predicate_Functions): If a subtype that
	carries a static predicate aspect is frozen immediately after
	its declaration, ensure that the generated function body created
	for predicate checking is inserted after the corresponding
	subprogram declaration, which is created at the point the
	declaration is elaborated.

2019-07-05  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Cleanup_Record): Use the underlying type when
	checking for components with tasks.

2019-07-05  Arnaud Charlet  <charlet@adacore.com>

	* libgnarl/s-osinte__linux.ads: Link with -lrt before -lpthread.

2019-07-05  Ed Schonberg  <schonberg@adacore.com>

	* exp_pakd.adb (Expand_Bit_Packed_Element_Set): Add explicit
	range checks when the index type of the bit-packed array is an
	enumeration type with a non-standard representation,

2019-07-05  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_res.adb (Is_Control_Flow_Statement): Delay statements
	contain an expression, which in turn may have side effects and
	affect the infinite recursion. As a result, delay statements
	should not be treated specially.

2019-07-05  Arnaud Charlet  <charlet@adacore.com>

	* libgnarl/s-linux.ads, libgnarl/s-linux__alpha.ads,
	libgnarl/s-linux__android.ads, libgnarl/s-linux__hppa.ads,
	libgnarl/s-linux__mips.ads, libgnarl/s-linux__riscv.ads,
	libgnarl/s-linux__sparc.ads: Fix typos in comments.

2019-07-05  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_res.adb (Check_Infinite_Recursion): Reimplemented.
	(Enclosing_Declaration_Or_Statement,
	Invoked_With_Different_Arguments, Is_Conditional_Statement,
	Is_Control_Flow_Statement, Is_Immediately_Within_Body,
	Is_Raise_Idiom, Is_Raise_Statement, Is_Sole_Statement,
	Preceded_By_Control_Flow_Statement,
	Within_Conditional_Statement): New routines.

2019-07-05  Javier Miranda  <miranda@adacore.com>

	* exp_ch4.adb (Expand_N_Type_Conversion): Do not apply an
	accessibility check when the conversion is an access to
	class-wide interface type and it is an actual parameter.
	* exp_ch6.adb (Expand_Call_Helper): Add documentation on the
	accessibility level of an anonymous allocator defining the value
	of an access parameter.
	* sem_util.ads, sem_util.adb (Dynamic_Accessibility_Level): Add
	support for an anonymous allocator whose type is that of a
	stand-alone object of an anonymous access to object type.

2019-07-05  Piotr Trojanek  <trojanek@adacore.com>

	* einfo.ads, sem_res.adb: Typo fixes in comments.

2019-07-05  Bob Duff  <duff@adacore.com>

	* exp_ch6.adb (Is_Build_In_Place_Function): Narrow the check for
	Has_Foreign_Convention to the imported case only.  If a
	build-in-place function is exported, and called from Ada code,
	build-in-place protocols should be used.

2019-07-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Encloing_Subprogram): If Enclosing_Dynamic_Scope
	is a loop, continue climbing the scope stack to find the
	enclosing subprogram.
	(Gather_Components): Handle properly a choice in a record
	aggregate that is given by a subtype with a static predicate.

2019-07-05  Javier Miranda  <miranda@adacore.com>

	* debug.adb (-gnatd.K): Leave available this switch.
	* contracts.adb (Build_And_Analyze_Contract_Only_Subprograms):
	Remove.
	* scil_ll.ads, scil_ll.adb (Contract_Only_Body_Flag,
	Contract_Only_Body_Nodes, Get_Contract_Only_Body,
	Is_Contract_Only_Body, Set_Contract_Only_Body): Remove.

2019-07-05  Pierre-Marie de Rodat  <derodat@adacore.com>

	* libgnat/a-strunb.ads: Import documentation from the RM

2019-07-05  Pierre-Marie de Rodat  <derodat@adacore.com>

	* libgnat/a-strfix.ads: Import documentation from the RM

2019-07-05  Yannick Moy  <moy@adacore.com>

	* adabkend.adb (Scan_Back_End_Switches): Accept -Og and -Ofast
	switches.

2019-07-05  Hristian Kirtchev  <kirtchev@adacore.com>

	* ali.adb: Relocate types Invocation_Construct_Record,
	Invocation_Relation_Record, and Invocation_Signature_Record to
	the body of ALI.  Relocate tables Invocation_Constructs,
	Invocation_Relations, and Invocation_Signatures to the body of
	ALI.  Remove type Body_Placement_Codes.  Add new types
	Declaration_Placement_Codes, and
	Invocation_Graph_Encoding_Codes.  Update the literals of type
	Invocation_Graph_Line_Codes.
	(Add_Invocation_Construct): Update the parameter profile. Add an
	invocation construct built from all attributes provided.
	(Add_Invocation_Relation): Update the parameter profile. Add an
	invocation relation built from all attributes provided.
	(Body_Placement): New routine.
	(Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind):
	Removed.
	(Code_To_Declaration_Placement_Kind,
	Code_To_Invocation_Graph_Encoding_Kind, Column,
	Declaration_Placement_Kind_To_Code, Extra,
	For_Each_Invocation_Construct, For_Each_Invocation_Relation,
	Invocation_Graph_Encoding,
	Invocation_Graph_Encoding_Kind_To_Code, Invoker, Kind, Line,
	Locations, Name): New routine.
	(Scan_Invocation_Construct_Line): Reimplement the scanning
	mechanism.
	(Scan_Invocation_Graph_Attributes_Line): New routine.
	(Scan_Invocation_Graph_Line): Use a case statement to dispatch.
	(Scan_Invocation_Relation_Line): Reimplement the scanning
	mechanism.
	(Scope): New routine.
	(Set_Invocation_Graph_Encoding, Signature, Spec_Placement,
	Target): New routine.
	* ali.ads: Add new type Invocation_Graph_Encoding_Kind.  Add
	component Invocation_Graph_Encoding to type Unit_Record.
	Relocate various types and data structures to the body of ALI.
	(Add_Invocation_Construct, Add_Invocation_Relation): Update the
	parameter profile.
	(Body_Placement): New routine.
	(Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind):
	Removed.
	(Code_To_Declaration_Placement_Kind,
	Code_To_Invocation_Graph_Encoding_Kind, Column,
	Declaration_Placement_Kind_To_Code, Extra,
	For_Each_Invocation_Construct, For_Each_Invocation_Relation,
	Invocation_Graph_Encoding,
	Invocation_Graph_Encoding_Kind_To_Code, Invoker, Kind, Line,
	Locations, Name, Scope, Set_Invocation_Graph_Encoding,
	Signature, Spec_Placement, Target): New routine.
	* bindo.adb: Add with clause for Binde.  Add with and use
	clauses for Debug.  Update the documentation.  Add new switches.
	(Find_Elaboration_Order): Dispatch to the proper elaboration
	mechanism.
	* bindo-augmentors.adb:
	Remove with and use clauses for GNAT and GNAT.Sets.  Remove
	membership set VS.  Update the parameter profiles of most
	routines to use better parameter names.  Update the
	implementation of most routine to use the new parameter names.
	Remove various redundant assertions.
	* bindo-builders.adb: Use better names for instantiated data
	structures. Update all references to these names.  Update the
	parameter profiles of most routines to use better parameter
	names.  Update the implementation of most routine to use the new
	parameter names.
	(Build_Library_Graph): Update the parameter profile. Update the
	call to Create.
	(Create_Vertex): Reimplemented.
	(Declaration_Placement_Vertex): New routine.
	* bindo-builders.ads (Build_Library_Graph): Update the parameter
	profile and comment on usage.
	* bindo-diagnostics.adb: Almost a new unit.
	* bindo-diagnostics.ads: Add a use clause for
	Bindo.Graphs.Invocation_Graphs.  Remove package
	Cycle_Diagnostics.
	(Diagnose_Circularities): New routine.
	* bindo-elaborators.adb: Remove the with and use clauses for
	Binderr and GNAT.Sets.  Remove the use clause for
	Bindo.Diagnostics.Cycle_Diagnostics.  Remove membership set VS.
	Update the parameter profiles of most routines to use better
	parameter names.  Update the implementation of most routine to
	use the new parameter names.  (Elaborate_Units_Common): Update
	the parameter profile. Pass an infication to the library graph
	builder whether the dynamic model is in effect.
	(Elaborate_Units_Dynamic, Elaborate_Units_Static): Use
	Diagnose_Circularities to provide diagnostics.
	(Update_Successor): Use routine In_Same_Component to determine
	whether the predecessor and successor reside in different
	components.
	* bindo-graphs.adb: Add with and use clauses for Butil, Debug,
	Output, and Bindo.Writers.  Remove with and use clauses for
	GNAT.Lists.  Update the parameter profiles of most routines to
	use better parameter names.  Update the implementation of most
	routine to use the new parameter names.  Remove various
	redundant assertions.  Remove doubly linked list EL.  Add new
	type Precedence_Kind.
	(Add_Cycle): New routine.
	(Add_Vertex): Update the parameter profile. Update the creation
	of vertex attributes.
	(Add_Vertex_And_Complement, Body_Vertex, Column,
	Complementary_Vertex, Copy_Cycle_Path, Cycle_Kind_Of): New
	routines.
	(Destroy_Invocation_Graph_Edge, Destroy_Library_Graph_Cycle,
	Destroy_Library_Graph_Edge, Extra, File_Name,
	Find_All_Cycles_Through_Vertex, Find_All_Cycles_With_Edge,
	Find_Cycles, Find_First_Lower_Precedence_Cycle,
	Get_LGC_Attributes, Has_Next, Hash_Library_Graph_Cycle,
	Hash_Library_Graph_Cycle_Attributes, Highest_Precedence_Cycle,
	Highest_Precedence_Edge, In_Same_Component, Insert_And_Sort,
	Invocation_Edge_Count, Invocation_Graph_Encoding,
	Is_Cycle_Initiating_Edge, Is_Cyclic_Edge,
	Is_Cyclic_Elaborate_All_Edge, Is_Cyclic_Elaborate_Body_Edge,
	Is_Cyclic_Elaborate_Edge, Is_Cyclic_Forced_Edge,
	Is_Cyclic_Invocation_Edge, Is_Cyclic_With_Edge,
	Is_Dynamically_Elaborated, Is_Elaborate_All_Edge,
	Is_Elaborate_Body_Edge, Is_Elaborate_Edge: New routines.
	(Is_Existing_Predecessor_Successor_Relation): Removed.
	(Is_Forced_Edge, Is_Invocation_Edge, Is_Recorded_Cycle,
	Is_Recorded_Edge, Is_With_Edge, Iterate_Edges_Of_Cycle, Kind,
	Length): New routine.
	(Lib_Vertex): Removed.
	(Line, Links_Vertices_In_Same_Component,
	Maximum_Invocation_Edge_Count, Next, Normalize_And_Add_Cycle,
	Normalize_Cycle_Path, Number_Of_Cycles, Path, Precedence,
	Remove_Vertex_And_Complement, Sequence_Next_Cycle): New routines.
	(Sequence_Next_IGE_Id): Renamed to Sequence_Next_Edge.
	(Sequence_Next_IGV_Id): Renamed to Sequence_Next_Vertex.
	(Sequence_Next_LGE_Id): Renamed to Sequence_Next_Edge.
	(Sequence_Next_LGV_Id): Renamed to Sequence_Next_Vertex.
	(Set_Is_Existing_Predecessor_Successor_Relation): Removed.
	(Set_Is_Recorded_Cycle, Set_Is_Recorded_Edge,
	Set_LGC_Attributes, Spec_Vertex, Trace_Cycle, Trace_Edge,
	Trace_Eol, Trace_Vertex): New routines.
	* bindo-graphs.ads: Add with and use clauses for Types and
	GNAT.Lists.  Update the parameter profiles of most routines to
	use better parameter names.  Update the implementation of most
	routine to use the new parameter names.  Add the new
	instantiated data structures IGE_Lists, IGV_Sets, LGC_Lists,
	LGE_Lists, LGE_Sets, LGV_Sets, and RC_Sets.  Add new type
	Library_Graph_Cycle_Id along with an empty and initial value.
	Remove component Lib_Vertex and add new components Body_Vertex
	and Spec_Vertex to type Invocation_Graph_Vertex_Attributes.  Add
	new type Library_Graph_Cycle_Kind.  Add new iterators
	All_Cycle_Iterator and Edges_Of_Cycle_Iterator.  Add new type
	Library_Graph_Cycle_Attributes.  Add new components
	Cycle_Attributes, Cycles, and Dynamically_Elaborated to type
	Library_Graph_Attributes.
	(Body_Vertex, Column, Destroy_Invocation_Graph_Edge,
	Destroy_Library_Graph_Cycle_Attributes,
	Destroy_Library_Graph_Edge, Extra, File_Name, Find_Cycles,
	Has_Elaborate_All_Cycle, Has_Next, Hash_Library_Graph_Cycle,
	Hash_Library_Graph_Cycle_Attributes, Highest_Precedence_Cycle,
	In_Same_Component, Invocation_Edge_Count,
	Invocation_Graph_Encoding, Is_Dynamically_Elaborated,
	Is_Elaborate_All_Edge, Is_Elaborate_Body_Edge,
	Is_Elaborate_Edge, Is_Forced_Edge, Is_Invocation_Edge,
	Is_With_Edge, Iterate_All_Cycles, Iterate_Edges_Of_Cycle, Kind):
	New routines.
	(Length, Lib_Vertex, (Line, Next, Number_Of_Cycles, Present,
	Same_Library_Graph_Cycle_Attributes, Spec_Vertex): New routines.
	* bindo-units.adb (File_Name, Invocation_Graph_Encoding): New
	routines.
	* bindo-units.ads: Add new instantiated data structure
	Unit_Sets.
	(File_Name, Invocation_Graph_Encoding): New routine.
	* bindo-validators.adb: Remove with and use clauses for GNAT and
	GNAT.Sets.  Remove membership set US.  Update the parameter
	profiles of most routines to use better parameter names.  Update
	the implementation of most routine to use the new parameter
	names.
	(Validate_Cycle, Validate_Cycle_Path, Validate_Cycles,
	Validate_Invocation_Graph_Vertex): Remove the validation of
	component Lib_Vertex. Add the validation of components
	Body_Vertex and Spec_Vertex.
	(Write_Error): New routine.
	* bindo-validators.ads (Validate_Cycles): New routine.
	* bindo-writers.adb: Update the parameter profiles of most
	routines to use better parameter names.  Update the
	implementation of most routine to use the new parameter names.
	(Write_Cycle, Write_Cyclic_Edge, Write_Cycles): New routines.
	(Write_Invocation_Graph_Vertex): Remove the output of component
	Lib_Vertex. Add the output of components Body_Vertex and
	Spec_Vertex.
	* bindo-writers.ads (Write_Cycles): New routine.
	* debug.adb: Use binder switches -d_C and -d_P, add
	documentation on their usage.
	* gnatbind.adb: Remove with and use clauses for Binde.  Delegate
	the choice of elaboration mechanism to Bindo.
	* lib-writ.adb (Column, Extra, Invoker, Kind, Line, Locations,
	Name, Placement, Scope, Signature, Target): Removed.
	(Write_Invocation_Graph): Moved at the top level.
	(Write_Invocation_Graph_Attributes): New routine.
	(Write_Invocation_Relation, Write_Invocation_Signature): Moved
	at the top level.
	* lib-writ.ads: Add a documentation section on invocation graph
	attributes.
	* sem_elab.adb (Body_Placement_Of): New routine.
	(Declare_Invocation_Construct): Update the call to
	Add_Invocation_Construct.
	(Declaration_Placement_Of_Node): New routine.
	(Get_Invocation_Attributes): Correct the retrieval of the
	enclosing subprogram where the postcondition procedure lives.
	(Placement_Of, Placement_Of_Node): Removed.
	(Record_Invocation_Graph): Record the encoding format used.
	(Record_Invocation_Graph_Encoding): New routine.
	(Record_Invocation_Relation): Update the call to
	Add_Invocation_Relation.
	(Spec_Placement_Of): Removed.
	* libgnat/g-lists.ads, libgnat/g-lists.adb (Equal): New routine.

2019-07-05  Ed Schonberg  <schonberg@adacore.com>

	* checks.adb (Apply_Predicate_Check): Except within the
	subprogram body that defines the formal, do not apply predicate
	check on a formal IN parameter: such a check is redundant and
	its expansion can lead to out-of-scope references when it is
	originates in a function call in a precondition,

2019-07-05  Yannick Moy  <moy@adacore.com>

	* sem_res.adb (Resolve_Call): Cannot inline in quantified
	expressions.
	* sem_util.adb, sem_util.ads (In_Quantified_Expression): New
	function.

2019-07-05  Bob Duff  <duff@adacore.com>

	* doc/gnat_rm/standard_and_implementation_defined_restrictions.rst:
	Fix typo.
	* gnat_rm.texi: Regenerate.

2019-07-05  Bob Duff  <duff@adacore.com>

	* exp_attr.adb (Input): Take the No_Stream_Optimizations
	restriction into account.

2019-07-05  Claire Dross  <dross@adacore.com>

	* libgnat/a-cofove.ads, libgnat/a-cofove.adb: Definite formal
	vectors are now always bounded so that they do not need to be
	limited anymore.

2019-07-05  Dmitriy Anisimkov  <anisimko@adacore.com>

	* libgnat/g-traceb.ads, libgnat/g-traceb.adb (Call_Chain): New
	function.

2019-07-04  James Clarke  <jrtc27@debian.org>

	* libgnarl/s-osinte__kfreebsd-gnu.ads (clockid_t): Make type
	definition public.
	(CLOCK_REALTIME): Make value public.

2019-07-04  Javier Miranda  <miranda@adacore.com>

	* exp_tss.adb (Init_Proc): Adding missing support for access to
	subprograms and access to protected subprograms of non-default
	C++ constructors.

2019-07-04  Eric Botcazou  <ebotcazou@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): Use proper interface to
	set the validity settings in CodePeer mode.
	* par-load.adb (Load): Remove all code dealing with validity
	settings.
	* validsw.ads (Validity_Check_Copies): Alphabetize.
	* validsw.adb (Reset_Validity_Check_Options): Set all options to
	off.
	(Save_Validity_Check_Options): Save all options.

2019-07-04  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch3.adb, exp_ch4.adb, exp_ch4.ads, exp_ch5.adb,
	exp_ch7.adb, exp_ch9.adb, exp_ch11.adb, exp_unst.adb,
	rtsfind.ads, sem_attr.adb, sem_ch10.adb, sem_ch12.adb,
	sem_ch13.adb, sem_dim.adb, sem_disp.adb, xref_lib.adb: Minor
	reformatting.

2019-07-04  Joffrey Huguet  <huguet@adacore.com>

	* libgnarl/a-taside.ads: Add assertion policy to ignore
	preconditions.
	(Abort_Task, Is_Terminated, Is_Callable): Add preconditions.

2019-07-04  Eric Botcazou  <ebotcazou@adacore.com>

	* doc/gnat_rm/implementation_defined_pragmas.rst: Fix
	capitalization and parenthesis glitches.
	* gnat_rm.texi: Regenerate.

2019-07-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch10.adb (Remove_Context_Clauses): Handle properly the
	removal of a limited_with_clause which appears in the library
	unit oF the main unit, when some other unit in the context has a
	regular with_clause on the same unit, to prevent spurious
	visibility errors in the subsequent analysis of pending instance
	bodies.

2019-07-04  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_elab.adb: Add new type Elaboration_Phase_Status along with
	a global to keep track of the elaboration phase status.
	Initialize all internal data structures to Nil for services
	Elaborated_Units, Internal_Representation, and Scenario_Storage.
	(Build_Call_Marker): Do not create a call marker when the
	elaboration phase is not active.
	(Build_Variable_Reference_Marker): Do not create a call marker
	when the elaboration phase is not active.
	(Check_Elaboration_Scenarios): Destroy all internal structures
	when the elaboration phase does not have to run. Do not execute
	when the elaboration phase is not active.
	(Elaboration_Phase_Active): New routine.
	(Finalize_All_Data_Structures): New routine.
	(Initialize): Initialize all internal data structures and signal
	that the elaboration phase has started.
	(Initialize_All_Data_Structures): New routine.
	(Initialize_Elaborated_Units): Initialize all internal data
	structures.
	(Initialize_Internal_Representation): Initialize all internal
	data structures.
	(Initialize_Scenario_Storage): Initialize all internal data
	structures.
	(Kill_Elaboration_Scenario): Do not execute when the elaboration
	phase is not active.
	(Set_Elaboration_Phase): New routine.
	(Update_Elaboration_Scenario): Do not execute when the
	elaboration phase is not active.

2019-07-04  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): The special
	treatment of calling Mask_Unfrozen_Types must also be done in
	the case of an Ignored_Ghost_Entity, because Expander_Active is
	False in that case.

2019-07-04  Yannick Moy  <moy@adacore.com>

	* sem_prag.adb (Check_Library_Level_Entity): Update for new rule
	on SPARK_Mode.

2019-07-04  Justin Squirek  <squirek@adacore.com>

	* sem_disp.adb (Check_Controlling_Formals): Obtain the full view
	before type comparison.

2019-07-04  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch4.ads, exp_ch4.adb (Build_Eq_Call): New visible
	subprogram, extracted from Expand_Composite_Equality, to handle
	properly the composition of equality for variant record types.
	* exp_ch3.adb (MAke_Eq_If): Use Build_Eq_Call for each
	component, to handle properly the case of a component with a
	user-defined equality. Revert to predefined equality if the
	user-defined operation is abstract, to maintain compatibility
	with older versions,

2019-07-04  Justin Squirek  <squirek@adacore.com>

	* exp_ch3.adb (Build_Initialization_Call): Fixup
	*_skip_null_excluding_check argument to handle new default.
	(Init_Formals): Make *_skip_null_excluding_check formal default
	to False
	* exp_ch4.adb (Expand_N_Allocator): Add comment to note heavy
	code duplication

2019-07-04  Bob Duff  <duff@adacore.com>

	* sem_ch3.adb (Access_Definition): Do not create a master unless
	Tasking_Allowed. Otherwise, this fails on restricted runtimes.

2019-07-04  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_util.adb (Propagate_DIC_Attributes): Do not propagate the
	Default_Initial_Condition attributes to an incomplete type.

2019-07-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Check_Array_Type): An array type attribute such
	as 'First can be applied to an unconstrained array tyope when
	the attribute reference appears within an aspect specification
	and the prefix is a current instance, given that the prefix of
	the attribute will become a formal of the subprogram that
	implements the aspect (typically a predicate check).

2019-07-04  Piotr Trojanek  <trojanek@adacore.com>

	* sem_util.adb (Yields_Synchronized_Object): Fix typos in
	comments.

2019-07-04  Yannick Moy  <moy@adacore.com>

	* sem_util.adb (Yields_Synchronized_Object): Adapt to new SPARK
	rule.

2019-07-04  Yannick Moy  <moy@adacore.com>

	* sem_spark.adb (Check_Statement): Only check permission of
	object in extended return when it is of a deep type.

2019-07-04  Justin Squirek  <squirek@adacore.com>

	* sem_ch12.adb (Perform_Appropriate_Analysis): Added for
	selecting which type of analysis based on wheither the
	instantiation is a generic at the library-level. In which case
	expansion during analysis.
	(Preanalyze_Actuals): Modify calls to Analyze to use the new
	routine.

2019-07-04  Ed Schonberg  <schonberg@adacore.com>

	* exp_unst.adb: Handle conditional expressions.

2019-07-04  Yannick Moy  <moy@adacore.com>

	* sem_spark.adb (Check_Package_Spec, Check_Package_Body): Only
	analyze parts of the code marked in SPARK.

2019-07-04  Hristian Kirtchev  <kirtchev@adacore.com>

	* erroutc.adb, exp_aggr.adb, inline.adb, opt.adb, sem_ch3.adb:
	Minor reformatting.

2019-07-04  Yannick Moy  <moy@adacore.com>

	* sem_spark.adb (Explanation, Get_Expl): New functions to get
	the explanation for a permission mismatch.
	(Perm_Error, Perm_Mismatch, Perm_Error_Loop_Exit): Take
	explanation into account for issuing a more precise error
	message.
	(Set_Perm_Prefixes, Set_Perm_Extensions,
	Set_Perm_Extensions_Move): Pass suitable argument for the
	explanation node.

2019-07-04  Arnaud Charlet  <charlet@adacore.com>

	* exp_aggr.adb (In_Place_Assign_OK): Moved to top level and add
	support for record aggregates.
	(Component_Check): Use Is_CCG_Supported_Aggregate instead of a
	similar local predicate.
	(Convert_To_Assignments): Take advantage of In_Place_Assign_OK
	predicate when possible.
	(Is_CCG_Supported_Aggregate): Return False for records with
	representation clauses and fix the logic for dealing with nested
	aggregates.

2019-07-04  Piotr Trojanek  <trojanek@adacore.com>

	* opt.adb (Set_Config_Switches): Keep assertions policy as
	enabled when analysing internal units in GNATprove mode.

2019-07-04  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch4.adb (Expand_Short_Circuit_Operator): Strip
	N_Variable_Reference_Marker when checking for the presence of
	actions.

2019-07-04  Arnaud Charlet  <charlet@adacore.com>

	* exp_aggr.adb (Check_Component): Take into account type
	conversions.

2019-07-04  Dmitriy Anisimkov  <anisimko@adacore.com>

	* doc/gnat_ugn/platform_specific_information.rst: Document
	Windows socket timeout particularity.
	* gnat_ugn.texi: Regenerate.
	* gsocket.h: Include versionhelpers.h.
	* socket.c (__gnat_minus_500ms): New function.
	* libgnat/g-sothco.ads (Minus_500ms_Windows_Timeout): New
	imported function.
	* libgnat/g-socket.adb (Set_Socket_Option): Refactor to remove
	500ms from the requested timeout only on old Windows version.

2019-07-04  Thomas Quinot  <quinot@adacore.com>

	* get_scos.adb: Remove bogus, dead code.

2019-07-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_dim.adb (Analyze_Dimension_Array_Aggregate): If the
	component is an entity name, its dimensions are those of its
	type.

2019-07-03  Bob Duff  <duff@adacore.com>

	* doc/gnat_ugn/gnat_utility_programs.rst: Document new flags in
	GNATpp.

2019-07-03  Hristian Kirtchev  <kirtchev@adacore.com>

	* binde.adb: Remove with clause for System.OS_Lib.
	(Force_Elab_Order): Refactor the majority of the code in Butil.
	Use the new forced units iterator to obtain unit names.
	* bindo-builders.adb: Add with and use clauses for Binderr,
	Butil, Opt, Output, Types, GNAT, and GNAT.Dynamic_HTables.  Add
	a hash table which maps units to line number in the forced
	elaboration order file.
	(Add_Unit): New routine.
	(Build_Library_Graph): Create forced edges between pairs of
	units listed in the forced elaboration order file.
	(Create_Forced_Edge, Create_Forced_Edges, Destroy_Line_Number,
	Duplicate_Unit_Error, Hash_Unit, Internal_Unit_Info,
	Is_Duplicate_Unit, Missing_Unit_Info): New routines.
	* bindo-graphs.adb (Is_Internal_Unit, Is_Predefined_Unit):
	Refactor some of the behavior to Bindo-Units.
	* bindo-graphs.ads: Enable the enumeration literal for forced
	edges.
	* bindo-units.adb, bindo-units.ads (Is_Internal_Unit,
	Is_Predefined_Unit): New routines.
	* butil.adb: Add with and use clauses for Opt, GNAT, and
	System.OS_Lib.  Add with clause for Unchecked_Deallocation.
	(Has_Next, Iterate_Forced_Units, Next, Parse_Next_Unit_Name,
	Read_Forced_Elab_Order_File): New routines.
	* butil.ads: Add with and use clauses for Types.  Add new
	iterator over the units listed in the forced elaboration order
	file.
	(Has_Next, Iterate_Forced_Units, Next): New routine.
	* namet.adb, namet.ads (Present): New routine.

2019-07-03  Bob Duff  <duff@adacore.com>

	* sem_ch3.adb (Access_Definition): The code was creating a
	master in the case where the designated type is a class-wide
	interface type. Create a master in the noninterface case as
	well. That is, create a master for all limited class-wide types.

2019-07-03  Yannick Moy  <moy@adacore.com>

	* erroutc.adb (Sloc_In_Range): New function to determine whether
	the range of a pragma Warnings covers a location, taking
	instantiations into account.

2019-07-03  Johannes Kanig  <kanig@adacore.com>

	* osint.ads, osint.adb (Get_First_Main_File_Name): New routine
	to access the first file provided on the command line.

2019-07-03  Ed Schonberg  <schonberg@adacore.com>

	* inline.adb (Process_Formals_In_Aspects): New procedure within
	Expand_Inlined_Call, to perform a replacement of references to
	formals that appear in aspect specifications within the body
	being inlined.

2019-07-03  Justin Squirek  <squirek@adacore.com>

	* sem_ch8.adb (Analyze_Object_Renaming): Add call to search for
	the appropriate actual subtype of the object renaming being
	analyzed.
	(Check_Constrained_Object): Minor cleanup.

2019-07-03  Yannick Moy  <moy@adacore.com>

	* sem_spark.adb (Get_Observed_Or_Borrowed_Expr): New function to
	return go through traversal function call.
	(Check_Type): Consistently use underlying type.
	(Get_Perm): Adapt for case of elaboration code where variables
	are not declared in the environment. Remove incorrect handling
	of borrow and observe.

2019-07-03  Hristian Kirtchev  <kirtchev@adacore.com>

	* inline.adb (Build_Return_Object_Formal): New routine.
	(Can_Split_Unconstrained_Function): Code clean up.
	(Copy_Formals,Copy_Return_Object): New routines.
	(Split_Unconstrained_Function): Code clean up and refactoring.

2019-07-03  Gary Dismukes  <dismukes@adacore.com>

	* bindo-augmentors.adb, bindo-augmentors.ads,
	bindo-builders.ads, bindo-elaborators.adb, sem_ch12.adb,
	sem_ch13.adb, sem_spark.adb, sinfo.ads: Minor editorial
	corrections and reformatting.

2019-07-03  Bob Duff  <duff@adacore.com>

	* sem_warn.adb (Check_Infinite_Loop_Warning): Avoid the warning
	if an Iterator_Specification is present.

2019-07-03  Bob Duff  <duff@adacore.com>

	* doc/gnat_ugn/gnat_utility_programs.rst: Document default
	new-line behavior.

2019-07-03  Hristian Kirtchev  <kirtchev@adacore.com>

	* ali.adb: Add with and use clauses for GNAT,
	GNAT.Dynamic_HTables, and Snames.  Add a map from invocation
	signature records to invocation signature ids.  Add various
	encodings of invocation-related attributes.  Sort and update
	table Known_ALI_Lines.
	(Add_Invocation_Construct, Add_Invocation_Relation,
	Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind,
	Code_To_Invocation_Construct_Kind, Code_To_Invocation_Kind,
	Code_To_Invocation_Graph_Line_Kind, Destroy, Hash): New
	routines.
	(Initialize_ALI): Sort the initialization sequence. Add
	initialization for all invocation-related tables.
	(Invocation_Construct_Kind_To_Code,
	Invocation_Graph_Line_Kind_To_Code, Invocation_Kind_To_Code,
	Invocation_Signature_Of, Present): New routines.
	(Scan_ALI): Add the default values for invocation-related ids.
	Scan invocation graph lines.
	(Scan_Invocation_Graph_Line): New routine.
	* ali.ads: Add with clause for GNAT.Dynamic_Tables.  Add types
	for invocation constructs, relations, and signatures.  Add
	tables for invocation constructs, relations, and signatures.
	Update Unit_Record to capture invocation-related ids.  Relocate
	table Unit_Id_Tables and subtypes Unit_Id_Table, Unit_Id_Array
	from Binde.
	(Add_Invocation_Construct, Add_Invocation_Relation,
	Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind,
	Code_To_Invocation_Construct_Kind, Code_To_Invocation_Kind,
	Code_To_Invocation_Graph_Line_Kind,
	Invocation_Construct_Kind_To_Code,
	Invocation_Graph_Line_Kind_To_Code, Invocation_Kind_To_Code,
	Invocation_Signature_Of, Present): New routines.
	* binde.adb: Add with and use clause for Types.  Add use clause
	for ALI.Unit_Id_Tables;
	* binde.ads: Relocate table Unit_Id_Tables and subtypes
	Unit_Id_Table, Unit_Id_Array to ALI.
	* bindgen.adb: Remove with and use clause for ALI.
	* bindgen.ads: Remove with and use clause for Binde.  Add with
	and use clause for ALI.
	* bindo.adb,  bindo.ads, bindo-augmentors.adb,
	bindo-augmentors.ads, bindo-builders.adb, bindo-builders.ads,
	bindo-diagnostics.adb, bindo-diagnostics.ads,
	bindo-elaborators.adb, bindo-elaborators.ads, bindo-graphs.adb,
	bindo-graphs.ads, bindo-units.adb, bindo-units.ads,
	bindo-validators.adb, bindo-validators.ads, bindo-writers.adb,
	bindo-writers.ads: New units.
	* debug.adb: Use and describe GNAT debug switches -gnatd_F and
	-gnatd_G.  Add GNATbind debug switches in the ranges dA .. dZ,
	d.a .. d.z, d.A .. d.Z, d.1 .. d.9, d_a .. d_z, d_A .. d_Z, and
	d_1 .. d_9.  Use and describe GNATbind debug switches -d_A,
	-d_I, -d_L, -d_N, -d_O, -d_T, and -d_V.
	* exp_util.adb, exp_util.ads (Exceptions_OK): Relocate to
	Sem_Util.
	* gnatbind.adb: Add with and use clause for Bindo.  Use the new
	Bindo elaboration order only when -d_N is in effect.
	* lib-writ.adb
	(Column, Extra, Invoker, Kind, Line, Locations, Name, Placement,
	Scope, Signature, Target): New routines.
	(Write_ALI): Output all invocation-related data.
	(Write_Invocation_Graph): New routine.
	* lib-writ.ads: Document the invocation graph ALI line.
	* namet.adb, namet.ads (Present): New routines.
	* sem_ch8.adb (Find_Direct_Name): Capture the status of
	elaboration checks and warnings of an identifier.
	(Find_Expanded_Name): Capture the status of elaboration checks
	and warnings of an expanded name.
	* sem_ch12.adb (Analyze_Generic_Package_Declaration): Ensure
	that invocation graph-related data within the body of the main
	unit is encoded in the ALI file.
	(Analyze_Generic_Subprogram_Declaration): Ensure that invocation
	graph-related data within the body of the main unit is encoded
	in the ALI file.
	(Analyze_Package_Instantiation): Perform minimal decoration of
	the instance entity.
	(Analyze_Subprogram_Instantiation): Perform minimal decoration
	of the instance entity.
	* sem_elab.adb: Perform heavy refactoring of all code. The unit
	is now split into "services" which specialize in one area of ABE
	checks.  Add processing in order to capture invocation-graph
	related attributes of the main unit, and encode them in the ALI
	file.  The Processing phase can now operate in multiple modes,
	all described by type Processing_Kind.  Scenarios and targets
	are now distinct at the higher level, and carry their own
	representations. This eliminates the need to constantly
	recompute their attributes, and offers the various processors a
	uniform interface.  The various initial states of the Processing
	phase are now encoded using type Processing_In_State, and
	xxx_State constants.
	* sem_elab.ads: Update the literals of type
	Enclosing_Level_Kind.  Add Inline pragmas on several routines.
	* sem_prag.adb (Process_Inline): Ensure that invocation
	graph-related data within the body of the main unit is encoded
	in the ALI file.
	* sem_util.adb (Enclosing_Generic_Body, Enclosing_Generic_Unit):
	Code clean up.
	(Exceptions_OK): Relocated from Sem_Util.
	(Mark_Save_Invocation_Graph_Of_Body): New routine.
	* sem_util.ads (Exceptions_OK): Relocated from Sem_Util.
	(Mark_Save_Invocation_Graph_Of_Body): New routine.
	* sinfo.adb (Is_Elaboration_Checks_OK_Node): Now applicable to
	N_Variable_Reference_Marker.
	(Is_Elaboration_Warnings_OK_Node): Now applicable to
	N_Expanded_Name, N_Identifier, N_Variable_Reference_Marker.
	(Is_Read): Use Flag4.
	(Is_SPARK_Mode_On_Node): New applicable to
	N_Variable_Reference_Marker.
	(Is_Write): Use Flag5.
	(Save_Invocation_Graph_Of_Body): New routine.
	(Set_Is_Elaboration_Checks_OK_Node): Now applicable to
	N_Variable_Reference_Marker.
	(Set_Is_Elaboration_Warnings_OK_Node): Now applicable to
	N_Expanded_Name, N_Identifier, N_Variable_Reference_Marker.
	(Set_Is_SPARK_Mode_On_Node): New applicable to
	N_Variable_Reference_Marker.
	(Set_Save_Invocation_Graph_Of_Body): New routine.
	* sinfo.ads: Update the documentation of attributes
	Is_Elaboration_Checks_OK_Node, Is_Elaboration_Warnings_OK_Node,
	Is_SPARK_Mode_On_Node.  Update the flag usage of attributes
	Is_Read, Is_Write.  Add attribute Save_Invocation_Graph_Of_Body
	and update its occurrence in nodes.
	(Save_Invocation_Graph_Of_Body): New routine along with pragma
	Inline.
	(Set_Save_Invocation_Graph_Of_Body): New routine along with
	pragma Inline.
	* switch-b.adb (Scan_Binder_Switches): Refactor the scanning of
	debug switches.
	(Scan_Debug_Switches): New routine.
	* libgnat/g-dynhta.adb, libgnat/g-dynhta.ads (Contains): New routine.
	* libgnat/g-graphs.adb (Associate_Vertices): Update the use of
	Component_Vertex_Iterator.
	(Contains_Component, Contains_Edge, Contains_Vertex, Has_Next):
	Reimplemented.
	(Iterate_Component_Vertices): New routine.
	(Iterate_Vertices): Removed.
	(Next): Update the parameter profile.
	(Number_Of_Component_Vertices, Number_Of_Outgoing_Edges): New
	routines.
	* libgnat/g-graphs.ads: Update the initialization of
	No_Component.  Add type Component_Vertex_Iterator.  Remove type
	Vertex_Iterator.
	(Has_Next): Add new versions and remove old ones.
	(Iterate_Component_Vertices): New routine.
	(Iterate_Vertices): Removed.
	(Next): Add new versions and remove old ones.
	(Number_Of_Component_Vertices, Number_Of_Outgoing_Edges): New
	routines.
	* libgnat/g-sets.adb (Contains): Reimplemented.
	* gcc-interface/Make-lang.in (GNATBIND_OBJS): Add
	GNAT.Dynamic_HTables, GNAT.Graphs and Bindo units.
	* rtsfind.ads: Remove extra space.

2019-07-03  Yannick Moy  <moy@adacore.com>

	* sem_spark.adb: Add support for locally borrowing and observing
	a path.
	(Get_Root_Object): Add parameter Through_Traversal to denote
	when we are interesting in getting to the traversed parameter.
	(Is_Prefix_Or_Almost): New function to support detection of
	illegal access to borrowed or observed paths.
	(Check_Pragma): Add analysis of assertion pragmas.

2019-07-03  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Build_Predicate_Functions): In a generic context
	we do not build the bodies of predicate fuctions, but the
	expression in a static predicate must be elaborated to allow
	case coverage checking within the generic unit.
	(Build_Discrete_Static_Predicate): In a generic context, return
	without building function body once the
	Static_Discrete_Predicate expression for the type has been
	constructed.

2019-07-03  Hristian Kirtchev  <kirtchev@adacore.com>

	* bindgen.adb, inline.adb, layout.adb, sem_ch12.adb,
	sem_ch13.adb, sem_ch7.adb, styleg.adb: Minor reformatting.

2019-07-03  Bob Duff  <duff@adacore.com>

	* par-ch3.adb (P_Defining_Identifier): Call
	Check_Defining_Identifier_Casing.
	* style.ads, styleg.ads, styleg.adb
	(Check_Defining_Identifier_Casing): New procedure to check for
	mixed-case defining identifiers.
	* stylesw.ads, stylesw.adb (Style_Check_Mixed_Case_Decls): New
	flag for checking for mixed-case defining identifiers.
	* doc/gnat_ugn/building_executable_programs_with_gnat.rst:
	Document new feature.
	* gnat_ugn.texi: Regenerate.

2019-07-03  Eric Botcazou  <ebotcazou@adacore.com>

	* doc/gnat_ugn/building_executable_programs_with_gnat.rst
	(Warning message control): Document that -gnatw.z/Z apply to
	array types.
	* freeze.adb (Freeze_Entity): Give -gnatw.z warning for array
	types as well, but not if the specified alignment is the minimum
	one.
	* gnat_ugn.texi: Regenerate.

2019-07-03  Bob Duff  <duff@adacore.com>

	* einfo.ads, exp_util.adb, layout.ads, sinfo.ads: Spell "laid"
	correctly.

2019-07-03  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): No error
	message on attribute applied to a renaming when the renamed
	object is an aggregate (from code reading).
	(Check_Aspect_At_End_Of_Declarations): In a generic context
	where freeze nodes are not generated, the original expression
	for an aspect may need to be analyzed to precent spurious
	conformance errors when compared with the expression that is
	anakyzed at the end of the current declarative list.

2019-07-03  Eric Botcazou  <ebotcazou@adacore.com>

	* layout.adb (Layout_Type): Do not set the component size of an
	array with a scalar component if the component type is
	overaligned.

2019-07-03  Ed Schonberg  <schonberg@adacore.com>

	* inline.adb (Make_Loop_Labels_Unique): New procedure to modify
	the source code of subprograms that are inlined by the
	front-end, to prevent accidental duplication between loop labels
	in the inlined code and the code surrounding the inlined call.

2019-07-03  Hristian Kirtchev  <kirtchev@adacore.com>

	* doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update
	the section on resolving elaboration circularities to eliminate
	certain combinations of switches which together do not produce
	the desired effect and confuse users.
	* gnat_ugn.texi: Regenerate.

2019-07-03  Arnaud Charlet  <charlet@adacore.com>

	* bindgen.adb (Gen_Main): Disable generation of reference to
	Ada_Main_Program_Name for CCG.
	* bindusg.adb (Display): Add -G to the command-line usage for
	gnatbind.
	* opt.ads (Generate_C_Code): Update comment.
	* switch-b.adb (Scan_Binder_Switches): Add handling for -G.

2019-07-03  Arnaud Charlet  <charlet@adacore.com>

	* sem_ch7.adb (Has_Referencer): Do not consider inlined
	subprograms when generating C code, which allows us to generate
	static inline subprograms.

2019-07-03  Justin Squirek  <squirek@adacore.com>

	* sem_ch6.adb (Check_Conformance): Add expression checking for
	constant modifiers in anonymous access types (in addition to
	"non-null" types) so that they are considered "matching" for
	subsequent conformance tests.

2019-07-03  Arnaud Charlet  <charlet@adacore.com>

	* doc/gnat_rm/standard_and_implementation_defined_restrictions.rst:
	Clarify wording on No_Multiple_Elaboration.
	* gnat_rm.texi: Regenerate.

2019-07-03  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Find_Selected_Component): If the prefix is the
	current instance of a type or subtype, complete the resolution
	of the name by finding the component of the type denoted by the
	selector name.

2019-07-03  Eric Botcazou  <ebotcazou@adacore.com>

	* doc/gnat_rm/interfacing_to_other_languages.rst (Interfacing to C):
	Document that boolean types with convention C now map to C99 bool.
	* gnat_rm.texi: Regenerate.

2019-07-03  Javier Miranda  <miranda@adacore.com>

	* exp_attr.adb (Expand_Min_Max_Attribute): Code cleanup:
	removing code that it is now never executed in the CCG compiler
	(dead code).

2019-07-02  Iain Sandoe  <iain@sandoe.co.uk>

	* libgnat/system-darwin-ppc.ads: Set Stack_Check_Probes True for
	PPC Darwin.

2019-07-01  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Is_Defaulted): New predicate in
	Check_Formal_Package_Intance, to skip the conformance of checks
	on parameters of a formal package that are defaulted,

2019-07-01  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb, exp_ch9.adb, exp_unst.adb, sem_ch4.adb,
	sem_prag.adb, sem_spark.adb: Minor reformatting.

2019-07-01  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Analyze_Attribute, case Enum_Rep): Allow prefix
	of attribute to be an attribute reference of a discrete type.

2019-07-01  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch12.adb (Analyze_Subprogram_Instantiation): Move up
	handling of Has_Pragma_Inline_Always and deal with
	Has_Pragma_No_Inline.

2019-07-01  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Build_Derived_Record_Type): If the parent type is
	declared as a subtype of a private type with an inherited
	discriminant constraint, its generated full base appears as a
	record subtype, so we need to retrieve its oen base type so that
	the inherited constraint can be applied to it.

2019-07-01  Yannick Moy  <moy@adacore.com>

	* sem_spark.adb: Completely rework the algorithm for ownership
	checking, as the rules in SPARK RM have changed a lot.
	* sem_spark.ads: Update comments.

2019-07-01  Dmitriy Anisimkov  <anisimko@adacore.com>

	* gsocket.h (Has_Sockaddr_Len): Use the offset of sin_family offset in
	the sockaddr_in structure to determine the existence of length field
	before the sin_family.

2019-07-01  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Analyze_Pragma, case Weak_External): Pragma only
	applies to entities with run-time addresses, not to types.

2019-07-01  Piotr Trojanek  <trojanek@adacore.com>

	* einfo.adb, sem_ch7.adb, sem_prag.adb, sem_util.adb: Update
	references to the SPARK RM after the removal of Rule 7.1.4(5).

2019-07-01  Piotr Trojanek  <trojanek@adacore.com>

	* sysdep.c: Cleanup references to LynuxWorks in docs and
	comments.

2019-07-01  Ed Schonberg  <schonberg@adacore.com>

	* checks.adb (Insert_Valid_Check): Do not apply validity check
	to variable declared within a protected object that uses the
	Lock_Free implementation, to prevent unwarranted constant
	folding, because entities within such an object msut be treated
	as volatile.

2019-07-01  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch9.adb (Check_Inlining): Deal with Has_Pragma_No_Inline.

2019-07-01  Ed Schonberg  <schonberg@adacore.com>

	* exp_unst.adb (Visit_Node, Check_Static_Type): Improve the
	handling of private and incomplete types whose full view is an
	access type, to detect additional uplevel references in dynamic
	bounds. This is relevant to N_Free_Statement among others that
	manipulate types whose full viww may be an access type.

2019-07-01  Pat Rogers  <rogers@adacore.com>

	* doc/gnat_rm/representation_clauses_and_pragmas.rst: Correct
	size indicated for R as a component of an array.
	* gnat_rm.texi: Regenerate.

2019-07-01  Justin Squirek  <squirek@adacore.com>

	* libgnat/s-win32.ads: Add definition for ULONG, modify
	OVERLAPPED type, and add appropriate pragmas.

2019-07-01  Bob Duff  <duff@adacore.com>

	* gnat1drv.adb (gnat1drv): Call Write_ALI if the main unit is
	ignored-ghost.

2019-07-01  Yannick Moy  <moy@adacore.com>

	* sem_ch4.adb (Operator_Check): Refine error message.

2019-07-01  Piotr Trojanek  <trojanek@adacore.com>

	* libgnat/a-calend.ads: Revert "Global => null" contracts on
	non-pure routines.

2019-07-01  Piotr Trojanek  <trojanek@adacore.com>

	* exp_attr.adb, libgnat/g-graphs.ads: Fix typos in comments:
	componant -> component.

2019-07-01  Hristian Kirtchev  <kirtchev@adacore.com>

	* libgnat/g-graphs.adb: Use type Directed_Graph rather than
	Instance in various routines.
	* libgnat/g-graphs.ads: Change type Instance to Directed_Graph.
	Update various routines that mention the type.

2019-07-01  Hristian Kirtchev  <kirtchev@adacore.com>

	* libgnat/g-sets.adb: Use type Membership_Set rathern than
	Instance in various routines.
	* libgnat/g-sets.ads: Change type Instance to Membership_Set.
	Update various routines that mention the type.

2019-07-01  Hristian Kirtchev  <kirtchev@adacore.com>

	* libgnat/g-lists.adb: Use type Doubly_Linked_List rather than
	Instance in various routines.
	* libgnat/g-lists.ads: Change type Instance to
	Doubly_Linked_List. Update various routines that mention the
	type.

2019-07-01  Hristian Kirtchev  <kirtchev@adacore.com>

	* libgnat/g-dynhta.adb: Use type Dynamic_Hash_Table rather than
	Instance in various routines.
	* libgnat/g-dynhta.ads: Change type Instance to
	Dynamic_Hash_Table. Update various routines that mention the
	type.

2019-07-01  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_attr.adb, exp_ch7.adb, exp_unst.adb, sem_ch3.adb,
	sem_util.adb, uintp.adb, uintp.ads: Minor reformatting.

2019-07-01  Javier Miranda  <miranda@adacore.com>

	* exp_attr.adb (Expand_Min_Max_Attribute): Disable expansion of
	'Min/'Max on integer, enumeration, fixed point and floating
	point types since the CCG backend now provides in file
	standard.h routines to support it.

2019-07-01  Hristian Kirtchev  <kirtchev@adacore.com>

	* impunit.adb: Add GNAT.Graphs to list Non_Imp_File_Names_95.
	* Makefile.rtl, gcc-interface/Make-lang.in: Register unit
	GNAT.Graphs.
	* libgnat/g-dynhta.adb: Various minor cleanups (use Present
	rather than direct comparisons).
	(Delete): Reimplement to use Delete_Node.
	(Delete_Node): New routine.
	(Destroy_Bucket): Invoke the provided destructor.
	(Present): New routines.
	* libgnat/g-dynhta.ads: Add new generic formal Destroy_Value.
	Use better names for the components of iterators.
	* libgnat/g-graphs.adb, libgnat/g-graphs.ads: New unit.
	* libgnat/g-lists.adb: Various minor cleanups (use Present
	rather than direct comparisons).
	(Delete_Node): Invoke the provided destructor.
	(Present): New routine.
	* libgnat/g-lists.ads: Add new generic formal Destroy_Element.
	Use better names for the components of iterators.
	(Present): New routine.
	* libgnat/g-sets.adb, libgnat/g-sets.ads (Destroy, Preset,
	Reset): New routines.

2019-07-01  Dmitriy Anisimkov  <anisimko@adacore.com>

	* libgnat/g-sothco.adb (Get_Address): Fix the case when AF_INET6
	is not defined.

2019-07-01  Ed Schonberg  <schonberg@adacore.com>

	* exp_attr.adb (Expand_Attribute_Reference, case Invalid_Value):
	Resolve result of call to Get_Simple_Init_Val, which may be a
	conversion of a literal.

2019-07-01  Hristian Kirtchev  <kirtchev@adacore.com>

	* freeze.adb (Freeze_Expression): Remove the horrible useless
	name hiding of N. Insert the freeze nodes generated by the
	expression prior to the expression when the nearest enclosing
	scope is transient.

2019-07-01  Pierre-Marie de Rodat  <derodat@adacore.com>

	* doc/gnat_ugn/building_executable_programs_with_gnat.rst: Fix
	formatting issues in the -gnatR section.
	* gnat_ugn.texi: Regenerate.

2019-06-30  Iain Sandoe  <iain@sandoe.co.uk>

	* gnatlink.adb (Link_Step): Remove duplicate -static-libgcc switches.
	Push -shared-libgcc explicitly, when it is the target default (unless
	overidden by the static flag).
	When the user has put an instance of shared/static-libgcc do not push
	a duplicate of this.

2019-06-29  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity): Beep up comment on SAVED,
	and tweak comment on the assertion about the scopes of Itypes.  Do not
	skip the regular processing for Itypes that are E_Record_Subtype with
	a Cloned_Subtype.  Get the Cloned_Subtype for every E_Record_Subtype
	if the type is dummy and hasn't got its own freeze node.
	<E_Record_Subtype>: Save again the DECL of the Cloned_Subtype, if any.
	<E_Access_Subtype>: Save again the DECL of the equivalent type.
	(Gigi_Equivalent_Type) <E_Access_Subtype>: New case.

2019-06-29  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (unchecked_convert): Tweak comment.  Only skip
	dereferences when padding to have the same size on both sides.  Do it
	for destination types with self-referential size too.

2019-06-29  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: If the
	type requires strict alignment, then set the RM size to the type size.
	Rework handling of alignment and sizes of tagged types in ASIS mode.
	(validate_size): Rename local variable and remove special handling for
	strict-alignment types.
	* gcc-interface/utils.c (finish_record_type): Constify local variables
	and use properly typed constants.

2019-06-29  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_field): Rework error messages for
	fields requiring strict alignment, add explicit test on Storage_Unit
	for position and size, and mention type alignment for position.

2019-06-29  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (mark_visited_r): Set TYPE_SIZES_GIMPLIFIED on
	the main variant of a type, if any.

2019-06-29  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (set_nonaliased_component_on_array_type): Add
	missing guard for the presence of TYPE_CANONICAL.
	(set_reverse_storage_order_on_array_type): Likewise.

2019-06-29  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/gigi.h (make_packable_type): Remove default value.
	(value_factor_p): Tweak prototype.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Add comment.
	(gnat_to_gnu_component_type): Likewise.
	(gnat_to_gnu_field): Likewise.  Fetch the position of the field earlier
	and simplify the condition under which the type is packed.  Declare
 	local variable is_bitfield.  Pass 1 as max_align to make_packable_type
	if it is set to true.
	(copy_and_substitute_in_layout): Pass 0 to make_packable_type.
	* gcc-interface/utils.c (make_packable_array_type): New function.
	(make_packable_type): Use it to rewrite the type of array field.
	(maybe_pad_type): Pass align parameter to make_packable_type.
	(create_field_decl): Minor tweaks.
	(value_factor_p): Assert that FACTOR is a power of 2 and replace the
	modulo computation by a masking operation.

2019-06-25  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity): Remove superfluous test
	in previous change.
	* gcc-interface/gigi.h (maybe_character_type): Fix formatting.
	(maybe_character_value): Likewise.

2019-06-24  Jan Hubicka  <jh@suse.cz>

	* gcc-interface/decl.c (gnat_to_gnu_entity): Check that
	type is array or integer prior checking string flag.
	* gcc-interface/gigi.h (maybe_character_type): Likewise.
	(maybe_character_value): Likewise.

2019-06-24  Martin Sebor  <msebor@redhat.com>

	* gcc-interface/utils.c (handle_nonnull_attribute): Quote attribute
	name.

2019-06-18  Arnaud Charlet  <charlet@adacore.com>

	PR ada/80590
	* sem_ch5.adb (Analyze_Loop_Statement): Avoid exception propagation
	during normal processing.

2019-06-17  Arnaud Charlet  <charlet@adacore.com>

	PR ada/80590
	* exp_ch9.adb (Expand_N_Delay_Relative_Statement): Swap the two
	conditions to avoid a unnecessary exception propagation in the default
	case.

2019-05-28  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (handle_stack_protect_attribute): Move around.

2019-05-28  Eric Botcazou  <ebotcazou@adacore.com>

	* doc/gnat_rm/implementation_defined_pragmas.rst (Machine_Attribute):
	Document additional optional parameters.
	* sem_prag.adb (Analyze_Pragma) <Pragma_Machine_Attribute>: Accept
	more than one optional parameter.
	* gcc-interface/decl.c (prepend_one_attribute_pragma): Alphabetize
	the list of supported pragmas.  Simplify the handling of parameters
	and add support for more than one optional parameter.
	* gcc-interface/utils.c (attr_cold_hot_exclusions): New constant.
	(gnat_internal_attribute_table): Add entry for no_icf, noipa, flatten,
	used, cold, hot, target and target_clones.
	(begin_subprog_body): Do not create the RTL for the subprogram here.
	(handle_noicf_attribute): New static function.
	(handle_noipa_attribute): Likewise.
	(handle_flatten_attribute): Likewise.
	(handle_used_attribute): Likewise.
	(handle_cold_attribute): Likewise.
	(handle_hot_attribute): Likewise.
	(handle_target_attribute): Likewise.
	(handle_target_clones_attribute): Likewise.

2019-05-28  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (lvalue_required_for_attribute_p): Return 0
	for 'Size too.
	(Identifier_to_gnu): Use the actual subtype for a reference to a
	packed array in a return statement.
	(Attribute_to_gnu) <Attr_Size>: Do not strip VIEW_CONVERT_EXPRs from
	the prefix in every case.

2019-05-28  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (gnat_to_gnu): Remove superfluous tests on
	Backend_Overflow_Checks_On_Target and rework comments.

2019-05-28  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (walk_nesting_tree): New static function.
	(finalize_nrv): Use it to walk the entire nesting tree.

2019-05-28  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Subtype>: Remove
	obsolete test on Is_For_Access_Subtype.

2019-05-28  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (components_to_record): Set a name on the type
	created for the REP part, if any.
	* gcc-interface/utils.c (finish_record_type): Only take the maximum
	when merging sizes for a variant part at offset 0.
	(merge_sizes): Rename has_rep parameter into max.

2019-05-28  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (gnat_internal_attribute_table): Add support
	for stack_protect attribute.
	(handle_stack_protect_attribute): New static function.

2019-05-28  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (intrin_arglists_compatible_p): Do not return
	false if the internal builtin uses a variable list.

2019-05-27  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Call_to_gnu): Do not initialize the temporary
	created out of addressability concerns if it's for the _Init parameter
	of an initialization procedure.

2019-05-27  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/ada-builtin-types.def: New file.
	* gcc-interface/ada-builtins.def: Likewise.
	* gcc-interface/ada-tree.h (BUILT_IN_LIKELY): New macro.
	(BUILT_IN_UNLIKELY): Likewise.
	* gcc-interface/trans.c (independent_iterations_p): Initialize the
	auto-vector to 16 elements.
	(Call_to_gnu): Remove local variable and change the vector of actual
	parameters to an auto-vector.  Do not convert actual parameters to
	the argument type for front-end built-in functions.  Add support for
	front-end built-in functions.
	(build_noreturn_cond): Use internal instead of built-in function.
	* gcc-interface/utils.c (c_builtin_type): Include ada-builtin-types.def
	(install_builtin_function_types): Likewise.
	(install_builtin_functions): Include ada-builtins.def first.

2019-05-27  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (maybe_pad_type): Issue the warning for the
	specific case of component types preferably.

2019-05-27  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Identifier_to_gnu): Minor tweaks.
	(gnat_to_gnu): Do not convert the result if it is a reference to an
	unconstrained array used as the prefix of an attribute reference that
	requires an lvalue.

2019-05-27  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Gigi_Types_Compatible): New predicate.
	(Identifier_to_gnu): Use it to assert that the type of the identifier
	and that of its entity are compatible for gigi.  Rename a couple of
	local variables and separate the processing of the result type.

2019-05-27  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Call_to_gnu): Use the unpadded type when
	putting back an intermediate conversion the type of the actuals.

2019-05-27  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (gnat_to_gnu) <Shift operations>: Convert the
	count to the unsigned version of its base type before proceeding.

2019-05-16  Martin Sebor  <msebor@redhat.com>

	* gcc-interface/trans.c (check_inlining_for_nested_subprog): Quote
	reserved names.

2019-05-08  Arnaud Charlet  <charlet@adacore.com>

	* standard.ads.h: New file.

2019-05-07  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* gcc-interface/Makefile.in (install-gcc-specs): Use foreach.
	Honor DESTDIR.

2019-04-29  Michael K. Darling  <darlingm@gmail.com>

	* gnatvsn.ads: Bump Library_Version to 10.

2019-04-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
	    Bernd Edlinger  <bernd.edlinger@hotmail.de>
	    Jakub Jelinek  <jakub@redhat.com>

	PR target/89093
	* raise-gcc.c (TARGET_ATTRIBUTE): Define.
	(continue_unwind, personality_body, PERSONALITY_FUNCTION): Add
	TARGET_ATTRIBUTE.

2019-04-07  Eric Botcazou  <ebotcazou@adacore.com>

	* libgnat/i-cexten.ads (CFloat_128): New type.

2019-03-22  Dmitriy Anisimkov  <anisimko@adacore.com>

	PR ada/89583
	* libgnat/g-socket.adb (Bind_Socket, Connect_Socket,
	Send_Socket): Fix the computation of structure lengths passed to
	low level routines.
	(Is_IPv6_Address): Fix the number of expected colons.

2019-03-11  Martin Liska  <mliska@suse.cz>

	* gcc-interface/misc.c (gnat_post_options): Wrap option name in string
	format message and fix GNU coding style.

2019-02-08  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (gnat_to_gnu) <N_Aggregate>: Minor tweak.
	* gcc-interface/utils.c (convert): Do not pad when doing an unchecked
	conversion here.  Use TREE_CONSTANT throughout the function.
	(unchecked_convert): Also pad if the source is a CONSTRUCTOR and the
	destination is a more aligned array type or a larger aggregate type,
	but not between original and packable versions of a type.

2019-02-08  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (max_size) <tcc_unary>: Be prepared for an
	operand with VOID_TYPE.

2019-02-08  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (elaborate_all_entities): Do not elaborate the
	entities of a package renaming another one.

2019-02-08  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Regular_Loop_to_gnu): Replace tests on
	individual flag_unswitch_loops and flag_tree_loop_vectorize switches
	with test on global optimize switch.
	(Raise_Error_to_gnu): Likewise.

2019-02-07  Eric Botcazou  <ebotcazou@adacore.com>

	* libgnarl/s-linux__sparc.ads (ETIMEDOUT): Set to correct value.

2019-02-06  Arnaud Charlet  <charlet@adacore.com>

	* libgnarl/s-linux__x32.ads: Resync list of signals with s-linux.ads

2019-01-27  Eric Botcazou  <ebotcazou@adacore.com>

	* repinfo.adb (List_Component_Layout): Remove superfluous space for
	zero-sized field.
	* gcc-interface/ada-tree.h (TYPE_IS_EXTRA_SUBTYPE_P): New macro.
	* gcc-interface/gigi.h (create_extra_subtype): Declare.
	* gcc-interface/decl.c (TYPE_ARRAY_SIZE_LIMIT): Likewise.
	(update_n_elem): New function.
	(gnat_to_gnu_entity): Use create_extra_subtype to create extra subtypes
	instead of doing it manually.
	<E_Array_Type>: Use update_n_elem to compute the maximum size.  Use the
 	index type instead of base type for the bounds. Set TYPE_ARRAY_MAX_SIZE
	of the array to the maximum size.
	<E_Array_Subtype>: Create an extra subtype using the index type of the
	base array type for self-referential bounds.  Use update_n_elem to
	compute the maximum size.  Set TYPE_ARRAY_MAX_SIZE of the array to the
	maximum size.
	(gnat_to_gnu_field): Clear DECL_NONADDRESSABLE_P on discriminants.
	* gcc-interface/misc.c (gnat_get_alias_set): Return the alias set of
	the base type for an extra subtype.
	(gnat_type_max_size): Remove obsolete code.
	* gcc-interface/trans.c (Attribute_to_gnu): Minor tweak.
	(can_be_lower_p): Deal with pathological types.
	* gcc-interface/utils.c (create_extra_subtype): New function.
	(create_field_decl): Minor tweak.
	(max_size) <tcc_reference>: Compute a better value by using the extra
 	subtypes on the self-referential bounds.
	<tcc_binary>: Rewrite.  Deal with "negative value" in unsigned types.
	<tcc_expression>: Likewise.
	* gcc-interface/utils2.c (compare_arrays): Retrieve the original bounds
	of the arrays upfront.  Swap only if the second length is not constant.
	Use comparisons on the original bounds consistently for the null tests.
	(build_binary_op): Use TYPE_IS_EXTRA_SUBTYPE_P macro.
	(build_allocator): Minor tweak.

2019-01-27  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (array_type_has_nonaliased_component): Return
	the same value for every dimension of a multidimensional array type.

2019-01-26  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Regular_Loop_to_gnu): Use the SLOC of the
	iteration scheme, if present, throughout the translation.

2019-01-26  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (gnat_to_gnu) <N_Assignment_Statement>: Use
	DECL_SIZE_UNIT instead of TYPE_SIZE_UNIT for the size to be assigned
	by a call to memset if the LHS is a DECL.

2019-01-26  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (struct loop_info_d): Remove artificial field.
	(Loop_Statement_to_gnu): Do not set it.

2019-01-26  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Iterate_Acc_Clause_Arg): Fix formatting.
	(Acc_gnat_to_gnu): Likewise.
	(Acc_Data_to_gnu): Likewise.
	(Acc_Var_to_gnu): Likewise.
	(Acc_Reduc_to_gnu): Likewise.
	(Acc_Size_List_to_gnu): Likewise.
	(Pragma_to_gnu) <Pragma_Acc_Loop>: Likewise.
	<Pragma_Acc_Data>): Likewise.
	(find_loop_for): Remove default value for parameters.
	* gcc-interface/trans.c (gnat_to_gnu) <N_Op_And>: Merge into...
	<N_Op_Eq>): ...this.

2019-01-26  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (annotate_value) <INTEGER_CST>: Use test on
	the sign bit instead of on the sign of the value.
	<PLUS_EXPR>: Turn addition of negative constant into subtraction.
	<MULT_EXPR>: Add test for degenerate case.
	<BIT_AND_EXPR>: Simplify.

2019-01-18  Sebastian Huber  <sebastian.huber@embedded-brains.de>

	* s-oscons-tmplt.c (AF_INET6): Do not undefine for RTEMS.

2019-01-09  Sandra Loosemore  <sandra@codesourcery.com>

	PR other/16615
	* exp_ch11.adb: Change "can not" to "cannot".
	* sem_ch4.adb: Likewise.

2019-01-09  Sandra Loosemore  <sandra@codesourcery.com>

	PR other/16615
	* exp_ch9.adb: Mechanically replace "can not" with "cannot".
	* libgnat/s-regpat.ads: Likewise.
	* par-ch4.adb: Likewise.
	* set_targ.adb: Likewise.
	* types.ads: Likewise.

2019-01-08  Justin Squirek  <squirek@adacore.com>

	Revert:
	2018-07-31  Justin Squirek  <squirek@adacore.com>

	* lib-writ.adb (Write_With_Lines): Modfiy the generation
	of dependencies within ali files so that source unit
	bodies are properly listed even if said bodies are
	missing.  Perform legacy behavior in GNATprove mode.
	* lib-writ.ads: Modify documentation to reflect current
	behavior.

	and:
	2018-09-26  Justin Squirek  <squirek@adacore.com>

	* lib-writ.adb, lib-writ.ads (Write_With_Lines): Add
	documentation and an extra conditional check for RCI
	units so that generated ali files will list the spec
	only instead of a body when a body is not found.

2019-01-04  Eric Botcazou  <ebotcazou@adacore.com>

	* gnatvsn.ads: Bump copyright year.

2019-01-01  Jakub Jelinek  <jakub@redhat.com>

	Update copyright years.

 	* gnat_ugn.texi: Bump @copying's copyright year.
 	* gnat_rm.texi: Likewise.

Copyright (C) 2019 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
