2017-11-23  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/83091
	* gcc-interface/decl.c (gnat_to_gnu_entity): Do not build a variant
	type for the implementation type of a packed array.

2017-11-23  Mike Stump  <mikestump@comcast.net>
            Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (gnat_gimplify_stmt) <LOOP_STMT>: Pass 3rd
	operand to ANNOTATE_EXPR and also pass unrolling hints.

2017-11-20  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/83016
	* gnatlink.adb (Process_Args): Accept multiple switches for --LINK.
	(Usage): Adjust.
	* gcc-interface/Makefile.in (GCC_LINK): Remove $(ADA_INCLUDES).
	(common-tools): Pass $(CC) as --GCC= and $(GCC_LINK) as --LINK= in
	the invocations of $(GNATLINK).
	(../../gnatdll$(exeext)): Likewise.
	(../../vxaddr2line$(exeext)): Likewise.
	(gnatmake-re): Likewise.
	(gnatlink-re): Likewise.

2017-11-16  Doug Rupp  <rupp@adacore.com>

	* gcc-interface/Makefile.in: Merge Aarch64 and ARM "ifeq" blocks.

2017-11-16  Steve Baird  <baird@adacore.com>

	* debug.adb: Update another comment to indicate gnat2scil's use of the
	-gnatd.7 switch.

2017-11-16  Bob Duff  <duff@adacore.com>

	* exp_ch6.adb (Expand_Call_Helper): Avoid creating a transient scope in
	the case of nested build-in-place calls.

2017-11-16  Joel Brobecker  <brobecker@adacore.com>

	* doc/gnat_ugn/gnat_utility_programs.rst: Document the switches
	available in gnatsymbolize.

2017-11-16  Steve Baird  <baird@adacore.com>

	* debug.adb: Update comment to indicate gnat2scil's use of the -gnatd.7
	switch.

2017-11-16  Gary Dismukes  <dismukes@adacore.com>

	* doc/gnat_ugn/elaboration_order_handling_in_gnat.rst, sem_ch6.adb,
	sem_elab.adb: Minor editorial corrections.
	* gnat_ugn.texi: Regenerate.

2017-11-16  Joel Brobecker  <brobecker@adacore.com>

	* doc/gnat_ugn/gnat_utility_programs.rst (GNAT UGN): Add
	gnatsymbolize documentation.
	* gnat_ugn.texi: Regenerate.

2017-11-16  Steve Baird  <baird@adacore.com>

	* sem_ch3.adb (Build_Derived_Record_Type): Replace all uses of
	"Scope (Parent_Type)" with "Scope (Parent_Base)".

2017-11-16  Hristian Kirtchev  <kirtchev@adacore.com>

	* opt.ads: Elaboration warnings are now on by default. Add a comment
	explaining why this is needed.
	* sem_ch9.adb (Analyze_Requeue): Preserve the status of elaboration
	warnings.
	* sem_ch12.adb (Analyze_Package_Instantiation): Preserve the status of
	elaboration warnings.
	(Analyze_Subprogram_Instantiation): Preserve the status of elaboration
	warnings.
	* sem_elab.adb: Update the structure of Call_Attributes and
	Instantiation_Attributes.
	(Build_Call_Marker): Propagate the status of elaboration warnings from
	the call to the marker.
	(Extract_Call_Attributes): Extract the status of elaboration warnings.
	(Extract_Instantiation_Attributes): Extract the status of elaboration
	warnings.
	(Process_Conditional_ABE_Activation_Impl): Elaboration diagnostics are
	now dependent on the status of elaboration warnings.
	(Process_Conditional_ABE_Call_Ada): Elaboration diagnostics are now
	dependent on the status of elaboration warnings.
	(Process_Conditional_ABE_Instantiation_Ada): Elaboration diagnostics
	are now dependent on the status of elaboration warnings.
	(Process_Guaranteed_ABE_Activation_Impl): Remove pragma Unreferenced
	for formal Call_Attrs. Elaboration diagnostics are now dependent on the
	status of elaboration warnings.
	(Process_Guaranteed_ABE_Call): Elaboration diagnostics are now
	dependent on the status of elaboration warnings.
	(Process_Guaranteed_ABE_Instantiation): Elaboration diagnostics are now
	dependent on the status of elaboration warnings.
	* sem_prag.adb (Analyze_Pragma): Remove the unjustified warning
	concerning pragma Elaborate.
	* sem_res.adb (Resolve_Call): Preserve the status of elaboration
	warnings.
	(Resolve_Entry_Call): Propagate flag Is_Elaboration_Warnings_OK_Node
	from the procedure call to the entry call.
	* sem_util.adb (Mark_Elaboration_Attributes): Add formal parameter
	Warnings.
	(Mark_Elaboration_Attributes_Node): Preserve the status of elaboration
	warnings
	* sem_util.ads (Mark_Elaboration_Attributes): Add formal parameter
	Warnings. Update the comment on usage.
	* sinfo.adb (Is_Dispatching_Call): Update to use Flag6.
	(Is_Elaboration_Warnings_OK_Node): New routine.
	(Set_Is_Dispatching_Call): Update to use Flag6.
	(Set_Is_Elaboration_Warnings_OK_Node): New routine.
	* sinfo.ads: Attribute Is_Dispatching_Call now uses Flag6. Add new
	attribute Is_Elaboration_Warnings_OK_Node along with occurrences
	in nodes.
	(Is_Elaboration_Warnings_OK_Node): New routine along with pragma
	Inline.
	(Set_Is_Elaboration_Warnings_OK_Node): New routine along with pragma
	Inline.
	* doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update various
	sections to indicate how to suppress elaboration warnings.  Document
	switches -gnatwl and -gnatwL.
	* gnat_ugn.texi: Regenerate.

2017-11-16  Sylvain Dailler  <dailler@adacore.com>

	* sem_util.adb (Get_Enum_Lit_From_Pos): Add a condition for Pos
	lower than 0.

2017-11-16  Bob Duff  <duff@adacore.com>

	* sem_ch13.adb (Check_Expr_Constants): Avoid error message in case of
	System'To_Address.

2017-11-16  Yannick Moy  <moy@adacore.com>

	* sem_elab.adb (Include): Fix mode of parameter Curr to out.

2017-11-16  Piotr Trojanek  <trojanek@adacore.com>

	* sem_util.ads, sem_util.adb (Is_CCT_Instance): Allow calls where
	Context_Id denotes a record type.

2017-11-16  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch8.adb (Check_SPARK_Primitive_Operation): Enable the check in
	instantiations.

2017-11-16  Doug Rupp  <rupp@adacore.com>

	Initial gnat port to aarch64-wrs-vxworks7
	* libgnarl/s-vxwork__aarch64.ads,
	libgnat/system-vxworks7-aarch64-rtp-smp.ads,
	libgnat/system-vxworks7-aarch64.ads: New files
	* sigtramp-vxworks-target.inc (aarch64): New section.
	* tracebak.c (USE_ARM_UNWINDING): Disable for ARMARCH8A.

2017-11-16  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_elab.adb (Include): Including a node which is also a compilation
	unit terminates the search because there are no more lists to examine.

2017-11-16  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch8.adb (Analyze_Subprogram_Renaming): Ensure that a renaming
	declaration does not define a primitive operation of a tagged type for
	SPARK.
	(Check_SPARK_Primitive_Operation): New routine.

2017-11-16  Arnaud Charlet  <charlet@adacore.com>

	* libgnat/a-elchha.adb (Last_Chance_Handler): Display Argv (0) in
	message when using -E binder switch.

2017-11-16  Piotr Trojanek  <trojanek@adacore.com>

	* errout.ads: Fix minor typo in comment.

2017-11-16  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Process_Subtype): If the subtype indication does not
	syntactically denote a type, return Any_Type to prevent subsequent
	compiler crashes or infinite loops.

2017-11-16  Steve Baird  <baird@adacore.com>

	* lib-writ.adb: Fix bug which causes Program_Error to be raised in some
	cases when writing out a .ali file when a Rename_Pragma pragma is in
	effect.
	* lib-writ.adb (Write_Unit_Information): Replace call to
	Pragma_Name_Unmapped with call to Pragma_Name.

2017-11-16  Gary Dismukes  <dismukes@adacore.com>

	* sem_elab.adb: Minor typo fixes.

2017-11-16  Justin Squirek  <squirek@adacore.com>

	* sem_res.adb (Resolve_Allocator): Correct warning messages and make
	them more explicit.

2017-11-16  Hristian Kirtchev  <kirtchev@adacore.com>

	* atree.ads (Nkind_In): Add 10 and 11 parameter versions.
	* checks.adb (Install_Primitive_Elaboration_Check): Mark the setting of
	the elaboration flag as elaboration code.
	* einfo.adb (Contract): Update the comments.
	(Ignore_SPARK_Mode_Pragmas): Update the comments.
	(SPARK_Aux_Pragma): Update the comments.
	(SPARK_Aux_Pragma_Inherited): Update the comments.
	(SPARK_Pragma): Update the comments. The attribute now applies
	to all types and abstract states.
	(SPARK_Pragma_Inherited): Update the comments. The attribute now
	applies to all types and abstract states.
	(Set_Contract): Update the comments.
	(Set_Ignore_SPARK_Mode_Pragmas): Update the comments.
	(Set_SPARK_Aux_Pragma): Update the comments.
	(Set_SPARK_Aux_Pragma_Inherited): Update the comments.
	(Set_SPARK_Pragma): Update the comments. The attribute now applies to
	all types and abstract states.
	(Set_SPARK_Pragma_Inherited): Update the comments. The attribute now
	applies to all types and abstract states.
	(Write_Field40_Name): Add output for SPARK_Pragma when it appears on a
	type and abstract states.
	* einfo.ads: Update the documentation of attributes SPARK_Pragma and
	SPARK_Pragma_Inherited.  Both of them now apply to all types and
	abstract states.
	* exp_util.adb (Set_Elaboration_Flag): Mark the setting of the
	elaboration flag as elaboration code.
	* sem_ch3.adb: Add with and use clauses for Sem_Elab.
	(Analyze_Full_Type_Declaration): Set the SPARK_Mode of the type. Record
	a derived type for later processing by the ABE mechanism.
	(Analyze_Incomplete_Type_Decl): Set the SPARK_Mode of the type.
	(Analyze_Private_Extension_Declaration): Set the SPARK_Mode of the
	type.
	* sem_ch7.adb (Analyze_Private_Type_Declaration): Set the SPARK_Mode of
	the type.
	* sem_elab.adb: Define the term "early call region".  Update the
	terminology for "scenario" and "target".  Update the architecture of
	the ABE mechanism.  Update the steps which must be taken when adding a
	new scenario.  Update the section on debugging ABE issues.  Add new
	hash tables Early_Call_Regions and Recorded_SPARK_Scenarios.  Add new
	table SPARK_Scenarios.  Hash table Elaboration_Context is now
	Elaboration_Statuses.  The majority of Process_xxx routines have been
	updated to better reflect their role.
	(Add_Unit): Reimplemented.
	(Check_Elaboration_Constituent): New routine.
	(Check_Elaboration_Scenarios): Verify previously recorded scenarios for
	conditional ABE issues. Verify previously recorded SPARK scenarios.
	(Check_SPARK_Derived_Type): New routine.
	(Check_SPARK_Instantiation): New routine.
	(Check_SPARK_Scenario): New routine.
	(Check_SPARK_Refined_State_Pragma): New routine.
	(Early_Call_Region): New routine.
	(Elaboration_Status): New routine.
	(Ensure_Prior_Elaboration): Add new formal parameter Prag_Nam. The
	implicit Elabotate[_All] pragma is now specified via Prag_Nam.
	(Find_Early_Call_Region): New routine.
	(Info_Scenario): Add output for refinement constituents.
	(Is_Recorded_SPARK_Scenario): New routine.
	(Is_Suitable_SPARK_Derived_Type): New routine.
	(Is_Suitable_SPARK_Instantiation): New routine.
	(Is_Suitable_SPARK_Refined_State_Pragma): New routine.
	(Is_Visited_Body): New routine.
	(Kill_Elaboration_Scenario): Reimplemented.
	(Output_Active_Scenarios): Add output for pragma Refined_State.
	(Output_SPARK_Refined_State_Pragma): New routine.
	(Process_Conditional_ABE_Call): Remove the use of -gnatd.v. The effect
	is now achieved by different means.
	(Process_Conditional_ABE_Call_SPARK): Verify that a call which precedes
	the subprogram body appears within the early call region of the body.
	Either ensure the prior elaboration of external subprograms or verify
	that the context meets the suitable elaboration requirement.
	(Process_Conditional_ABE_Instantiation_SPARK): New routine.
	(Record_Elaboration_Scenario): Reimplement the portion which enforces
	the level restrictions of the static model. Add support for SPARK
	scenarios.
	(Record_SPARK_Elaboration_Scenario): New routine.
	(Reset_Visited_Bodies): New routine.
	(Set_Early_Call_Region): New routine.
	(Set_Elaboration_Status): New routine.
	(Set_Is_Recorded_SPARK_Scenario): New routine.
	(Update_Elaboration_Scenario): Reimplemented.
	* sem_elab.ads: Add new subtype Library_Or_Instantiation_Level.
	* sem_prag.adb (Analyze_Refined_State_In_Decl_Part): Save the pragma
	for examination by the ABE Processing phase.
	(Create_Abstract_State): Save the SPARK_Mode from the context.
	* sem_util.adb (Is_Non_Preelaborable_Construct): New routine.
	* sem_util.ads (Is_Non_Preelaborable_Construct): New routine.
	* sinfo.adb (Is_Elaboration_Code): New routine.
	(Set_Is_Elaboration_Code): New routine.
	(Nkind_In): Add 10 and 11 parameter versions.
	* sinfo.ads: Add new attribute Is_Elaboration_Code along with
	occurrences in nodes.
	(Is_Elaboration_Code): New routine along with pragma Inline.
	(Set_Is_Elaboration_Code): New routine along with pragma Inline.
	(Nkind_In): Add 10 and 11 parameter versions.

2017-11-16  Justin Squirek  <squirek@adacore.com>

	* sem.adb (Analyze): Remove requirement that the original node of N be
	an operator in the case that analysis on the node yields the relevant
	operator - so prefer it instead.

2017-11-16  Bob Duff  <duff@adacore.com>

	* sem_ch6.adb (Create_Extra_Formals): The type of the BIP_Object_Access
	formal must not have a designated type that is the full view coming
	from a limited-with'ed package.
	* sem_util.adb,sem_util.ads (Incomplete_View_From_Limited_With): New
	function called from sem_ch6.
	* sem_ch5.adb (Analyze_Assignment): Treat user-defined concatenation
	specially for b-i-p cases.

2017-11-10  Martin Sebor  <msebor@redhat.com>

	PR c/81117
	* adadecode.c (__gnat_decode): Use memcpy instead of strncpy.
	* argv.c (__gnat_fill_arg, __gnat_fill_env): Likewise.

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

	* gcc-interface/utils.c (convert) <RECORD_TYPE>: Add comment and do
	not fall through to the next case.
	<ARRAY_TYPE>: Deal specially with a dereference from another array
	type with the same element type.

2017-11-09  Gary Dismukes  <dismukes@adacore.com>

	* exp_util.adb, freeze.adb: Minor reformatting.

2017-11-09  Jerome Lambourg  <lambourg@adacore.com>

	* gcc-interface/Makefile.in: Add rules to build aarch64-qnx runtimes.

2017-11-09  Hristian Kirtchev  <kirtchev@adacore.com>

	* gcc-interface/trans.c (gnat_to_gnu): Add processing for
	N_Variable_Reference_Marker nodes.

2017-11-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Analyze_Generic_Package_Declaration): Handle properly
	the pragma Compile_Time_Error when it appears in a generic package
	declaration and uses an expanded name to denote the current unit.

2017-11-09  Jerome Lambourg  <lambourg@adacore.com>

	* libgnarl/s-taprop__qnx.adb: Fix incorrect casing for pthread_self.
	* tracebak.c: Add support for tracebacks in QNX.

2017-11-09  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_aggr.adb (Aggr_Size_OK): Bump base limit from 50000 to 500000.

2017-11-09  Yannick Moy  <moy@adacore.com>

	* erroutc.adb, set_targ.adb: Remove pragma Annotate for CodePeer
	justification.

2017-11-09  Joel Brobecker  <brobecker@adacore.com>

	* doc/gnat_ugn/platform_specific_information.rst: Document packages
	needed on GNU/Linux by GNAT.
	* gnat_ugn.texi: Regenerate.

2017-11-09  Hristian Kirtchev  <kirtchev@adacore.com>

	* contracts.adb (Analyze_Contracts): Remove the three parameter
	version. This routine now only analyzes contracts and does not perform
	any freezing actions.
	(Analyze_Previous_Contracts): Removed.
	(Freeze_Previous_Contracts): New routine.
	* contracts.ads (Analyze_Previous_Contracts): Removed.
	(Freeze_Previous_Contracts): New routine.
	* sem_ch3.adb (Analyze_Declarations): Analyze the contract of an
	enclosing package spec regardless of whether the list denotes the
	visible or private declarations.  Fix the removal of partial state
	refinements when the context is a package spec.
	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Freeze previous
	contracts.
	* sem_ch7.adb (Analyze_Package_Body_Helper): Freeze previous contracts.
	* sem_ch9.adb (Analyze_Entry_Body): Freeze previous contracts.
	(Analyze_Protected_Body): Freeze previous contracts.
	(Analyze_Task_Body): Freeze previous contracts.
	* sem_prag.adb: Comment reformatting.

2017-11-09  Bob Duff  <duff@adacore.com>

	* libgnarl/g-thread.ads, libgnarl/g-thread.adb: (Make_Independent):
	Export this so users can use it without importing
	System.Tasking.Utilities.
	* libgnarl/s-tassta.adb (Vulnerable_Complete_Task): Relax assertion
	that fails when Make_Independent is called on a user task.
	* libgnarl/s-taskin.ads (Master_Of_Task): Avoid unusual
	capitalization style ((style) bad casing of "Master_of_Task").

2017-11-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Analyze_Subprogram_Instantiation): Correct use of
	uninitialized variable uncovered by Codepeer.

2017-11-09  Arnaud Charlet  <charlet@adacore.com>

	* namet.adb: Replace pragma Assume by pragma Assert to fix bootstrap.

2017-11-09  Javier Miranda  <miranda@adacore.com>

	* doc/gnat_rm/standard_and_implementation_defined_restrictions.rst:
	(Static_Dispatch_Tables): Minor rewording.
	* gnat_rm.texi: Regenerate.

2017-11-09  Justin Squirek  <squirek@adacore.com>

	* sem_ch8.adb (Analyze_Use_Package): Remove forced installation of
	use_clauses within instances.
	(Use_One_Package): Add condition to check for "hidden" open scopes to
	avoid skipping over packages that have not been properly installed even
	though they are visible.

2017-11-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Selected_Component): Reject properly a call to a
	private operation of a protected type, when the type has no visible
	operations.

2017-11-09  Javier Miranda  <miranda@adacore.com>

	* rtsfind.ads (RE_Id, RE_Unit_Table): Add RE_HT_Link.
	* exp_disp.adb (Make_DT): Initialize the HT_Link field of the TSD only
	if available.

2017-11-09  Bob Duff  <duff@adacore.com>

	* exp_ch4.adb, exp_ch9.adb, exp_prag.adb, par-ch3.adb, sem_aggr.adb,
	sem_ch12.adb, sem_ch13.adb, sem_ch4.adb, sem_disp.adb, sem_prag.adb,
	sem_res.adb, sem_util.adb: Get rid of warnings about uninitialized
	variables.

2017-11-09  Yannick Moy  <moy@adacore.com>

	* exp_disp.adb (Make_DT): Default initialize Ifaces_List and
	Ifaces_Comp_List.

2017-11-09  Pascal Obry  <obry@adacore.com>

	* libgnarl/s-taprop__mingw.adb: On Windows, initialize the thead handle
	only for foreign threads.  We initialize the thread handle only if not
	yet initialized. This happens in Enter_Task for foreign threads only.
	But for native threads (Ada tasking) we do want to keep the real
	handle (from Create_Task) to be able to free the corresponding
	resources in Finalize_TCB (CloseHandle).

2017-11-09  Yannick Moy  <moy@adacore.com>

	* sem_attr.adb (Analyze_Attribute): Default initialize P_Type,
	P_Base_Type.
	(Error_Attr_P): Fix name in pragma No_Return.
	(Unexpected_Argument): Add pragma No_Return.
	(Placement_Error): Add pragma No_Return.

2017-11-09  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Elab_Flag_Needed): Elaboration flag not needed when the
	dispatch table is statically built.
	(Make_DT): Declare constant the Interface_Table object associated with
	an statically built dispatch table. For this purpose the Offset_To_Top
	value of each interface is computed using the dummy object.
	* exp_ch3.adb (Build_Init_Procedure): Do not generate code initializing
	the Offset_To_Top field of secondary dispatch tables when the dispatch
	table is statically built.
	(Initialize_Tag): Do not generate calls to Register_Interface_Offset
	when the dispatch table is statically built.
	* doc/gnat_rm/standard_and_implementation_defined_restrictions.rst:
	Document the new GNAT restriction Static_Dispatch_Tables.
	* gnat_rm.texi: Regenerate.

2017-11-09  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_aggr.adb (Resolve_Delta_Record_Aggregate): Reorder declarations
	to avoid a dormant bug.

2017-11-09  Jerome Lambourg  <lambourg@adacore.com>

	* init.c: Define missing __gnat_alternate_stack for QNX. Set it to 0,
	as such capability is not available on the OS.
	* link.c: Make sure linker options for QNX are correct.
	* libgnarl/s-osinte__qnx.ads: Add some missing bindings to pthread.
	* libgnarl/s-taprop__qnx.adb: New, derived from s-taprop__posix.adb. This brings
	in particular a workaround with locks priority ceiling where a higher
	priority task is allowed to lock a lower ceiling priority lock. This
	also fixes the scheduling of FIFO tasks when the priority of a task is
	lowered.
	* libgnat/system-qnx-aarch64.ads: Fix priority ranges.

2017-11-09  Yannick Moy  <moy@adacore.com>

	* erroutc.adb (Output_Error_Msgs): Justify CodePeer false positive
	message.
	* gnatbind.adb (Scan_Bind_Arg): Simplify test to remove always true
	condition.
	* namet.adb (Copy_One_Character): Add assumption for static analysis,
	as knowledge that Hex(2) is in the range 0..255 is too complex for
	CodePeer.
	(Finalize): Add assumption for static analysis, as the fact that there
	are symbols in the table depends on a global invariant at this point in
	the program.
	* set_targ.adb (Check_Spaces): Justify CodePeer false positive message.
	* stylesw.adb (Save_Style_Check_Options): Rewrite to avoid test always
	true.

2017-11-09  Javier Miranda  <miranda@adacore.com>

	* libgnat/s-rident.ads (Static_Dispatch_Tables): New restriction name.
	* exp_disp.adb (Building_Static_DT): Check restriction.
	(Building_Static_Secondary_DT): Check restriction.
	(Make_DT): Initialize the HT_Link to No_Tag.
	* opt.ads (Static_Dispatch_Tables): Rename flag...
	(Building_Static_Dispatch_Tables): ... into this.  This will avoid
	conflict with the restriction name.
	* gnat1drv.adb: Update.
	* exp_aggr.adb (Is_Static_Dispatch_Table_Aggregate): Update.
	* exp_ch3.adb (Expand_N_Object_Declaration): Update.

2017-11-09  Pascal Obry  <obry@adacore.com>

	* libgnarl/s-taprop__mingw.adb: Minor code clean-up.  Better using a
	named number.

2017-11-09  Yannick Moy  <moy@adacore.com>

	* binde.adb (Diagnose_Elaboration_Problem): Mark procedure No_Return.
	* checks.adb (Apply_Scalar_Range_Check): Rescope variable OK closer to
	use.  Default initialize Hi, Lo.
	(Selected_Range_Checks): Retype Num_Checks more precisely.
	(Determine_Range, Determine_Range_R): Default initialize Hi_Right,
	Lo_Right.
	* contracts.adb (Process_Contract_Cases): Mark parameter Stmts as
	Unmodified.
	(Process_Postconditions): Mark parameter Stmts as Unmodified.
	* exp_attr.adb (Expand_Loop_Entry_Attribute): Default initialize Blk.
	* exp_ch4.adb (Expand_N_Allocator): Default initialize Typ.
	(Expand_Concatenate): Default initialize High_Bound.
	(Optimize_Length_Comparison): Default initialize Ent, Index.
	* exp_ch5.adb (Expand_Predicated_Loop): Default initialize L_Hi and
	L_Lo.
	* exp_ch6.adb (Expand_N_Extended_Return_Statement): Default initialize
	Return_Stmt.
	* exp_ch9.adb (Expand_Entry_Barrier): Default initialize Func_Body and
	remove pragma Warnings(Off).
	* exp_imgv.adb (Expand_Image_Attribute): Default initialize Tent.
	* exp_util.adb (Find_Interface_Tag): Default initialize AI_Tag.
	* freeze.adb (Check_Component_Storage_Order): Default initialize
	Comp_Byte_Aligned rather than silencing messages with pragma
	Warnings(Off), which does not work for CodePeer initialization
	messages, and given that here the possible read of an unitialized value
	depends on a proper use of parameters by the caller.
	* inline.adb (Expand_Inlined_Call): Default initialize Lab_Decl, Targ.
	* sem_ch12.adb (Build_Operator_Wrapper): Default initialize Expr.
	* sem_ch3.adb (Build_Derived_Array_Type): Default initialize
	Implicit_Base.
	* sem_ch4.adb (List_Operand_Interps): Default initialize Nam and remove
	pragma Warnings(Off).
	(Analyze_Case_Expression): Rescope checking block within branch where
	Others_Present is set by the call to Check_Choices.
	* sem_ch5.adb (Analyze_Assignment): Default initialize
	Save_Full_Analysis.
	* sem_ch6.adb (Analyze_Function_Return): Default initialize Obj_Decl,
	and restructure code to defend against previous errors, so that, in
	that case, control does not flow to the elsif condition which read an
	uninitialized Obj_Decl.
	* sem_ch9.adb (Analyze_Requeue): Default initialize Synch_Type.
	(Check_Interfaces): Default initialize Full_T_Ifaces and Priv_T_Ifaces,
	which seem to be left uninitialized and possibly read in some cases.
	* sem_dim.adb (Analyze_Aspect_Dimension_System): Retype Position more
	precisely.  This requires to exchange the test for exiting in case of
	too many positions and the increment to Position, inside the loop.
	* sem_eval.adb (Eval_Concatenation): Default initialize Folded_Val,
	which cannot be read uninitialized, but the reasons for that are quite
	subtle.
	* sem_intr.adb (Check_Intrinsic_Call): Default initialize Rtyp.
	* sem_prag.adb (Collect_Subprogram_Inputs_Outputs): Default initialize
	Spec_Id.
	* sem_res.adb (Make_Call_Into_Operator): Default initialize Opnd_Type,
	and test for presence of non-null Opnd_Type before testing its scope,
	in a test which would read its value uninitialized, and is very rarely
	exercized (it depends on the presence of an extension of System).
	* sem_spark.ads: Update comment to fix name of main analysis procedure.
	* sem_warn.adb (Warn_On_Known_Condition): Default initialize
	Test_Result.
	* set_targ.adb (FailN): Mark procedure with No_Return.
	* stylesw.adb (Save_Style_Check_Options): Delete useless code to
	initialize all array Options to white space, as there is already code
	doing the same for the remaining positions in Options at the end of the
	procedure.

2017-11-09  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch11.adb (Possible_Local_Raise): Do not issue the warning for
	generic instantiations either.

2017-11-09  Piotr Trojanek  <trojanek@adacore.com>

	* sem_prag.adb (Analyze_Part_Of): Reword error message.
	(Get_SPARK_Mode_Type): Do not raise Program_Error in case pragma
	SPARK_Mode appears with an illegal mode, treat this as a non-existent
	mode.

2017-11-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Call): Reject a call to a function that returns
	a limited view of a type T declared in unit U1, when the function is
	declared in another unit U2 and the call appears in a procedure within
	another unit.

2017-11-09  Justin Squirek  <squirek@adacore.com>

	* sem_ch8.adb (Analyze_Use_Package): Force installation of use_clauses
	when processing generic instances.

2017-11-09  Bob Duff  <duff@adacore.com>

	* namet.ads, namet.adb (Valid_Name_Id): New subtype that excludes
	Error_Name and No_Name.  Use this (versus Name_Id) to indicate which
	objects can have those special values. Valid_Name_Id could usefully be
	used all over the compiler front end, but that's too much trouble for
	now. If we did that, we might want to rename:
	Name_Id --> Optional_Name_Id, Valid_Name_Id --> Name_Id.
	For parameters of type Valid_Name_Id, remove some redundant tests,
	including the ones found by CodePeer.  Use Is_Valid_Name instead of
	membership test when appropriate.
	(Error_Name_Or_No_Name): Delete this; it's no longer needed.
	* sem_ch2.adb (Analyze_Identifier): Use "not Is_Valid_Name" instead of
	"in Error_Name_Or_No_Name".
	(Check_Parameterless_Call): Use "not Is_Valid_Name" instead of "in
	Error_Name_Or_No_Name".

2017-11-09  Arnaud Charlet  <charlet@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): Suppress warnings in codepeer
	mode here unless -gnateC is specified.
	* switch-c.adb (Scan_Front_End_Switches): Do not suppress warnings with
	-gnatC here.

2017-11-09  Piotr Trojanek  <trojanek@adacore.com>

	* lib-writ.adb (Write_ALI): Remove processing of the frontend xrefs as
	part of the ALI writing; they are now processed directly from memory
	when requested by the backend.
	* lib-xref.ads (Collect_SPARK_Xrefs): Remove.
	(Iterate_SPARK_Xrefs): New routine for iterating over frontend xrefs.
	* lib-xref-spark_specific.adb (Traverse_Compilation_Unit): Remove.
	(Add_SPARK_File): Remove.
	(Add_SPARK_Xref): Refactored from removed code; filters xref entries
	that are trivially uninteresting to the SPARK backend.
	* spark_xrefs.ads: Remove code that is no longer needed.
	* spark_xrefs.adb (dspark): Adapt to use Iterate_SPARK_Xrefs.

2017-11-09  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_elab.adb: Update the documentation on adding a new elaboration
	schenario. Add new hash table Recorded_Top_Level_Scenarios.
	(Is_Check_Emitting_Scenario): Removed.
	(Is_Recorded_Top_Level_Scenario): New routine.
	(Kill_Elaboration_Scenario): Reimplemented.
	(Record_Elaboration_Scenario): Mark the scenario as recorded.
	(Set_Is_Recorded_Top_Level_Scenario): New routine.
	(Update_Elaboration_Scenario): Reimplemented.
	* sinfo.adb (Is_Recorded_Scenario): Removed.
	(Set_Is_Recorded_Scenario): Removed.
	* sinfo.ads: Remove attribute Is_Recorded_Scenario along with
	occurrences in nodes.
	(Is_Recorded_Scenario): Removed along with pragma Inline.
	(Set_Is_Recorded_Scenario): Removed along with pragma Inline.

2017-11-09  Piotr Trojanek  <trojanek@adacore.com>

	* sem_prag.adb (Analyze_Part_Of): Change "designate" to "denote" in
	error message.

2017-11-09  Justin Squirek  <squirek@adacore.com>

	* sem_res.adb (Resolve_Allocator): Add warning messages corresponding
	to the allocation of an anonymous access-to-controlled object.

2017-11-09  Jerome Lambourg  <lambourg@adacore.com>

	* sigtramp-qnx.c: Fix obvious typo.

2017-11-09  Doug Rupp  <rupp@adacore.com>

	* libgnarl/s-taprop__linux.adb (Monotonic_Clock): Minor reformatting.

2017-11-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve): If expression is an entity whose type has
	implicit dereference, generate reference to it, because no reference is
	generated for an overloaded entity during analysis, given that its
	identity may not be known.

2017-11-09  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Expand_Interface_Thunk): Replace substraction of
	offset-to-top field by addition.
	(Make_Secondary_DT): Initialize the offset-to-top field with a negative
	offset.
	* exp_ch3.adb (Build_Offset_To_Top_Function): Build functions that
	return a negative offset-to-top value.
	(Initialize_Tag): Invoke runtime services Set_Dynamic_Offset_To_Top and
	Set_Static_Offset_To_Top passing a negative offet-to-top value;
	initialize also the offset-to-top field with a negative offset.
	* libgnat/a-tags.adb (Base_Address): Displace the pointer by means of
	an addition since the offset-to-top field is now a negative value.
	(Displace): Displace the pointer to the object means of a substraction
	since it is now a negative value.
	(Set_Dynamic_Offset_to_top): Displace the pointer to the object by
	means of a substraction since it is now a negative value.

2017-11-09  Eric Botcazou  <ebotcazou@adacore.com>

	* gnat1drv.adb (Gnat1drv): Call Errout.Finalize (Last_Call => True)
	before Errout.Output_Messages also in the case of compilation errors.

2017-11-09  Javier Miranda  <miranda@adacore.com>

	* doc/gnat_ugn/the_gnat_compilation_model.rst (Interfacing with C++ at
	the Class Level): Fix error interfacing with C strings.
	* gnat_ugn.texi: Regenerate.

2017-11-09  Jerome Lambourg  <lambourg@adacore.com>

	* system-qnx-aarch64.ads: Fix the priority constants.
	* s-osinte__qnx.ads: Fix constants for handling the locking protocols
	and scheduling.
	* s-osinte__qnx.adb: New file , prevents the use of priority 0 that
	corresponds to an idle priority on QNX.

2017-11-09  Piotr Trojanek  <trojanek@adacore.com>

	* sem_prag.adb, sem_util.adb, sem_elab.adb: Fix minor typos in
	comments.

2017-11-09  Piotr Trojanek  <trojanek@adacore.com>

	* lib-xref-spark_specific.adb (Add_SPARK_Xrefs): Ignore loop parameters
	in expression funtions that are expanded into variables.

2017-11-09  Piotr Trojanek  <trojanek@adacore.com>

	* sem_util.adb: Minor whitespace cleanup.

2017-11-09  Jerome Lambourg  <lambourg@adacore.com>

	* libgnarl/s-taprop__qnx.adb: Refine aarch64-qnx. Use the POSIX
	s-taprop version rather than a custom one.
	* sigtramp-qnx.c (aarch64-qnx): Implement the signal trampoline.

2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

	* lib-xref.ads, lib-xref-spark_specific.adb
	(Traverse_Compilation_Unit): Move declaration to package body.

2017-11-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_spark.adb (Expand_SPARK_N_Object_Renaming_Declaration): Obtain
	the type of the renaming from its defining entity, rather then the
	subtype mark as there may not be a subtype mark.

2017-11-08  Jerome Lambourg  <lambourg@adacore.com>

	* adaint.c, s-oscons-tmplt.c, init.c, libgnat/system-qnx-aarch64.ads,
	libgnarl/a-intnam__qnx.ads, libgnarl/s-intman__qnx.adb,
	libgnarl/s-osinte__qnx.ads, libgnarl/s-qnx.ads,
	libgnarl/s-taprop__qnx.adb, s-oscons-tmplt.c, sigtramp-qnx.c,
	terminals.c: Initial port of GNAT for aarch64-qnx

2017-11-08  Elisa Barboni  <barboni@adacore.com>

	* exp_util.adb (Find_DIC_Type): Move...
	* sem_util.ads, sem_util.adb (Find_DIC_Type): ... here.

2017-11-08  Justin Squirek  <squirek@adacore.com>

	* sem_res.adb (Resolve_Allocator): Add info messages corresponding to
	the owner and corresponding coextension.

2017-11-08  Ed Schonberg  <schonberg@adacore.com>

	* sem_aggr.adb (Resolve_Delta_Aggregate): Divide into the
	following separate procedures.
	(Resolve_Delta_Array_Aggregate): Previous code form
	Resolve_Delta_Aggregate.
	(Resolve_Delta_Record_Aggregate): Extend previous code to cover latest
	ARG decisions on the legality rules for delta aggregates for records:
	in the case of a variant record, components from different variants
	cannot be specified in the delta aggregate, and this must be checked
	statically.

2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

	* spark_xrefs.ads (SPARK_Scope_Record): Remove File_Num component.
	* lib-xref-spark_specific.adb (Add_SPARK_Scope): Skip initialization of
	removed component.

2017-11-08  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch4.adb: Minor typo fix.

2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

	* spark_xrefs.ads (SPARK_Scope_Record): Remove Spec_File_Num and
	Spec_Scope_Num components.
	* spark_xrefs.adb (dspark): Skip pretty-printing to removed components.
	* lib-xref-spark_specific.adb (Add_SPARK_Scope): Skip initialization of
	removed components.
	(Collect_SPARK_Xrefs): Skip setting proper values of removed
	components.

2017-11-08  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch4.adb (Expand_N_Type_Conversion): Add test that the selector
	name is a discriminant in check for unconditional accessibility
	violation within instances.

2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

	* lib-xref-spark_specific.adb (Add_SPARK_Xrefs): Remove special-case
	for constants (with variable input).
	(Is_Constant_Object_Without_Variable_Input): Remove.

2017-11-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch9.adb, sem_disp.adb, sem_util.adb: Minor reformatting.

2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

	* spark_xrefs.ads (Rtype): Remove special-casing of constants for SPARK
	cross-references.
	(dspark): Remove hardcoded table bound.

2017-11-08  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Aggregate): For Ada2020 delta aggregates, use
	the type of the base of the construct to determine the type (or
	candidate interpretations) of the delta aggregate. This allows the
	construct to appear in a context that expects a private extension.
	* sem_res.adb (Resolve): Handle properly a delta aggregate with an
	overloaded base.

2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

	* spark_xrefs.ads (SPARK_Xref_Record): Replace file and scope indices
	with Entity_Id of the reference.
	* spark_xrefs.adb (dspark): Adapt pretty-printing routine.
	* lib-xref-spark_specific.adb (Add_SPARK_Xrefs): Store Entity_Id of the
	reference, not the file and scope indices.

2017-11-08  Arnaud Charlet  <charlet@adacore.com>

	* errout.ads (Current_Node): New.
	* errout.adb (Error_Msg): Use Current_Node.
	* par-ch6.adb, par-ch7.adb, par-ch9.adb, par-util.adb: Set Current_Node
	when relevant.
	* style.adb: Call Error_Msg_N when possible.

2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

	* spark_xrefs.ads (SPARK_Scope_Record): Rename Scope_Id component to
	Entity.
	* lib-xref-spark_specific.adb, spark_xrefs.adb: Propagate renaming of
	the Scope_Id record component.

2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

	* spark_xrefs.ads (SPARK_File_Record): Remove string components.
	* spark_xrefs.adb (dspark): Remove pretty-printing of removed
	SPARK_File_Record components.
	* lib-xref-spark_specific.adb (Add_SPARK_File): Do not store string
	representation of files/units.

2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

	* lib-xref.ads, lib-xref-spark_specific.adb (Traverse_Declarations):
	Remove Inside_Stubs parameter.

2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

	* spark_xrefs.ads (SPARK_Xref_Record): Referenced object is now
	represented by Entity_Id.
	(SPARK_Scope_Record): Referenced scope (e.g. subprogram) is now
	represented by Entity_Id; this information is not repeated as
	Scope_Entity.
	(Heap): Moved from lib-xref-spark_specific.adb, to reside next to
	Name_Of_Heap_Variable.
	* spark_xrefs.adb (dspark): Adapt debug routine to above changes in
	data types.
	* lib-xref-spark_specific.adb: Adapt routines for populating SPARK
	scope and xrefs tables to above changes in data types.

2017-11-08  Justin Squirek  <squirek@adacore.com>

	* sem_ch8.adb (Mark_Use_Clauses): Add condition to always mark the
	primitives of generic actuals.
	(Mark_Use_Type): Add recursive call to properly mark class-wide type's
	base type clauses as per ARM 8.4 (8.2/3).

2017-11-08  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Generic_Subprobram_Body): Validate
	categorization dependency of the body, as is done for non-generic
	units.
	(New_Overloaded_Entity, Visible_Part_Type): Remove linear search
	through declarations (Simple optimization, no behavior change).

2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

	* spark_xrefs.ads (SPARK_Xref_Record): Remove inessential components.
	(SPARK_Scope_Record): Remove inessential components.
	* spark_xrefs.adb (dspark): Remove pretty-printing of removed record
	components.
	* lib-xref-spark_specific.adb (Add_SPARK_Scope): Remove setting of
	removed record components.
	(Add_SPARK_Xrefs): Remove setting of removed record components.

2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

	* lib-xref-spark_specific.adb (Add_SPARK_Xrefs): Remove dead check for
	empty entities.

2017-11-08  Javier Miranda  <miranda@adacore.com>

	* sem_disp.adb (Is_Inherited_Public_Operation): Extend the
	functionality of this routine to handle multiple levels of derivations.

2017-11-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb: Elist36 is now used as Nested_Scenarios.
	(Nested_Scenarios): New routine.
	(Set_Nested_Scenarios): New routine.
	(Write_Field36_Name): New routine.
	* einfo.ads: Add new attribute Nested_Scenarios along with occurrences
	in entities.
	(Nested_Scenarios): New routine along with pragma Inline.
	(Set_Nested_Scenarios): New routine along with pragma Inline.
	* sem_elab.adb (Find_And_Process_Nested_Scenarios): New routine.
	(Process_Nested_Scenarios): New routine.
	(Traverse_Body): When a subprogram body is traversed for the first
	time, find, save, and process all suitable scenarios found within.
	Subsequent traversals of the same subprogram body utilize the saved
	scenarios.

2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

	* lib-xref-spark_specific.adb (Add_SPARK_Scope): Remove detection of
	protected operations.
	(Add_SPARK_Xrefs): Simplify detection of empty entities.
	* get_spark_xrefs.ads, get_spark_xrefs.adb, put_spark_xrefs.ads,
	put_spark_xrefs.adb, spark_xrefs_test.adb: Remove code for writing,
	reading and testing SPARK cross-references stored in the ALI files.
	* lib-xref.ads (Output_SPARK_Xrefs): Remove.
	* lib-writ.adb (Write_ALI): Do not write SPARK cross-references to the
	ALI file.
	* spark_xrefs.ads, spark_xrefs.adb (pspark): Remove, together
	with description of the SPARK xrefs ALI format.
	* gcc-interface/Make-lang.in (GNAT_ADA_OBJS): Remove get_spark_refs.o
	and put_spark_refs.o.

2017-11-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb (Apply_Accessibility_Check): Do not finalize the object
	when the associated access type is subject to pragma
	No_Heap_Finalization.
	* exp_intr.adb (Expand_Unc_Deallocation): Use the available view of the
	designated type in case it comes from a limited withed unit.

2017-11-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch3.adb (Expand_N_Object_Declaration): Save and restore relevant
	SPARK-related flags.  Add ??? comment.
	* exp_util.adb (Insert_Actions): Add an entry for node
	N_Variable_Reference_Marker.
	* sem.adb (Analyze): Add an entry for node N_Variable_Reference_Marker.
	* sem_ch8.adb (Find_Direct_Name): Add constant Is_Assignment_LHS. Build
	and record a variable reference marker for the current name.
	(Find_Expanded_Name): Add constant Is_Assignment_LHS. Build and record
	a variable reference marker for the current name.
	* sem_elab.adb (Build_Variable_Reference_Marker): New routine.
	(Extract_Variable_Reference_Attributes): Reimplemented.
	(Info_Scenario): Add output for variable references and remove output
	for variable reads.
	(Info_Variable_Read): Removed.
	(Info_Variable_Reference): New routine.
	(Is_Suitable_Scenario): Variable references are now suitable scenarios
	while variable reads are not.
	(Output_Active_Scenarios): Add output for variable references and
	remove output for variable reads.
	(Output_Variable_Read): Removed.
	(Output_Variable_Reference): New routine.
	(Process_Variable_Read): Removed.
	(Process_Variable_Reference): New routine.
	(Process_Variable_Reference_Read): New routine.
	* sem_elab.ads (Build_Variable_Reference_Marker): New routine.
	* sem_res.adb (Resolve_Actuals): Build and record a variable reference
	marker for the current actual.
	* sem_spark.adb (Check_Node): Add an entry for node
	N_Variable_Reference_Marker.
	* sem_util.adb (Within_Subprogram_Call): Moved to the library level.
	* sem_util.ads (Within_Subprogram_Call): Moved to the library level.
	* sinfo.adb (Is_Read): New routine.
	(Is_Write): New routine.
	(Target): Updated to handle variable reference markers.
	(Set_Is_Read): New routine.
	(Set_Is_Write): New routine.
	(Set_Target): Updated to handle variable reference markers.
	* sinfo.ads: Add new attributes Is_Read and Is_Write along with
	occurrences in nodes. Update attribute Target. Add new node
	kind N_Variable_Reference_Marker.
	(Is_Read): New routine along with pragma Inline.
	(Is_Write): New routine along with pragma Inline.
	(Set_Is_Read): New routine along with pragma Inline.
	(Set_Is_Write): New routine along with pragma Inline.
	* sprint.adb (Sprint_Node_Actual): Add an entry for node
	N_Variable_Reference_Marker.

2017-11-08  Arnaud Charlet  <charlet@adacore.com>

	* sem_util.adb (Subprogram_Name): Append suffix for overloaded
	subprograms.

2017-11-08  Yannick Moy  <moy@adacore.com>

	* sem_ch8.adb (Use_One_Type, Update_Use_Clause_Chain): Do not report
	about unused use-type or use-package clauses inside inlined bodies.

2017-11-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_elab.adb (Ensure_Prior_Elaboration): Add new parameter
	In_Partial_Fin along with a comment on its usage. Do not guarantee the
	prior elaboration of a unit when the need came from a partial
	finalization context.
	(In_Initialization_Context): Relocated to Process_Call.
	(Is_Partial_Finalization_Proc): New routine.
	(Process_Access): Add new parameter In_Partial_Fin along with a comment
	on its usage.
	(Process_Activation_Call): Add new parameter In_Partial_Fin along with
	a comment on its usage.
	(Process_Activation_Conditional_ABE_Impl): Add new parameter
	In_Partial_Fin along with a comment on its usage. Do not emit any ABE
	diagnostics when the activation occurs in a partial finalization
	context.
	(Process_Activation_Guaranteed_ABE_Impl): Add new parameter
	In_Partial_Fin along with a comment on its usage.
	(Process_Call): Add new parameter In_Partial_Fin along with a comment
	on its usage. A call is within a partial finalization context when it
	targets a finalizer or primitive [Deep_]Finalize, and the call appears
	in initialization actions. Pass this information down to the recursive
	steps of the Processing phase.
	(Process_Call_Ada): Add new parameter In_Partial_Fin along with a
	comment on its usage. Remove the guard which suppresses the generation
	of implicit Elaborate[_All] pragmas. This is now done in
	Ensure_Prior_Elaboration.
	(Process_Call_Conditional_ABE): Add new parameter In_Partial_Fin along
	with a comment on its usage. Do not emit any ABE diagnostics when the
	call occurs in a partial finalization context.
	(Process_Call_SPARK): Add new parameter In_Partial_Fin along with a
	comment on its usage.
	(Process_Instantiation): Add new parameter In_Partial_Fin along with a
	comment on its usage.
	(Process_Instantiation_Ada): Add new parameter In_Partial_Fin along
	with a comment on its usage.
	(Process_Instantiation_Conditional_ABE): Add new parameter
	In_Partial_Fin along with a comment on its usage. Do not emit any ABE
	diagnostics when the instantiation occurs in a partial finalization
	context.
	(Process_Instantiation_SPARK): Add new parameter In_Partial_Fin along
	with a comment on its usage.
	(Process_Scenario): Add new parameter In_Partial_Fin along  with a
	comment on its usage.
	(Process_Single_Activation): Add new parameter In_Partial_Fin along
	with a comment on its usage.
	(Traverse_Body): Add new parameter In_Partial_Fin along with a comment
	on its usage.

2017-11-08  Arnaud Charlet  <charlet@adacore.com>

	* sem_ch13.adb: Add optional parameter to Error_Msg.

2017-11-08  Jerome Lambourg  <lambourg@adacore.com>

	* fname.adb (Is_Internal_File_Name): Do not check the 8+3 naming schema
	for the Interfaces.* hierarchy as longer unit names are now allowed.

2017-11-08  Arnaud Charlet  <charlet@adacore.com>

	* sem_util.adb (Subprogram_Name): Emit sloc for the enclosing
	subprogram as well.  Support more cases of entities.
	(Append_Entity_Name): Add some defensive code.

2017-11-06  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/misc.c (gnat_post_options): Clear warn_return_type.

2017-10-31  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/82785
	* gcc-interface/Makefile.in (m68k/Linux): Fix typo.

2017-10-21  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/Makefile.in: Remove bogus settings for VxWorks.

2017-10-21  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (pad_type_hash): Use hashval_t for hash value.
	(convert): Do not use an unchecked conversion for converting from a
	type to another type padding it.

2017-10-20  Doug Rupp  <rupp@adacore.com>

	* libgnarl/s-osinte__linux.ads (Relative_Timed_Wait): Add variable
	needed for using monotonic clock.
	* libgnarl/s-taprop__linux.adb: Revert previous monotonic clock
	changes.
	* libgnarl/s-taprop__linux.adb, s-taprop__posix.adb: Unify and factor
	out monotonic clock related functions body.
	(Timed_Sleep, Timed_Delay, Montonic_Clock, RT_Resolution,
	Compute_Deadline): Move to...
	* libgnarl/s-tpopmo.adb: ... here. New separate package body.

2017-10-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Is_Controlling_Limited_Procedure): Handle properly the
	case where the controlling formal is an anonymous access to interface
	type.
	* exp_ch9.adb (Extract_Dispatching_Call): If controlling actual is an
	access type, handle properly the the constructed dereference that
	designates the object used in the rewritten synchronized call.
	(Parameter_Block_Pack): If the type of the actual is by-copy, its
	generated declaration in the parameter block does not need an
	initialization even if the type is a null-excluding access type,
	because it will be initialized with the value of the actual later on.
	(Parameter_Block_Pack): Do not add controlling actual to parameter
	block when its type is by-copy.

2017-10-20  Justin Squirek  <squirek@adacore.com>

	* sem_ch8.adb (Update_Use_Clause_Chain): Add sanity check to verify
	scope stack traversal into the context clause.

2017-10-20  Bob Duff  <duff@adacore.com>

	* sinfo.ads: Fix a comment typo.

2017-10-20  Eric Botcazou  <ebotcazou@adacore.com>

	* doc/gnat_ugn/building_executable_programs_with_gnat.rst (-flto): Add
	warning against usage in conjunction with -gnatn.
	(-fdump-xref): Delete entry.
	* doc/gnat_ugn/gnat_utility_programs.rst (--ext): Remove mention of
	-fdump-xref switch.
	* gnat_ugn.texi: Regenerate.

2017-10-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_type.adb, exp_util.adb, sem_util.adb, sem_dim.adb, sem_elab.adb:
	Minor reformatting.

2017-10-20  Yannick Moy  <moy@adacore.com>

	* sem_dim.adb (Analyze_Dimension_Binary_Op): Accept with a warning to
	compare a dimensioned expression with a literal.
	(Dim_Warning_For_Numeric_Literal): Do not issue a warning for the
	special value zero.
	* doc/gnat_ugn/gnat_and_program_execution.rst: Update description of
	dimensionality system in GNAT.
	* gnat_ugn.texi: Regenerate.

2017-10-20  Yannick Moy  <moy@adacore.com>

	* sem_ch6.adb (Analyze_Expression_Function.Freeze_Expr_Types): Remove
	inadequate silencing of errors.
	* sem_util.adb (Check_Part_Of_Reference): Do not issue an error when
	checking the subprogram body generated from an expression function,
	when this is done as part of the preanalysis done on expression
	functions, as the subprogram body may not yet be attached in the AST.
	The error if any will be issued later during the analysis of the body.
	(Is_Aliased_View): Trivial rewrite with Is_Formal_Object.

2017-10-20  Arnaud Charlet  <charlet@adacore.com>

	* sem_ch8.adb (Update_Chain_In_Scope): Add missing [-gnatwu] marker for
	warning on ineffective use clause.

2017-10-20  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch11.ads (Warn_If_No_Local_Raise): Declare.
	* exp_ch11.adb (Expand_Exception_Handlers): Use Warn_If_No_Local_Raise
	to issue the warning on the absence of local raise.
	(Possible_Local_Raise): Do not issue the warning for Call_Markers.
	(Warn_If_No_Local_Raise): New procedure to issue the warning on the
	absence of local raise.
	* sem_elab.adb: Add with and use clauses for Exp_Ch11.
	(Record_Elaboration_Scenario): Call Possible_Local_Raise in the cases
	where a scenario could give rise to raising Program_Error.
	* sem_elab.adb: Typo fixes.
	* fe.h (Warn_If_No_Local_Raise): Declare.
	* gcc-interface/gigi.h (get_exception_label): Change return type.
	* gcc-interface/trans.c (gnu_constraint_error_label_stack): Change to
	simple vector of Entity_Id.
	(gnu_storage_error_label_stack): Likewise.
	(gnu_program_error_label_stack): Likewise.
	(gigi): Adjust to above changes.
	(Raise_Error_to_gnu): Likewise.
	(gnat_to_gnu) <N_Goto_Statement>: Set TREE_USED on the label.
	(N_Push_Constraint_Error_Label): Push the label onto the stack.
	(N_Push_Storage_Error_Label): Likewise.
	(N_Push_Program_Error_Label): Likewise.
	(N_Pop_Constraint_Error_Label): Pop the label from the stack and issue
	a warning on the absence of local raise.
	(N_Pop_Storage_Error_Label): Likewise.
	(N_Pop_Program_Error_Label): Likewise.
	(push_exception_label_stack): Delete.
	(get_exception_label): Change return type to Entity_Id and adjust.
	* gcc-interface/utils2.c (build_goto_raise): Change type of first
	parameter to Entity_Id and adjust.  Set TREE_USED on the label.
	(build_call_raise): Adjust calls to get_exception_label and also
	build_goto_raise.
	(build_call_raise_column): Likewise.
	(build_call_raise_range): Likewise.
	* doc/gnat_ugn/building_executable_programs_with_gnat.rst (-gnatw.x):
	Document actual default behavior.

2017-10-20  Piotr Trojanek  <trojanek@adacore.com>

	* einfo.ads: Minor consistent punctuation in comment.  All numbered
	items in the comment of Is_Internal are now terminated with a period.

2017-10-20  Piotr Trojanek  <trojanek@adacore.com>

	* exp_util.adb (Build_Temporary): Mark created temporary entity as
	internal.

2017-10-20  Piotr Trojanek  <trojanek@adacore.com>

	* sem_type.adb (In_Generic_Actual): Simplified.

2017-10-20  Justin Squirek  <squirek@adacore.com>

	* sem_ch12.adb (Check_Formal_Package_Instance): Add sanity check to
	verify a renaming exists for a generic formal before comparing it to
	the actual as defaulted formals will not have a renamed_object.

2017-10-20  Javier Miranda  <miranda@adacore.com>

	* exp_ch6.adb (Replace_Returns): Fix wrong management of
	N_Block_Statement nodes.

2017-10-20  Bob Duff  <duff@adacore.com>

	* exp_aggr.adb (Initialize_Array_Component): Avoid adjusting a
	component of an array aggregate if it is initialized by a
	build-in-place function call.
	* exp_ch6.adb (Is_Build_In_Place_Result_Type): Use -gnatd.9 to disable
	bip for nonlimited types.
	* debug.adb: Document -gnatd.9.

2017-10-20  Bob Duff  <duff@adacore.com>

	* sem_ch12.adb: Remove redundant setting of Parent.

2017-10-20  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch4.adb (Find_Concatenation_Types): Filter out operators if one
	of the operands is a string literal.

2017-10-20  Bob Duff  <duff@adacore.com>

	* einfo.ads: Comment fix.

2017-10-20  Clement Fumex  <fumex@adacore.com>

	* switch-c.adb: Remove -gnatwm from the switches triggered by -gnateC.

2017-10-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_dim.adb (Extract_Power): Accept dimension values that are not
	non-negative integers when the dimensioned base type is an Integer
	type.

2017-10-20  Bob Duff  <duff@adacore.com>

	* sinfo.ads, sinfo.adb (Alloc_For_BIP_Return): New flag to indicate
	that an allocator came from a b-i-p return statement.
	* exp_ch4.adb (Expand_Allocator_Expression): Avoid adjusting the return
	object of a nonlimited build-in-place function call.
	* exp_ch6.adb (Expand_N_Extended_Return_Statement): Set the
	Alloc_For_BIP_Return flag on generated allocators.
	* sem_ch5.adb (Analyze_Assignment): Move Assert to where it can't fail.
	If the N_Assignment_Statement has been transformed into something else,
	then Should_Transform_BIP_Assignment won't work.
	* exp_ch3.adb (Expand_N_Object_Declaration): A previous revision said,
	"Remove Adjust if we're building the return object of an extended
	return statement in place." Back out that part of the change, because
	the Alloc_For_BIP_Return flag is now used for that.

2017-10-19  Bob Duff  <duff@adacore.com>

	* exp_ch6.adb (Is_Build_In_Place_Result_Type): Fix silly bug -- "Typ"
	should be "T".  Handle case of a subtype of a class-wide type.

2017-10-19  Bob Duff  <duff@adacore.com>

	* exp_util.adb: (Process_Statements_For_Controlled_Objects): Clarify
	which node kinds can legitimately be ignored, and raise Program_Error
	for others.

2017-10-19  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_elab.adb (Compilation_Unit): Handle the case of a subprogram
	instantiation that acts as a compilation unit.
	(Find_Code_Unit): Reimplemented.
	(Find_Top_Unit): Reimplemented.
	(Find_Unit_Entity): New routine.
	(Process_Instantiation_SPARK): Correct the elaboration requirement a
	package instantiation imposes on a unit.

2017-10-19  Bob Duff  <duff@adacore.com>

	* exp_ch6.adb (Is_Build_In_Place_Result_Type): Enable build-in-place
	for a narrow set of controlled types.

2017-10-19  Eric Botcazou  <ebotcazou@adacore.com>

	* sinput.ads (Line_Start): Add pragma Inline.
	* widechar.ads (Is_Start_Of_Wide_Char): Likewise.

2017-10-19  Bob Duff  <duff@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference): Disable
	Make_Build_In_Place_Call_... for F(...)'Old, where F(...) is a
	build-in-place function call so that the temp is declared in the right
	place.

2017-10-18  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/misc.c (gnat_tree_size): Move around.

	* gcc-interface/utils.c (max_size): Deal with SSA names.

2017-10-17  Jakub Jelinek  <jakub@redhat.com>

	* gcc-interface/misc.c (gnat_tree_size): New function.
	(LANG_HOOKS_TREE_SIZE): Redefine.

2017-10-14  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_elab.adb (In_Preelaborated_Context): A generic package subject to
	Remote_Call_Interface is not a suitable preelaboratd context when the
	call appears in the package body.

2017-10-14  Eric Botcazou  <ebotcazou@adacore.com>

	* layout.ads (Set_Elem_Alignment): Add Align parameter defaulted to 0.
	* layout.adb (Set_Elem_Alignment): Likewise.  Use M name as maximum
	alignment for consistency.  If Align is non-zero, use the minimum of
	Align and M for the alignment.
	* cstand.adb (Build_Float_Type): Use Set_Elem_Alignment instead of
	setting the alignment directly.

2017-10-14  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Analyze_Pragma, case Check): Defer evaluation of the
	optional string in an Assert pragma until the expansion of the pragma
	has rewritten it as a conditional statement, so that the string
	argument is only evaluaed if the assertion fails. This is mandated by
	RM 11.4.2.

2017-10-14  Hristian Kirtchev  <kirtchev@adacore.com>

	* debug.adb: Switch -gnatd.v and associated flag are now used to
	enforce the SPARK rules for elaboration in SPARK code.
	* sem_elab.adb: Describe switch -gnatd.v.
	(Process_Call): Verify the SPARK rules only when -gnatd.v is in effect.
	(Process_Instantiation): Verify the SPARK rules only when -gnatd.v is
	in effect.
	(Process_Variable_Assignment): Clarify why variable assignments are
	processed reglardless of whether -gnatd.v is in effect.
	* doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update the
	sections on elaboration code and compilation switches.
	* gnat_ugn.texi: Regenerate.

2017-10-14  Gary Dismukes  <dismukes@adacore.com>

	* exp_util.adb, freeze.adb, sem_aggr.adb, sem_util.ads, sem_util.adb,
	sem_warn.adb: Minor reformattings.

2017-10-14  Ed Schonberg  <schonberg@adacore.com>

	* doc/gnat_rm/implementation_defined_aspects.rst: Add documentation
	for reverse iteration over formal containers.
	* gnat_rm.texi: Regenerate.

2017-10-14  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_elab.adb (Ensure_Dynamic_Prior_Elaboration): Renamed to
	Ensure_Prior_Elaboration_Dynamic for consistency reasons.
	(Ensure_Static_Prior_Elaboration): Renamed to
	Ensure_Prior_Elaboration_Static for consistency reasons.
	(Info_Variable_Reference): Renamed to Info_Variable_Read in order to
	reflect its new purpose.
	(Is_Initialized): New routine.
	(Is_Suitable_Variable_Reference): Renamed to Is_Suitable_Variable_Read
	in order to reflect its new purpose.
	(Is_Variable_Read): New routine.
	(Output_Variable_Reference): Renamed to Output_Variable_Read in order
	to reflect its new purpose.
	(Process_Variable_Assignment): This routine now acts as a top level
	dispatcher for variable assignments.
	(Process_Variable_Assignment_Ada): New routine.
	(Process_Variable_Assignment_SPARK): New routine.
	(Process_Variable_Reference): Renamed to Process_Variable_Read in order
	to reflects its new purpose. A reference to a variable is now suitable
	for ABE processing only when it is a read. The logic in the routine now
	reflects the latest SPARK elaboration rules.

2017-10-14  Justin Squirek  <squirek@adacore.com>

	* sem_ch8.adb (Analyze_Subprogram_Renaming): Modify condition that
	triggers marking on formal subprograms.

2017-10-14  Javier Miranda  <miranda@adacore.com>

	* checks.adb (Ensure_Valid): Do not skip adding the validity check on
	renamings of objects that come from the sources.

2017-10-14  Eric Botcazou  <ebotcazou@adacore.com>

	* cstand.adb (Build_Float_Type): Move down Siz parameter, add Align
	parameter and set the alignment of the type to Align.
	(Copy_Float_Type): Adjust call to Build_Float_Type.
	(Register_Float_Type): Add pragma Unreferenced for Precision.  Adjust
	call to Build_Float_Type and do not set RM_Size and Alignment.

2017-10-14  Patrick Bernardi  <bernardi@adacore.com>

	* Makefile.rtl (GNATRTL_NONTASKING_OBJ): Add s-soliin to
	GNATRTL_NONTASKING_OBJ.

2017-10-14  Bob Duff  <duff@adacore.com>

	* exp_ch6.adb (Is_Build_In_Place_Result_Type): Include code for
	enabling b-i-p for nonlimited controlled types (but disabled).

2017-10-14  Justin Squirek  <squirek@adacore.com>

	* sem_elab.adb (Is_Suitable_Variable_Assignment): Replace call to
	Has_Warnings_Off with Warnings_Off.

2017-10-14  Piotr Trojanek  <trojanek@adacore.com>

	* sinfo.ads (Generic_Parent): Remove wrong (possibly obsolete) comment.

2017-10-14  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch3.adb (Analyze_Declarations): Analyze the contract of an
	enclosing package at the end of the visible declarations.
	* sem_prag.adb (Analyze_Initialization_Item): Suppress the analysis of
	an initialization item which is undefined due to some illegality.

2017-10-14  Patrick Bernardi  <bernardi@adacore.com>

	* ali.adb: Add new ALI line 'T' to read the number of tasks contain
	within each unit that require a default-sized primary and secondary
	stack to be generated by the binder.
	(Scan_ALI): Scan new 'T' lines.
	* ali.ads: Add Primary_Stack_Count and Sec_Stack_Count to Unit_Record.
	* bindgen.adb (Gen_Output_File): Count the number of default-sized
	stacks within the closure that are to be created by the binder.
	(Gen_Adainit, Gen_Output_File_Ada): Generate default-sized secondary
	stacks and record these in System.Secodnary_Stack.
	(Resolve_Binder_Options): Check if System.Secondary_Stack is in the
	closure of the program being bound.
	* bindusg.adb (Display): Add "-Q" switch. Remove rouge "--RTS" comment.
	* exp_ch3.adb (Count_Default_Sized_Task_Stacks): New routine.
	(Expand_N_Object_Declaration): Count the number of default-sized stacks
	used by task objects contained within the object whose declaration is
	being expanded.  Only performed when either the restrictions
	No_Implicit_Heap_Allocations or No_Implicit_Task_Allocations are in
	effect.
	* exp_ch9.adb (Create_Secondary_Stack_For_Task): New routine.
	(Expand_N_Task_Type_Declaration): Create a secondary stack as part of
	the expansion of a task type if the size of the stack is known at
	run-time and the restrictions No_Implicit_Heap_Allocations or
	No_Implicit_Task_Allocations are in effect.
	(Make_Task_Create_Call): If using a restricted profile provide
	secondary stack parameter: either the statically created stack or null.
	* lib-load.adb (Create_Dummy_Package_Unit, Load_Unit,
	Load_Main_Source): Include Primary_Stack_Count and Sec_Stack_Count in
	Unit_Record initialization expressions.
	* lib-writ.adb (Add_Preprocessing_Dependency,
	Ensure_System_Dependency): Include Primary_Stack_Count and
	Sec_Stack_Count in Unit_Record initialization expression.
	(Write_ALI): Write T lines.
	(Write_Unit_Information): Do not output 'T' lines if there are no
	stacks for the binder to generate.
	* lib-writ.ads: Updated library information documentation to include
	new T line entry.
	* lib.adb (Increment_Primary_Stack_Count): New routine.
	(Increment_Sec_Stack_Count): New routine.
	(Primary_Stack_Count): New routine.
	(Sec_Stack_Count): New routine.
	* lib.ads: Add Primary_Stack_Count and Sec_Stack_Count components to
	Unit_Record and updated documentation.
	(Increment_Primary_Stack_Count): New routine along with pragma Inline.
	(Increment_Sec_Stack_Count): New routine along with pragma Inline.
	(Primary_Stack_Count): New routine along with pragma Inline.
	(Sec_Stack_Count): New routine along with pragma Inline.
	* opt.ads: New constant No_Stack_Size.	Flag Default_Stack_Size
	redefined.  New flag Default_Sec_Stack_Size and
	Quantity_Of_Default_Size_Sec_Stacks.
	* rtfinal.c Fixed erroneous comment.
	* rtsfind.ads: Moved RE_Default_Secondary_Stack_Size from
	System.Secondary_Stack to System.Parameters.  Add RE_SS_Stack.
	* sem_util.adb (Number_Of_Elements_In_Array): New routine.
	* sem_util.ads (Number_Of_Elements_In_Array): New routine.
	* switch-b.adb (Scan_Binder_Switches): Scan "-Q" switch.
	* libgnarl/s-solita.adb (Get_Sec_Stack_Addr): Removed routine.
	(Set_Sec_Stack_Addr): Removed routine.
	(Get_Sec_Stack): New routine.
	(Set_Sec_Stack): New routine.
	(Init_Tasking_Soft_Links): Update System.Soft_Links reference to
	reflect new procedure and global names.
	* libgnarl/s-taprop__linux.adb, libgnarl/s-taprop__mingw.adb,
	libgnarl/s-taprop__posix.adb, libgnarl/s-taprop__solaris.adb,
	libgnarl/s-taprop__vxworks.adb (Register_Foreign_Thread): Update
	parameter profile to allow the secondary stack size to be specified.
	* libgnarl/s-tarest.adb (Create_Restricted_Task): Update the parameter
	profile to include Sec_Stack_Address.  Update Tasking.Initialize_ATCB
	call to remove Secondary_Stack_Size reference.  Add secondary stack
	address and size to SSL.Create_TSD call.
	(Task_Wrapper): Remove secondary stack creation.
	* libgnarl/s-tarest.ads (Create_Restricted_Task,
	Create_Restricted_Task_Sequential): Update parameter profile to include
	Sec_Stack_Address and clarify the Size parameter.
	* libgnarl/s-taskin.adb (Initialize_ATCB): Remove Secondary_Stack_Size
	from profile and body.
	(Initialize): Remove Secondary_Stack_Size from Initialize_ATCB call.
	* libgnarl/s-taskin.ads: Removed component Secondary_Stack_Size from
	Common_ATCB.
	(Initialize_ATCB): Update the parameter profile to remove
	Secondary_Stack_Size.
	* libgnarl/s-tassta.adb (Create_Task): Updated parameter profile and
	call to Initialize_ATCB.  Add secondary stack address and size to
	SSL.Create_TSD call, and catch any storage exception from the call.
	(Finalize_Global_Tasks): Update System.Soft_Links references to reflect
	new subprogram and component names.
	(Task_Wrapper): Remove secondary stack creation.
	(Vulnerable_Complete_Master): Update to reflect TSD changes.
	* libgnarl/s-tassta.ads: Reformat comments.
	(Create_Task): Update parameter profile.
	* libgnarl/s-tporft.adb (Register_Foreign_Thread): Update parameter
	profile to include secondary stack size. Remove secondary size
	parameter from Initialize_ATCB call and add it to Create_TSD call.
	* libgnat/s-parame.adb, libgnat/s-parame__rtems.adb,
	libgnat/s-parame__vxworks.adb (Default_Sec_Stack_Size): New routine.
	* libgnat/s-parame.ads, libgnat/s-parame__ae653.ads,
	libgnat/s-parame__hpux.ads, libgnat/s-parame__vxworks.ads: Remove type
	Percentage.  Remove constants Dynamic, Sec_Stack_Percentage and
	Sec_Stack_Dynamic.  Add constant Runtime_Default_Sec_Stack_Size and
	Sec_Stack_Dynamic.
	(Default_Sec_Stack_Size): New routine.
	* libgnat/s-secsta.adb, libgnat/s-secsta.ads: New implementation. Is
	now Preelaborate.
	* libgnat/s-soflin.adb: Removed unused with-clauses.  With
	System.Soft_Links.Initialize to initialize non-tasking TSD.
	(Create_TSD): Update parameter profile. Initialize the TSD and
	unconditionally call SS_Init.
	(Destroy_TSD): Update SST.SS_Free call.
	(Get_Sec_Stack_Addr_NT, Get_Sec_Stack_Addr_Soft, Set_Sec_Stack_Addr_NT,
	Set_Sec_Stack_Addr_Soft): Remove routines.
	(Get_Sec_Stack_NT, Get_Sec_Stack_Soft, Set_Sec_Stack_NT,
	Set_Sec_Stack_Soft): Add routines.
	(NT_TSD): Move to private part of package specification.
	* libgnat/s-soflin.ads: New types Get_Stack_Call and Set_Stack_Call
	with suppressed access checks.  Renamed *_Sec_Stack_Addr_* routines and
	objects to *_Sec_Stack_*.  TSD: removed warning suppression and
	component intialization. Changed Sec_Stack_Addr to Sec_Stack_Ptr.
	(Create_TSD): Update parameter profile.
	(NT_TSD): Move to private section from body.
	* libgnat/s-soliin.adb, libgnat/s-soliin.ads: New files.
	* libgnat/s-thread.ads (Thread_Body_Enter): Update parameter profile.
	* libgnat/s-thread__ae653.adb (Get_Sec_Stack_Addr, Set_Sec_Stack_Addr):
	Remove routine.
	(Get_Sec_Stack, Set_Sec_Stack): Add routine.
	(Thread_Body_Enter): Update parameter profile and body to adapt to new
	System.Secondary_Stack.
	(Init_RTS): Update body for new System.Soft_Links names.
	* gcc-interface/Make-lang.in (GNAT_ADA_OBJS, GNATBIND_OBJS): Add
	s-soliin.o.

2017-10-10  Richard Sandiford  <richard.sandiford@linaro.org>

	* gcc-interface/decl.c (annotate_value): Use wi::to_wide when
	operating on trees as wide_ints.

2017-10-09  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_unit.adb (Find_Enclosing_Scope): Do not treat a block statement
	as a scoping construct when it is byproduct of exception handling.

2017-10-09  Hristian Kirtchev  <kirtchev@adacore.com>

	* sinfo.ads: Update table Is_Syntactic_Field to reflect the nature of
	semantic field Target of node N_Call_Marker.

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Allocator): Reject properly an allocator that
	attempts to copy a limited value, when the allocator is the expression
	in an expression function.

2017-10-09  Joel Brobecker  <brobecker@adacore.com>

	* doc/share/conf.py: Tell the style checker that this is a Python
	fragment, and therefore that pyflakes should not be run to validate
	this file.

2017-10-09  Eric Botcazou  <ebotcazou@adacore.com>

	* einfo.ads (Is_Boolean_Type): Add pragma Inline.
	(Is_Entity_Name): Likewise.
	(Is_String_Type): Likewise.
	* sem_type.adb (Full_View_Covers): Do not test Is_Private_Type here
	and remove useless comparisons on the base types.
	(Covers): Use simple tests for Standard_Void_Type.  Move up cheap tests
	on T2.  Always test Is_Private_Type before Full_View_Covers.

2017-10-09  Bob Duff  <duff@adacore.com>

	* exp_ch4.adb: Minor refactoring.

2017-10-09  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Replace_Components): Browse the list of discriminants,
	not components.

2017-10-09  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_elab.adb (Static_Elaboration_Checks): Elaboration requirements
	are verified only in the static model.

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Iterator_Specification,
	Check_Reverse_Iteration): Check that the domain of iteration supports
	reverse iteration when it is a formal container.  This requires the
	presence of a Previous primitive in the Iterable aspect.
	* sem_ch13.adb (Resolve_Iterable_Operation): Verify legality of
	primitives Last and Previous to support reverse iteration over formal
	containers.
	(Validate_Iterable_Aspect): Add check for reverse iteration operations.
	* exp_ch5.adb (Build_Formal_Container_Iteration): Add proper expansion
	for reverse iteration using primitives Last and Previous in generated
	loop.

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Subprogram_Name): If this is a child unit, use the name
	of the Defining_Program_Unit_Name, which is an identifier, in order to
	construct the string for the fully qualified name.

2017-10-09  Justin Squirek  <squirek@adacore.com>

	* sem_ch3.adb: Rename Uses_Unseen_Priv into
	Contains_Lib_Incomplete_Type.

2017-10-09  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_aggr.adb, sem_spark.adb, adabkend.adb, exp_ch5.adb, frontend.adb,
	sem_ch12.adb, fmap.adb, exp_ch6.adb, exp_spark.adb, lib-load.adb,
	exp_ch9.adb, osint.adb, exp_disp.adb, sem_ch8.adb, sem_ch8.ads,
	prepcomp.adb, gnat1drv.adb, atree.adb, sinput-l.adb, targparm.adb,
	sem_ch10.adb, par-ch8.adb: Minor reformatting.

2017-10-09  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_elab.adb (Is_Suitable_Access): This scenario is now only relevant
	in the static model.
	(Is_Suitable_Variable_Assignment): This scenario is now only relevant
	in the static model.
	(Is_Suitable_Variable_Reference): This scenario is now only relevant in
	the static model.

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Analyze_Declarations): In ASIS mode, resolve aspect
	expressions when the enclosing scope is a subprogram body and the next
	declaration is a body that freezes entities previously declared in the
	scope.

2017-10-09  Justin Squirek  <squirek@adacore.com>

	* sem_ch8.adb (Analyze_Use_Package): Remove checking of mixture between
	ghost packages and living packages in use clauses.
	(Use_One_Type, Note_Redundant_Use): Correct warning messages

2017-10-09  Justin Squirek  <squirek@adacore.com>

	* osint.ads: Document new parameter FD for Read_Source_File.

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

	* exp_util.adb (Make_Predicate_Call): If the type of the expression to
	which the predicate check applies is tagged, convert the expression to
	that type. This is in most cases a no-op, but is relevant if the
	expression is clas-swide, because the predicate function being invoked
	is not a primitive of the type and cannot take a class-wide actual.

2017-10-09  Gary Dismukes  <dismukes@adacore.com>

	* exp_disp.adb: Minor reformatting.

2017-10-09  Arnaud Charlet  <charlet@adacore.com>

	* sem_warn.adb (Warn_On_Unreferenced_Entity): Fix typo.

2017-10-09  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_elab.adb (Install_ABE_Check): Do not generate an ABE check for
	GNATprove.
	(Install_ABE_Failure): Do not generate an ABE failure for GNATprove.

2017-10-09  Bob Duff  <duff@adacore.com>

	* exp_ch6.adb: (Make_Build_In_Place_Call_In_Object_Declaration): Return
	immediately if the call has already been processed (by a previous call
	to Make_Build_In_Place_Call_In_Anonymous_Context).
	* sem_elab.adb: Minor typo fixes.

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Replace_Type_Ref): In the expression for a dynamic
	predicate, do not replace an identifier that matches the type if the
	identifier is a selector in a selected component, because this
	indicates a reference to some homograph of the type itself, and  not to
	the current occurence in the predicate.

2017-10-09  Eric Botcazou  <ebotcazou@adacore.com>

	* repinfo.adb (List_Record_Layout): Tweak formatting.
	(Write_Val): Remove superfluous spaces in back-end layout mode.

2017-10-09  Piotr Trojanek  <trojanek@adacore.com>

	* sem_res.adb (Property_Error): Remove.
	(Resolve_Actuals): check for SPARK RM 7.1.3(10) rewritten to match the
	current wording of the rule.

2017-10-09  Justin Squirek  <squirek@adacore.com>

	* sem_ch3.adb (Analyze_Declarations): Add check for ghost packages
	before analyzing a given scope due to an expression function.
	(Uses_Unseen_Lib_Unit_Priv): Rename to Uses_Unseen_Priv.

2017-10-09  Bob Duff  <duff@adacore.com>

	* exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration): Use
	Defining_Identifier (Obj_Decl) in two places, because it might have
	changed.
	* exp_ch6.adb (Make_Build_In_Place_Call_In_Allocator): Deal with cases
	involving 'Input on (not visibly) derived types.

2017-10-09  Hristian Kirtchev  <kirtchev@adacore.com>

	* atree.adb: Add new soft link Rewriting_Proc.
	(Rewrite): Invoke the subprogram attached to the rewriting soft link.
	(Set_Rewriting_Proc): New routine.
	* attree.ads: Add new access-to-subprogram type Rewrite_Proc.
	(Set_Rewriting_Proc): New routine.
	* checks.adb (Install_Primitive_Elaboration_Check): Use 'E' character
	for *E*laboration flag to maintain consistency with other elaboration
	flag generating subprograms.
	* debug.adb: Document the new usage of flag -gnatdL.
	* einfo.adb: Node19 is now used as Receiving_Entry.  Node39 is now used
	as Protected_Subprogram.  Flag148 is now used as
	Is_Elaboration_Checks_OK_Id.  Flag302 is now used as
	Is_Initial_Condition_Procedure.
	(Is_Elaboration_Checks_OK_Id): New routine.
	(Is_Initial_Condition_Procedure): New routine.
	(Protected_Subprogram): New routine.
	(Receiving_Entry): New routine.
	(SPARK_Pragma): Update assertion.
	(SPARK_Pragma_Inherited): Update assertion.
	(Suppress_Elaboration_Warnings): Removed.
	(Set_Is_Elaboration_Checks_OK_Id): New routine.
	(Set_Is_Initial_Condition_Procedure): New routine.
	(Set_Protected_Subprogram): New routine.
	(Set_Receiving_Entry): New routine.
	(Set_SPARK_Pragma): Update assertion.
	(Set_SPARK_Pragma_Inherited): Update assertion.
	(Write_Entity_Flags): Update the output for Flag148 and Flag302.
	(Write_Field19_Name): Add output for Receiving_Entry.
	(Write_Field39_Name): Add output for Protected_Subprogram.
	(Write_Field40_Name): Update the output for SPARK_Pragma.
	* einfo.ads: New attributes Is_Elaboration_Checks_OK_Id,
	Is_Initial_Condition_Procedure, Protected_Subprogram, Receiving_Entry.
	Remove attribute Suppress_Elaboration_Warnings.  Update the stricture
	of various entities.
	(Is_Elaboration_Checks_OK_Id): New routine along with pragma Inline.
	(Is_Initial_Condition_Procedure): New routine along with pragma Inline.
	(Protected_Subprogram): New routine along with pragma Inline.
	(Receiving_Entry): New routine along with pragma Inline.
	(Suppress_Elaboration_Warnings): Removed.
	(Set_Is_Elaboration_Checks_OK_Id): New routine along with pragma
	Inline.
	(Set_Is_Initial_Condition_Procedure): New routine along with pragma
	Inline.
	(Set_Protected_Subprogram): New routine along with pragma Inline.
	(Set_Receiving_Entry): New routine along with pragma Inline.
	(Set_Suppress_Elaboration_Warnings): Removed.
	* exp_ch3.adb (Build_Init_Procedure): Use name _Finalizer to maintain
	consistency with other finalizer generating subprograms.
	(Default_Initialize_Object): Mark the block which wraps the call to
	finalize as being part of initialization.
	* exp_ch7.adb (Expand_N_Package_Declaration): Directly expand pragma
	Initial_Condition.
	(Expand_N_Package_Body): Directly expand pragma Initial_Condition.
	(Next_Suitable_Statement): Update the comment on usage. Skip over call
	markers generated by the ABE mechanism.
	* exp_ch9.adb (Activation_Call_Loc): New routine.
	(Add_Accept): Link the accept procedure to the original entry.
	(Build_Protected_Sub_Specification): Link the protected or unprotected
	version to the original subprogram.
	(Build_Task_Activation_Call): Code cleanup. Use a source location which
	is very close to the "begin" or "end" keywords when generating the
	activation call.
	* exp_prag.adb (Expand_Pragma_Initial_Condition): Reimplemented.
	* exp_spark.adb (Expand_SPARK): Use Expand_SPARK_N_Loop_Statement to
	process loops.
	(Expand_SPARK_N_Loop_Statement): New routine.
	(Expand_SPARK_N_Object_Declaration): Code cleanup. Partially insert the
	call to the Default_Initial_Condition procedure.
	(Expand_SPARK_Op_Ne): Renamed to Expand_SPARK_N_Op_Ne.
	* exp_util.adb (Build_DIC_Procedure_Body): Capture the SPARK_Mode in
	effect.
	(Build_DIC_Procedure_Declaration): Capture the SPARK_Mode in effect.
	(Insert_Actions): Add processing for N_Call_Marker.
	(Kill_Dead_Code): Explicitly kill an elaboration scenario.
	* exp_util.ads (Make_Invariant_Call): Update the comment on usage.
	* frontend.adb: Initialize Sem_Elab. Process all saved top level
	elaboration scenarios for ABE issues.
	* gcc-interface/trans.c (gnat_to_gnu): Add processing for N_Call_Marker
	nodes.
	* lib.adb (Earlier_In_Extended_Unit): New variant.
	* sem.adb (Analyze): Ignore N_Call_Marker nodes.
	(Preanalysis_Active): New routine.
	* sem.ads (Preanalysis_Active): New routine.
	* sem_attr.adb (Analyze_Access_Attribute): Save certain
	elaboration-related attributes. Save the scenario for ABE processing.
	* sem_ch3.adb (Analyze_Object_Declaration): Save the SPARK mode in
	effect. Save certain elaboration-related attributes.
	* sem_ch5.adb (Analyze_Assignment): Save certain elaboration-related
	attributes. Save the scenario for ABE processing.
	* sem_ch6.adb (Analyze_Abstract_Subprogram_Declaration): Save the SPARK
	mode in effect. Save certain elaboration-related attributes.
	(Analyze_Subprogram_Body_Helper): Skip N_Call_Marker nodes when
	locating the first real statement.
	(Analyze_Subprogram_Declaration): Save the SPARK mode in effect. Save
	certain elaboration-related attributes.
	* sem_ch7.adb (Analyze_Package_Declaration): Do not suppress
	elaboration warnings.
	* sem_ch8.adb (Attribute_Renaming): Mark a subprogram body which was
	generated for purposes of wrapping an attribute used as a generic
	actual.
	(Find_Direct_Name): Save certain elaboration-related attributes. Save
	the scenario for ABE processing.
	(Find_Expanded_Name): Save certain elaboration-related attributes. Save
	the scenario for ABE processing.
	* sem_ch9.adb (Analyze_Entry_Declaration): Save certain
	elaboration-related attributes.
	(Analyze_Requeue): Save certain elaboration-related attributes. Save
	the scenario for ABE processing.
	(Analyze_Single_Task_Declaration): Save certain elaboration-related
	attributes.
	(Analyze_Task_Type_Declaration): Save certain elaboration-related
	attributes.
	* sem_ch12.adb (Analyze_Generic_Package_Declaration): Save certain
	elaboration-related attributes.
	(Analyze_Generic_Subprogram_Declaration): Save the SPARK mode in
	effect. Save certain elaboration-related attributes.
	(Analyze_Package_Instantiation): Save certain elaboration-related
	attributes.  Save the scenario for ABE processing. Create completing
	bodies in case the instantiation results in a guaranteed ABE.
	(Analyze_Subprogram_Instantiation): Save certain elaboration-related
	attributes Save the scenario for ABE processing. Create a completing
	body in case the instantiation results in a guaranteed ABE.
	(Provide_Completing_Bodies): New routine.
	* sem_elab.ads: Brand new implementation.
	* sem_prag.adb (Analyze_Pragma, cases Elaborate, Elaborate_All,
	Elaborate_Body): Do not suppress elaboration warnings.
	* sem_res.adb (Make_Call_Into_Operator): Set the parent field of the
	operator.
	(Resolve_Call): Save certain elaboration-related attributes. Save the
	scenario for ABE processing.
	(Resolve_Entity_Name): Do not perform any ABE processing here.
	(Resolve_Entry_Call): Inherit certain attributes from the original call.
	* sem_util.adb (Begin_Keyword_Location): New routine.
	(Defining_Entity): Update the parameter profile. Add processing for
	concurrent subunits that are rewritten as null statements.
	(End_Keyword_Location): New routine.
	(Find_Enclosing_Scope): New routine.
	(In_Instance_Visible_Part): Code cleanup.
	(In_Subtree): Update the parameter profile. Add new version.
	(Is_Preelaborable_Aggregate): New routine.
	(Is_Preelaborable_Construct): New routine.
	(Mark_Elaboration_Attributes): New routine.
	(Scope_Within): Update the parameter profile.
	(Scope_Within_Or_Same): Update the parameter profile.
	* sem_util.ads (Begin_Keyword_Location): New routine.
	(Defining_Entity): Update the parameter profile and the comment on
	usage.
	(End_Keyword_Location): New routine.
	(Find_Enclosing_Scope): New routine.
	(In_Instance_Visible_Part): Update the parameter profile.
	(In_Subtree): Update the parameter profile. Add new version.
	(Is_Preelaborable_Aggregate): New routine.
	(Is_Preelaborable_Construct): New routine.
	(Mark_Elaboration_Attributes): New routine.
	(Scope_Within): Update the parameter profile and the comment on usage.
	(Scope_Within_Or_Same): Update the parameter profile and the comment on
	usage.
	* sem_warn.adb (Check_Infinite_Loop_Warning): Use Has_Condition_Actions
	to determine whether a loop has meaningful condition actions.
	(Has_Condition_Actions): New routine.
	* sinfo.adb (ABE_Is_Certain): Removed.
	(Is_Declaration_Level_Node): New routine.
	(Is_Dispatching_Call): New routine.
	(Is_Elaboration_Checks_OK_Node): New routine.
	(Is_Initialization_Block): New routine.
	(Is_Known_Guaranteed_ABE): New routine.
	(Is_Recorded_Scenario): New routine.
	(Is_Source_Call): New routine.
	(Is_SPARK_Mode_On_Node): New routine.
	(No_Elaboration_Check): Removed.
	(Target): New routine.
	(Was_Attribute_Reference): New routine.
	(Set_ABE_Is_Certain): Removed.
	(Set_Is_Declaration_Level_Node): New routine.
	(Set_Is_Dispatching_Call): New routine.
	(Set_Is_Elaboration_Checks_OK_Node): New routine.
	(Set_Is_Initialization_Block): New routine.
	(Set_Is_Known_Guaranteed_ABE): New routine.
	(Set_Is_Recorded_Scenario): New routine.
	(Set_Is_Source_Call): New routine.
	(Set_Is_SPARK_Mode_On_Node): New routine.
	(Set_No_Elaboration_Check): Removed.
	(Set_Target): New routine.
	(Set_Was_Attribute_Reference): New routine.
	* sinfo.ads: Remove attribute ABE_Is_Certain.  Attribute
	Do_Discriminant_Check now utilizes Flag3.  Attribute
	No_Side_Effect_Removal now utilizes Flag17.  Add new node
	N_Call_Marker.  Update the structure of various nodes.
	(ABE_Is_Certain): Removed along with pragma Inline.
	(Is_Declaration_Level_Node): New routine along with pragma Inline.
	(Is_Dispatching_Call): New routine along with pragma Inline.
	(Is_Elaboration_Checks_OK_Node): New routine along with pragma Inline.
	(Is_Initialization_Block): New routine along with pragma Inline.
	(Is_Known_Guaranteed_ABE): New routine along with pragma Inline.
	(Is_Recorded_Scenario): New routine along with pragma Inline.
	(Is_Source_Call): New routine along with pragma Inline.
	(Is_SPARK_Mode_On_Node): New routine along with pragma Inline.
	(No_Elaboration_Check): Removed along with pragma Inline.
	(Target): New routine along with pragma Inline.
	(Was_Attribute_Reference): New routine along with pragma Inline.
	(Set_ABE_Is_Certain): Removed along with pragma Inline.
	(Set_Is_Declaration_Level_Node): New routine along with pragma Inline.
	(Set_Is_Dispatching_Call): New routine along with pragma Inline.
	(Set_Is_Elaboration_Checks_OK_Node): New routine along with pragma
	Inline.
	(Set_Is_Initialization_Block): New routine along with pragma Inline.
	(Set_Is_Known_Guaranteed_ABE): New routine along with pragma Inline.
	(Set_Is_Recorded_Scenario): New routine along with pragma Inline.
	(Set_Is_Source_Call): New routine along with pragma Inline.
	(Set_Is_SPARK_Mode_On_Node): New routine along with pragma Inline.
	(Set_No_Elaboration_Check): Removed along with pragma Inline.
	(Set_Target): New routine along with pragma Inline.
	(Set_Was_Attribute_Reference): New routine along with pragma Inline.
	* sprint.adb (Sprint_Node_Actual): Add an entry for N_Call_Marker.

2017-10-09  Bob Duff  <duff@adacore.com>

	* exp_ch7.adb (Create_Finalizer): Suppress checks within the finalizer.

2017-10-09  Bob Duff  <duff@adacore.com>

	* freeze.ads: Minor comment fixed.

2017-10-09  Bob Duff  <duff@adacore.com>

	* exp_ch6.adb: (Make_Build_In_Place_Call_In_Object_Declaration): Take
	care of unchecked conversions in addition to regular conversions. This
	takes care of a case where a type is derived from a private untagged
	type that is completed by a tagged controlled type.

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

	* exp_disp.adb (Build_Class_Wide_Check, Replace_Formals): When
	rewriting a class-wide condition, handle properly the case where the
	controlling argument of the operation to which the condition applies is
	an access to a tagged type, and the condition includes a dispatching
	call with an implicit dereference.

2017-10-09  Bob Duff  <duff@adacore.com>

	* exp_ch6.adb: (Make_Build_In_Place_Call_In_Object_Declaration): Remove
	the code at the end of this procedure that was setting the type of a
	class-wide object to the specific type returned by a function call.
	Treat this case as indefinite instead.

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Try_Class_Wide_Operation, Traverse_Homonyms):
	Suppress spurious ambiguity error when two traversals of the homonym
	chain (first directly, and then through an examination of relevant
	interfaces) retrieve the same operation, when other irrelevant homonyms
	of the operatioh are also present.

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Object_Access_Level): If the object is the return
	statement of an expression function, return the level of the function.
	This is relevant when the object involves an implicit conversion
	between access types and the expression function is a completion, which
	forces the analysis of the expression before rewriting it as a body, so
	that freeze nodes can appear in the proper scope.

2017-10-09  Bob Duff  <duff@adacore.com>

	* atree.adb: Make nnd apply to everything "interesting", including
	Rewrite.  Remove rrd.

2017-10-09  Javier Miranda  <miranda@adacore.com>

	* exp_ch3.adb (Expand_N_Object_Declaration): Avoid never-ending loop
	processing the declaration of the dummy object internally created by
	Make_DT to compute the offset to the top of components referencing
	secondary dispatch tables.
	(Initialize_Tag): Do not initialize the offset-to-top field if it has
	been initialized initialized.
	* exp_disp.ads (Building_Static_Secondary_DT): New subprogram.
	* exp_disp.adb (Building_Static_Secondary_DT): New subprogram.
	(Make_DT): Create a dummy constant object if we can statically build
	secondary dispatch tables.
	(Make_Secondary_DT): For statically allocated secondary dispatch tables
	use the dummy object to compute the offset-to-top field value by means
	of the attribute 'Position.

2017-10-09  Bob Duff  <duff@adacore.com>

	* exp_ch6.adb (Expand_N_Extended_Return_Statement): Add self-checking
	code so if BIPAlloc is not passed in, it will likely raise
	Program_Error instead of cause miscellaneous chaos.
	(Is_Build_In_Place_Result_Type): Return False if not Expander_Active,
	as for the other Is_B-I-P... functions.
	* sem_aggr.adb (Resolve_Extension_Aggregate): For an extension
	aggregate whose ancestor part is a build-in-place call returning a
	nonlimited type, transform the assignment to the ancestor part to use a
	temp.
	* sem_ch3.adb (Build_Itype_Reference): Handle the case where we're
	creating an Itype for a library unit entity.
	(Check_Initialization): Avoid spurious error message on
	internally-generated call.
	* sem_ch5.adb (Analyze_Assignment): Handle the case where the
	right-hand side is a build-in-place call. This didn't happen when b-i-p
	was only for limited types.
	* sem_ch6.adb (Create_Extra_Formals): Remove assumption that b-i-p
	implies >= Ada 2005.
	* sem_ch7.adb (Scan_Subprogram_Refs): Avoid traversing the same nodes
	repeatedly.
	* sem_util.adb (Next_Actual): Handle case of build-in-place call.

2017-10-09  Arnaud Charlet  <charlet@adacore.com>

	* doc/gnat_ugn/gnat_and_program_execution.rst: Minor edit.

2017-10-09  Piotr Trojanek  <trojanek@adacore.com>

	* libgnarl/s-taprob.adb: Minor whitespace fix.

2017-10-09  Bob Duff  <duff@adacore.com>

	* namet.ads: Minor comment fix.

2017-10-09  Piotr Trojanek  <trojanek@adacore.com>

	* sem_aux.adb (Unit_Declaration_Node): Detect protected declarations,
	just like other program units listed in Ada RM 10.1(1).

2017-10-09  Justin Squirek  <squirek@adacore.com>

	* sem_ch8.adb (Update_Chain_In_Scope): Modify warning messages.

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Analyze_Associations, Check_Generic_Parent): If an
	actual for a formal package is an instantiation of a child unit, create
	a freeze node for the instance of the parent if it appears in the same
	scope and is not frozen yet.

2017-10-09  Pierre-Marie de Rodat  <derodat@adacore.com>

	* exp_atag.ads, libgnat/a-tags.adb, libgnat/a-tags.ads: Enhance
	in-source documentation for tagged types's Offset_To_Top.

2017-10-09  Bob Duff  <duff@adacore.com>

	* exp_ch3.adb (Build_Assignment): Parameter name N was somewhat
	confusing.  Same for N_Loc.  Remove assumption that b-i-p implies
	limited.  This is for the case of a function call that occurs as the
	default for a record component.
	(Expand_N_Object_Declaration): Deal with the case where expansion has
	created an object declaration initialized with something like
	F(...)'Reference.
	* exp_ch3.adb: Minor reformatting.

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

	* exp_attr.adb (Expand_Attribute_Reference, case 'Valid): The prefix of
	the attribute is an object, but it may appear within a conversion. The
	object itself must be retrieved when generating the range test that
	implements the validity check on a scalar type.

2017-10-05  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/82393
	* mingw32.h (_O_U8TEXT, _O_U16TEXT, _O_WTEXT): Delete.
	* sysdep.c (__gnat_set_mode ): Use DJGPP version for Cygwin.

2017-10-02  Eric Botcazou  <ebotcazou@adacore.com>
            Pierre-Marie de Rodat  <derodat@adacore.com>

	PR ada/82384
	* libgnarl/s-linux__x32.ads (suseconds_t): New subtype.
	(time_t): Change from derived type to subtype.
	(timeval): Use suseconds_t for tv_usec.
	* libgnarl/s-osinte__x32.adb (To_Timespec): Remove use type clause.

2017-10-02  Richard Sandiford  <richard.sandiford@linaro.org>

	* gcc-interface/decl.c (annotate_value): Use wi::to_widest when
	handling the form (plus/mult (convert @0) @1).

2017-09-29  Bob Duff  <duff@adacore.com>

	* exp_ch6.adb (Expand_Call_Helper): Replace with code more similar to
	what we had before.
	(Make_Build_In_Place_Call_In_Object_Declaration): Back out previous
	change. Set the Etype in the class-wide case. This fixes a regression
	in the libadalang test suite.

2017-09-29  Joel Brobecker  <brobecker@adacore.com>

	* doc/gnat_ugn/building_executable_programs_with_gnat.rst,
	doc/gnat_ugn/the_gnat_compilation_model.rst: Avoid use of single colon
	in comment markup.
	* gnat_ugn.texi: Regenerate.

2017-09-29  Justin Squirek  <squirek@adacore.com>

	* ali-util.adb, comperr.adb, cprint.adb, errout.adb, fmap.adb,
	fname-sf.adb, frontend.adb, lib-xref-spark_specific.adb, gnat1drv.adb,
	gnatls.adb, lib.adb, lib-load.adb, lib-writ.adb, prepcomp.adb,
	sinput-d.adb, sinput-l.adb, sprint.adb, targparm.adb: Update comparison
	for checking source file status and error message and/or call to
	Read_Source_File.
	* libgnat/s-os_lib.ads: Add new potential value constant for
	uninitialized file descriptors.
	* osint.adb, osint.ads (Read_Source_File): Add extra parameter to
	return result of IO to encompass a read access failure in addition to a
	file-not-found error.

2017-09-29  Bob Duff  <duff@adacore.com>

	* exp_ch6.adb (Expand_Call_Helper): Handle case of build-in-place
	functions returning nonlimited types. Allow for qualified expressions
	and type conversions.
	(Expand_N_Extended_Return_Statement): Correct the computation of
	Func_Bod to allow for child units.
	(Expand_Simple_Function_Return): Remove assumption that b-i-p implies
	limited (initialization of In_Place_Expansion), and implies >= Ada
	2005.
	(Is_Build_In_Place_Result_Type): New function to accompany
	Is_Build_In_Place_Function and Is_Build_In_Place_Function_Call, because
	sometimes we just have the type on our hands, not the function.  For
	now, does the same thing as the old version, so build-in-place is
	disabled for nonlimited types, except that you can use -gnatd.9 to
	enable it.
	* exp_ch6.ads (Is_Build_In_Place_Result_Type): New function to
	accompany Is_Build_In_Place_Function and
	Is_Build_In_Place_Function_Call, because sometimes we just have the
	type on our hands, not the function.
	(Make_Build_In_Place_Call_In_...): Handle nonlimited build-in-place
	cases.
	(Make_Build_In_Place_Call_In_Object_Declaration): Remove the
	questionable code at the end that was setting the Etype.
	* exp_aggr.adb (Is_Build_In_Place_Aggregate_Return): New function to
	determine whether "return (...agg...);" is returning from a
	build-in-place function.
	(Initialize_Ctrl_Array_Component, Initialize_Ctrl_Record_Component):
	Remove assumption that b-i-p implies limited (initialization of
	In_Place_Expansion).
	(Build_Record_Aggr_Code): AI-287: fix comment; it can't be wrapped in
	an unchecked conversion.  Add assertions.
	(Convert_Aggr_In_Object_Decl): Establish_Transient_Scope -- no need for
	secondary stack here, just because the type needs finalization.  That
	code is obsolete.
	(Convert_To_Assignments): Only set Unc_Decl if Nkind (N) = N_Aggregate.
	For "return (...agg...);" don't assume b-i-p implies limited.
	Needs_Finalization does not imply secondary stack.
	(Expand_Array_Aggregate): Named notation.  Reverse the sense of
	Component_OK_For_Backend -- more readability with fewer double
	negatives.
	* exp_attr.adb (Expand_N_Attribute_Reference): Remove assumptions that
	b-i-p implies >= Ada 2005.
	* exp_ch3.adb (Expand_N_Object_Declaration): Remove assumptions that
	b-i-p implies >= Ada 2005.  Remove Adjust if we're building the return
	object of an extended return statement in place.
	* exp_ch4.adb (Expand_Allocator_Expression, Expand_N_Indexed_Component,
	Expand_N_Selected_Component, Expand_N_Slice): Remove assumptions that
	b-i-p implies >= Ada 2005.
	* exp_ch5.adb (Expand_N_Assignment_Statement): Remove assumption that
	b-i-p implies >= Ada 2005.
	* exp_ch7.adb: Comment fix.
	* exp_ch8.adb (Expand_N_Object_Renaming_Declaration): Remove
	assumptions that b-i-p implies >= Ada 2005.
	* exp_disp.adb (Expand_Interface_Actuals): Remove assumptions that
	b-i-p implies >= Ada 2005.
	* exp_util.adb (Build_Allocate_Deallocate_Proc): Look at Storage_Pool
	(Expr), in case Pool_Id is not set.
	(Initialized_By_Aliased_BIP_Func_Call): Handle case where the call is
	qualified or converted.
	(Is_Secondary_Stack_BIP_Func_Call): Don't check if Nkind (Selector_Name
	(Param)) = N_Identifier; that's all it could be.
	* sinfo.ads: Comment fixes.
	* snames.ads-tmpl: Comment fixes.
	* debug.adb: Add flag gnatd.9, to enable the build-in-place machinery.

2017-09-29  Justin Squirek  <squirek@adacore.com>

	* sem_ch8.adb (Mark_Use_Clauses): Add recursive call to properly handle
	all cases related to marking entity identifiers.

2017-09-29  Vasiliy Fofanov  <fofanov@adacore.com>

	* adaint.c (win32_wait): Properly handle error and take into account
	the WIN32 limitation on the number of simultaneous wait objects.

2017-09-29  Vasiliy Fofanov  <fofanov@adacore.com>

	* cal.c: Minor proofreading.

2017-09-29  Vasiliy Fofanov  <fofanov@adacore.com>

	* doc/gnat_ugn/gnat_utility_programs.rst: Minor formatting fix.
	* gnat_ugn.texi: Regenerate.

2017-09-29  Bob Duff  <duff@adacore.com>

	* lib-xref.ads: Comment fix.

2017-09-29  Bob Duff  <duff@adacore.com>

	* exp_aggr.adb: Remove calls to Set_No_Ctrl_Actions for discriminants.
	Discriminants can't need finalization.

2017-09-29  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Expression_Function): Do not emit freeze nodes
	for types in expression if the function is within a generic unit.
	* sem_res.adb (Resolve): In a generic context do not freeze an
	expression, unless it is an entity. This exception is solely for the
	purpose of detecting illegal uses of deferred constants in generic
	units.
	* sem_res.adb: Minor reformatting.

2017-09-29  Justin Squirek  <squirek@adacore.com>

	* sem_ch8.adb (Note_Redundant_Use): Add guard to protect against false
	redundant warnings.

2017-09-29  Yannick Moy  <moy@adacore.com>

	* sinput-c.adb: Remove unused with-clause on Ada.Unchecked_Conversion.

2017-09-29  Eric Botcazou  <ebotcazou@adacore.com>

	* doc/gnat_rm/representation_clauses_and_pragmas.rst: Minor rewording.
	* doc/gnat_rm/implementation_defined_pragmas.rst (Optimize_Alignment):
	Document the effect of pragma Optimize_Alignment (Space) on non-packed
	record types.
	* gnat_rm.texi: Regenerate.

2017-09-25  Justin Squirek  <squirek@adacore.com>

	* aspects.adb, bindgen.adb, clean.adb, erroutc.adb, exp_ch13.adb,
	exp_dbug.adb, exp_unst.adb, exp_util.adb, frontend.adb, gnat1drv.adb,
	gnatdll.adb, gnatlink.adb, gnatls.adb, gnatname.adb, gnatxref.adb,
	gnatfind.adb, libgnat/a-cfhama.ads, libgnat/a-exetim__mingw.adb,
	libgnat/a-strmap.adb, libgnat/a-teioed.adb, libgnat/g-alvety.ads,
	libgnat/g-expect.adb, libgnat/g-regist.adb, libgnat/g-socket.adb,
	libgnat/g-socthi__mingw.ads, libgnat/s-stausa.adb,
	libgnat/s-tsmona__linux.adb, libgnat/s-tsmona__mingw.adb,
	libgnarl/s-taenca.adb, libgnarl/s-tassta.adb, libgnarl/s-tarest.adb,
	libgnarl/s-tpobop.adb, make.adb, makeusg.adb, namet.adb, output.ads,
	put_scos.adb, repinfo.adb, rtsfind.adb, scn.ads, sem_attr.adb,
	sem_aux.ads, sem_warn.ads, targparm.adb, xr_tabls.adb, xref_lib.adb:
	Removal of ineffective use-clauses.
	* exp_ch9.adb (Is_Simple_Barrier_Name): Check for false positives with
	constant folded barriers.
	* ghost.adb, sprint.adb, sem_ch10.adb, sem_warn.adb: Change access to
	Subtype_Marks and Names list in use-clause nodes to their new singular
	counterparts (e.g. Subtype_Mark, Name).
	* par.adb, par-ch8.adb (Append_Use_Clause): Created to set
	Prev_Ids and More_Ids in use-clause nodes.
	(P_Use_Clause): Modify to take a list as a parameter.
	(P_Use_Package_Clause, P_Use_Type_Clause): Divide names and
	subtype_marks within an aggregate use-clauses into individual clauses.
	* par-ch3.adb, par-ch10.adb, par-ch12.adb: Trivally modify call to
	P_Use_Clause to match its new behavior.
	* sem.adb (Analyze): Mark use clauses for non-overloaded entities.
	* sem_ch4.adb (Try_One_Interp): Add sanity check to handle previous
	errors.
	* sem_ch6.adb (Analyze_Generic_Subprogram_Body,
	Analyze_Subprogram_Body_Helper): Update use clause chain at the end of
	the declarative region.
	* sem_ch7.adb (Analyze_Package_Body_Helper): Update use clause chain
	after analysis (Analyze_Package_Specification): Update use clause chain
	when there is no body.
	* sem_ch8.ads, sem_ch8.adb (Analyze_Use_Package, Analyze_Use_Type): Add
	parameter to determine weither the installation of scopes should also
	propagate on the use-clause "chain".
	(Mark_Use_Clauses): Created to traverse use-clause chains and determine
	what constitutes a valid "use" of a clause.
	(Update_Use_Clause_Chain): Created to aggregate common machinary used
	to clean up use-clause chains (and warn on ineffectiveness) at the end
	of declaritive regions.
	* sem_ch8.adb (Analyze_Package_Name): Created to perform analysis on a
	package name from a use-package clause.
	(Analyze_Package_Name_List): Created to perform analysis on a list of
	package names (similar to Analyze_Package_Name).
	(Find_Most_Prev): Created to traverse to the beginning of a given
	use-clause chain.
	(Most_Decendant_Use_Clause): Create to identify which clause from a
	given set is highest in scope (not always the most prev).
	(Use_One_Package, Use_One_Type): Major cleanup and reorganization to
	handle the new chaining algorithm, also many changes related to
	redundant clauses. A new parameter has also been added to force
	installation to handle certain cases.
	* sem_ch9.adb (Analyze_Entry_Body, Analyze_Protected_Body,
	Analyze_Task_Body): Mark use clauses on relevant entities.
	* sem_ch10.adb, sem_ch10.ads (Install_Context_Clauses,
	Install_Parents): Add parameter to determine weither the installation
	of scopes should also propagate on the use-clause "chain".
	* sem_ch12.adb (Inline_Instance_Body): Add flag in call to
	Install_Context to avoid redundant chaining of use-clauses.
	* sem_ch13.adb: Minor reformatting.
	* sem_res.adb (Resolve): Mark use clauses on operators.
	(Resolve_Call, Resolve_Entity_Name): Mark use clauses on relevant
	entities.
	* sinfo.adb, sinfo.ads (Is_Effective_Use_Clause,
	Set_Is_Effective_Use_Clause): Add new flag to N_Use_Clause nodes to
	represent any given clause's usage/reference/necessity.
	(Prev_Use_Clause, Set_Prev_Use_Clause): Add new field to N_Use_Clause
	nodes to allow loose chaining of redundant clauses.
	(Set_Used_Operations, Set_Subtype_Mark, Set_Prev_Ids, Set_Names,
	Set_More_Ids, Set_Name): Modify set procedure calls to reflect
	reorganization in node fields.
	* types.ads (Source_File_Index): Adjust index bounds.
	(No_Access_To_Source_File): New constant.

2017-09-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Analyze_One_Aspect): In ASIS mode make a full copy of
	the expression to be used in the generated attribute specification
	(rather than relocating it) to avoid resolving a potentially malformed
	tree when the expression is resolved through an ASIS-specific call to
	Resolve_Aspect_Expressions.  This manifests itself as a crash on a
	function with parameter associations.

2017-09-25  Yannick Moy  <moy@adacore.com>

	* exp_spark.adb (Expand_SPARK_Indexed_Component,
	Expand_SPARK_Selected_Component): New procedures to insert explicit
	dereference if required.
	(Expand_SPARK): Call the new procedures.

2017-09-25  Patrick Bernardi  <bernardi@adacore.com>

	* libgnat/a-stwiun.adb, libgnat/s-stchop__vxworks.adb,
	libgnat/g-socthi__vxworks.ads, libgnat/a-stzunb.adb,
	libgnat/a-strunb.adb, libgnarl/s-osinte__lynxos178.adb,
	libgnarl/s-intman__vxworks.adb, libgnarl/s-osinte__darwin.adb,
	libgnarl/a-exetim__darwin.adb: Removed ineffective use-clauses.

2017-09-25  Vasiliy Fofanov  <fofanov@adacore.com>

	* adaint.c (win32_wait): Properly handle error and take into account
	the WIN32 limitation on the number of simultaneous wait objects.

2017-09-25  Yannick Moy  <moy@adacore.com>

	* sem_ch3.adb (Constant_Redeclaration): Do not insert a call to the
	invariant procedure in GNATprove mode.
	* sem_ch5.adb (Analyze_Assignment): Likewise.

2017-09-25  Piotr Trojanek  <trojanek@adacore.com>

	* adabkend.adb (Call_Back_End): Fix wording of "front-end" and
	"back-end" in comments.

2017-09-25  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Expand_Call_Helper): The extra accessibility check in a
	call that appears in a classwide precondition and that mentions an
	access formal of the subprogram, must use the accessibility level of
	the actual in the call. This is one case in which a reference to a
	formal parameter appears outside of the body of the subprogram.

2017-09-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_res.adb (Replace_Actual_Discriminants): Replace a discriminant
	for GNATprove.
	(Resolve_Entry): Clean up predicate

2017-09-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Constituent): Raise Unrecoverable_Error rather
	than Program_Error because U_E is more in line with respect to the
	intended behavior.

2017-09-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Resolve_Aspect_Expressions): The expression for aspect
	Storage_Size does not freeze, and thus can include references to
	deferred constants.

2017-09-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_spark.adb (Expand_SPARK_Potential_Renaming): Do not process a
	reference when it appears within a pragma of no significance to SPARK.
	(In_Insignificant_Pragma): New routine.
	* sem_prag.ads: Add new table Pragma_Significant_In_SPARK.

2017-09-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Analyze_Associations, case N_Formal_Package): If the
	actual is a renaming, indicate that it is the renamed package that must
	be frozen before the instantiation.

2017-09-25  Yannick Moy  <moy@adacore.com>

	* doc/gnat_ugn/gnat_and_program_execution.rst: Fix typo in description
	of dimensionality system in GNAT UG.
	* gnat_ugn.texi: Regenerate.

2017-09-25  Yannick Moy  <moy@adacore.com>

	* gnat1drv.adb: Call Check_Safe_Pointers from the frontend in
	GNATprove_Mode when switch -gnatdF used.

2017-09-25  Piotr Trojanek  <trojanek@adacore.com>

	* adabkend.adb (Call_Back_End): Reset Current_Error_Node when starting
	the backend.

2017-09-25  Javier Miranda  <miranda@adacore.com>

	* exp_imgv.adb (Expand_Image_Attribute): Disable the optimized
	expansion of user-defined enumeration types when the generation of
	names for enumeration literals is suppressed.

2017-09-25  Gary Dismukes  <dismukes@adacore.com>

	* libgnarl/s-taprop__linux.adb: Minor reformatting.

2017-09-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Resolve_Aspect_Expressions): Do not resolve identifiers
	that appear as selector names of parameter associations, as these are
	never resolved by visibility.

2017-09-25  Justin Squirek  <squirek@adacore.com>

	* sem_res.adb (Resolve_Entry): Generate reference for index entities.

2017-09-25  Doug Rupp  <rupp@adacore.com>

	* libgnarl/s-taprop__linux.adb (Compute_Base_Monotonic_Clock): Refine.

2017-09-25  Javier Miranda  <miranda@adacore.com>

	* exp_imgv.adb (Is_User_Defined_Enumeration_Type): New subprogram.
	(Expand_User_Defined_Enumeration_Image): New subprogram.
	(Expand_Image_Attribute): Enable speed-optimized expansion of
	user-defined enumeration types when we are compiling with optimizations
	enabled.

2017-09-25  Piotr Trojanek  <trojanek@adacore.com>

	* sem_util.adb (Has_Null_Abstract_State): Remove, as an exactly same
	routine is already provided by Einfo.
	* einfo.adb (Has_Null_Abstract_State): Replace with the body from
	Sem_Util, which had better comments and avoided double calls to
	Abstract_State.

2017-09-25  Bob Duff  <duff@adacore.com>

	* exp_ch3.adb: Rename Comp_Type_Simple to be Comp_Simple_Init.

2017-09-25  Doug Rupp  <rupp@adacore.com>

	* libgnarl/s-taprop__linux.adb (Base_Monotonic_Clock): New variable.
	(Compute_Base_Monotonic_Clock): New function.
	(Timed_Sleep): Adjust to use Base_Monotonic_Clock.
	(Timed_Delay): Likewise.
	(Monotonic_Clock): Likewise.
	* s-oscons-tmplt.c (CLOCK_MONOTONIC): Use on Linux.

2017-09-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Save_References_In_Aggregate): Small correction to
	previous change.

2017-09-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch5.adb, sem_ch4.adb, sem_ch13.adb, sem_attr.adb, exp_ch3.adb:
	Minor reformatting.

2017-09-20  Alexandre Oliva <aoliva@redhat.com>

	* gcc-interface/lang.opt (gant, gnatO, gnat): Add RejectNegative.

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

	* sem_ch4.adb (Complete_Object_Operation): Do not insert 'Access for
	reference types in the access-to-access case.

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

	* sem_attr.adb (Analyze_Access_Attribute): Move check for the presence
	of the "aliased" keyword on the prefix from here to...
	(Resolve_Attribute) <Attribute_Access>: ...here.  Remove useless call
	to Check_No_Implicit_Aliasing.
	* sinfo.ads (Non_Aliased_Prefix): Delete.
	(Set_Non_Aliased_Prefix): Likewise.
	* sinfo.adb (Non_Aliased_Prefix): Delete.
	(Set_Non_Aliased_Prefix): Likewise.

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

	* exp_ch5.adb (Build_Formal_Container_Iteration,
	Expand_Formal_Container_Element_Loop): Convert the container to the
	root type before passing it to the iteration operations, so it will be
	of the right type.

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

	* einfo.ads, validsw.ads, treepr.ads, sem_util.ads: Comment fixes.

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

	* exp_ch3.adb (Build_Array_Init_Proc): If validity checking is enabled,
	and it's a bit-packed array, pass False to the Consider_IS parameter of
	Needs_Simple_Initialization.

2017-09-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch6.adb (Check_Inline_Pragma): Link the newly generated spec to
	the preexisting body.
	* sem_prag.adb (Check_Inline_Always_Placement): New routine.
	(Process_Inline): Verify the placement of pragma Inline_Always. The
	pragma must now appear on the initial declaration of the related
	subprogram.

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

	* sem_ch3.adb (Analyze_Declarations): In ASIS mode,  At the end of the
	declarative list in a subprogram body, analyze aspext specifications to
	provide basic semantic information, because otherwise the aspect
	specifications might only be snalyzed during expansion, when related
	subprograms are generated.

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

	* exp_ch9.adb (Is_Simple_Barrier_Name): Follow Original_Node, in case
	validity checks have rewritten the tree.

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

	* sem_util.adb: Comment fixes, and remove redundant Is_Itype check.

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

	* sem_ch12.adb (Save_References_In_Aggregate): When constructing a
	qualified exxpression for an aggregate in a generic unit, verify that
	the scope of the type is itself visible and not hidden, so that the
	qualified expression is correctly resolved in any instance.

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

	* sem_ch4.adb (Analyze_Qualified_Expression): Give an error if the type
	mark refers to the current instance. Set the type to Any_Type in that
	case, to avoid later crashes.

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

	* exp_ch3.adb (Replace_Discriminant_References): New procedure,
	subsidiary of Build_Assignment, used to handle the initialization code
	for a mutable record component whose default value is an aggregate that
	sets the values of the discriminants of the components.

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

	* sem_ch13.adb (Analyze_Attribute_Definition_Clause) <Address>: Mark
	the entity as being volatile for an overlay that toggles the scalar
	storage order.

2017-09-18  Fedor Rybin  <frybin@adacore.com>

	* doc/gnat_ugn/gnat_utility_programs.rst: Document that gnattest
	options -U main and --harness-only are not compatible.

2017-09-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* freeze.adb, sem_ch6.adb, sem_res.adb: Minor reformatting.

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

	* einfo.ads (Is_Imported): Update comment, as this
	routine also applies to constants.

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

	* sem_util.adb (Find_Placement_In_State_Space): Allow generic package
	holding state.

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

	* sem_prag.adb (Is_Non_Significant_Pragma_Reference): Change the
	constant indication for Pragma_Linker_Section.

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

	Alternate fix for PR ada/71358
	* libgnat/g-comlin.adb (Getopt): Remove manual null access checks.
	Instead, make a local copy of Config, and if it's null, allocate an
	empty Command_Line_Configuration_Record, so we won't crash on null
	pointer dereference.

2017-09-16  Eric Botcazou  <ebotcazou@adacore.com>

	* libgnarl/a-intnam__rtems.ads: Update copyright date.
	* libgnarl/s-interr__hwint.adb: Likewise.
	* libgnarl/s-osinte__kfreebsd-gnu.ads: Likewise.
	* libgnarl/s-osinte__rtems.adb: Likewise.
	* libgnarl/s-osinte__rtems.ads: Likewise.

2017-09-13  Nicolas Roche  <roche@adacore.com>

	* Make-lang.in: In the fallback mechanim, parse the associated .ali
	file and try to guess the locations of dependencies.

2017-09-13  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch13.adb (Register_Address_Clause_Check): New procedure to save
	the suppression status of Alignment_Check on the current scope.
	(Alignment_Checks_Suppressed): New function to use the saved instead of
	the current suppression status of Alignment_Check.
	(Address_Clause_Check_Record): Add Alignment_Checks_Suppressed field.
	(Analyze_Attribute_Definition_Clause): Instead of manually appending to
	the table, call Register_Address_Clause_Check.
	(Validate_Address_Clauses): Call Alignment_Checks_Suppressed on the
	recorded address clause instead of its entity.

2017-09-13  Jerome Guitton  <guitton@adacore.com>

	* libgnarl/s-tpopsp__vxworks-tls.adb,
	libgnarl/s-tpopsp__vxworks-rtp.adb, libgnarl/s-tpopsp__vxworks.adb
	(Self): Register thread if task id is null.

2017-09-13  Arnaud Charlet  <charlet@adacore.com>

	* libgnat/s-htable.adb, libgnat/s-htable.ads: Minor style tuning.

2017-09-13  Arnaud Charlet  <charlet@adacore.com>

	* lib-xref-spark_specific.adb (Scopes): simplify hash map; now it maps
	from an entity to only scope index, as a mapping from an entity to the
	same entity was useless.
	(Get_Scope_Num): refactor as a simple renaming; rename parameter from N
	to E.
	(Set_Scope_Num): refactor as a simple renaming; rename parameter from N
	to E.
	(Is_Constant_Object_Without_Variable_Input): remove local "Result"
	variable, just use return statements.

2017-09-13  Arnaud Charlet  <charlet@adacore.com>

	* libgnarl/s-vxwext__kernel-smp.adb,
	libgnarl/s-tpopsp__vxworks-rtp.adb, libgnarl/s-vxwext__noints.adb:
	New file.

2017-09-13  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb: Flag42 is now Is_Controlled_Active.
	(Is_Controlled): This attribute is now synthesized.
	(Is_Controlled_Active): This attribute is now an explicit flag rather
	than a synthesized attribute.	(Set_Is_Controlled): Removed.
	(Set_Is_Controlled_Active): New routine.
	(Write_Entity_Flags): Update the output for Flag42.
	* einfo.ads: Update the documentation of the following attributes:
	Disable_Controlled, Is_Controlled, Is_Controlled_Active, Is_Controlled
	and Is_Controlled_Active have swapped their functionality.
	(Is_Controlled): Renamed to Is_Controlled_Active.
	(Is_Controlled_Active): Renamed to Is_Controlled.
	(Set_Is_Controlled): Renamed to Set_Is_Controlled_Active.
	* exp_ch3.adb (Expand_Freeze_Record_Type): Restore the original use of
	Is_Controlled.
	* exp_util.adb (Has_Some_Controlled_Component): Code clean up.
	(Needs_Finalization): Code clean up. Remove the tests for
	Disable_Controlled because a) they were incorrect as they would reject
	a type which is sublect to the aspect, but may contain controlled
	components, and b) they are no longer necessary.
	* exp_util.ads (Needs_Finalization): Update comment on documentation.
	* freeze.adb (Freeze_Array_Type): Restore the original use of
	Is_Controlled.
	(Freeze_Record_Type): Restore the original use of Is_Controlled.
	* sem_ch3.adb (Analyze_Object_Declaration): Restore the original use of
	Is_Controlled.
	(Array_Type_Declaration): Restore the original use of Is_Controlled.
	(Build_Derived_Private_Type): Restore the original use of
	Is_Controlled.
	(Build_Derived_Record_Type): Set the Is_Controlled_Active flag of a
	type derived from Ada.Finalization.[Limited_]Controlled.
	(Build_Derived_Type): Restore the original use of Is_Controlled.
	(Record_Type_Definition): Restore the original use of Is_Controlled.
	* sem_ch7.adb (Preserve_Full_Attributes): Restore the original use of
	Is_Controlled.
	* sem_ch13.adb (Analyze_Aspect_Disable_Controlled): New routine.
	(Analyze_Aspect_Specifications): Use routine
	Analyze_Aspect_Disable_Controlled to process aspect Disable_Controlled.

2017-09-13  Vincent Celier  <celier@adacore.com>

	* clean.adb (Gnatclean): Fix error when looking for target
	of <target>-gnatclean

2017-09-13  Javier Miranda  <miranda@adacore.com>
            Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Find_Expanded_Name): Complete code that identifies an
	expanded name that designates the current instance of a child unit in
	its own body and appears as the prefix of a reference to an entity
	local to the child unit.

2017-09-12  Bob Duff  <duff@adacore.com>

	* sem_warn.adb: Minor comment.

2017-09-12  Bob Duff  <duff@adacore.com>

	* libgnat/a-cbdlli.adb, libgnat/a-cbhama.adb,
	libgnat/a-cbmutr.adb, libgnat/a-cborma.adb: Rename New_Item to
	be Default_Initialized_Item, and apply pragma Unmodified to it,
	to suppress the warning.

2017-09-12  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Add early return
	for access types.

2017-09-12  Yannick Moy  <moy@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): Consider Refined_Global
	together with Global when ignoring one in CodePeer mode.

2017-09-12  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Analyze_Declarations): In nested
	package declarations that have a private part enable missing check
	of the RM rule 13.1.1(11/3): usage names in aspect definitions are
	resolved at the end of the immediately enclosing declaration list.

2017-09-12  Bob Duff  <duff@adacore.com>

	* sem_ch6.adb (Analyze_Expression_Function): Initialize Def_Id to
	Empty.

2017-09-12  Georges-Axel Jaloyan  <jaloyan@adacore.com>

	* debug.adb: Reserving flag -gnatdF for safe pointer checking.
	* gnat1drv.adb (gnat1drv): Adding the call to the analysis on
	dF flag.
	* sem_spark.adb, sem_spark.ads: Implementation of the analysis,
	in preparation for the evolution of the SPARK language that
	includes a pointer analysis for checking non-aliasing of access
	types. The Check_Safe_Pointers function is the entry point, and
	will traverse the AST and raise compile-time errors everytime
	it detects non-begign aliasing.  Detailed comments are present
	in the sem_spark.ads file.
	* sem_util.adb, sem_util.ads (First_Global, Next_Global): New
	functions to iterate over the list of globals of a subprogram.
	* libgnat/system.ads: Add restriction No_Finalization.
	* gcc-interface/Make-lang.in: Add new file sem_spark.adb and
	dependency on g-dynhta.adb.

2017-09-12  Bob Duff  <duff@adacore.com>

	* sem_ch6.adb (Analyze_Expression_Function): Call
	Check_Dynamically_Tagged_Expression.
	* sem_util.adb (Check_Dynamically_Tagged_Expression): Remove
	"and then Is_Tagged_Type (Typ)" because there is an earlier
	"Assert (Is_Tagged_Type (Typ))".

2017-09-12  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/Makefile.in (SPARC/Solaris): Remove obsolete stuff.

2017-09-11  Arnaud Charlet  <charlet@adacore.com>

	* doc/gnat_ugn/the_gnat_compilation_model.rst: Fix sphinx warning.
	* doc/gnat_ugn/platform_specific_information.rst: Remove doc
	for no longer supported platforms.
	* doc/gnat_ugn/gnat_and_program_execution.rst: Added detailed
	description of the semantics for dimensionality analysis.
	* gnat_ugn.texi: Regenerated.

2017-09-11  Eric Botcazou  <ebotcazou@adacore.com>

	* freeze.adb (Has_Incomplete_Compoent): Delete.
	(Freeze_Profile):
	Do not inhibit the freezing of the profile of an expression
	function here.
	(Freeze_Subprogram): Do not re-create extra formals.
	* sem_ch6.adb (Analyze_Expression_Function): Always
	pre-analyze the expression if the function is not a completion.
	(Analyze_Subprogram_Body_Helper): For the body generated
	from an expression function that is not a completion, do
	not freeze the profile and temporary mask the types declared
	outside the expression that are not yet frozen.
	* sem_res.adb (Rewrite_Renamed_Operator): Also bail out if invoked
	during the pre-analysis of an expression function.

2017-09-11  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/gigi.h (enum standard_datatypes): Minor tweak.
	(gigi): Likewise.

2017-09-11  Yannick Moy  <moy@adacore.com>

	* lib-xref-spark_specific.adb: Minor rewrite.

2017-09-11  Jerome Lambourg  <lambourg@adacore.com>

        * libgnat: Rename ?-[a-z]*-* into ?-[a-z]*__*
        * gcc-interface/Makefile.in, gcc-interface/Make-lang.in: Take this
	renaming into account.

2017-09-11  Jerome Lambourg  <lambourg@adacore.com>

	* libgnarl: Rename ?-[a-z]*-* into ?-[a-z]*__*
	* gcc-interface/Makefile.in: Take this renaming into account.

2017-09-11  Arnaud Charlet  <charlet@adacore.com>

	* s-auxdec-empty.ads, s-auxdec-empty.adb, 9drpc.adb: Removed, no
	longer used.

2017-09-11  Yannick Moy  <moy@adacore.com>

	* sem_util.adb (Check_Result_And_Post_State):
	Do not issue a warning about missing reference to an outcome if
	the subprogram is ghost and has no outputs.
	* lib-xref-spark_specific.adb, sem_aggr.adb, sem_aux.ads: Minor
        reformatting.

2017-09-11  Yannick Moy  <moy@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): Set
	Check_Validity_Of_Parameters to False in GNATprove mode.
	* opt.ads (Check_Validity_Of_Parameters): Document switch to
	set option.

2017-09-09  Pierre-Marie de Rodat  <derodat@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: Don't
	generate debug info for inner record types if -fgnat-encodings=minimal.
	(gnat_to_gnu_entity) <E_Record_Subtype>: Use the ultimate base record
	type as the debug type.

2017-09-09  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (components_to_record): Do not reorder in non-
	packed record types if pragma Optimize_Alignment (Space) is enabled.

2017-09-09  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Subprogram_Body_to_gnu): Disregard inlining
	limits for expression functions.
	(gnat_to_gnu) <N_Object_Declaration>: Fix formatting.

2017-09-09  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: Copy the
	layout of the record from the parent type only if both are or are not
	unchecked unions.
	(is_stored_discriminant): Return false for an unchecked union.

2017-09-09  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils2.c (build_allocator): In type_annotate_only mode
	return NULL_EXPR.

2017-09-09  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (promote_object_alignment): New function taken
	from...
	(gnat_to_gnu_entity) <E_Variable>: ...here.  Invoke it.
	(gnat_to_gnu_field): If the field is Atomic or VFA, invoke it and
	create a padding type on success before doing the atomic check.

2017-09-09  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Apply the
	promotion to static memory earlier in the processing.

2017-09-09  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity): Only set the TYPE_ALIGN_OK
	and TYPE_BY_REFERENCE_P flags on types after various promotions.
	* gcc-interface/trans.c (node_has_volatile_full_access) <N_Identifier>:
	Consider all kinds of entities.

2017-09-09  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (convert): When converting to a padding type,
	reuse an existing CONSTRUCTOR if it has got the right size.

2017-09-08  Nicolas Roche  <roche@adacore.com>

	* gcc-interface/Make-lang.in, gcc-interface/Makefile.in: Find runtime
	source in libgnat/
	* a-lfztio.ads, g-timsta.ads, g-sercom-linux.adb, s-osprim-solaris.adb,
	a-inteio.ads, s-stchop-rtems.adb, s-casuti.adb, s-pack39.adb,
	i-vxwork-x86.ads, a-strbou.adb, a-stzmap.adb, s-assert.adb,
	a-sfecin.ads, a-cohama.adb, s-casuti.ads, a-suenco.adb, s-pack39.ads,
	a-stzmap.ads, a-strbou.ads, s-stalib.adb, s-trasym.adb, g-comver.adb,
	s-assert.ads, s-vector.ads, g-cgi.adb, a-cohama.ads, s-wchcnv.adb,
	a-titest.adb, s-pack48.adb, a-suenco.ads, a-strunb.adb, s-stalib.ads,
	s-trasym.ads, a-nudira.adb, g-comver.ads, a-nuflra.adb, g-cgi.ads,
	a-chacon.adb, s-wchcnv.ads, a-excach.adb, s-pack48.ads, a-titest.ads,
	a-strunb.ads, s-dwalin.adb, a-nudira.ads, a-chtgbo.adb, s-resfil.adb,
	a-scteio.ads, a-nuflra.ads, g-soliop-mingw.ads, s-pack57.adb,
	a-chacon.ads, s-bytswa.ads, s-pooloc.adb, g-os_lib.adb, s-dwalin.ads,
	a-szuzha.adb, s-resfil.ads, a-chtgbo.ads, s-spsufi.adb, s-pack57.ads,
	s-pooloc.ads, g-os_lib.ads, a-stfiha.ads, a-lcteio.ads, a-wtcoau.adb,
	a-szuzha.ads, s-mmosin-unix.adb, a-stmaco.ads, s-spsufi.ads,
	s-stchop-limit.ads, a-wtcoau.ads, a-exctra.adb, s-mmosin-unix.ads,
	s-sequio.adb, s-conca2.adb, g-table.adb, s-imglli.adb,
	a-numaux-x86.adb, a-strsea.adb, s-wchstw.adb, a-clrefi.adb,
	a-wwboio.adb, a-exctra.ads, s-sequio.ads, s-conca2.ads, a-wwunio.ads,
	system-linux-hppa.ads, g-table.ads, s-dimkio.ads, s-imglli.ads,
	a-cofove.adb, a-numaux-x86.ads, s-wchstw.ads, a-strsea.ads,
	a-clrefi.ads, a-wwboio.ads, s-stratt-xdr.adb, s-crc32.adb,
	s-excmac-arm.adb, g-busora.adb, a-cofove.ads, s-osprim-unix.adb,
	g-io.adb, s-pack49.adb, s-crc32.ads, s-excmac-arm.ads, a-fzteio.ads,
	g-busora.ads, s-stausa.adb, system-linux-mips.ads, sequenio.ads,
	g-exctra.adb, g-rewdat.adb, a-cgaaso.adb, g-io.ads, s-pack49.ads,
	a-wtflau.adb, a-undesu.adb, s-stausa.ads, a-ztenau.adb, g-enutst.ads,
	calendar.ads, s-pack58.adb, g-rewdat.ads, g-exctra.ads, s-ststop.adb,
	a-cgaaso.ads, a-strfix.adb, a-comlin.adb, a-strunb-shared.adb,
	a-wtflau.ads, a-undesu.ads, a-cbhase.adb, a-ztenau.ads, s-os_lib.adb,
	a-coorse.adb, a-chlat1.ads, s-pack58.ads, s-ststop.ads, a-strfix.ads,
	a-comlin.ads, a-strunb-shared.ads, a-nscefu.ads, s-valboo.adb,
	directio.ads, a-chtgke.adb, a-cbhase.ads, a-wtinau.adb,
	system-linux-alpha.ads, s-os_lib.ads, a-coorse.ads,
	system-linux-s390.ads, s-imgwiu.adb, a-chtgop.adb, s-valboo.ads,
	a-chtgke.ads, a-tienio.adb, s-conca3.adb, a-wtinau.ads,
	system-darwin-ppc.ads, i-c.adb, s-expllu.adb, g-expect.adb,
	g-sha256.ads, s-vallld.adb, s-imgwiu.ads, a-chtgop.ads, a-strmap.adb,
	a-tienio.ads, s-conca3.ads, s-imgint.adb, i-c.ads, s-expllu.ads,
	s-osprim-darwin.adb, a-cogeso.adb, g-expect.ads, a-iwteio.ads,
	s-vallld.ads, a-coinho-shared.adb, g-shsh64.adb, a-strmap.ads,
	g-comlin.adb, a-excpol.adb, s-imgint.ads, a-ztdeau.adb, a-cogeso.ads,
	a-coinho-shared.ads, g-shsh64.ads, g-comlin.ads, a-stzsup.adb,
	a-rbtgbk.adb, a-wtmoau.adb, a-ztdeau.ads, s-exnlli.adb, g-tty.adb,
	g-heasor.adb, g-socthi-dummy.adb, s-llflex.ads, a-zchara.ads,
	a-stzsup.ads, a-ztcstr.adb, a-rbtgbk.ads, a-sfwtio.ads, a-wtmoau.ads,
	a-sulcin.adb, s-exnlli.ads, system-freebsd.ads, a-stunha.adb,
	a-charac.ads, g-tty.ads, g-heasor.ads, s-exctra.adb,
	g-socthi-dummy.ads, a-coboho.adb, a-ztcstr.ads, a-tideio.adb,
	a-sulcin.ads, a-wrstfi.adb, g-alleve.adb, s-pack59.adb, a-ngrear.adb,
	a-stboha.adb, a-stunau-shared.adb, a-stunha.ads, a-lfwtio.ads,
	s-fileio.adb, s-exctra.ads, a-coboho.ads, a-ioexce.ads, a-tideio.ads,
	a-ngrear.ads, a-wrstfi.ads, s-pack59.ads, g-alleve.ads, a-stboha.ads,
	s-poosiz.adb, g-traceb.adb, g-rannum.adb, machcode.ads, s-purexc.ads,
	s-fileio.ads, a-cfinve.adb, a-crbtgk.adb, system-solaris-x86.ads,
	s-poosiz.ads, g-rannum.ads, g-traceb.ads, a-except.adb, s-conca4.adb,
	a-stream.adb, a-cfinve.ads, a-crbtgk.ads, s-wchwts.adb,
	system-mingw.ads, a-except.ads, s-conca4.ads, a-chzla9.ads,
	s-valenu.adb, s-soflin.adb, a-stream.ads, a-cgarso.adb, s-valllu.adb,
	g-crc32.adb, s-wchwts.ads, s-fatflt.ads, s-imguns.adb, s-strcom.adb,
	g-decstr.adb, s-valenu.ads, s-soflin.ads, a-cgarso.ads, a-cwila1.ads,
	s-valllu.ads, g-crc32.ads, s-imguns.ads, g-spipat.adb, s-valwch.adb,
	s-strcom.ads, g-decstr.ads, text_io.ads, g-debuti.adb, s-stchop.adb,
	g-spipat.ads, s-valwch.ads, a-string.ads, s-exnint.adb, g-awk.adb,
	g-tasloc.adb, s-wwdenu.adb, s-boustr.adb, a-zchuni.adb, s-stchop.ads,
	g-debuti.ads, s-stopoo.adb, system-dragonfly-x86_64.ads,
	system-linux-x86.ads, s-exnint.ads, g-awk.ads, a-stzhas.adb,
	g-tasloc.ads, s-wwdenu.ads, g-debpoo.adb, g-except.ads,
	g-sse.ads, s-boustr.ads, a-zchuni.ads, s-bitops.adb, s-wwdwch.adb,
	s-stopoo.ads, a-catizo.adb, a-stzhas.ads, a-nlcefu.ads, g-debpoo.ads,
	i-vxwoio.adb, s-bitops.ads, g-io-put-vxworks.adb, s-wwdwch.ads,
	g-sehamd.adb, a-ssicst.adb, a-catizo.ads, s-mmap.adb, g-string.adb,
	s-traceb.adb, a-swunau.adb, s-rannum.adb, a-ticoau.adb, i-vxwoio.ads,
	g-sehamd.ads, a-stwiun.adb, a-ssicst.ads, s-conca5.adb, a-ssitio.ads,
	s-mmap.ads, a-zttest.adb, g-string.ads, g-sercom.adb, a-cdlili.adb,
	a-swunau.ads, s-traceb.ads, s-rannum.ads, a-ticoau.ads, system-aix.ads,
	a-cforma.adb, a-stwiun.ads, s-conca5.ads, s-carsi8.adb, a-zttest.ads,
	g-sercom.ads, a-cdlili.ads, a-cihama.adb, g-sptain.ads, a-cforma.ads,
	s-maccod.ads, s-carsi8.ads, a-strsup.adb, g-sha1.adb, a-cihama.ads,
	g-stseme.adb, s-traent.adb, s-valcha.adb, g-curexc.ads, a-strsup.ads,
	g-sha1.ads, a-sflcin.ads, s-traent.ads, s-pack10.adb, s-valcha.ads,
	a-coteio.ads, s-tasloc.adb, g-utf_32.adb, a-suteio.adb, s-except.adb,
	a-direct.adb, g-stsifd-sockets.adb, a-numaux-vxworks.ads, s-winext.ads,
	s-pack10.ads, a-ztexio.adb, a-tiflau.adb, system-vxworks-arm.ads,
	s-tasloc.ads, a-suteio.ads, g-utf_32.ads, s-except.ads,
	a-direct.ads, a-swbwha.adb, g-hesorg.adb, s-wwdcha.adb, a-wtedit.adb,
	a-ztexio.ads, a-wtcoio.adb, a-tiflau.ads, a-ssizti.ads, s-casi32.adb,
	a-swbwha.ads, s-veboop.adb, g-hesorg.ads, s-parame-rtems.adb,
	s-wwdcha.ads, a-wtedit.ads, a-stuten.adb, a-coinve.adb, a-wtcoio.ads,
	s-casi32.ads, s-string.adb, a-tiinau.adb, a-cusyqu.adb, s-conca6.adb,
	s-veboop.ads, a-cgcaso.adb, a-numaux-darwin.adb, a-envvar.adb,
	a-stuten.ads, s-secsta.adb, a-coinve.ads, s-string.ads, a-cusyqu.ads,
	a-tiinau.ads, s-osprim-vxworks.adb, s-conca6.ads, g-spchge.adb,
	s-parint.adb, a-cuprqu.adb, a-cgcaso.ads, a-numaux-darwin.ads,
	a-envvar.ads, s-secsta.ads, g-spchge.ads, s-parint.ads, a-cuprqu.ads,
	a-swuwti.adb, a-flteio.ads, a-sbhcin.adb, a-coprnu.adb, g-u3spch.adb,
	s-atocou.adb, g-ctrl_c.adb, a-swuwti.ads, a-calend.adb, a-sbhcin.ads,
	a-coprnu.ads, g-dirope.adb, g-sha512.ads, g-u3spch.ads, s-atocou.ads,
	g-ctrl_c.ads, a-timoau.adb, a-witeio.adb, s-pack11.adb, a-strhas.adb,
	a-wtflio.adb, g-spitbo.adb, a-calend.ads, a-ztenio.adb, g-dirope.ads,
	a-slcain.adb, g-sechas.adb, a-timoau.ads, a-witeio.ads, s-pack11.ads,
	s-shasto.adb, s-traceb-mastop.adb, a-ciorse.adb, s-utf_32.adb,
	a-strhas.ads, a-wtflio.ads, g-spitbo.ads, a-ztenio.ads, a-slcain.ads,
	g-sechas.ads, s-gearop.adb, a-siztio.ads, s-pack20.adb, s-shasto.ads,
	a-ciorse.ads, s-utf_32.ads, s-crtl.ads, a-wtinio.adb, s-elaall.adb,
	s-explli.adb, s-chepoo.ads, s-gearop.ads, a-einuoc.adb, s-pack20.ads,
	system-linux-ia64.ads, a-swunau-shared.adb, a-wtinio.ads, g-alvety.ads,
	a-liztio.ads, g-calend.adb, s-conca7.adb, s-elaall.ads, s-explli.ads,
	a-einuoc.ads, s-widboo.adb, s-imgdec.adb, a-cbhama.adb, g-calend.ads,
	s-conca7.ads, a-llitio.ads, i-cexten.ads, a-coorma.adb, s-widboo.ads,
	s-diflio.adb, g-souinf.ads, s-imgdec.ads, g-strhas.ads, a-cbhama.ads,
	g-shshco.adb, a-ztdeio.adb, s-gloloc.adb, a-coorma.ads, g-wispch.adb,
	s-pack03.adb, g-eacodu.adb, s-casi16.adb, s-diflio.ads, a-colien.adb,
	g-shshco.ads, a-wtmoio.adb, a-rbtgbo.adb, a-ztdeio.ads,
	system-rtems.ads, s-gloloc.ads, a-csquin.ads, a-cofuse.adb,
	g-wispch.ads, s-pack03.ads, s-casi16.ads, s-io.adb, a-colien.ads,
	g-alveop.adb, gnat.ads, s-diinio.adb, a-cfdlli.adb, g-pehage.adb,
	a-wtmoio.ads, a-stwiha.adb, a-locale.adb, a-tirsfi.adb, a-nscoty.ads,
	a-rbtgbo.ads, s-pack12.adb, a-cofuse.ads, a-sfteio.ads, s-io.ads,
	g-alveop.ads, a-cfdlli.ads, s-diinio.ads, a-stwiha.ads, g-pehage.ads,
	a-locale.ads, a-tirsfi.ads, s-pack12.ads, s-valuti.adb, g-cppexc.adb,
	system-vxworks-ppc.ads, g-memdum.adb, a-lfteio.ads, s-pack21.adb,
	s-unstyp.ads, s-valuti.ads, g-cppexc.ads, system-hpux-ia64.ads,
	g-memdum.ads, g-soccon.ads, g-altive.ads, a-crbtgo.adb, s-pack21.ads,
	a-llizti.ads, a-numaux-libc-x86.ads, s-expint.adb, s-conca8.adb,
	a-crbtgo.ads, s-pack30.adb, s-vallli.adb, s-geveop.adb, s-expint.ads,
	a-direio.adb, s-conca8.ads, a-widcha.ads, s-pack30.ads, s-vallli.ads,
	s-strhas.adb, s-geveop.ads, g-md5.adb, a-direio.ads, a-numaux.ads,
	s-ransee.adb, a-szbzha.adb, i-cobol.adb, g-busorg.adb, s-strhas.ads,
	g-md5.ads, s-widenu.adb, s-ransee.ads, s-widllu.adb, a-szbzha.ads,
	a-ststio.adb, i-cobol.ads, g-busorg.ads, g-regpat.adb, s-widenu.ads,
	a-secain.adb, s-widllu.ads, s-pack13.adb, g-encstr.adb, a-ztcoau.adb,
	a-ststio.ads, s-widwch.adb, g-regpat.ads, s-atacco.adb, a-cborse.adb,
	a-secain.ads, s-pack13.ads, g-encstr.ads, a-ztcoau.ads, s-widwch.ads,
	g-io_aux.adb, s-atacco.ads, a-ncelfu.ads, interfac.ads, a-cborse.ads,
	g-regexp.adb, s-pack22.adb, a-szuzti.adb, g-io_aux.ads, s-caun32.adb,
	a-nselfu.ads, g-regexp.ads, s-pack22.ads, a-ticoio.adb, a-szuzti.ads,
	g-diopit.adb, s-caun32.ads, s-conca9.adb, a-tags.adb, a-swmwco.ads,
	a-sbecin.adb, s-pack31.adb, s-expuns.adb, a-ticoio.ads, s-valint.adb,
	s-conca9.ads, g-diopit.ads, a-tags.ads, a-nllcef.ads, a-izteio.ads,
	a-sbecin.ads, s-expuns.ads, s-pack31.ads, g-dyntab.adb, s-powtab.ads,
	s-flocon-none.adb, s-valint.ads, a-ssiwti.ads, s-mmosin-mingw.adb,
	s-pack40.adb, s-pack05.adb, a-ztflau.adb, g-dyntab.ads,
	a-szuzti-shared.adb, g-alvevi.ads, a-stwise.adb, s-mmosin-mingw.ads,
	s-pack40.ads, a-diocst.adb, a-ztflau.ads, s-pack05.ads, a-nlcoty.ads,
	a-contai.ads, a-stwisu.adb, g-byorma.adb, a-siwtio.ads, a-stwise.ads,
	s-regpat.adb, g-mbdira.adb, s-pack14.adb, a-diocst.ads, g-flocon.ads,
	g-mbflra.adb, a-ztinau.adb, s-dim.ads, s-mantis.adb, a-stwisu.ads,
	g-byorma.ads, s-atopri.adb, g-wistsp.ads, a-uncdea.ads, s-widcha.adb,
	a-caldel.adb, s-regpat.ads, g-mbdira.ads, a-tiflio.adb, s-pack14.ads,
	s-parame.adb, a-liwtio.ads, s-memory.adb, g-mbflra.ads, a-ztinau.ads,
	a-wtgeau.adb, s-direio.adb, s-mantis.ads, s-atopri.ads, s-widcha.ads,
	a-caldel.ads, s-pack23.adb, a-unccon.ads, a-tiflio.ads, s-parame.ads,
	a-llftio.ads, s-memory.ads, s-regexp.adb, a-wtgeau.ads, a-exexda.adb,
	s-direio.ads, s-pack23.ads, g-stheme.adb, a-tiinio.adb, g-sestin.ads,
	s-regexp.ads, a-wtfiio.adb, a-comutr.adb, a-exexpr.adb, a-tiinio.ads,
	a-ztmoau.adb, a-cohata.ads, a-wtfiio.ads, s-imgrea.adb, ada.ads,
	a-szunau-shared.adb, a-comutr.ads, s-valuns.adb, a-ztmoau.ads,
	system-linux-arm.ads, s-osprim-x32.adb, s-pack41.adb, s-pack06.adb,
	s-imgrea.ads, s-valuns.ads, s-finroo.adb, s-caun16.adb, s-pooglo.adb,
	a-zrstfi.adb, a-suenst.adb, s-pack41.ads, g-binenv.adb, s-pack06.ads,
	a-calari.adb, a-nlcoar.ads, s-finroo.ads, a-timoio.adb, s-caun16.ads,
	s-flocon.adb, a-suenst.ads, a-zrstfi.ads, s-pooglo.ads, s-wchcon.adb,
	s-traceb-hpux.adb, s-pack50.adb, i-fortra.adb, s-pack15.adb,
	a-ngcefu.adb, g-sptavs.ads, g-binenv.ads, s-wchjis.adb, a-calari.ads,
	a-timoio.ads, a-decima.adb, s-flocon.ads, s-wchcon.ads, a-llfzti.ads,
	i-fortra.ads, s-pack50.ads, s-pack15.ads, a-ngcefu.ads, a-cfhase.adb,
	s-wchjis.ads, g-soliop.ads, a-decima.ads, a-chlat9.ads, s-pack24.adb,
	a-nlelfu.ads, a-cfhase.ads, g-locfil.adb, s-atocou-builtin.adb,
	s-memcop.ads, a-szunau.adb, s-pack24.ads, s-imgllb.adb, s-auxdec.adb,
	g-locfil.ads, s-pack33.adb, a-szunau.ads, s-parame-vxworks.adb,
	s-imgllb.ads, a-ciorma.adb, s-auxdec.ads, a-cobove.adb, s-dsaser.ads,
	a-elchha.adb, s-pack33.ads, a-cofuve.adb, s-parame-vxworks.ads,
	a-ciorma.ads, system-darwin-x86.ads, s-multip.adb, a-stwiun-shared.adb,
	a-wichun.adb, a-cobove.ads, s-imgbiu.adb, s-tsmona-mingw.adb,
	a-coormu.adb, a-siocst.adb, s-win32.ads, a-elchha.ads, s-pack42.adb,
	s-pack07.adb, a-cofuve.ads, system-hpux.ads, a-teioed.adb,
	a-convec.adb, g-speche.adb, s-multip.ads, a-stwiun-shared.ads,
	a-wichun.ads, s-imgbiu.ads, a-numeri.ads, a-siocst.ads, a-coormu.ads,
	a-lliwti.ads, s-pack42.ads, s-pack07.ads, a-teioed.ads, a-convec.ads,
	g-speche.ads, g-socthi.adb, a-nucoty.ads, a-szmzco.ads, s-pack51.adb,
	s-osprim-mingw.adb, s-casi64.adb, g-strspl.ads, g-socthi.ads,
	g-socket-dummy.adb, s-pack51.ads, s-dimmks.ads, s-casi64.ads,
	a-wtenau.adb, s-stchop-vxworks.adb, s-pack60.adb,
	system-solaris-sparc.ads, s-pack25.adb, g-socket-dummy.ads,
	a-exstat.adb, a-cofuma.adb, s-tsmona-linux.adb, a-wtenau.ads,
	s-pack60.ads, s-pack25.ads, i-cstrea.adb, a-cofuma.ads, g-exptty.adb,
	a-chzla1.ads, s-pack34.adb, i-cstrea.ads, s-excdeb.adb, a-iteint.ads,
	g-exptty.ads, i-pacdec.adb, s-pack34.ads, s-rident.ads, s-sopco3.adb,
	i-vxwork.ads, s-excdeb.ads, system-linux-ppc.ads, a-swuwti-shared.adb,
	s-widlli.adb, s-pack43.adb, i-pacdec.ads, a-cwila9.ads, s-sopco3.ads,
	a-fwteio.ads, s-widlli.ads, s-pack43.ads, a-suhcin.adb, a-wtdeau.adb,
	g-allein.ads, a-suezst.adb, a-dirval-mingw.adb, g-zspche.adb,
	s-bignum.adb, a-ztedit.adb, g-regist.adb, a-nllefu.ads, a-ztcoio.adb,
	s-pack52.adb, a-llctio.ads, a-nucoar.ads, s-pack17.adb, a-suhcin.ads,
	a-wtdeau.ads, a-suezst.ads, a-dirval.adb, g-zspche.ads, g-regist.ads,
	a-ztedit.ads, s-bignum.ads, a-wtcstr.adb, system.ads, s-pack52.ads,
	a-ztcoio.ads, s-pack17.ads, s-imgboo.adb, a-rbtgso.adb, a-dirval.ads,
	a-cohase.adb, s-pack61.adb, a-wtcstr.ads, s-pack26.adb, s-osprim.ads,
	a-tigeau.adb, s-imgboo.ads, a-nuelfu.ads, a-swfwha.ads, s-commun.adb,
	g-socthi-vxworks.adb, a-rbtgso.ads, a-cohase.ads, g-zstspl.ads,
	s-pack61.ads, s-pack26.ads, a-intnam-dragonfly.ads, s-imglld.adb,
	a-tigeau.ads, s-commun.ads, g-socthi-vxworks.ads, a-cborma.adb,
	a-stwifi.adb, g-moreex.adb, s-pack35.adb, s-imglld.ads, s-valdec.adb,
	a-tifiio.adb, a-cborma.ads, g-moreex.ads, a-stwifi.ads, s-pack35.ads,
	s-sopco4.adb, g-sha224.ads, g-socket.adb, a-intnam-rtems.ads,
	s-finmas.adb, s-valdec.ads, s-addima.adb, a-finali.adb, a-tifiio.ads,
	s-rpc.adb, a-ztflio.adb, s-pack44.adb, s-pack09.adb, a-sblcin.adb,
	s-sopco4.ads, a-textio.adb, g-socket.ads, g-sptabo.ads, s-finmas.ads,
	g-shsh32.adb, s-addima.ads, a-finali.ads, s-mmauni-long.ads, s-rpc.ads,
	a-ztflio.ads, system-djgpp.ads, s-stache.adb, s-pack44.ads,
	s-pack09.ads, a-sblcin.ads, a-textio.ads, a-cidlli.adb, g-shsh32.ads,
	a-chtgbk.adb, a-tiocst.adb, s-pack53.adb, s-pack18.adb, s-stache.ads,
	a-zchhan.adb, s-fatlfl.ads, a-ztinio.adb, s-strops.adb, a-siteio.ads,
	a-cidlli.ads, a-chtgbk.ads, g-ssvety.ads, a-tiocst.ads, s-pack53.ads,
	s-parame-hpux.ads, s-pack18.ads, a-zchhan.ads, s-strops.ads,
	a-ztinio.ads, a-wichha.adb, a-stwima.adb, a-nlrear.ads, a-liteio.ads,
	s-pack62.adb, s-pack27.adb, s-fore.adb, s-vercon.adb, a-wichha.ads,
	a-stwima.ads, s-pack62.ads, system-linux-sparc.ads, s-pack27.ads,
	g-dynhta.adb, s-fore.ads, s-vercon.ads, a-cofuba.adb, a-cimutr.adb,
	i-cpoint.adb, s-imgenu.adb, a-stwibo.adb, s-pack36.adb, i-cstrin.adb,
	s-imgllu.adb, a-suteio-shared.adb, g-excact.adb, s-stoele.adb,
	s-addope.adb, g-dynhta.ads, a-cofuba.ads, a-ztmoio.adb, a-llfwti.ads,
	a-cimutr.ads, i-cpoint.ads, s-imgenu.ads, a-stwibo.ads, a-wttest.adb,
	s-pack36.ads, a-tgdico.ads, s-sopco5.adb, s-scaval.adb, i-cstrin.ads,
	s-imgllu.ads, g-excact.ads, s-stoele.ads, g-deutst.ads, s-addope.ads,
	s-imgwch.adb, g-sha384.ads, a-ztmoio.ads, s-pack45.adb, a-wttest.ads,
	s-sopco5.ads, s-excmac-gcc.adb, s-scaval.ads, a-storio.adb,
	a-coinho.adb, a-btgbso.adb, s-imgwch.ads, s-carun8.adb, memtrack.adb,
	s-pack45.ads, a-sfhcin.ads, s-excmac-gcc.ads, a-storio.ads,
	a-coinho.ads, a-btgbso.ads, s-stratt.adb, s-carun8.ads, a-shcain.adb,
	s-pack54.adb, s-pack19.adb, a-colire.adb, a-tigeli.adb, s-caun64.adb,
	s-stratt.ads, s-fatgen.adb, a-shcain.ads, a-stzunb-shared.adb,
	s-pack54.ads, s-pack19.ads, a-colire.ads, a-calcon.adb, s-caun64.ads,
	s-fatgen.ads, s-pack63.adb, g-arrspl.adb, a-stzunb-shared.ads,
	s-pack28.adb, a-nllrar.ads, a-zzboio.adb, a-zzunio.ads, a-stunau.adb,
	a-calcon.ads, g-cgideb.adb, s-objrea.adb, s-mastop.adb, a-tienau.adb,
	g-altcon.adb, g-arrspl.ads, s-pack63.ads, s-restri.adb, s-pack28.ads,
	a-zzboio.ads, a-stunau.ads, g-cgideb.ads, g-htable.adb, g-sothco.adb,
	s-objrea.ads, g-soliop-solaris.ads, s-mastop.ads, a-tienau.ads,
	system-linux-m68k.ads, g-altcon.ads, s-dmotpr.ads, s-memory-mingw.adb,
	g-cgicoo.adb, s-pack37.adb, s-restri.ads, s-fatllf.ads, s-expmod.adb,
	a-swuwha.adb, a-exextr.adb, a-cfhama.adb, s-gloloc-mingw.adb,
	a-tiboio.adb, g-forstr.adb, g-sothco.ads, a-stzbou.adb, a-nllcty.ads,
	a-suecin.adb, g-htable.ads, s-exctab.adb, a-tiunio.ads, g-cgicoo.ads,
	s-osprim-posix.adb, s-pack37.ads, a-ciormu.adb, s-atocou-x86.adb,
	a-swuwha.ads, s-expmod.ads, a-cfhama.ads, s-ficobl.ads, a-ngcoty.adb,
	g-forstr.ads, a-tiboio.ads, a-calfor.adb, a-stzbou.ads, a-suecin.ads,
	a-conhel.adb, a-crbltr.ads, s-exctab.ads, a-dhfina.ads, s-imgcha.adb,
	s-pack46.adb, a-ciormu.ads, system-linux-sh4.ads, a-chahan.adb,
	a-ngcoty.ads, a-stzunb.adb, a-szfzha.ads, a-calfor.ads, a-cbdlli.adb,
	a-conhel.ads, s-imgcha.ads, s-pack46.ads, a-assert.adb, a-chahan.ads,
	a-stzunb.ads, a-crdlli.adb, s-pack55.adb, a-cbdlli.ads, a-tideau.adb,
	a-assert.ads, ioexcept.ads, s-boarop.ads, g-hesora.adb, a-crdlli.ads,
	s-pack55.ads, a-tideau.ads, g-bubsor.adb, a-wtenio.adb, a-cbsyqu.adb,
	g-hesora.ads, s-pack29.adb, a-nurear.ads, g-catiio.adb, s-stposu.adb,
	g-bubsor.ads, a-wtenio.ads, a-cbsyqu.ads, a-suewst.adb,
	system-vxworks-x86.ads, s-pack29.ads, a-cbmutr.adb, a-cbprqu.adb,
	s-imenne.adb, g-sothco-dummy.adb, g-casuti.adb, g-catiio.ads,
	s-stposu.ads, a-stzsea.adb, s-pack38.adb, a-suewst.ads, s-imgllw.adb,
	a-cbprqu.ads, a-cbmutr.ads, s-imenne.ads, g-sothco-dummy.ads,
	g-casuti.ads, s-htable.adb, s-fatsfl.ads, g-trasym.adb, unchconv.ads,
	a-stzsea.ads, s-arit64.adb, s-pack38.ads, a-nllcar.ads, s-valrea.adb,
	s-imgllw.ads, s-htable.ads, a-sequio.adb, g-trasym.ads, a-ngcoar.adb,
	s-exnllf.adb, s-pack47.adb, s-arit64.ads, g-sercom-mingw.adb,
	s-valrea.ads, g-socthi-mingw.adb, g-bytswa.adb, g-sehash.adb,
	unchdeal.ads, a-sequio.ads, a-ngcoar.ads, s-exnllf.ads, a-wtdeio.adb,
	s-pack47.ads, g-socthi-mingw.ads, a-excpol-abort.adb, a-ztgeau.adb,
	g-bytswa.ads, g-sehash.ads, s-pack56.adb, a-wtdeio.ads, a-ngelfu.adb,
	a-ztgeau.ads, a-cforse.adb, s-filatt.ads, a-stzfix.adb, a-cihase.adb,
	s-pack56.ads, a-sfztio.ads, a-ngelfu.ads, s-trasym-dwarf.adb,
	a-cforse.ads, a-ztfiio.adb, g-timsta.adb, a-stzfix.ads, a-cihase.ads,
	a-ztfiio.ads, system-darwin-arm.ads: Move non-tasking runtime sources
	to libgnat subdirectory.

2017-09-08  Yannick Moy  <moy@adacore.com>

	* sem_aux.adb, sem_aux.ads (Get_Called_Entity): New function to
	return the entity associated with the call.
	* sem_util.adb, sem_util.ads (Check_Function_Writable_Actuals):
	Replace the internal Get_Function_Id with the new
	Sem_Aux.Get_Called_Entity.
	(Iterate_Call_Parameters): New
	procedure to iterate on formals and actuals at the same time.
	* sem_ch12.adb (Analyze_Subprogram_Instantiation):
	Set SPARK_Mode from spec when set, for analysis
	of instance. Restore after analysis of instance.
	(Instantiate_Subprogram_Body): Set SPARK_Mode from body when
	set, for analysis of body instance. Restored automatically at
	the end of the subprogram.
	* gnat1drv.adb (Adjust_Global_Switches): Set
	Check_Validity_Of_Parameters to False in GNATprove mode.
	* opt.ads (Check_Validity_Of_Parameters): Document switch to
	set option.

2017-09-08  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_util.adb (NCT_Tables_In_Use): Move to library level from...
	(New_Copy_Tree): ...there.  Reset the hash tables only if they
	were used in the previous invocation.
	* s-htable.adb: Fix typo.

2017-09-08  Bob Duff  <duff@adacore.com>

	* a-ssicst.adb (Open): Set File.Last_Op to the appropriate value.

2017-09-08  Arnaud Charlet  <charlet@adacore.com>

	* sem_aggr.adb: minor style fix.

2017-09-08  Bob Duff  <duff@adacore.com>

	* sprint.adb (Write_Corresponding_Source): Ignore if there is
	no current source file.
	(Write_Name_With_Col_Check, Write_Name_With_Col_Check_Sloc):
	Print something helpful in case N is invalid.
	* sprint.ads: Minor comment fix.

2017-09-08  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_aggr.adb: (Aggr_Assignment_OK_For_Backend): Add early return for
	access types.

2017-09-08  Bob Duff  <duff@adacore.com>

	* par-prag.adb, sem_prag.adb, snames.ads-tmpl: Implement pragma
	Ada_2020, along the same lines as the other Ada version pragmas.

2017-09-08  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch12.adb: Minor typo fixes and reformatting.

2017-09-08  Yannick Moy  <moy@adacore.com>

	* sem_aggr.adb (Resolve_Record_Aggregate):
	Rewrite bounds of aggregate subexpressions which may depend on
	discriminants of the enclosing aggregate.

2017-09-08  Yannick Moy  <moy@adacore.com>

	* sem_ch5.adb: Prevent assertion failure on illegal code.

2017-09-08  Yannick Moy  <moy@adacore.com>

	* lib-xref-spark_specific.adb (Add_SPARK_Xrefs.Is_SPARK_Scope): Avoid
	calling Renamed_Entity on an entity which cannot be a renaming.

2017-09-08  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_aggr.adb: Add with & use clause for Urealp.
	(Aggr_Assignment_OK_For_Backend): Accept (almost all)
	elementary types instead of just discrete types.
	* sem_eval.adb (Expr_Value): Deal with N_Null for access types.
	* gcc-interface/trans.c (gnat_to_gnu) <N_Assignment_Statement>:
	Be prepared for the FP zero value in the memset case.  Add small
	guard.

2017-09-08  Eric Botcazou  <ebotcazou@adacore.com>

	* s-htable.adb (Static_HTable.Reset): Use aggregate instead
	of loop.

2017-09-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_aggr.adb (Expand_Array_Aggregate): Use New_Copy_Tree instead
	of New_Copy because the latter leaves the syntactic structure of
	the tree inconsistent (a child is accessible through two parents)
	and prevents proper replication of itypes by subsequent calls
	to New_Copy_Tree.
	* exp_ch4.adb (Expand_Concatenate): Use New_Copy_Tree instead of
	New_Copy because the latter leaves the syntactic structure of the
	tree inconsistent (a child is accessible through two parents)
	and prevents proper replication of itypes by subsequent calls
	to New_Copy_Tree.
	* sem_util.adb (In_Subtree): New routine.
	(New_Copy_Tree): Reimplemented.
	* sem_util.ads (In_Subtree): New routine.
	(New_Copy_Tree): Reimplemented.

2017-09-08  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Resolve_Aspect_Expressions): The expression
	for aspect Default_Value is a static scalar value, but it does
	not freeze the type. Yhis allows for subsequent representation
	clauses for the type.

2017-09-08  Javier Miranda  <miranda@adacore.com>

	* sem_ch8.adb (Find_Direct_Name.Undefined): Do
	not add entries into the undefined reference table when we are
	compiling with errors ignored.

2017-09-08  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Check_Formal_Packages): Do not apply conformance
	check if the instance is within an enclosing instance body. The
	formal package was legal in the enclosing generic, and is
	legal in the enclosing instantiation.  This optimisation may be
	applicable elsewhere, and it also removes spurious errors that
	may arise with on-the-fly processing  of instantiations that
	contain Inline_Always subprograms.

2017-09-08  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb: Disregard empty argument of GNAT driver.

2017-09-08  Justin Squirek  <squirek@adacore.com>

	* checks.adb (Insert_Valid_Check): Manually decorate
	the generated temporary for range valdity checks.

2017-09-08  Eric Botcazou  <ebotcazou@adacore.com>

	* usage.adb (Usage): Document new -gnatw.q/-gnatw.Q switches.

2017-09-08  Justin Squirek  <squirek@adacore.com>

	* switch-c.adb (Scan_Front_End_Switches): Add new warning switch
	case to handle underscore flags.
	* warnsw.adb, warnsw.ads (Set_Underscore_Warning_Switch): Create
	new procedure to handle underscores.

2017-09-08  Javier Miranda  <miranda@adacore.com>

	* exp_ch4.adb (Expand_N_Op_Divide): Reordering code that handles
	divisions with fixed point results to avoid generating twice
	the runtime check on divide by zero.
	* checks.adb (Apply_Divide_Checks): Ensure that operands are
	not evaluated twice (once for their runtime checks and once for
	their regular computation).

2017-09-08  Yannick Moy  <moy@adacore.com>

	* sem_prag.adb (Analyze_Part_Of): Add missing
	return statements after issuing errors.  Add detection of
	out-of-order item and single concurrent type.

2017-09-08  Nicolas Roche  <roche@adacore.com>

	* gcc-interface/Makefile.in, a-extiti.ads, s-taprop-linux.adb,
	s-osinte-solaris.adb, a-intnam.ads, s-osinte-solaris.ads,
	s-tpobop.adb, s-intman-android.adb, s-tasinf.adb, s-tpobop.ads,
	s-tasinf.ads, i-vxinco.adb, a-exetim-posix.adb, i-vxinco.ads,
	a-astaco.adb, a-astaco.ads, s-tporft.adb, s-tpoaal.adb, a-taside.adb,
	a-taside.ads, s-tpopsp-posix.adb, s-tasdeb.adb, s-tasdeb.ads,
	s-tpoben.adb, a-dinopr.ads, s-inmaop-vxworks.adb, s-tpoben.ads,
	s-interr-vxworks.adb, s-interr-dummy.adb, s-tassta.adb,
	a-intnam-mingw.ads, s-tassta.ads, s-taasde.adb, a-stcoed.ads,
	s-taasde.ads, s-osinte-darwin.adb, s-proinf.adb, s-taprop-dummy.adb,
	s-osinte-darwin.ads, s-proinf.ads, s-linux.ads, a-intnam-linux.ads,
	s-tasren.adb, s-tasren.ads, s-mudido.adb, g-semaph.adb, s-mudido.ads,
	s-taprop-posix.adb, g-semaph.ads, s-osinte-mingw.ads, s-vxwork-x86.ads,
	s-tposen.adb, s-linux-sparc.ads, s-taprop-vxworks.adb, s-tasini.adb,
	s-tposen.ads, s-tasini.ads, a-etgrbu.ads, s-interr-hwint.adb,
	s-osinte-linux.ads, s-taprop.ads, s-tasque.adb, s-tasque.ads,
	s-taenca.adb, s-taspri-vxworks.ads, s-taenca.ads, a-dynpri.adb,
	s-tpopsp-solaris.adb, a-dynpri.ads, s-taprop-hpux-dce.adb,
	a-interr.adb, a-intnam-freebsd.ads, s-tarest.adb, a-interr.ads,
	s-intman-susv3.adb, a-synbar.adb, a-intnam-dummy.ads, s-tadeca.adb,
	s-osinte-vxworks.adb, s-tarest.ads, s-taskin.adb, a-synbar.ads,
	s-taspri-hpux-dce.ads, s-tadeca.ads, s-osinte-vxworks.ads,
	s-taskin.ads, s-intman-solaris.adb, a-sytaco.adb, s-vxwext-kernel.adb,
	s-mudido-affinity.adb, a-sytaco.ads, s-vxwext-kernel.ads, s-taprob.adb,
	s-intman-mingw.adb, s-taprob.ads, s-osinte-kfreebsd-gnu.ads,
	s-osinte-dummy.ads, s-osinte-gnu.adb, s-osinte-rtems.adb, s-interr.adb,
	s-inmaop.ads, s-vxwext-rtp.adb, s-osinte-gnu.ads, s-osinte-rtems.ads,
	a-synbar-posix.adb, s-interr.ads, s-taspri-posix-noaltstack.ads,
	s-vxwext-rtp.ads, a-synbar-posix.ads, a-extiin.ads, s-osinte-posix.adb,
	s-tpinop.adb, s-tasres.ads, s-tpinop.ads, a-disedf.ads, a-diroro.ads,
	s-linux-alpha.ads, a-tasatt.adb, s-solita.adb, a-intnam-solaris.ads,
	a-tasatt.ads, s-solita.ads, s-tasinf-solaris.adb, s-tasinf-solaris.ads,
	s-vxwork-arm.ads, s-tpopsp-posix-foreign.adb, s-intman-dummy.adb,
	s-intman.ads, s-stusta.adb, s-stusta.ads, s-intman-posix.adb,
	s-tpopsp-vxworks.adb, s-inmaop-dummy.adb, s-taspri-mingw.ads,
	a-intnam-darwin.ads, s-osinte-aix.adb, s-osinte-dragonfly.adb,
	s-osinte-aix.ads, s-tasinf-mingw.adb, s-osinte-dragonfly.ads,
	s-linux-hppa.ads, s-osinte-x32.adb, s-inmaop-posix.adb,
	s-tasinf-mingw.ads, s-intman-vxworks.adb, s-linux-mips.ads,
	s-intman-vxworks.ads, s-osinte-android.adb, s-tasinf-linux.adb,
	s-osinte-android.ads, s-vxwork-ppc.ads, s-tasinf-linux.ads,
	a-dispat.adb, a-dispat.ads, s-tadert.adb, g-thread.adb, s-tadert.ads,
	g-thread.ads, a-intnam-hpux.ads, s-linux-android.ads, s-tataat.adb,
	a-exetim.ads, s-tataat.ads, a-reatim.adb, a-reatim.ads, thread.c,
	g-boubuf.adb, s-osinte-freebsd.adb, g-boubuf.ads, s-osinte-freebsd.ads,
	s-tasuti.adb, s-taspri-dummy.ads, a-exetim-mingw.adb, s-linux-x32.ads,
	s-tasuti.ads, g-signal.adb, a-exetim-mingw.ads, s-interr-sigaction.adb,
	g-signal.ads, s-osinte-hpux.ads, a-intnam-vxworks.ads,
	s-osinte-hpux-dce.adb, s-taspri-posix.ads, s-osinte-hpux-dce.ads,
	s-tasinf-vxworks.ads, g-tastus.ads, s-tpopsp-tls.adb,
	s-taprop-solaris.adb, a-retide.adb, a-exetim-darwin.adb, a-retide.ads,
	s-vxwext.adb, s-vxwext.ads, a-rttiev.adb, a-rttiev.ads, g-boumai.ads,
	a-exetim-default.ads, s-taprop-mingw.adb, s-taspri-solaris.ads,
	a-intnam-aix.ads: Move libgnarl sources to libgnarl subdir.

2017-09-08  Arnaud Charlet <charlet@adacore.com>

	* doc/share/conf.py, doc/share/latex_elements.py,
	doc/share/ada_pygments.py, doc/Makefile: Improve support for Ada
	highlighting.

2017-09-08  Arnaud Charlet <charlet@adacore.com>

	* gnat_rm.texi, gnat_ugn.texi,
	doc/gnat_ugn/the_gnat_compilation_model.rst,
	doc/gnat_ugn/getting_started_with_gnat.rst,
	doc/gnat_ugn/inline_assembler.rst,
	doc/gnat_ugn/building_executable_programs_with_gnat.rst,
	doc/gnat_ugn/elaboration_order_handling_in_gnat.rst,
	doc/gnat_ugn/about_this_guide.rst,
	doc/gnat_ugn/platform_specific_information.rst,
	doc/gnat_ugn/example_of_binder_output.rst,
	doc/gnat_ugn/gnat_and_program_execution.rst,
	doc/gnat_ugn/gnat_utility_programs.rst,
	doc/gnat_rm/implementation_of_specific_ada_features.rst,
	doc/gnat_rm/interfacing_to_other_languages.rst,
	doc/gnat_rm/implementation_defined_aspects.rst,
	doc/gnat_rm/intrinsic_subprograms.rst,
	doc/gnat_rm/implementation_defined_characteristics.rst,
	doc/gnat_rm/implementation_advice.rst,
	doc/gnat_rm/implementation_defined_attributes.rst,
	doc/gnat_rm/compatibility_and_porting_guide.rst,
	doc/gnat_rm/standard_library_routines.rst,
	doc/gnat_rm/the_gnat_library.rst,
	doc/gnat_rm/implementation_defined_pragmas.rst,
	doc/gnat_rm/representation_clauses_and_pragmas.rst,
	doc/gnat_rm/standard_and_implementation_defined_restrictions.rst,
	doc/gnat_rm/obsolescent_features.rst,
	doc/gnat_rm/about_this_guide.rst,
	doc/gnat_rm/the_implementation_of_standard_i_o.rst,
	doc/gnat_rm/implementation_of_ada_2012_features.rst,
	doc/gnat_ugn.rst,
	doc/gnat_rm.rst: Update documentation.

2017-09-08  Arnaud Charlet <charlet@adacore.com>

	* s-dwalin.ads, s-dwalin.adb, s-trasym-dwarf.adb, s-objrea.ads,
	s-objrea.adb, s-tsmona-linux.adb, s-tsmona-mingw.adb: New.
	* gcc-interface/Makefile.in: Enable s-trasym-dwarf.adb on x86*linux.

2017-09-08  Bob Duff  <duff@adacore.com>

	* s-ststop.ads, s-ststop.adb, rtsfind.ads (String_Input_Tag):
	New routine to read the Tag robustly.
	* exp_attr.adb (Input): Change the expansion of 'Input,
	in the class-wide case, to call String_Input_Tag instead of
	String_Input_Blk_IO.

2017-09-08  Arnaud Charlet  <charlet@adacore.com>

	* s-rident.ads (Restriction_Id): reorder enum
	literals, so that Pure_Barriers is no longer in range of the
	Cunit_Boolean_Restrictions subtype.

2017-09-08  Nicolas Roche  <roche@adacore.com>

	* a-taster.ads, a-taster.adb: Move to libgnarl
	* gcc-interface/Makefile.in: Remove obsolete targets. Code cleanups.
	Add support for files in libgnarl.

2017-09-08  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch4.adb (Expand_N_Type_Conversion): Do not apply
	accessibility check to an interface conversion, whose purpose
	is to perform a pointer adjustment in a dispatching call.
	* exp_ch6.adb (Expand_Call_JHelper): Add accessibility checks
	when the actual is a construct that involves a dereference of an
	expression that includes a formal of the enclosing subprogram,
	In such cases, the accessibility level of the actual is that of
	the corresponding formal, which is passed in as an additional
	actual in the outer call.

2017-09-08  Bob Duff  <duff@adacore.com>

	* exp_intr.adb (Add_Source_Info): Do not decode
	file names; they were not encoded in the first place.

2017-09-08  Bob Duff  <duff@adacore.com>

	* a-tags.adb (Internal_Tag): Unsuppress checks, so we get
	exceptions instead of crashes. Check for absurdly long strings
	and empty strings. Empty strings cause trouble because they can
	have super-null ranges (e.g. 100..10), which causes Ext_Copy to
	be empty, which causes an array index out of bounds.
	* s-ststop.adb (Input): Unsuppress checks, so we get exceptions
	instead of crashes.

2017-09-08  Arnaud Charlet  <charlet@adacore.com>

	* sem_util.adb (Is_CCT_Instance): allow use in
	the context of protected types.

2017-09-08  Arnaud Charlet  <charlet@adacore.com>

	* a-tigeli.adb: minor remove extra whitespace.

2017-09-08  Gary Dismukes  <dismukes@adacore.com>

	* par-ch4.adb: Reformatting of an error message.

2017-09-08  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Resolve_Name): Under ASIS mode analyze overloaded
	identifiers to ensure their correct decoration of names on
	aspect expressions.

2017-09-08  Yannick Moy  <moy@adacore.com>

	* exp_attr.adb (Expand_Loop_Entry_Attribute): Do
	not skip a loop coming from source which is rewritten into a loop.

2017-09-08  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Wrap_Imported_Subprogram): Indicate that the
	wrapper has convention Ada, to prevent spurious warnings on
	unconstrained array parameters.

2017-09-08  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_prag.adb (Check_Variant): Use First_Non_Pragma/Next_Non_Pragma.
	(Analyze_Pragma) <Pragma_Unchecked_Union>: Likewise.

2017-09-08  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch6.adb (Freeze_Expr_Types): Rename Spec_Id into Def_Id.

2017-09-08  Arnaud Charlet  <charlet@adacore.com>

	* exp_intr.adb (Append_Entity_Name): Move to ...
	* sem_util.ads, sem_util.adb: ... here to share it.
	(Subprogram_Name): New subprogram, to compute the name of the enclosing
	subprogram/entity.
	* errutil.adb (Error_Msg): Fill new field Node.
	* erroutc.ads (Subprogram_Name_Ptr): New.
	(Error_Msg_Object): New field Node.
	* erroutc.adb (dmsg, Output_Msg_Text): Take new field Node into account.
	* errout.adb (Error_Msg): New variant with node id parameter.
	Fill new parameter Node when emitting messages. Revert previous
	changes for Include_Subprogram_In_Messages.
	* sem_ch5.adb (Check_Unreachable_Code): Supply Node parameter when
	generating warning message.

2017-09-08  Ed Schonberg  <schonberg@adacore.com>

	* par-ch4.adb (P_Iterated_Component_Association): Place construct
	under -gnat2020 flag, given that it is a future feature of
	the language.
	* sem_aggr.adb (Resolve_Iterated_Component_Association): Mark
	defining identifier as referenced to prevent spurious warnings:
	corresponding loop is expanded into one or more loops whose
	variable has the same name, and the expression uses those names
	and not the original one.

2017-09-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_elab.adb (Check_A_Call): Do not consider
	references to internal variables for SPARK semantics.

2017-09-08  Arnaud Charlet  <charlet@adacore.com>

	* inline.adb (In_Package_Spec): refine type of
	the parameter from Node_Id to Entity_Id.

2017-09-08  Justin Squirek  <squirek@adacore.com>

	* exp_ch5.adb (Expand_Formal_Container_Loop):
	Reset the scope of the loop parameter after it is reanalyzed.

2017-09-08  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_util.ads (Set_Rep_Info): New inline procedure.
	* sem_util.adb (Set_Rep_Info): Implement it.
	* sem_ch3.adb (Process_Subtype): If the case of a constraint present,
	always copy the representation aspects onto the subtype.

2017-09-08  Georges-Alex Jaloyan  <jaloyan@adacore.com>

	* g-dynhta.adb, g-dynhta.ads (Get_First_Key, Get_Next_key):
	Correction of the return type from access type to option type.
	(Simple_HTable): Moving the Instance_Data to ads file.

2017-09-08  Yannick Moy  <moy@adacore.com>

	* sem_prag.adb: Use System.Case_Util.To_Lower to simplify code.

2017-09-08  Arnaud Charlet  <charlet@adacore.com>

	* opt.ads (Include_Subprogram_In_Messages): New variable.
	* errout.ads (Current_Subprogram_Ptr): New variable.
	* errout.adb (Error_Msg): Prepend current subprogram info
	in messages if Include_Subprogram_In_Messages is set.
	* sem_util.adb (elab code): Initialize Current_Subprogram_Ptr to
	Current_Subprogram.
	* gnat1drv.adb (Adjust_Global_Switches): Set
	Include_Subprogram_In_Messages when -gnatdJ is set.
	* debug.adb: Document and reserve -gnatdJ.

2017-09-08  Georges-Axel Jaloyan  <jaloyan@adacore.com>

	* g-dynhta.adb, g-dynhta.ads (Get_First_Key, Get_Next_Key): New
	functions to iterate over simple hastables.
	(Load_Factor_HTable): Remove obsolete and inefficient implementation.

2017-09-08  Javier Miranda  <miranda@adacore.com>

	* exp_ch6.adb (Unqual_BIP_Function_Call): Adding
	missing checks on the presence of Entity() before checking the
	entity attributes.

2017-09-08  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch6.adb (Analyze_Expression_Function): Reorder some
	statements, use local variable and remove unnecessary processing.

2017-09-08  Javier Miranda  <miranda@adacore.com>

	* exp_ch6.ads (Make_Build_In_Place_Iface_Call_In_Allocator): New
	subprogram.
	(Make_Build_In_Place_Iface_Call_In_Anonymous_Context): New subprogram.
	(Make_Build_In_Place_Iface_Call_In_Object_Declaration): New
	subprogram.
	(Unqual_BIP_Iface_Function_Call): New subprogram.
	* exp_ch6.adb (Replace_Renaming_Declaration_Id): New
	subprogram containing code that was previously inside
	Make_Build_In_Place_Call_In_Object_Declaration since it is also
	required for one of the new subprograms.
	(Expand_Actuals):
	Invoke Make_Build_In_Place_Iface_Call_In_Anonymous_Context
	(Expand_N_Extended_Return_Statement): Extend the
	cases covered by an assertion on expected BIP object
	declarations.
	(Make_Build_In_Place_Call_In_Assignment):
	Removing unused code; found working on this ticket.
	(Make_Build_In_Place_Call_In_Object_Declaration): Move the code
	that replaces the internal name of the renaming declaration
	into the new subprogram Replace_Renaming_Declaration_Id.
	(Make_Build_In_Place_Iface_Call_In_Allocator): New subprogram.
	(Make_Build_In_Place_Iface_Call_In_Anonymous_Context):
	New subprogram.
	(Make_Build_In_Place_Iface_Call_In_Object_Declaration): New
	subprogram.
	(Unqual_BIP_Iface_Function_Call): New subprogram.
	* exp_ch3.adb (Expand_N_Object_Declaration): Invoke the new
	subprogram Make_Build_In_Place_Iface_Call_In_Object_Declaration.
	* exp_attr.adb (Expand_N_Attribute_Reference): Invoke the new
	subprogram Make_Build_In_Place_Iface_Call_In_Anonymous_Context.
	* exp_ch4.adb (Expand_Allocator_Expression): Invoke the new
	subprogram Make_Build_In_Place_Iface_Call_In_Allocator.
	(Expand_N_Indexed_Component): Invoke the new subprogram
	Make_Build_In_Place_Iface_Call_In_Anonymous_Context.
	(Expand_N_Selected_Component): Invoke the new subprogram
	Make_Build_In_Place_Iface_Call_In_Anonymous_Context.
	(Expand_N_Slice): Invoke the new subprogram
	Make_Build_In_Place_Iface_Call_In_Anonymous_Context.
	* exp_ch8.adb (Expand_N_Object_Renaming_Declaration):
	Invoke the new subprogram
	Make_Build_In_Place_Iface_Call_In_Anonymous_Context.

2017-09-08  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Expand_Interface_Conversion): Fix handling of
	access to interface types.  Remove also the accessibility check.

2017-09-08  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch6.adb (Freeze_Expr_Types): Really freeze
	all the types that are referenced by the expression.
	(Analyze_Expression_Function): Call Freeze_Expr_Types for
	a completion instead of manually freezing the type of the
	expression.
	(Analyze_Subprogram_Body_Helper): Do not call Freeze_Expr_Types here.

2017-09-08  Ed Schonberg  <schonberg@adacore.com>

	* exp_prag.adb (Replace_Discriminals_Of_Protected_Op):
	New procedure, auxiliary to Expand_Pragma_Check, to handle
	references to the discriminants of a protected type within a
	precondition of a protected operation. This is needed because
	the original precondition has been analyzed in the context of
	the protected declaration, but in the body of the operation
	references to the discriminants have been replaved by references
	to the discriminants of the target object, and these references
	are only created when expanding the protected body.

2017-09-08  Yannick Moy  <moy@adacore.com>

	* sem_prag.adb (Analyze_Pragma): Issue more precise error messages on
	Loop_Variant.

2017-09-08  Ed Schonberg  <schonberg@adacore.com>

	* exp_attr.adb (Build_Record_VS_Func): If the record is an
	unchecked union, do not emit checks for its (non-existent)
	discriminants, or for variant parts that depend on them.

2017-09-08  Justin Squirek  <squirek@adacore.com>

	* sem_ch4.adb (Find_Equality_Types.Try_One_Interp,
	Find_Comparison_Type.Try_One_Interp): Add check for generic
	instances.

2017-09-08  Arnaud Charlet  <charlet@adacore.com>

	* sem_ch3.adb, layout.adb, layout.ads, exp_attr.adb, debug.adb,
	exp_pakd.adb, sem_prag.adb, gnat1drv.adb, targparm.adb, targparm.ads,
	repinfo.adb, exp_ch6.adb, exp_aggr.adb, sem_eval.adb, sem_ch13.adb,
	exp_ch3.adb: Remove references to Frontend_Layout_On_Target and
	remaining references to AAMP_On_Target.

2017-09-08  Ed Schonberg  <schonberg@adacore.com>

	* style.adb: Fix typo.

2017-09-08  Javier Miranda  <miranda@adacore.com>

	* einfo.adb (Underlying_Type): Add missing support for class-wide
	types that come from the limited view.
	* exp_attr.adb (Attribute_Address): Check class-wide type
	interfaces using the underlying type to handle limited-withed
	types.
	(Attribute_Tag): Check class-wide type interfaces using
	the underlying type to handle limited-withed types.

2017-09-08  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Expand_Predicated_Loop): Handle properly a loop
	over a subtype of a type with a static predicate, taking into
	account the predicate function of the parent type and the bounds
	given in the loop specification.
	* sem_ch3.adb (Inherit_Predicate_Flags): For qn Itype created for
	a loop specification that is a subtype indication whose type mark
	is a type with a static predicate, inherit predicate function,
	used to build case statement for rewritten loop.

2017-09-08  Justin Squirek  <squirek@adacore.com>

	* lib-load.adb: Modify printing of error message to exclude file
	line number.

2017-09-08  Arnaud Charlet  <charlet@adacore.com>

	* inline.adb (Can_Be_Inlined_In_GNATprove_Mode):
	don't inline subprograms declared in both visible and private
	parts of a package.
	(In_Package_Spec): previously In_Package_Visible_Spec; now
	detects subprograms declared both in visible and private parts
	of a package spec.

2017-09-08  Ed Schonberg  <schonberg@adacore.com>

	* exp_util.adb (Build_Invariant_Procedure_Declaration): If
	the type is an anonymous array in an object declaration, whose
	component type has an invariant, use the object declaration
	as the insertion point for the invariant procedure, given that
	there is no explicit type declaration for an anonymous array type.

2017-09-08  Bob Duff  <duff@adacore.com>

	* a-cbprqu.ads, a-cbdlli.adb: Suppress warnings.

2017-09-08  Bob Duff  <duff@adacore.com>

	* a-strfix.adb (Trim): Compute Low and High only if needed.

2017-09-08  Justin Squirek  <squirek@adacore.com>

	* lib-load.adb (Load_Main_Source): Add error output in the case a
	source file is missing.

2017-09-08  Bob Duff  <duff@adacore.com>

PR ada/80888
	* a-textio.adb, a-witeio.adb, a-ztexio.adb (Set_WCEM): Use
	Default_WCEM by default (i.e. if the encoding is not specified
	by the Form string).

2017-09-08  Bob Duff  <duff@adacore.com>

	* s-trasym.ads (Hexa_Traceback): If
	Suppress_Hex is True, print "..." instead of a hexadecimal
	address.
	* s-trasym.adb: Ignore No_Hex in this version.
	Misc cleanup.

2017-09-08  Bob Duff  <duff@adacore.com>

	* debug.adb: Minor reformatting.

2017-09-08  Bob Duff  <duff@adacore.com>

	* a-cbdlli.adb, a-cohama.adb, a-cohase.adb (Copy): Rewrite the
	code so it doesn't trigger an "uninit var" warning.

2017-09-08  Nicolas Roche  <roche@adacore.com>

	* s-hibaen.ads: Remove obsolete file.

2017-09-08  Arnaud Charlet  <charlet@adacore.com>

	* a-locale.ads: Add comment explaining the state of this package.

2017-09-08  Arnaud Charlet  <charlet@adacore.com>

	* sem_util.adb (Is_CCT_Instance): Allow calls in the context
	of packages.
	* sem_prag.ads, sem_prag.adb (Find_Related_Declaration_Or_Body):
	allow calls in the context of package spec (for pragma
	Initializes) and bodies (for pragma Refined_State).

2017-09-08  Bob Duff  <duff@adacore.com>

	* checks.adb (Insert_Valid_Check): Copy the Do_Range_Check flag to the
	new Exp.

2017-09-08  Eric Botcazou  <ebotcazou@adacore.com>

	* debug.adb (dA): Adjust comment.
	* gnat1drv.adb (Gnat1drv): Likewise.
	* opt.ads (List_Representation_Info_Extended): New variable.
	* repinfo.adb (List_Record_Info): Split implementation into...
	(Compute_Max_Length): ...this.	Recurse on records if requested.
	(List_Record_Layout): Likewise.
	* switch-c.adb (Scan_Front_End_Switches) <'R'>: Use case
	statement, accept '0' and set List_Representation_Info_Extended
	on 'e'.
	* usage.adb (Usage): Document new -gnatRe variant.

2017-09-08  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Analyze_Pragma, case Default_Storage_Pool):
	Do not save the given entity in the global variable Default_Pool
	if the pragma appears within a generic unit.

2017-09-08  Bob Duff  <duff@adacore.com>

	* errout.adb (Delete_Warning): Do not
	decrement Warnings_Treated_As_Errors. This is called before
	Warnings_Treated_As_Errors has been incremented to account for
	this warning. Decrementing it here can lead to negative values
	of Warnings_Treated_As_Errors, raising Constraint_Error in
	checks-on builds, and causing the compiler to return an error
	code in checks-off builds.

2017-09-08  Arnaud Charlet  <charlet@adacore.com>

	* sem_util.ads, sem_util.adb (Is_CCT_Instance): Only expect
	entities of named concurrent types as Ref_Id and not of anonymous
	concurrent objects (because callers already know when a conversion
	is necessary and can easily do it); also, do not expect protected
	types or protected objects as Context_Id (because no flow-related
	SPARK pragmas are attached there); reflect these changes in a
	more precise comment.

2017-09-08  Olivier Hainque  <hainque@adacore.com>

	* g-altive.ads: Add documentation.

2017-09-08  Bob Duff  <duff@adacore.com>

	* sem_util.ads, debug.adb: Minor comment fix.
	* erroutc.ads: Comment fix.

2017-09-08  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Validate_Array_Type_Instance): Suppress check
	for compatibility of component types of formal and actual in an
	instantiation of a child unit,	when the component type of the
	formal is itself a formal of an enclosing generic.

2017-09-08  Arnaud Charlet  <charlet@adacore.com>

	* sem_util.ads, sem_util.adb (Is_CCT_Instance): moved from
	sem_prag.adb to make it available for GNATprove; for concurrent
	types replace custom scope climbing with Scope_Same_Or_Within; for
	single concurrent objects add scope climbing (with Scope_Within),
	which was not there (that's the primary semantic change of this
	commit); also, when comparing a single concurrent object with
	its corresponding concurrent type rely on equality of types,
	not of objects (because that's simpler to code).
	* sem_prag.adb (Is_CCT_Instance): lifted to sem_util.ads.
	(Analyze_Global_Item): adjust special-casing of references to the
	current instance of a concurrent unit in the Global contracts
	of task types and single tasks objects; similar for references
	in the protected operations and entries of protected types and
	single protected objects (in all these cases the current instance
	behaves as an implicit parameter and must not be mentioned in
	the Global contract).

2017-09-08  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch6.adb (Expand_Call_Helper): Introduce temporary for
	function calls returning a record within a subprogram call,
	for C generation.

2017-09-08  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Find_Expanded_Name): Handle properly an expanded
	name that designates the current instance of a child unit in its
	own body and appears as the prefix of a reference to an entity
	local to the child unit.
	* exp_ch6.adb, freeze.adb, sem_ch3.adb, sem_prag.adb, sem_util.adb:
	Minor reformatting.

2017-09-08  Yannick Moy  <moy@adacore.com>

	* sem_res.adb (Resolve_Equality_Op): Do not warn on comparisons that
	may be intentional.

2017-09-08  Tristan Gingold  <gingold@adacore.com>

	* sem_warn.adb (Check_Unused_Withs): Remove test that disabled
	warnings on internal units in configurable run time mode.

2017-09-08  Bob Duff  <duff@adacore.com>

	* sem_ch3.adb (Build_Derived_Private_Type): Inherit
	representation items from interfaces that the derived type
	implements, not just from the parent type.
	* sem_util.ads, sem_util.adb (Abstract_Interface_List): Change
	this to return an empty list when there are no interfaces.
	* einfo.ads, sem_ch13.adb: Minor comment fixes.
	* sem_attr.adb: Minor comment fix.

2017-09-08  Doug Rupp  <rupp@adacore.com>

	* sigtramp-vxworks.c [i386]: Adjust the kernel context for
	x86-vx7.

2017-09-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb (Expand_N_Allocator): Generate a
	call to Allocate_Any_Controlled when the allocation does not
	require any initialization.

2017-09-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_util.adb (Copy_Node_With_Replacement):
	Update the Renamed_Object field of a replicated object renaming
	declaration.

2017-09-08  Patrick Bernardi  <bernardi@adacore.com>

	* exp_ch9.adb (Is_Pure_Barrier): Allow type
	conversions and components of objects. Simplified the detection
	of the Count attribute by identifying the corresponding run-time
	calls.

2017-09-08  Yannick Moy  <moy@adacore.com>

	* exp_ch9.adb, exp_disp.adb, repinfo.adb, sem_ch12.adb, sem_dim.adb,
	sem_type.adb, sinfo.ads: Minor reformatting.

2017-09-08  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Has_Incomplete_Compoent): New predicate, subsidiary
	of Freeze_Profile, used to inhibit the freezing of the profile
	of an expression function declared within a nested package, when
	some type in the profile depends on a private type declared in
	an enclosing package.

2017-09-08  Bob Duff  <duff@adacore.com>

	* gnat1drv.adb (Gnat1drv): Do not set the Force_ALI_Tree_File flag in
	the subunit case. It's still OK to set it in the "missing subunits"
	case, because that won't cause the obsolete .ali files that cause
	confusion.

2017-09-08  Bob Duff  <duff@adacore.com>

	* sinput-l.adb: Remove unused "with Unchecked_Conversion;". It's
	unclear why this didn't cause a warning.
	* a-uncdea.ads, a-unccon.ads: Add "Ada." to names in the
	pragmas. It's unclear why this didn't cause an error.

2017-09-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_spark.adb (Expand_SPARK_N_Object_Renaming_Declaration):
	Reimplemented.
	(Expand_SPARK_Potential_Renaming): Code clean up.
	* sem_prag.adb (Analyze_Initialization_Item): Add a guard in case
	the item does not have a proper entity.
	(Analyze_Input_Item): Add a guard in case the item does not have a
	proper entity.
	(Collect_States_And_Objects): Include object renamings in the
	items being collected.
	(Resolve_State): Update the documentation of this routine.
	* sem_util.adb (Entity_Of): Add circuitry to handle
	renamings of function results.
	(Remove_Entity): New routine.
	(Remove_Overloaded_Entity): Take advantage of factorization.
	* sem_util.ads (Entity_Of): Update the documentation
	of this routine.
	(Remove_Entity): New routine.
	(Remove_Overloaded_Entity): Update the documentation of this
	routine.

2017-09-08  Eric Botcazou  <ebotcazou@adacore.com>

	* repinfo.adb (List_Record_Info): During first loop,
	do not override the normalized position and first bit
	if they have already been set.	Move fallback code
	for the packed case to the case where it belongs.
	* sem_ch13.adb (Adjust_Record_For_Reverse_Bit_Order):
	Also adjust the normalized position of components.
	(Adjust_Record_For_Reverse_Bit_Order_Ada_95): Likewise.

2017-09-08  Ed Schonberg  <schonberg@adacore.com>

	* exp_disp.adb (Make_DT, Set_All_DT_Position): Handle properly
	the placement of a primitive operation O that renames an operation
	R declared in an inner package, and which is thus not a primitive
	of the dispatching type of O. In this case O is a new primitive
	and does not inherit its dispatch table position from R (which
	has none).

2017-09-08  Ed Schonberg  <schonberg@adacore.com>

	* sem_dim.adb (Analyze_Dimension_If_Expression,
	Analyze_Dimension_Case_Expression): new subprograms to verify
	the dimensional correctness of Ada2012 conditional expressions,
	and set properly the dimensions of the construct.
	* sem_res.adb (Resolve_If_Expression, Resolve_Case_Expression)):
	call Analyze_Dimension.

2017-09-08  Ed Schonberg  <schonberg@adacore.com>

	* sem_type.adb (Expand_Interface_Conversion): Prevent an infinite
	loop on an interface declared as a private extension of another
	synchronized interface.

2017-09-08  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Check_Generic_Parent): New procedure within
	Analyze_Associations, to handle actual packages that depend on
	previous instances.  If a package IAP that is an instantiation is
	used as an actual in a subsequent instantiation SI in the same
	scope, and IAP has a body, IAP must be frozen before SI. If
	the generic parent of IAP is itself declared in a previous
	instantiation in the same scope, that instantiation must also
	be frozen before SI.
	(Install_Body): Prevent double insertion of freeze node for
	instance.

2017-09-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Resolve_State): Update the
	comment on documentation. Generate a reference to the state once
	resolution takes place.

2017-09-08  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications, case
	Linker_Section): If the aspect applies to an object declaration
	with explicit initialization, do not delay the freezing of the
	object, to prevent access-before-elaboration in the generated
	initialization code.

2017-09-08  Ed Schonberg  <schonberg@adacore.com>

	* a-wtdeio.adb (Put, all versions): Use Long_Long_Integer
	(Integer_Value (Item)) when the size of the fixed decimal type
	is larger than Integer.

2017-09-07  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/82127
	* gcc-interface/decl.c (copy_and_substitute_in_layout): Put the fields
	in order of increasing position in more cases.

2017-09-07  Yannick Moy  <moy@adacore.com>

	* a-exetim-mingw.ads: Add contract Global=>null
	on all operations that are modeled as having no read or write
	of global variables in SPARK.

2017-09-07  Raphael Amiard  <amiard@adacore.com>

	* a-chtgop.adb, a-chtgop.ads (Generic_Iteration_With_Position): Added
	to Hmaps.Generic_Ops.
	* a-cohama.adb (Ada.Containers.Hmaps.Iterate): Pass proper position in
	cursors.
	* a-cihama.adb (Ada.Containers.Indefinite_Hmaps.Iterate): Pass pos in
	cursors.
	* a-cohase.adb (Ada.Containers.Hashed_Sets.Iterate): Pass proper
	position in cursors.

2017-09-07  Javier Miranda  <miranda@adacore.com>

	* sem_elab.adb (Check_Task_Activation): Adding switch -gnatd.y to
	allow disabling the generation of implicit pragma Elaborate_All
	on task bodies.

2017-09-07  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Make_Tags): Avoid suffix counter
	in the external name of the elaboration flag. Required to fix
	the regressions introduced by the initial version of this patch.

2017-09-07  Bob Duff  <duff@adacore.com>

	* sem_ch6.adb (Analyze_Function_Return): Do not
	insert an explicit conversion to force the displacement of the
	"this" pointer to reference the secondary dispatch table in the
	case where the return statement is returning a raise expression,
	as in "return raise ...".

2017-09-07  Arnaud Charlet  <charlet@adacore.com>

	* sem_disp.adb (Is_User_Defined_Equality): Removed procedure.
	* sem_util.ads, sem_util.adb (Is_User_Defined_Equality): Copied
	procedure from sem_disp.adb.
	* sem_ch12.ads (Get_Unit_Instantiation_Node): rename Package
	with Unit.
	* sem_ch12.adb (Get_Unit_Instantiation_Node): function extended to
	return the instantiation node for subprograms. Update references
	to Get_Unit_Instantiation_Node.
	* sem_ch7.adb (Install_Parent_Private_Declarations): update
	reference to Get_Unit_Instantiation_Node.
	* exp_dist.adb (Build_Package_Stubs): update reference to
	Get_Unit_Instantiation_Node.
	* sem_ch9.adb: minor typo in comment.
	* lib-xref-spark_specific.adb
	(Traverse_Declaration_Or_Statement): traverse into task type
	definition.

2017-09-07  Ed Schonberg  <schonberg@adacore.com>

	* sem_dim.adb (Analyze_Dimension_Type_Conversion): New procedure
	to handle properly various cases of type conversions where the
	target type and/or the expression carry dimension information.
	(Dimension_System_Root); If a subtype carries dimension
	information, obtain the source parent type that carries the
	Dimension aspect.

2017-09-07  Dmitriy Anisimkov  <anisimko@adacore.com>

	* g-socket.adb, g-socket.ads (GNAT.Sockets.To_Ada): New routine.

2017-09-07  Ed Schonberg  <schonberg@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference, case 'Constrained):
	If the prefix is a reference to an object, rewrite it as an
	explicit dereference, as required by 3.7.2 (2) and as is done
	with most other attributes whose prefix is an access value.

2017-09-07  Bob Duff  <duff@adacore.com>

	* par-ch13.adb: Set the Inside_Depends flag if we are inside a
	Refined_Depends aspect.
	* par-ch2.adb: Set the Inside_Depends flag if we are inside a
	Refined_Depends pragma.
	* scans.ads: Fix documentation of Inside_Depends flag.
	* styleg.adb, styleg.ads: Minor reformatting and comment fixes.

2017-09-07  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Insert_Actions_In_Scope_Around):
	Account for the case where the are no lists to insert, but the
	secondary stack still requires management.
	* a-chtgop.adb, a-cihama.adb, a-cohama.adb, a-cohase.adb, a-tags.adb,
	comperr.adb, einfo.adb, exp_aggr.adb, exp_ch3.adb, exp_disp.adb,
	lib-xref.adb, lib-xref-spark_specific.adb, sem_ch12.adb, sem_ch13.adb,
	sem_ch6.adb, sem_dim.adb, sem_dim.ads, sem_elab.adb, sem_prag.adb:
	Minor reformatting.

2017-09-07  Vincent Celier  <celier@adacore.com>

	* clean.adb: Do not get the target parameters before calling
	gprclean.

2017-09-07  Nicolas Roche  <roche@adacore.com>

	* s-osinte-solaris-posix.ads: Removed.

2017-09-07  Arnaud Charlet  <charlet@adacore.com>

	* sem_prag.adb (Collect_States_And_Objects): Detect also instances of
	single concurrent objects.

2017-09-07  Javier Miranda  <miranda@adacore.com>

	* s-regexp.ads: Fix documentation of the globbing grammar.

2017-09-07  Gary Dismukes  <dismukes@adacore.com>

	* a-tags.ads, einfo.ads, exp_disp.ads: Minor reformatting.

2017-09-07  Arnaud Charlet  <charlet@adacore.com>

	* gnat1drv.adb (Gnat1drv): Enable pragma Ignore_Pragma (Global)
	in CodePeer mode, to support more legacy code automatically.

2017-09-07  Ed Schonberg  <schonberg@adacore.com>

	* exp_disp.adb (Replace_Formals): If thr formal is classwide,
	and thus not a controlling argument, preserve its type after
	rewriting because it may appear in an nested call with a classwide
	parameter.

2017-09-07  Arnaud Charlet  <charlet@adacore.com>

	* comperr.adb (Delete_SCIL_Files): Handle case of
	N_Package_Instantiation.

2017-09-07  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch10.adb (Remove_Private_With_Clause): If a private with
	clause for a unit U appears in a context that includes a regular
	with_clause on U, rewrite the redundant private clause into a null
	statement, rather than removing it altogether from the context,
	so that ASIS tools can reconstruct the original source.

2017-09-07  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Check_Aspect_At_Freeze_Point): The expression
	for aspect Small can be of any real type (not only a universal
	real literal) as long as it is a static constant.

2017-09-07  Thomas Quinot  <quinot@adacore.com>

	* par_sco.adb: Minor reformatting.

2017-09-07  Arnaud Charlet  <charlet@adacore.com>

	* s-parame-ae653.ads: Removed.

2017-09-07  Nicolas Roche  <roche@adacore.com>

	* s-traces-default.adb, s-trafor-default.adb, s-trafor-default.ads,
	s-traces.adb, s-traces.ads, s-tratas-default.adb, s-tfsetr-default.adb,
	s-tfsetr-vxworks.adb, s-tratas.adb, s-tratas.ads, s-tasuti.adb,
	s-parame-hpux.ads, s-tassta.adb, s-taasde.adb, s-tasren.adb,
	s-taprob.adb, a-caldel.adb, s-parame.ads, Makefile.rtl, s-tpobop.adb,
	s-taenca.adb, s-parame-vxworks.ads: Remove support for System.Traces.

2017-09-07  Yannick Moy  <moy@adacore.com>

	* a-ngelfu.ads Add preconditions to all functions
	listed in Ada RM A.5.1(19-33) as having constraints on inputs.

2017-09-07  Arnaud Charlet  <charlet@adacore.com>

	* lib-xref.adb (Generate_Reference): ignore
	references to entities which are Part_Of single concurrent
	objects.

2017-09-07  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch7.adb (Hide_Public_Entities): Add paragraph to main
	comment.

2017-09-07  Arnaud Charlet  <charlet@adacore.com>

	* a-taside.adb (Activation_Is_Complete): Raise Program_Error if
	Null_Task_Id is passed.

2017-09-07  Javier Miranda  <miranda@adacore.com>

	* einfo.ads, einfo.adb (Access_Disp_Table_Elab_Flag): New
	attribute. Defined for record types and subtypes.
	* exp_ch3.ads (Init_Secondary_Tags): Adding new formal
	(Init_Tags_List) to facilitate generating separate code in the
	IP routine to initialize the object components and for completing
	the elaboration of dispatch tables.
	* exp_ch3.adb (Build_Init_Procedure): Improve the code
	generated in the IP routines by means of keeping separate
	the initialization of the object components from the
	initialization of its dispatch tables.	(Init_Secondary_Tags):
	Adding new formal (Init_Tags_List) and adjusting calls to
	Ada.Tags.Set_Dynamic_Offset_To_Top since it has a new formal;
	adjusting also calls to Ada.Tags.Register_Interface_Offset
	because the type of one of its formals has been changed.
	* a-tags.ads, a-tags.adb (Register_Interface_Offset): Profile
	modified. Instead of receiving a pointer to an object this
	routine receives now a primary tag.
	(Set_Dyanic_Offset_To_Top): Profile modified. This routine receives an
	additional formal: the tag of the primary dispatch table.
	* exp_disp.ads (Elab_Flag_Needed): New subprogram.
	* exp_disp.adb (Elab_Flag_Needed): New subprogram.
	(Make_Tags): Adding the declaration of the elaboration flag (if needed).
	* exp_aggr.adb (Build_Record_Aggr_Code): Adding actual of new
	formal in calls to Init_Secondary_Tags.

2017-09-07  Javier Miranda  <miranda@adacore.com>

	* ghost.adb (Mark_And_Set_Ghost_Instantiation.Check_Ghost_Actuals): New
	subprogram.
	* sem_prag.adb (Pragma_Ghost): Add missing support for ghost
	applied to generic subprograms.

2017-09-07  Arnaud Charlet  <charlet@adacore.com>

	* sem_util.adb (Check_Part_Of_Reference): rename Conc_Typ to Conc_Obj
	(because it refers to the anonymous concurrent object, not its type);
	fix condition for emitting error message about task/protected type,

2017-09-07  Bob Duff  <duff@adacore.com>

	* binde.adb (Debug_Flag_Old): If both -do and -dp
	are specified, behave as if just -do was specified, rather than
	using a mixture.

2017-09-07  Nicolas Roche  <roche@adacore.com>

	* system-vxworks-sparcv9.ads, s-vxwork-m68k.ads, s-vxwork-mips.ads,
	system-vxworks-m68k.ads, system-vxworks-mips.ads: Removed.

2017-09-07  Arnaud Charlet  <charlet@adacore.com>

	* sem_prag.adb (Find_Role): The Global_Seen flag
	is now consulted not only for abstract states and variables,
	but for all kinds of items.
	(Collect_Subprogram_Inputs_Outputs): Do not process formal
	generic parameters, because unlike ordinary formal parameters,
	generic formals only act as input/ outputs if they are explicitly
	mentioned in a Global contract.

2017-09-07  Yannick Moy  <moy@adacore.com>

	* ghost.adb (Check_Ghost_Context): Do not err on ghost code inside
	predicate procedure. Check predicate pragma/aspect with Ghost entity.
	* exp_ch6.adb, par-ch6.adb, sem_ch13.adb, sem_prag.adb; Minor
	reformatting.

2017-09-07  Ed Schonberg  <schonberg@adacore.com>

	* sem_aggr.adb: Move New_Copy_Tree_And_Dimensions to sem_dim
	(code cleanup);
	* sem_ch3.adb (Build_Derived_Record_Type):i Call
	Copy_Dimensions_Of_Components after creating the copy of the
	record declaration.
	* sem_dim.ads, sem_dim.adb (Copy_Dimensions_Of_Components): For a
	derived recor type, copy the dikensions if any of each component
	of the parent record to the corresponding component declarations
	of the derived record. These expressions are used among other
	things as default values in aggregates with box associations.
	* a-dirval-mingw.adb, g-cgi.adb, gnatcmd.adb, lib-xref.adb,
	repinfo.adb, sem_attr.adb, sem_ch10.adb, sem_ch6.adb, sem_prag.adb:
	Minor reformatting.

2017-09-07  Arnaud Charlet  <charlet@adacore.com>

	* sem_util.adb: Remove extra space after THEN.

2017-09-07  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch7.adb (Has_Referencer): For a subprogram renaming,
	also mark the renamed subprogram as referenced.

2017-09-07  Ed Schonberg  <schonberg@adacore.com>

	* par-ch6.adb (P_Subprogram): Improve error message on null
	procedure with misplaced aspect specification, which the parser
	first attempts to interpret as a malformed expression function.

2017-09-07  Gary Dismukes  <dismukes@adacore.com>

	* sem_attr.adb (Analyze_Attribute_Old_Result):
	Allow attributes Result and Old in the case of an expression
	function.

2017-09-07  Justin Squirek  <squirek@adacore.com>

	* sem_prag.adb (Process_Atomic_Independent_Shared_Volatile): Propagate
	Volatile to subcomponents.

2017-09-07  Bob Duff  <duff@adacore.com>

	* exp_ch7.adb (Find_Last_Init): Check for the
	case where a build-in-place function call has been replaced by a
	'Reference attribute reference.

2017-09-07  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch7.adb (Has_Referencer): Recurse on Actions of freeze
	nodes.

2017-09-07  Bob Duff  <duff@adacore.com>

	* exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration,
	Make_Build_In_Place_Call_In_Anonymous_Context): Do not use the
	secondary stack for all functions that return limited tagged
	types -- just do it for dispatching calls.  Misc cleanup.
	* sem_util.ads, sem_util.adb (Unqual_Conv): New function to
	remove qualifications and type conversions. Fix various bugs
	where only a single level of qualification or conversion was
	removed, so e.g. "T1'(T2'(X))" would incorrectly return "T2'(X)"
	instead of "X".
	* checks.adb, exp_util.ads, exp_util.adb, sem_res.adb: Misc related
	cleanup.

2017-09-07  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (setr_Actual_Subtypes): Within a predicate function
	do not create actual subtypes that may generate further predicate
	functions.
	* sem_ch13.adb (Build_Predicate_Functions): Indicate that entity
	of body is a predicate function as well.
	(Resolve_Aspect_Expressions, Resolve_Name): For a component
	association, only the expression needs resolution, not the name.
	(Resolve_Aspect_Expressions, case Predicates): Construct and
	analyze the predicate function declaration in the scope of the
	type, before making the type and its discriminants visible.

2017-09-06  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (warn_on_field_placement): Issue the warning
	only if the record type itself comes from source.

2017-09-06  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch5.adb: Minor reformatting and a typo fix

2017-09-06  Arnaud Charlet  <charlet@adacore.com>

	* sinput-l.ads: minor remove extra period at the end of comment

2017-09-06  Arnaud Charlet  <charlet@adacore.com>

	* sem_prag.adb (Add_Item_To_Name_Buffer): remove support for
	E_Discriminant.
	(Find_Role): remove support for E_Discriminant.

2017-09-06  Javier Miranda  <miranda@adacore.com>

	* exp_ch6.adb (Expand_Simple_Function_Return):
	Add missing implicit type conversion to force displacement of the
	"this" pointer.

2017-09-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch3.adb, sem_aux.adb, sem_res.adb: Minor reformatting.

2017-09-06  Yannick Moy  <moy@adacore.com>

	* sem_ch12.adb (Analyze_Instance_And_Renamings): Refactor to set
	global variable Ignore_SPARK_Mode_Pragmas_In_Instance only once.

2017-09-06  Bob Duff  <duff@adacore.com>

	* sem_ch8.adb: Change Assert to be consistent with
	other similar ones.

2017-09-06  Bob Duff  <duff@adacore.com>

	* binde.adb (Find_Elab_Order): Do not run Elab_Old unless
	requested. Previously, the -do switch meant "run Elab_New and
	Elab_Old and use the order chosen by Elab_Old, possibly with
	debugging printouts comparing the two orders."	Now it means
	"do not run Elab_New." This is of use if there are bugs that
	cause Elab_New to crash.
	(Elab_Position, Num_Chosen): Change type to Nat, to avoid various
	type conversions.
	* ali.ads (Elab_Position): Change type to Nat, to avoid various
	type conversions.

2017-09-06  Arnaud Charlet  <charlet@adacore.com>

	* sem_prag.adb (Check_Mode_Restriction_In_Enclosing_Context): Fix
	reference to SPARK RM.

2017-09-06  Eric Botcazou  <ebotcazou@adacore.com>

	* layout.adb: Use SSU short hand consistently throughout the file.

2017-09-06  Eric Botcazou  <ebotcazou@adacore.com>

	* freeze.adb (Freeze_Record_Type)
	<Sized_Component_Total_Round_RM_Size>: New local variable to
	accumulate the rounded RM_Size of components.  Update it for
	every component whose RM_Size is statically known.  Add missing
	guard to check that bit packing is really required before issuing
	the error about packing.  Swap condition for clarity's sake.
	* sem_prag.adb (Usage_Error): Fix reference to SPARK RM in comment.

2017-09-06  Fedor Rybin  <frybin@adacore.com>

	* makeutl.adb, makeutl.ads, mlib.adb, mlib.ads, mlib-fil.adb,
	mlib-fil.ads, mlib-prj.adb, mlib-prj.ads, mlib-tgt.adb, mlib-tgt.ads,
	mlib-tgt-specific.adb, mlib-tgt-specific.ads,
	mlib-tgt-specific-aix.adb, mlib-tgt-specific-darwin.adb,
	mlib-tgt-specific-hpux.adb, mlib-tgt-specific-linux.adb,
	mlib-tgt-specific-mingw.adb, mlib-tgt-specific-solaris.adb,
	mlib-tgt-specific-vxworks.adb, mlib-tgt-specific-xi.adb, mlib-utl.adb,
	mlib-utl.ads, prj.adb, prj.ads, prj-attr.adb, prj-attr.ads,
	prj-attr-pm.adb, prj-attr-pm.ads, prj-com.ads, prj-conf.adb,
	prj-conf.ads, prj-dect.adb, prj-dect.ads, prj-env.adb, prj-env.ads,
	prj-err.adb, prj-err.ads, prj-ext.adb, prj-ext.ads, prj-makr.adb,
	prj-makr.ads, prj-nmsc.adb, prj-nmsc.ads, prj-pars.adb, prj-pars.ads,
	prj-part.adb, prj-part.ads, prj-pp.adb, prj-pp.ads, prj-proc.adb,
	prj-proc.ads, prj-strt.adb, prj-strt.ads, prj-tree.adb, prj-tree.ads,
	prj-util.adb, prj-util.ads, sinput-p.adb, sinput-p.ads: Remove obsolete
	project manager sources.

2017-09-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Assigment): If the left-hand side is an
	entity of a mutable type and the right-hand side is a conditional
	expression, resolve the alternatives of the conditional using
	the base type of the target entity, because the alternatives
	may have distinct subtypes. This is particularly relevant if
	the alternatives are aggregates.

2017-09-06  Ed Schonberg  <schonberg@adacore.com>

	* checks.adb (Apply_Predicate_Check): If the expression is an
	aggregate that is the RHS of an assignment, apply the check to
	the LHS after the assignment, rather than to the aggregate. This
	is more efficient than creating a temporary for the aggregate,
	and prevents back-end crashes when the aggregate includes a
	dynamic "others' association.

2017-09-06  Yannick Moy  <moy@adacore.com>

	* sem_ch12.adb (Analyze_Instance_And_Renamings):
	Set variable to ignore SPARK_Mode in instance before the analysis
	of the generated package declaration.

2017-09-06  Yannick Moy  <moy@adacore.com>

	* sem_res.adb (Resolve_Call): Do not issue a
	message for calls inside expression function, unless body was
	seen and is candidate for inlining.

2017-09-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_aux.adb (Is_Generic_Formal): Handle properly formal packages.
	* sem_ch3.adb (Analyze_Declarations): In a generic subprogram
	body. do not freeze the formals of the generic unit.

2017-09-06  Gary Dismukes  <dismukes@adacore.com>

	* errout.adb (Error_Msg): Separate the
	treatment for warning vs. style messages in inlinings and
	instantiations. Prevents blowups on calls to Warn_Insertion for
	style messages, which should not be called in that case because
	Warning_Msg_Char is not set.

2017-09-06  Justin Squirek  <squirek@adacore.com>

	* sem_prag.adb (Check_VFA_Conflicts): Created
	to group all Volatile_Full_Access checks relating to other
	representation pragmas (Mark_Component_Or_Object): Created
	to centeralize the flagging of attributes for the record type
	component case, a pragma applied individually to a component, and
	the object case.
	(Process_Atomic_Independent_Shared_Volatile):
	Add propagation of certain pragmas to record components and move
	evaluation of VFA checks

2017-09-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Check_Postcondition_Use_In_Inlined_Subprogram):
	Do not warn on conditions that are not obeyed for Inline_Always
	subprograms, when assertions are not enabled.

2017-09-06  Arnaud Charlet  <charlet@adacore.com>

	* sem_util.adb (Unique_Entity): For abstract states return their
	non-limited view.

2017-09-06  Bob Duff  <duff@adacore.com>

	* sem_ch12.adb (Copy_Generic_Node): When we copy a node
	that is a proper body corresponding to a stub, we defer the
	adjustment of the sloc until after the correct adjustment has
	been computed. Otherwise, Adjust_Instantiation_Sloc will ignore
	the adjustment, because it will be outside the range in (the old,
	incorrect) S_Adjustment.
	* inline.adb: Use named notation for readability and uniformity.
	* sinput-l.adb: Minor improvements to debugging output printed
	for Debug_Flag_L.
	* sinput-l.ads (Create_Instantiation_Source): Minor comment
	correction.

2017-09-06  Vincent Celier  <celier@adacore.com>

	* make.adb: Do not invoke gprbuild for -bargs -P.

2017-09-06  Sylvain Dailler  <dailler@adacore.com>

	* sem_eval.adb (Compile_Time_Known_Value_Or_Aggr): Adding a
	case when Op is of kind N_Qualified_Expression. In this case,
	the function is called recursively on the subexpression like in
	other cases.
	* make.adb: Minor reformatting

2017-09-06  Justin Squirek  <squirek@adacore.com>

	* einfo.adb (Set_Linker_Section_Pragma): Modify
	Set_Linker_Section_Pragma to be consistant with the "getter"
	Linker_Section_Pragma.
	* exp_ch5.adb (Expand_Formal_Container_Loop): Add proper error
	checking for container loops so that the index cursor is not
	directly changable by the user with the use of E_Loop_Parameter.
	* sem_ch5.adb (Analyze_Block_Statement): Revert previous change.
	* sem_warn.adb (Check_References): Revert previous change.

2017-09-06  Bob Duff  <duff@adacore.com>

	* exp_util.adb (Is_Displace_Call): Make sure it works for indirect
	calls and the like.

2017-09-06  Yannick Moy  <moy@adacore.com>

	* sem_prag.adb (Analyze_Depends_Global): Reinforce test on object
	declarations to only consider valid uses of Global/Depends those on
	single concurrent objects.

2017-09-06  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch13.adb (Check_Record_Representation_Clause): Give an
	error as soon as one of the specified components overlaps the
	parent field.

2017-09-06  Arnaud Charlet  <charlet@adacore.com>

	* sem_prag.ads: minor fix typo in comment.

2017-09-06  Justin Squirek  <squirek@adacore.com>

	* sem_ch5.adb (Analyze_Block_Statement): Verify a block comes
	from source before checking source references.
	* sem_warn.adb (Check_References): Add check for internal block
	before recursing.

2017-09-06  Vincent Celier  <celier@adacore.com>

	* make.adb, makeusg.adb, switch-m.adb, switch-m.ads, make_util.adb,
	make_util.ads, sinput.adb, sinput.ads, clean.adb, gnatls.adb,
	gnatname.adb: Remove the Project Manager from the GNAT tools.
	* gcc-interface/Makefile.in: ditto.

2017-09-06  Bob Duff  <duff@adacore.com>

	* sem_util.ads: Minor comment fix.

2017-09-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Analyze_Associations, case of Formal_Package):
	Generate a freeze node for the actual of a formal package, if
	the actual is declared in the same unit and has a corresponding
	body, to prevent the current instance from being frozen before
	the actual is.

2017-09-06  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch7.adb (Entity_Table_Size): Change to nearest prime number.

2017-09-06  Yannick Moy  <moy@adacore.com>

	* sem_warn.adb: Minor refactoring.

2017-09-06  Ed Schonberg  <schonberg@adacore.com>

	* einfo.ads, einfo.adb (Get_Classwwide_Pragma): New utility,
	to retrieve the inherited classwide precondition/postcondition
	of a subprogram.
	* freeze.adb (Freeze_Entity): Use Get_Classwide_Pragma when
	freezing a subprogram, to complete the generation of the
	corresponding checking code.

2017-09-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb (Is_Controlled_Indexing): New routine.
	(Is_Displace_Call): Use routine Strip to remove indirections.
	(Is_Displacement_Of_Object_Or_Function_Result): Code clean up. Add a
	missing case of controlled generalized indexing.
	(Is_Source_Object): Use routine Strip to remove indirections.
	(Strip): New routine.

2017-09-06  Bob Duff  <duff@adacore.com>

	* sysdep.c (__gnat_has_cap_sys_nice): If HAVE_CAPABILITY is defined,
	we include the proper header. Otherwise, we just declare the necessary
	things from the capabilities library. This is so we can build on
	machines without that library, while still enabling that library.
	At run time, we're using weak symbols, so __gnat_has_cap_sys_nice will
	simply return 0 if the library is not present, or not included
	in the link.

2017-09-06  Pierre-Marie de Rodat  <derodat@adacore.com>

	* exp_dbug.adb (Debug_Renaming_Declaration): Do not create an encoding
	for renamings that involve function calls in prefix form.

2017-09-06  Bob Duff  <duff@adacore.com>

	* sem_ch3.adb (Analyze_Subtype_Declaration):
	Set Has_Delayed_Freeze on a subtype of an incomplete type.

2017-09-06  Pierre-Marie de Rodat  <derodat@adacore.com>

	* par_sco.adb (Extend_Statement_Sequence): When the accept statement
	has no parameter specification and no entry index, use the entry name
	as the end of the generated SCO statement.

2017-09-06  Steve Baird  <baird@adacore.com>

	* exp_util.adb (Side_Effect_Free): For CodePeer (only) treat
	uses of 'Image and related attributes as having side effects in
	order to avoid replicating such uses.
	* pprint.ads (Expression_Image) Add new generic formal flag
	Hide_Temp_Derefs.  The flag defaults to False; CodePeer will
	(eventually) override the default.
	* pprint.adb (Expression_Image) If the new flag is set, then
	suppress the ".all" suffix when displaying a dereference whose
	prefix is a use of a value-capturing compiler temp of the sort
	generated by Expr_Util.Remove_Side_Effects .
	* exp_attr.adb, g-catiio.adb, inline.adb, sem_attr.adb, sem_ch13.adb,
	sem_ch7.adb, sem_dim.adb, sem_util.adb, sem_util.ads, sem_warn.adb:
	Minor reformatting.
	* inline.adb: Minor wording change.

2017-09-06  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch7.adb: Update comment.

2017-09-06  Yannick Moy  <moy@adacore.com>

	* einfo.adb, einfo.ads (Is_Subprogram_Or_Entry): New predicate.
	* inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Use new function.
	* sem_util.adb, sem_util.ads (Within_Protected_Type): Renaming
	with slight modification from Is_Subp_Or_Entry_Inside_Protected,
	so that applies to any entity.

2017-09-06  Yannick Moy  <moy@adacore.com>

	* sem_ch3.adb (Derived_Type_Declaration): Use
	Incomplete_Or_Partial_View rather than local Find_Partial_View.

2017-09-06  Javier Miranda  <miranda@adacore.com>

	* g-catiio.ads, g-catiio.adb (Value): Extended to parse an UTC time
	following ISO-8861.

2017-09-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_dim.adb (Analyze_Dimension): In an instance, a type
	conversion takes its dimensions from the expression, not from
	the context type.
	(Dimensions_Of_Operand): Ditto.

2017-09-06  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Expand_Call_Helper): Do not optimize calls to
	null procedures when GNAT coverage is used, so that their (empty)
	bodies are properly covered.

2017-09-06  Bob Duff  <duff@adacore.com>

	* sem_ch13.adb (Resolve_Aspect_Expressions): If
	the entity is a type with discriminants, make the discriminants
	directly visible in aspect clauses.

2017-09-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Arithmentic_Op): If both operands are
	Universal_Real and the context is a floating-point type, resolve
	both operands to the target type.

2017-09-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* a-comlin.adb, exp_aggr.adb, exp_ch6.adb, frontend.adb, gnatbind.adb,
	sem_ch3.adb, sem_util.adb: Minor reformatting.

2017-09-06  Yannick Moy  <moy@adacore.com>

	* freeze.adb (Check_Inherited_Conditions): Rewriting
	of inherited preconditions and postconditions should only occur
	in GNATprove mode, that is, when GNATprove_Mode is True, not to
	be confused with SPARK_Mode being On.

2017-09-06  Yannick Moy  <moy@adacore.com>

	* sem_warn.adb (Check_References): Take into
	account possibility of attribute reference as original node.

2017-09-06  Yannick Moy  <moy@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference): Protect against invalid
	use of attribute.

2017-09-06  Eric Botcazou  <ebotcazou@adacore.com>

	* inline.adb (Split_Unconstrained_Function): Also set Is_Inlined
	on the procedure created to encapsulate the body.
	* sem_ch7.adb: Add with clause for GNAT.HTable.
	(Entity_Table_Size): New constant.
	(Entity_Hash): New function.
	(Subprogram_Table): New instantiation of GNAT.Htable.Simple_HTable.
	(Is_Subprogram_Ref): Rename into...
	(Scan_Subprogram_Ref): ...this. Record references to subprograms in
	the table instead of bailing out on them. Scan the value of constants
	if it is not known at compile time.
	(Contains_Subprograms_Refs): Rename into...
	(Scan_Subprogram_Refs): ...this.
	(Has_Referencer): Scan the body of all inlined subprograms. Reset the
	Is_Public flag on subprograms if they are not actually referenced.
	(Hide_Public_Entities): Beef up comment on the algorithm.
	Reset the table of subprograms on entry.

2017-09-06  Yannick Moy  <moy@adacore.com>

	* inline.adb: Add comments to Can_Be_Inlined_In_GNATprove_Mode.

2017-09-06  Javier Miranda  <miranda@adacore.com>

	* exp_aggr.adb (Component_Not_OK_For_Backend): The C backend
	cannot handle a type conversion of an array as an aggregate
	component.

2017-09-06  Bob Duff  <duff@adacore.com>

	* g-comlin.adb (Try_Help): Remove ".exe" so we
	get the same results on windows and unix.

2017-09-06  Justin Squirek  <squirek@adacore.com>

	* exp_imgv.adb (Expand_Image_Attribute),
	(Expand_Wide_Image_Attribute), (Expand_Wide_Wide_Image_Attribute):
	Added case to handle new-style 'Image expansion
	(Rewrite_Object_Image): Moved from exp_attr.adb
	* exp_attr.adb (Expand_N_Attribute_Reference): Modified Image
	attribute cases so that the relevant subprograms in exp_imgv.adb
	handle all expansion.
	(Rewrite_Object_Reference_Image): Moved to exp_imgv.adb
	* sem_attr.adb (Analyze_Attribute): Modified Image attribute
	cases to call common function Analyze_Image_Attribute.
	(Analyze_Image_Attribute): Created as a common path for all
	image attributes (Check_Object_Reference_Image): Removed
	* sem_util.ads, sem_util.adb (Is_Image_Applied_To_Object):
	Removed and refactored into Is_Object_Image (Is_Object_Image):
	Created as a replacement for Is_Image_Applied_To_Object

2017-09-06  Yannick Moy  <moy@adacore.com>

	* sem_prag.adb (Analyze_Depends_In_Decl_Part): Add continuation
	message for missing input.

2017-09-06  Yannick Moy  <moy@adacore.com>

	* inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Prevent inlining
	of protected subprograms and entries.
	* sem_util.adb, sem_util.ads (Is_Subp_Or_Entry_Inside_Protected):
	New function to detect when a subprogram of entry is defined
	inside a protected object.

2017-09-06  Bob Duff  <duff@adacore.com>

	* sysdep.c (__gnat_has_cap_sys_nice): New function to determine
	whether the current process has the CAP_SYS_NICE capability.
	* s-taprop-linux.adb (Get_Ceiling_Support): Update this to allow
	ceiling priorities if the current process has the CAP_SYS_NICE
	capability.

2017-09-06  Bob Duff  <duff@adacore.com>

	* a-comlin.ads, a-comlin.adb (Argument): Move the constraint
	check back to the body, because SPARK is not yet ready for
	"or else raise Constraint_Error".

2017-09-06  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Expand_Call_Helper): Replace call to null
	procedure by a single null statement, after evaluating the
	actuals that require it.

2017-09-06  Javier Miranda  <miranda@adacore.com>

	* exp_aggr.adb (Backend_Processing_Possible.Component_Check):
	Generating C code improve the code that checks the use of nested
	aggregates to initialize object declarations.

2017-09-06  Yannick Moy  <moy@adacore.com>

	* sem_ch3.adb (Derived_Type_Declaration): Detect
	violations of new rule SPARK RM 3.4(1).  Also refactor existing
	check to use the new function Find_Partial_View.

2017-09-06  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb: gnat ls -V -P... invokes gprls -V -P...	The code
	from the Prj hierarchy has been removed from the GNAT driver.

2017-09-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_type.adb (Interface_Present_In_Ancestor): Within an
	expression function, or within a spec expression (default value,
	etc) a reference to an incomplete type is legal: legality of
	the operation will be checked when some related entity (type,
	object or subprogram) is frozen.

2017-09-06  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch5.adb, s-diinio.ads, sem_ch4.adb, s-diflio.ads: Minor spelling
	adjustments and a typo fix.

2017-09-06  Yannick Moy  <moy@adacore.com>

	* sem_res.adb (Resolve_Call): Do not issue info
	message about inlining of calls to functions in assertions,
	for functions whose body has not been seen yet.

2017-09-06  Bob Duff  <duff@adacore.com>

	* a-comlin.ads, a-comlin.adb (Argument): Simplify the code, now that
	we can use modern Ada in this package.
	* s-resfil.ads, s-resfil.adb, a-clrefi.ads, a-clrefi.adb:
	Move Ada.Command_Line.Response_File to System.Response_File,
	and make Ada.Command_Line.Response_File into a rename of
	System.Response_File. This is to avoid having gnatbind depend
	Ada.Command_Line, which would damage the bootstrap process now
	that Ada.Command_Line contains modern Ada (the raise expression).
	* gnatbind.adb: Avoid dependence on
	Ada.Command_Line. Depend on System.Response_File instead
	of Ada.Command_Line.Response_File. Change one call to
	Ada.Command_Line.Command_Name to use Fill_Arg.	Change one call
	to Ada.Command_Line.Argument_Count to use Arg_Count.
	* gcc-interface/Make-lang.in, Makefile.rtl: Take note of the new files.

2017-09-06  Bob Duff  <duff@adacore.com>

	* frontend.adb (Frontend): Skip -gnatec=gnat.adc
	switch, because we've already read gnat.adc by default.

2017-09-06  Bob Duff  <duff@adacore.com>

	* exp_ch5.adb (Get_Default_Iterator): Replace
	"Assert(False)" with "return Iter", because if an iterable
	type is derived from a noniterable one, then we won't find an
	overriding or inherited default iterator.

2017-09-06  Yannick Moy  <moy@adacore.com>

	* sem_warn.adb (Warn_On_Suspicious_Index): Improve warning when the
	literal index used to access a string is null or negative.

2017-09-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb (Status_Flag_Or_Transient_Decl): The attribute is now
	allowed on loop parameters.
	(Set_Status_Flag_Or_Transient_Decl): The attribute is now allowed
	on loop parameters.
	(Write_Field15_Name): Update the output for
	Status_Flag_Or_Transient_Decl.
	* einfo.ads: Attribute Status_Flag_Or_Transient_Decl now applies
	to loop parameters. Update the documentation of the attribute
	and the E_Loop_Parameter entity.
	* exp_ch7.adb (Process_Declarations): Remove the bogus guard
	which assumes that cursors can never be controlled.
	* exp_util.adb (Requires_Cleanup_Actions): Remove the bogus
	guard which assumes that cursors can never be controlled.

2017-09-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_attr.adb, sem_util.adb, sem_attr.adb, sem_ch6.adb, sem_ch8.adb,
	sem_warn.adb: Minor reformatting.

2017-09-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_warn.adb (Warn_On_Overlapping_Actuals): Refine previous
	fix and preserve older GNAT warning on overlapping actuals that
	are not elementary types.

2017-09-06  Justin Squirek  <squirek@adacore.com>

	* sem_attr.adb: Comment correction.

2017-09-06  Gary Dismukes  <dismukes@adacore.com>

	* sem_util.adb: Minor reformatting.

2017-09-06  Yannick Moy  <moy@adacore.com>

	* a-comlin.ads (Argument): Add precondition for analysis.

2017-09-06  Yannick Moy  <moy@adacore.com>

	* sem_res.adb (Resolve): Update message for function call as statement.

2017-09-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Check_Returns): Clean up warnings coming from
	generated bodies for renamings that are completions, when renamed
	procedure is No_Return.
	* sem_ch8.adb (Analyze_Subprogram_Renaming): Implement legality
	rule in 6.5.1 (7/2): if a renaming is a completion of a subprogram
	with No_Return, the renamed entity must be No_Return as well.

2017-09-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch5.adb, freeze.adb, exp_ch4.adb, exp_ch6.adb, lib-xref.adb:
	Minor reformatting.

2017-09-06  Justin Squirek  <squirek@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference): Modified Image
	attribute cases (Rewrite_Object_Reference_Image): Created to
	aid the rewriting of new-style 'Image attributes.
	* sem_attr.adb (Analyze_Attribute): Modified Image attribute cases
	(Check_Object_Reference_Image): Created to handle verification of
	'Image with object-references as prefixes.
	* sem_util.ads, sem_util.adb (Is_Image_Applied_To_Object):
	Create predicate to identify cases where an 'Image attribute's
	prefix applies to an object reference.

2017-09-06  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Freeze_Entity): Do not generate a freeze
	node for a generic unit, even if it includes delayed aspect
	specifications. Freeze nodes for generic entities must never
	appear in the tree that reaches the back-end of the compiler.

2017-09-06  Yannick Moy  <moy@adacore.com>

	* treepr.adb (Print_Entity_Info): Do not print empty Elist.

2017-09-06  Yannick Moy  <moy@adacore.com>

	* inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Do not consider calls
	to subprograms in other units as possibly inlined.

2017-09-06  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Freeze_Entity): For a derived type that has no
	explicit delayed aspects but may inherit delayed aspects from its
	parent type, analyze aspect at freeze point for proper capture
	of an inherited aspect.

2017-09-06  Arnaud Charlet  <charlet@adacore.com>

	* lib-xref.adb (Get_Through_Renamings): Get through subprogram
	renamings; also, avoid repeated calls to Renamed_Object when getting
	through object renamings.

2017-09-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Array_Type_Declaration): Handle properly an
	array type declaration in a private part, when an index is a
	subtype indication of a discrete type with a private partial view.

2017-09-06  Javier Miranda  <miranda@adacore.com>

	* exp_ch4.adb (Expand_Modular_Op): Force generating
	temporary to improve the generated code.

2017-09-06  Tristan Gingold  <gingold@adacore.com>

	* s-fatgen.adb: Minor typo fix in comment.

2017-09-06  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Make_Field_Assign): If the type
	of the right-hand side has stored constraint, use its values
	(except for those that are renamings of parent discriminants)
	to produce additional assignments for the discriminants of the
	left-hand side, which are invisible in the righ-hand side and
	not retrievable as selected components.

2017-09-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Needs_One_Formal): The first formal of such a
	function must be a controlling formal, so that Obj.F (X, Y)
	can have the interpretation F(Obj)(X, Y).
	* sem_util.ads: Clarify documentation.

2017-09-06  Eric Botcazou  <ebotcazou@adacore.com>

	* table.ads, table.adb: Restore original implementation.
	* namet.h (Names_Ptr): Adjust back.
	(Name_Chars_Ptr): Likewise.
	* uintp.h (Uints_Ptr): Likewise.
	(Udigits_Ptr): Likewise.
	* g-table.ads: Remove pragma Compiler_Unit_Warning.
	* par_sco.adb: Do not with GNAT.Table and use Table consistently.
	* scos.ads: Replace GNAT.Table with Table and adjust instantiations.
	* spark_xrefs.ads: Likewise.
	* scos.h: Undo latest changes.

2017-09-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Analyze_Subprogram_Instantiation): Propagate
	No_Return flag to instance if pragma applies to generic unit. This
	must be done explicitly because the pragma does not appear
	directly in the generic declaration (unlike the corresponding
	aspect specification).

2017-09-06  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch7.adb (Has_Referencer): Move up and expand comment
	explaining the test used to detect inlining.  Use same test
	in second occurrence.
	(Analyze_Package_Body_Helper): Minor formatting fixes.

2017-09-06  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch4.adb (Handle_Changed_Representation): For an untagged
	derived type with a mixture of renamed and constrained parent
	discriminants, the constraint for the target must obtain the
	discriminant values from both the operand and from the stored
	constraint for it, given that the constrained discriminants are
	not visible in the object.
	* exp_ch5.adb (Make_Field_Assign): The type of the right-hand
	side may be derived from that of the left-hand side (as in the
	case of an assignment with a change of representation) so the
	discriminant to be used in the retrieval of the value of the
	component must be the entity in the type of the right-hand side.

2017-09-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch3.adb, sem_ch7.adb, sem_util.adb, g-debpoo.adb, sem_ch4.adb,
	sem_ch6.adb, sem_ch8.adb: Minor reformatting.
	* exp_util.adb (Is_Source_Object): Account for
	the cases where the source object may appear as a dereference
	or within a type conversion.
	* exp_ch6.adb: Fix missing space in error message.

2017-09-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb: Update description of Eliminate.

2017-09-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Analyze_Attribute, case 'Loop_Entry): Handle
	properly an attribute reference 'Loop_Entry that appears in the
	list of indices of an indexed expression, to prevent an infinite
	loop in the compiler.

2017-09-06  Bob Duff  <duff@adacore.com>

	* s-fileio.adb (Name): Do not raise Use_Error for temp files.

2017-09-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Set_Membership):  If an alternative
	in a set membership is an overloaded enumeration literal, and
	the type of the alternative is resolved from a previous one,
	replace the entity of the alternative as well as the type,
	to prevent inconsistencies between the entity and the type.

2017-09-06  Eric Botcazou  <ebotcazou@adacore.com>

	* ali.ads (ALIs_Record): Add No_Component_Reordering component.
	(No_Component_Reordering_Specified): New switch.
	* ali.adb (Initialize_ALI): Set No_Component_Reordering_Specified.
	(Scan_ALI): Set No_Component_Reordering and deal with NC marker.
	* bcheck.adb (Check_Consistent_No_Component_Reordering):
	New check.
	(Check_Configuration_Consistency): Invoke it.
	* debug.adb (d.r): Toggle the effect of the switch.
	(d.v): Change to no-op.
	* einfo.ads (Has_Complex_Representation):
	Restrict to record types.
	(No_Reordering): New alias for Flag239.
	(OK_To_Reorder_Components): Delete.
	(No_Reordering): Declare.
	(Set_No_Reordering): Likewise.
	(OK_To_Reorder_Components): Delete.
	(Set_OK_To_Reorder_Components): Likewise.
	* einfo.adb (Has_Complex_Representation): Expect record types.
	(No_Reordering): New function.
	(OK_To_Reorder_Components): Delete.
	(Set_Has_Complex_Representation): Expect base record types.
	(Set_No_Reordering): New procedure.
	(Set_OK_To_Reorder_Components): Delete.
	(Write_Entity_Flags): Adjust to above change.
	* fe.h (Debug_Flag_Dot_R): New macro and declaration.
	* freeze.adb (Freeze_Record_Type): Remove conditional code setting
	OK_To_Reorder_Components on record types with convention Ada.
	* lib-writ.adb (Write_ALI): Deal with NC marker.
	* opt.ads (No_Component_Reordering): New flag.
	(No_Component_Reordering_Config): Likewise.
	(Config_Switches_Type): Add No_Component_Reordering component.
	* opt.adb (Register_Opt_Config_Switches): Copy
	No_Component_Reordering onto No_Component_Reordering_Config.
	(Restore_Opt_Config_Switches): Restore No_Component_Reordering.
	(Save_Opt_Config_Switches): Save No_Component_Reordering.
	(Set_Opt_Config_Switches): Set No_Component_Reordering.
	* par-prag.adb (Prag): Deal with Pragma_No_Component_Reordering.
	* sem_ch3.adb (Analyze_Private_Extension_Declaration): Also set the
	No_Reordering flag from the default.
	(Build_Derived_Private_Type): Likewise.
	(Build_Derived_Record_Type): Likewise.	Then inherit it
	for untagged types and clean up handling of similar flags.
	(Record_Type_Declaration): Likewise.
	* sem_ch13.adb (Same_Representation): Deal with No_Reordering and
	remove redundant test on Is_Tagged_Type.
	* sem_prag.adb (Analyze_Pragma): Handle No_Component_Reordering.
	(Sig_Flags): Likewise.
	* snames.ads-tmpl (Name_No_Component_Reordering): New name.
	(Pragma_Id): Add Pragma_No_Component_Reordering value.
	* warnsw.adb (Set_GNAT_Mode_Warnings): Enable -gnatw.q as well.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>:
	Copy the layout of the parent type only if the No_Reordering
	settings match.
	(components_to_record): Reorder record types with
	convention Ada by default unless No_Reordering is set or -gnatd.r
	is specified and do not warn if No_Reordering is set in GNAT mode.

2017-09-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.ads, sem_util.adb (Check_Previous_Null_Procedure):
	new predicate to reject declarations that can be completions,
	when there is a visible prior homograph that is a null procedure.
	* sem_ch6.adb (Analyze_Null_Procedure): use it.
	* sem_ch8.adb (Analyze_Subprogram_Renaming): ditto.

2017-09-06  Thomas Quinot  <quinot@adacore.com>

	* s-regpat.adb (Compile.Parse_Literal): Fix handling of literal
	run of 253 characters or more.

2017-09-06  Ed Schonberg  <schonberg@adacore.com>

	* einfo.adb (Designated_Type): Use Is_Incomplete_Type to handle
	properly incomplete subtypes that may be created by explicit or
	implicit declarations.
	(Is_Base_Type): Take E_Incomplete_Subtype into account.
	(Subtype_Kind): Ditto.
	* sem_ch3.adb (Build_Discriminated_Subtype): Set properly the
	Ekind of a subtype of a discriminated incomplete type.
	(Fixup_Bad_Constraint): Use Subtype_Kind in all cases, including
	incomplete types, to preserve error reporting.
	(Process_Incomplete_Dependents): Do not create a subtype
	declaration for an incomplete subtype that is created internally.
	* sem_ch7.adb (Analyze_Package_Specification): Handle properly
	incomplete subtypes that do not require a completion, either
	because they are limited views, of they are generic actuals.

2017-09-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb (Insert_Valid_Check): Remove the
	suspicious manipulation of the Do_Range_Check flag as ths is
	no linger needed. Suppress validity check when analysing the
	validation variable.

2017-09-06  Philippe Gil  <gil@adacore.com>

	* g-debpoo.adb: adapt GNAT.Debug_Pools to allow safe thread
	GNATCOLL.Memory

2017-09-06  Bob Duff  <duff@adacore.com>

	* sem_elim.adb: Minor comment fix.

2017-09-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Is_Object_Reference): A function call is an
	object reference, and thus attribute references for attributes
	that are functions (such as Pred and Succ) as well as predefined
	operators are legal in contexts that require an object, such as
	the prefix of attribute Img and the Ada2020 version of 'Image.

2017-09-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb, einfo.adb, sem_attr.adb, exp_ch4.adb, gnatls.adb,
	exp_ch3.adb, xoscons.adb: Minor reformatting.

2017-09-06  Raphael Amiard  <amiard@adacore.com>

	* a-chtgop.ads, a-chtgop.adb: Add versions of First and Next with
	Position parameter. If supplied, use it to provide efficient iteration.
	* a-cohase.ads, a-cohase.adb, a-cihama.ads, a-cihama.adb,
	a-cohama.ads, a-cohama.adb: Add/Use Position to provide efficient
	iteration.

2017-09-06  Ed Schonberg  <schonberg@adacore.com>

	* exp_util.adb (Build_Allocate_Deallocate_Proc): If the
	designated type is class-wide and the expression is an unchecked
	conversion, preserve the conversion when checking the tag of the
	designated object, to prevent spurious semantic errors when the
	expression in the conversion has an untagged type (for example
	an address attribute).

2017-09-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Entry_Call): Check whether a protected
	operation is subject to a pragma Eliminate.

2017-09-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_elim.ads, exp_ch4.adb: Minor reformatting.

2017-09-06  Eric Botcazou  <ebotcazou@adacore.com>

	* fe.h (Eliminate_Error_Msg): Remove.

2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>

	* gcc-interface/utils.c (make_packable_type): Update call to
	mode_for_size_tree.

2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>

	* gcc-interface/utils2.c (build_load_modify_store):
	Use int_mode_for_size.

2017-09-05  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/62235
	* gcc-interface/decl.c (gnat_to_gnu_entity): Skip regular processing
	for Itypes that are E_Record_Subtype with a cloned subtype.
	<E_Record_Subtype>: Use the DECL of the cloned type directly, if any.

2017-09-05  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (convert_with_check): Use a custom base type
	if the base type of the expression has a different machine mode.
	Rename a couple of parameters and local variable.

2017-09-05  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Attribute_to_gnu) <Attr_Address>: Do not strip
	conversions around prefixes that are not references.

2017-09-05  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (unchecked_convert): When the result type is a
	non-biased integral type with size 0, set the result to 0 directly.

2017-09-05  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/gigi.h (renaming_from_generic_instantiation_p): Turn to
	(renaming_from_instantiation_p): ...this.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Use inline predicate
	instead of explicit tests on kind of entities.  Adjust for renaming.
	(gnat_to_gnu_profile_type): Likewise.
	(gnat_to_gnu_subprog_type): Likewise.
	* gcc-interface/trans.c (Identifier_to_gnu): Likewise.
	(Case_Statement_to_gnu): Likewise.
	(gnat_to_gnu): Likewise.
	(process_freeze_entity): Likewise.
	(process_type): Likewise.
	(add_stmt_with_node): Adjust for renaming.
	* gcc-interface/utils.c (gnat_pushdecl): Adjust for renaming.
	(renaming_from_generic_instantiation_p): Rename to...
	(renaming_from_instantiation_p): ...this.  Use inline predicate.
	(pad_type_hasher::keep_cache_entry): Fold.

2017-09-05  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (adjust_for_implicit_deref): New function.
	(gnat_to_gnu) <N_Explicit_Dereference>: Translate result type first.
	(N_Indexed_Component): Invoke adjust_for_implicit_deref on the prefix.
	(N_Slice): Likewise.
	(N_Selected_Component): Likewise.  Do not try again to translate it.
	(N_Free_Statement): Invoke adjust_for_implicit_deref on the expression.

2017-09-05  Eric Botcazou  <ebotcazou@adacore.com>

	* repinfo.ads: Document new treatment of dynamic values.
	(TCode): Bump upper bound to 29.
	(Dynamic_Val): New constant set to 29.
	* repinfo.adb (Print_Expr) <Dynamic_Val>: New case.
	(Rep_Value)  <Dynamic_Val>: Likewise.
	* repinfo.h (Dynamic_Val): New macro.
	* gcc-interface/decl.c (annotate_value): Tidy up and cache result for
	DECL_P nodes too.
	<INTEGER_CST>: Set TCODE instead of recursing.
	<COMPONENT_REF>: Set TCODE instead of calling Create_Node manually.
	<VAR_DECL>: New case.
	<MULT_EXPR, PLUS_EXPR>: Fold conversions into inner operations.
	<BIT_AND_EXPR>: Adjust.
	<CALL_EXPR>: Do not fall through.

2017-09-05  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Call_to_gnu): If this is a function call and
	there is no target, do not create a temporary for the return value for
	an allocator either.

2017-09-05  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (pos_to_constructor): Skip conversions to an
	unconstrained array type.

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
	    Alan Hayward  <alan.hayward@arm.com>
	    David Sherwood  <david.sherwood@arm.com>

	* gcc-interface/decl.c (validate_size): Use NARROWEST_INT_MODE
	instead of GET_CLASS_NARROWEST_MODE (MODE_INT).

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
	    Alan Hayward  <alan.hayward@arm.com>
	    David Sherwood  <david.sherwood@arm.com>

	* gcc-interface/decl.c (check_ok_for_atomic_type): Use
	is_a <scalar_int_mode>.
	* gcc-interface/trans.c (Pragma_to_gnu): Likewise.
	* gcc-interface/utils.c (gnat_type_for_mode): Likewise.

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
	    Alan Hayward  <alan.hayward@arm.com>
	    David Sherwood  <david.sherwood@arm.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity): Use int_mode_for_size
	instead of mode_for_size.
	(gnat_to_gnu_subprog_type): Likewise.
	* gcc-interface/utils.c (make_type_from_size): Likewise.

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
	    Alan Hayward  <alan.hayward@arm.com>
	    David Sherwood  <david.sherwood@arm.com>

	* gcc-interface/misc.c (fp_prec_to_size): Use opt_scalar_float_mode.
	(fp_size_to_prec): Likewise.

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
	    Alan Hayward  <alan.hayward@arm.com>
	    David Sherwood  <david.sherwood@arm.com>

	* gcc-interface/utils.c (gnat_type_for_mode): Use is_a
	<scalar_float_mode> instead of SCALAR_FLOAT_MODE_P.

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
	    Alan Hayward  <alan.hayward@arm.com>
	    David Sherwood  <david.sherwood@arm.com>

	* gcc-interface/decl.c (validate_size): Update use of
	GET_MODE_WIDER_MODE, forcing a wider mode to exist.

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
            Alan Hayward  <alan.hayward@arm.com>
            David Sherwood  <david.sherwood@arm.com>

	* gcc-interface/misc.c (fp_prec_to_size): Use new mode iterators.
	(fp_size_to_prec): Likewise.

2017-08-29  Martin Liska  <mliska@suse.cz>

	PR other/39851
	* gcc-interface/trans.c (Pragma_to_gnu): Set argument to NULL.

2017-08-08  Martin Liska  <mliska@suse.cz>

	* gcc-interface/trans.c: Include header files.

2017-07-29  Jakub Jelinek  <jakub@redhat.com>

	* gcc-interface/utils.c (gnat_write_global_declarations): Pass false
	as new argument to the imported_module_or_decl debug hook.

2017-07-25  Javier Miranda  <miranda@adacore.com>

	* checks.adb (Apply_Divide_Checks): Ensure that operands are not
	evaluated twice. 

2017-07-19  Jakub Jelinek  <jakub@redhat.com>

	* gcc-interface/ada-tree.h (TYPE_OBJECT_RECORD_TYPE,
	TYPE_GCC_MIN_VALUE): Use TYPE_MIN_VALUE_RAW instead of TYPE_MINVAL.
	(TYPE_GCC_MAX_VALUE): Use TYPE_MAX_VALUE_RAW instead of TYPE_MAXVAL.

2017-07-18  Mike Frysinger  <vapier@chromium.org>

	* gcc-interface/Makefile.in (../../gnatmake$(exeext)): Delete $(P).
	(../../gnatlink$(exeext)): Likewise.

2017-07-15  John Paul Adrian Glaubitz  <glaubitz@physik.fu-berlin.de>

	PR ada/81446
	* system-linux-m68k.ads: Add pragma No_Elaboration_Code_All.
	(Backend_Overflow_Checks): Set to True.

2017-06-23  Jakub Jelinek  <jakub@redhat.com>

	* gcc-interface/trans.c (gnat_to_gnu): Initialize sync to false.

2017-06-21  Pierre-Marie de Rodat  <derodat@adacore.com>

	* gcc-interface/ada-tree.h (DECL_FUNCTION_IS_DEF): Update copyright
	notice.  New macro.
	* gcc-interface/trans.c (Subprogram_Body_to_gnu): Tag the subprogram
	as a definition.
	(Compilation_Unit_to_gnu): Tag the elaboration procedure as a
	definition.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Tag declarations of
	imported subprograms for the current compilation unit as
	definitions.  Disable debug info for references to variables.
	* gcc-interface/gigi.h (create_subprog_decl): Update declaration.
	* gcc-interface/utils.c (gnat_pushdecl): Add external DECLs that are
	not built-in functions to their binding scope.
	(create_subprog_decl): Add a DEFINITION parameter.  If it is true, tag
	the function as a definition.  Update all callers.
	(gnat_write_global_declarations): Emit debug info for imported
	functions.  Filter out external variables for which debug info
	is disabled.

2017-06-15  Nicolas Boulenguez  <nicolas.boulenguez@free.fr>

	PR ada/81105
	* gcc-interface/Makefile.in (x86 kfreebsd): Adjust system.ads setting.
	(i[3456]86-pc-gnu): Likewise.
	(x86_64 kfreebsd): Likewise.

2017-06-12  Eric Botcazou  <ebotcazou@adacore.com>

	PR bootstrap/80897
	* exp_ch3.adb (Make_Predefined_Primitive_Specs): Use Positive index.

2017-06-12  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/81070
	* s-interr-hwint.adb: Reinstate.
	* gcc-interface/Makefile.in (RTEMS): Use it again.

2017-06-08  Olivier Hainque  <hainque@adacore.com>

	* vx_crtbegin_auto.c: Update year in copyright notice.
	* vx_crtbegin.c: Likewise.
	* vx_crtbegin.inc: Likewise. 
	* vx_crtend.c:  Likewise.

2017-06-07  Sebastian Huber  <sebastian.huber@embedded-brains.de>

	* Makefile.in (rtems): Use TLS implementation for s-tpopsp.adb.
	* s-tpopsp-rtems.adb: Delete.

2017-06-02  Olivier Hainque  <hainque@adacore.com>

	* vx_crtbegin_auto.c: New file.
	* vx_crtbegin.c: New file.
	* vx_crtbegin.inc: New file.
	* vx_crtend.c: New file.

2017-05-25  Jonathan Wakely  <jwakely@redhat.com>

	* gcc-interface/utils2.c (compare_elmt_bitpos): Remove redundant
	const qualifiers that cause -Wignored-qualifiers warnings.

2017-05-22  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity): Skip regular processing
	for Itypes that are E_Access_Subtype.
	<E_Access_Subtype>: Use the DECL of the base type directly.

2017-05-22  Ed Schonberg  <schonberg@adacore.com>
            Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch4.adb (Analyze_Call): In Ada2012 an incomplete type from a
	limited view may appear in the profile of a function, and a call to
	that function in another unit in which the full view is available must
	use this full view to spurious type errors at the point of call.
	* inline.adb (Analyze_Inlined_Bodies): Remove restriction on loading
	of parent body with a with clause for the main unit.
	* gcc-interface/decl.c (defer_limited_with_list): Document new usage.
	(gnat_to_gnu_entity) <E_Access_Type>: Handle completed Taft Amendment
	types declared in external units like types from limited with clauses.
	Adjust final processing of defer_limited_with_list accordingly.
	* gcc-interface/trans.c (gnat_to_gnu) < N_Selected_Component>: Try
	again to translate the prefix after the field if it is incomplete.

2017-05-22  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_field): Do not enforce strict
	alignment for simple volatile fields and remove associated errors.

2017-05-15  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/gigi.h (get_elaboration_procedure): Delete.
	* gcc-interface/trans.c (get_elaboration_procedure): Make static.

2017-05-15  Pierre-Marie de Rodat  <derodat@adacore.com>

	* gcc-interface/utils.c (can_materialize_object_renaming_p):
	Synchronize with GNAT's Exp_Dbug.Debug_Renaming_Declaration:
	process Original_Node instead of expanded names.

2017-05-15  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (return_value_ok_for_nrv_p): Only apply the
	addressability check in the constrained case.

2017-05-15  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Identifier_to_gnu): Also accept incomplete
	types not coming from a limited context.

2017-05-15  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Compilation_Unit_to_gnu): Skip subprograms on
	the inlined list that are not public.
	* gcc-interface/utils.c (create_subprog_decl): Clear TREE_PUBLIC if
	there is a pragma Inline_Always on the subprogram.

2017-05-15  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (gnat_to_gnu) <N_Aggregate>: Fix formatting.
	<N_Allocator>: Use properly typed constants.
	(extract_values): Move around.
	(pos_to_constructor): Minor tweaks.
	(Sloc_to_locus): Fix formatting.
	* gcc-interface/utils.c (process_deferred_decl_context): Minor tweaks.
	* gcc-interface/gigi.h (MARK_VISITED): Remove blank line.
	(Gigi_Equivalent_Type): Adjust head comment.
	* gcc-interface/decl.c (Gigi_Equivalent_Type): Likewise.

2017-05-15  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: When there
	is a representation clause on an extension, propagate the alignment of
	the parent type only if the platform requires strict alignment.

2017-05-12  Eric Botcazou  <ebotcazou@adacore.com>

	* system-linux-arm.ads (Memory_Size): Use Long_Integer'Size
	instead of Word_Size.

	Revert
	2017-03-28  Andreas Schwab  <schwab@suse.de>

	PR ada/80117
	* system-linux-aarch64-ilp32.ads: New file.
	* gcc-interface/Makefile.in (LIBGNAT_TARGET_PAIRS_COMMON): Rename
	from LIBGNAT_TARGET_PAIRS.
	(LIBGNAT_TARGET_PAIRS_32, LIBGNAT_TARGET_PAIRS_64): Define.
	(LIBGNAT_TARGET_PAIRS): Use LIBGNAT_TARGET_PAIRS_COMMON, and
	LIBGNAT_TARGET_PAIRS_64 or LIBGNAT_TARGET_PAIRS_32 for -mabi=lp64
	or -mabi=ilp32, resp.

2017-05-10  H.J. Lu  <hongjiu.lu@intel.com>

	PR ada/80626
	* system-linux-x86.ads (Memory_Size): Use Long_Integer'Size
	instead of Word_Size.

2017-05-10  Bernd Edlinger  <bernd.edlinger@hotmail.de>

	* raise-gcc.c (exception_class_eq): Make ec parameter const.

2017-05-02  Richard Biener  <rguenther@suse.de>

	* gcc-interface/misc.c (gnat_post_options): Do not set
	-fstrict-overflow.

2017-05-02  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (assoc_to_constructor): Make sure
	Corresponding_Discriminant is only called on discriminants.
	Skip the saving of the result only for them.
	(gnat_to_gnu) <N_Selected_Component>: Likewise.
	<N_Unchecked_Type_Conversion>: Translate the result type first.
	(gigi): Set TREE_NOTHROW on Begin_Handler.
	(stmt_list_cannot_raise_p): New predicate.
	(Exception_Handler_to_gnu_gcc): Emit a simple final call instead of
	a cleanup if the statements of the handler cannot raise.
	(process_freeze_entity): Use Is_Record_Type.
	(process_type): Likewise.

2017-05-02  Eric Botcazou  <ebotcazou@adacore.com>

	* einfo.ads (Corresponding_Record_Component): New alias
	for Node21 used for E_Component and E_Discriminant.
	* einfo.adb (Corresponding_Record_Component): New function.
	(Set_Corresponding_Record_Component): New procedure.
	(Write_Field21_Name): Handle Corresponding_Record_Component.
	* sem_ch3.adb (Inherit_Component): Set
	Corresponding_Record_Component for every component in
	the untagged case.  Clear it afterwards for non-girder
	discriminants.
	* gcc-interface/decl.c (gnat_to_gnu_entity)
	<E_Record_Type>: For a derived untagged type with discriminants
	and constraints, apply the constraints to the layout of the
	parent type to deduce the layout.
	(field_is_aliased): Delete.
	(components_to_record): Test DECL_ALIASED_P directly.
	(annotate_rep): Check that fields are present except for
	an extension.
	(create_field_decl_from): Add DEBUG_INFO_P
	parameter and pass it in recursive and other calls.  Add guard
	for the manual CSE on the size.
	(is_stored_discriminant): New predicate.
	(copy_and_substitute_in_layout): Consider only
	stored discriminants and check that original fields are present
	in the old type.  Deal with derived types.  Adjust call to
	create_variant_part_from.

2017-05-02  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Expand_Call_Helper): When locating the
	accessibility entity created for an access parameter, handle
	properly a reference to a formal of an enclosing subprogram. if
	the reference appears in an inherited class-wide condition, it
	is the rewriting of the reference in the ancestor expression,
	but the accessibility entity must be that of the current formal.

2017-05-02  Javier Miranda  <miranda@adacore.com>

	* exp_ch4.adb (Expand_Non_Binary_Modular_Op): New subprogram.
	(Expand_N_Op_Add, Expand_N_Op_Divide, Expand_N_Op_Minus,
	Expand_N_Op_Multiply, Expand_N_Op_Or, Expand_N_Op_Subtract):
	Call Expand_Non_Binary_Modular_Op.

2017-05-02  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch3.adb (Build_Derived_Private_Type): If the parent type
	has discriminants, do not override the Stored_Constraint list of
	the full view of the derived type with that of the derived type.

2017-05-02  Bob Duff  <duff@adacore.com>

	* sem_attr.adb (Attribute_Enum_Rep): Disallow T'Enum_Rep.

2017-05-02  Vasiliy Fofanov  <fofanov@adacore.com>

	* s-os_lib.ads: Minor typo fix.

2017-05-02  Vasiliy Fofanov  <fofanov@adacore.com>

	* gnatls.adb: Merge and refactor code from Prj.Env and remove
	this deprecated dependency.

2017-05-02  Ed Schonberg  <schonberg@adacore.com>

	* exp_util.ads: minor comment addition.

2017-05-02  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch3.adb (Build_Derived_Record_Type): Fix a few typos and
	pastos in part #3 of the head comment.

2017-05-02  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch3.adb (Freeze_Type): Do not generate an invariant
	procedure body for a local (sub)type declaration within a
	predicate function. Invariant checks do not apply to these, and
	the expansion of the procedure will happen in the wrong scope,
	leading to misplaced freeze nodes.

2017-05-02  Ed Schonberg  <schonberg@adacore.com>

	* exp_util.adb (Insert_Library_Level_Action): Use proper scope
	to analyze generated actions.  If the main unit is a body,
	the required scope is that of the corresponding unit declaration.

2017-05-02  Arnaud Charlet  <charlet@adacore.com>

	* einfo.adb (Declaration_Node): flip branches of
	an IF statement to avoid repeated negations in its condition;
	no change in semantics, only to improve readability.

2017-05-02  Arnaud Charlet  <charlet@adacore.com>

	* sem_case.adb: Remove extra spaces in parameter declarations.

2017-05-02  Justin Squirek  <squirek@adacore.com>

	* usage.adb: Replace space with hyphen ("run time" -> "run-time")
	in usage line for new -gnatwE switch.

2017-05-02  Claire Dross  <dross@adacore.com>

	* a-cofuve.ads (Remove): Remove unnecessary
	conditions in precondition.

2017-05-02  Vasiliy Fofanov  <fofanov@adacore.com>

	* a-stream.ads, exp_imgv.adb, sem_ch10.adb,
	sem_attr.adb, s-finmas.ads, osint.adb: Minor typo fix.

2017-05-02  Justin Squirek  <squirek@adacore.com>

	* sem_ch4.adb (Analyze_Case_Expression): Add check for valid
	alternative expression.
	* sem_res.adb (Resolve_Case_Expression): Ditto.

2017-05-02  Ed Schonberg  <schonberg@adacore.com>

	* exp_disp.adb (Set_All_DT_Position, In_Predef_Prim_DT):
	Refine predicate for the case where the primitive operation
	is a renaming of equality.  An overriding operation that is
	a user-defined renaming of predefined equality inherits its
	slot from the overridden operation. Otherwise it is treated
	as a predefined op and occupies the same predefined slot as
	equality. A call to it is transformed into a call to its alias,
	which is the predefined equality. A dispatching call thus uses
	the proper slot if operation is further inherited and called
	with class-wide arguments.

2017-05-02  Justin Squirek  <squirek@adacore.com>

	* errout.adb (Set_Msg_Text): Add a case to switch the message
	type when the character '[' is detected signifying a warning
	about a run-time exception.
	* opt.ads Add a new Warning_Mode value for new switch
	* switch-b.adb (Scan_Binder_Switches): Add case for the binder
	to handle new warning mode
	* usage.adb (Usage): Add usage entry for -gnatwE
	* warnsw.adb (Set_Warning_Switch): Add case for the new switch

2017-05-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Process_Conversion): Reject an intrinsic operator
	declaration that operates on some fixed point type.

2017-05-02  Justin Squirek  <squirek@adacore.com>

	* a-crbtgo.adb, s-taasde.adb: Remove unused use-type clauses.

2017-05-02  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch6.adb (Analyze_Null_Procedure): Revert previous change.

2017-05-02  Justin Squirek  <squirek@adacore.com>

	* sem_ch4.adb (Analyze_Case_Expression): Add check for valid
	expression (Analyze_If_Expression): Add check for valid condition
	* sem_eval.adb (Eval_Case_Expression): Add check for error posted
	on case-expression
	* sem_res.adb (Resolve_If_Expression): Add check for valid
	condition and then-expression.

2017-05-02  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch3.adb (Build_Initialization_Call): Generate a null
	statement if the initialization call is a null procedure, as
	can happen with a controlled type with no explicit Initialize
	procedure, or an array of such.
	* exp_ch7.adb (Process_Object_Declaration): For a type with
	controlled components that has a trivial Initialize procedure,
	insert declaration for finalization counter after object
	declaration itself.
	(Make_Deep_Array_Body, Build_Initialize_statements): Do not create
	finalization block and attendant declarations if component has
	a trivial Initialize procedure.
	(Make_Init_Call): Do not generate a call if controlled type has
	a trivial Initialize procedure.

2017-05-02  Eric Botcazou  <ebotcazou@adacore.com>

	* g-forstr.ads (Data): Move Format component last.
	* g-forstr.adb ("+"): Adjust for above change.
	* g-rewdat.ads (Buffer): Move Buffer, Current, Pattern and Value last.
	* g-sechas.ads (Context): Move Key last.
	* g-socket.ads (Service_Entry_Type): Move Aliases last.
	* s-fileio.adb (Temp_File_Record): Move Name last.
	* s-regexp.adb (Regexp_Value): Move Case_Sensitive last.
	* xr_tabls.ads (Project_File): Move Src_Dir and Obj_Dir last.

2017-05-02  Jerome Lambourg  <lambourg@adacore.com>

	* bindusg.adb, bindgen.adb, gnatbind.adb, opt.ads: Remove the -nognarl
	switch introduced recently. finally not needed.

2017-05-02  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch6.adb (Analyze_Null_Procedure): Set the
	Corresponding_Body link for a null procedure declaration.

2017-05-02  Eric Botcazou  <ebotcazou@adacore.com>

	* atree.h (Flag290): Add missing terminating parenthesis.
	* einfo.adb (Is_Class_Wide_Clone): Use Flag290.
	(Set_Is_Class_Wide_Clone): Likewise.
	* einfo.ads (Is_Class_Wide_Clone): Likewise.

2017-05-02  Gary Dismukes  <dismukes@adacore.com>

	* checks.ads (Null_Exclusion_Static_Checks): Add Boolean
	parameter Array_Comp to indicate the case of an array object
	with null-excluding components.
	* checks.adb (Null_Exclusion_Static_Checks):
	Call Compile_Time_Constraint_Error instead of
	Apply_Compile_Time_Constraint_Error in the component case. Also
	call that when Array_Comp is True, with an appropriate warning for
	the array component case. Only create an explicit initialization
	by null in the case of an object of a null-excluding access type
	(and no longer do that in the component case).
	* sem_ch3.adb (Check_Component): Add a Boolean parameter
	Array_Comp defaulted to False.	Pass Empty for the Comp
	actual when calling Null_Exclusion_Static_Checks in the case
	where Comp_Decl matches Object_Decl, because we don't have a
	component in that case. In the case of an object or component
	of an array type, pass True for Array_Comp on the recursive call
	to Check_Component.

2017-05-02  Bob Duff  <duff@adacore.com>

	* s-taprop-linux.adb (Prio_To_Linux_Prio): New function to correctly
	compute the linux priority from the Ada priority. Call this everywhere
	required. In particular, the previous version was not doing this
	computation when setting the ceiling priority in various places. It
	was just converting to C.int, which results in a ceiling that is off
	by 1.

2017-05-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb: Comment predicate inheritance.

2017-05-02  Tristan Gingold  <gingold@adacore.com>

	* s-trasym.ads: Add comment.

2017-05-02  Bob Duff  <duff@adacore.com>

	* sem_elab.adb, sem_elab.ads: Minor comment fixes.
	* sem_ch4.adb: Minor reformatting.
	* s-taprop-linux.adb, s-taspri-posix.ads: Code refactoring.
	* s-taspri-posix-noaltstack.ads: Minor refactoring.
	* sinput.ads: Minor typo fix.

2017-05-02  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch9.adb (Discriminated_Size): Moved to sem_util.
	* sem_util.ads, sem_util.adb (Discriminated_Size): Predicate moved
	here from exp_ch9, to recognize objects whose creation requires
	dynamic allocation, so that the proper warning can be emitted
	when restriction No_Implicit_Heap_Allocation is in effect.
	* sem_ch3.adb (Analyze_Object_Declaration): Use Discriminated_Size
	to emit proper warning when an object that requires dynamic
	allocation is declared.

2017-05-02  Tristan Gingold  <gingold@adacore.com>

	* s-trasym.ads, s-trasym.adb (Enable_Cache): New.

2017-05-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Find_Equality_Types, Try_One_Interp): The same relaxed
	visibility rules for equality operators that apply within an
	instantiation apply within an inlined body.
	* sem_type.adb (Add_One_Interp): ditto.

2017-05-02  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Pragma): Forbid pragma Contract_Cases on null
	procedures.

2017-05-02  Eric Botcazou  <ebotcazou@adacore.com>

	* snames.ads-tmpl
	(Name_Assume, Name_Attribute_Definition, Name_Loop_Optimize,
	Name_No_Tagged_Streams): Move to regular pragmas.  Add
	placeholders for Default_Scalar_Storage_Order, Dispatching_Domain,
	and Secondary_Stack_Size.
	(Pragma_Id): Move Pragma_Assume,
	Pragma_Attribute_Definition, Pragma_Loop_Optimize and
	Pragma_No_Tagged_Streams to second part.

2017-05-02  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_attr.adb: Minor reformatting.

2017-05-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Selected_Component): Improve error
	detection for illegal references to private components or
	operations of a protected type in the body of the type.

2017-05-02  Eric Botcazou  <ebotcazou@adacore.com>

	* opt.ads: Add missing GNAT markers in comments.
	* opt.adb (Set_Opt_Config_Switches): Do not override earlier
	settings of Optimize_Alignment at the end.

2017-05-02  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb (Apply_Constraint_Check): Do not apply
	a discriminant check when the associated type is a constrained
	subtype created for an unconstrained nominal type.
	* exp_attr.adb: Minor reformatting.

2017-05-02  Bob Duff  <duff@adacore.com>

	* sem_ch3.adb (OK_For_Limited_Init_In_05): Handle correctly
	the N_Raise_Expression case.
	* sem_ch6.adb (Check_Limited_Return): Minor: clarify comment,
	and add assertions.

2017-05-02  Yannick Moy  <moy@adacore.com>

	* exp_ch4.adb (Expand_N_Op_Ne): Do not bump parenthese level and
	optimize length comparison in GNATprove mode.
	* exp_spark.adb (Expand_SPARK_Op_Ne): New function to rewrite
	operator /= into negation of operator = when needed.
	(Expand_SPARK): Call new
	function to expand operator /=.

2017-05-02  Ed Schonberg  <schonberg@adacore.com>

	* exp_fixd.adb (Expand_Divide_Fixed_By_Fixed_Giving_Fixed):
	Simplify the expression for a fixed-fixed division to remove
	divisions by constants whenever possible, as an optimization
	for restricted targets.

2017-05-02  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb, sem_ch3.adb, sem_ch6.adb: Minor reformatting.

2017-05-02  Bob Duff  <duff@adacore.com>

	* exp_attr.adb (Callable, Identity, Terminated): Use Find_Prim_Op
	to find primitive ops, instead of using an Identifier that will
	later be looked up. This is necessary because these ops are not
	necessarily visible at all places where we need to call them.
	* exp_util.ads: Minor comment fix.

2017-05-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Fully_Conformant_Expressions): Two entity
	references are fully conformant if they are both expansions
	of the discriminant of a protected type, within one of the
	protected operations. One occurrence may be expanded into a
	constant declaration while the other is an input parameter to
	the corresponding generated subprogram.

2017-05-02  Justin Squirek  <squirek@adacore.com>

	* sem_ch3.adb (Check_For_Null_Excluding_Components): Created for
	recursivly searching composite-types for null-excluding access
	types and verifying them.
	(Analyze_Object_Declaration): Add a
	call to Check_Null_Excluding_Components for static verification
	of non-initialized objects.
	* checks.adb, checks.ads (Null_Exclusion_Static_Checks): Added
	a parameter for a composite-type's component and an extra case
	for printing component information.

2017-05-02  Yannick Moy  <moy@adacore.com>

	* sem_ch10.adb (Analyze_Subunit): Take
	configuration pragma into account when restoring appropriate
	pragma for analysis of subunit.

2017-05-02  Justin Squirek  <squirek@adacore.com>

	* s-tasren.adb, s-tasini.adb, s-taprop-linux.adb,
	s-mudido-affinity.adb,, a-exetim-posix.adb, a-direio.adb,
	g-socket.adb, s-taenca.adb, s-fileio.adb: Remove unused use-type
	clauses from the runtime.

2017-05-02  Eric Botcazou  <ebotcazou@adacore.com>

	* freeze.adb (Check_Component_Storage_Order): Do not treat bit-packed
	array components specially.

2017-05-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Premature_Usage): If the premature usage of
	an entity is as the expression in its own object decaration,
	rewrite the reference as Any_Id to prevent cascaded errors or
	compiler loops when such an entity is used in an address clause.

2017-05-01  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (components_to_record): Add missing guard.

2017-05-01  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (components_to_record): Add more comments.
	Put back pending fields onto the regular list if the misalignment
	happens to cancel itself.

2017-04-28  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Complete_Object_Operation): When rewriting the
	controlling actual in a prefixed call, preserve the original node
	information if the prefix itself has been rewritten, for ASIS use.

2017-04-28  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch6.adb (Insert_Post_Call_Actions):
	Code clean up. Insert the post-call actions after an enclosing
	procedure call when N denotes a function call and appears as an
	actual parameter in the procedure call.

2017-04-28  Eric Botcazou  <ebotcazou@adacore.com>

	* freeze.adb (Check_Component_Storage_Order): If there is a clause
	for the component, also reject the attribute if the component
	doesn't end on a byte boundary and its scalar storage order is
	different from that of the enclosing record type.

2017-04-28  Javier Miranda  <miranda@adacore.com>

	* atree.ads (Info_Messages): Removed.
	(Warning_Info_Messages): New counter.
	(Report_Info_Messages): New counter.
	* err_vars.ads Update documentation.
	* errout.adb (Delete_Warning_And_Continuations): Update
	Info_Message occurrences.
	(Error_Msg_Internal): Update Info_Message occurrences.
	(Delete_Warning): Update Info_Message occurrences.
	(Write_Error_Summary): Update Info_Message occurrences.
	(Output_Messages): Update Info_Message occurrences.
	(To_Be_Removed): Update Info_Message occurrences.
	(Reset_Warnings): Update Info_Message occurrences.
	* errutil.adb (Error_Msg): Update Info_Message occurrences.
	(Finalize): Update Info_Message occurrences.
	(Initialize): Update Info_Message occurrences.
	* erroutc.adb (Delete_Msg): Update Info_Message occurrences.
	(Compilation_Errors): Update Info_Message_Occurences.

2017-04-28  Eric Botcazou  <ebotcazou@adacore.com>

        * exp_ch3.adb (Build_Init_Statements): Likewise on Nam.
        * freeze.adb (Check_Component_Storage_Order): And on Comp_Byte_Aligned.
        * sem_aggr.adb (Resolve_Record_Aggregate): Initialize Box_Node.
        * sem_attr.adb (Loop_Entry): Initialize Encl_Loop.
        * sem_ch12.adb (Build_Operator_Wrapper): Add pragma Warnings on Expr.
        * sem_ch13.adb (Validate_Address_Clauses): Initialize Y_Alignment and
        Y_Size.
        * sem_eval.adb (Why_Not_Static): Initialize Typ.
        * sem_prag.adb (Analyze_Pragma): Add pragma Warnings on Str.

2017-04-28  Bob Duff  <duff@adacore.com>

	* sem_util.ads, sem_util.adb (Might_Raise): New function
	that replaces Is_Exception_Safe, but has the opposite
	sense. Is_Exception_Safe was missing various cases -- calls inside
	a pragma Debug, calls inside an 'if' or assignment statement,
	etc. Might_Raise now walks the entire subtree looking for things
	that can raise.
	* exp_ch9.adb (Is_Exception_Safe): Remove.
	(Build_Protected_Subprogram_Body): Replace call to
	Is_Exception_Safe with "not Might_Raise". Misc cleanup (use
	constants where possible).
	* exp_ch7.adb: Rename Is_Protected_Body -->
	Is_Protected_Subp_Body. A protected_body is something different
	in the grammar.

2017-04-28  Eric Botcazou  <ebotcazou@adacore.com>

	* inline.adb (Expand_Inlined_Call): Initialize Targ1 variable.
	* par-ch3.adb (P_Component_Items): Initialize Decl_Node variable.
	(P_Discrete_Choice_List): Initialize Expr_Node variable.
	* par-ch9.adb (P_Task): Initialize Aspect_Sloc variable.
	(P_Protected): Likewise.
	* sem_case.adb (Check_Duplicates):
	Add pragma Warnings on variable.
	* sem_ch12.adb (Preanalyze_Actuals): Initialize Vis variable.
	* sem_ch4.adb (List_Operand_Interps):  Add pragma Warnings on variable.
	* sem_ch5.adb (Analyze_Assignment): Initialize Save_Full_Analysis.
	(Analyze_Exit_Statement): Initialize Scope_Id variable.
	(Analyze_Iterator_Specification): Initialize Bas variable.
	* sem_ch9.adb (Allows_Lock_Free_Implementation): Initialize
	Error_Count (Satisfies_Lock_Free_Requirements): Likewise.
	(Analyze_Accept_Statement): Initialize Task_Nam.

2017-04-28  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb (Install_Primitive_Elaboration_Check):
	Do not generate an elaboration check if all checks have been
	suppressed.

2017-04-28  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications, case
	Interrupt_Handler and Attach_Handler): Generate reference
	to protected operation to prevent spurious warnings about
	unreferenced entities. Previous scheme failed with style checks
	enabled.

2017-04-28  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Relocate_Pragmas_To_Body): A pragma Warnings
	that follows an expression function must not be relocated to
	the generated body, because it applies to the code that follows.

2017-04-28  Gary Dismukes  <dismukes@adacore.com>

	* sem_util.adb (Is_Dependent_Component_Of_Mutable_Object): Test
	Relaxed_RM_Semantics to avoid having CodePeer issue errors on
	code that might violate the more stringent checking for 'Access
	introduced in Ada 2005.

2017-04-28  Arnaud Charlet  <charlet@adacore.com>

	* a-cforse.adb: minor style fix in comment.

2017-04-28  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch9.adb (Build_Lock_Free_Unprotected_Subprogram_Body): Also
	initialize Block_Decls variable.
	(Expand_Entry_Barrier): Add pragma Warnings on Func_Body variable.
	(Build_Dispatching_Requeue): Add pragma Warnings on Op variable.
	* exp_disp.adb (Expand_Interface_Actuals): Initialize
	Formal_DDT and Actual_DDT variables.
	(Expand_Interface_Thunk): Initialize Iface_Formal.
	(Make_DT): Initialize Size_Comp.
	(Make_Select_Specific_Data_Table): Initialize Decls.
	* exp_dist.adb (Add_RACW_Primitive_Declarations_And_Bodies):
	Also initialize more RPC_Receiver_* variables.
	(Build_To_Any_Function): Initialize Cstr_Formal.
	* exp_prag.adb (Expand_Pragma_Contract_Cases): Initialize Msg_Str.

2017-04-28  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Freeze_Type_Refs): For an interface conversion
	node between access types, freeze the designated type as well,
	so that dispatch table pointers are created in the proper scope,
	and not in the constructed body of the expression function.

2017-04-28  Bob Duff  <duff@adacore.com>

	* alloc.ads (Nodes_Initial): Go back to previous value. The large
	value makes large compilations faster, but small compilations slower.

2017-04-28  Arnaud Charlet  <charlet@adacore.com>

	* sem_util.adb: minor typos in Is_Child_Or_Sibling.

2017-04-28  Hristian Kirtchev  <kirtchev@adacore.com>

	* erroutc.adb (Compilation_Errors): Do not consider info messages
	as suitable warnings when warnings must be treated as errors.
	* sem_ch7.adb (Analyze_Package_Specification): Do not consider
	internally-generated packages when outputting completion
	information.
	* errout.adb (Output_Messages): Do not consider info messages as
	suitable warnings when warnings must be treated as errors.
	* errutil.adb (Finalize): Do not consider info messages as
	suitable warnings when warnings must be treated as errors.

2017-04-28  Eric Botcazou  <ebotcazou@adacore.com>

	* warnsw.ads: Minor fix for incorrect wording in comment.

2017-04-28  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (In_Instance_Code): New predicate in
	Valid_Conversion, to determine whether a type conversion appears
	as (or within) an actual for a formal object.  Type conversions
	in instances are not rechecked in Valid_Conversion because
	visibility changes between generic location andi instance may
	lead to spurious errors, but conversions within an actual must be
	fully checked, and they are not fully resolved when pre-analyzing
	the actuals.

2017-04-28  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch6.adb (Expand_N_Extended_Return_Statement): Use
	New_Copy_Tree instead of Relocate_Node as any subsequent copies
	of the relocated node will have mangled Parent pointers.
	* sem_util.adb (Build_NCT_Hash_Tables): Reset both hash
	tables used in conjunction with entity and itype replication.
	(Visit_Entity): Rewrite the restriction on which entities
	require duplication.  The restriction now includes all types.

2017-04-28  Hristian Kirtchev  <kirtchev@adacore.com>

	* a-cofuse.ads, a-cfdlli.ads, a-cfhase.adb, a-cfhase.ads, a-cfinve.adb,
	a-cfinve.ads, a-cforma.adb, a-cforma.ads, a-cofuma.adb, a-cofuma.ads,
	a-cfhama.adb, a-cfhama.ads, a-cforse.adb: Minor reformatting and code
	cleanups.

2017-04-28  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb, g-dyntab.adb, par-ch4.adb, sem_util.adb, sem_attr.adb,
	gnat1drv.adb, exp_disp.adb, namet.adb, alloc.ads: Minor reformatting.

2017-04-28  Gary Dismukes  <dismukes@adacore.com>

	* exp_util.adb: Minor reformatting.

2017-04-28  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb: Fix copy/pasto.

2017-04-27  Tristan Gingold  <gingold@adacore.com>

	* gcc-interface/Make-lang.in: Define EH_MECHANISM while building
	raise-gcc.c. Fix include search path for raise-gcc.c

2017-04-27  Eric Botcazou  <ebotcazou@adacore.com>

	* fe.h (Warn_On_Questionable_Layout): Declare.
	* warnsw.ads (Warn_On_Record_Holes): Move down.
	(Warn_On_Questionable_Layout): New boolean variable.
	(Warning_Record): Add Warn_On_Questionable_Layout field.
	* warnsw.adb (All_Warnings): Set Warn_On_Questionable_Layout.
	(Restore_Warnings): Likewise.
	(Save_Warnings): Likewise.
	(Set_Dot_Warning_Switch): Handle 'q' and 'Q' letters.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Adjust call to
	components_to_record.
	(gnu_field_to_gnat): New function.
	(warn_on_field_placement): Likewise.
	(components_to_record): Add GNAT_RECORD_TYPE and remove REORDER
	parameters.  Rename local variables and adjust recursive call.
	Rework final scan of the field list and implement warnings on the
	problematic placement of specific sorts of fields.

2017-04-27  Bob Duff  <duff@adacore.com>

	* errout.adb, exp_aggr.adb, exp_attr.adb, exp_code.adb, fname.adb,
	* fname.ads, freeze.adb, inline.adb, lib.adb, lib.ads, lib-list.adb,
	* lib-load.adb, lib-writ.adb, par.adb, restrict.adb, rtsfind.adb,
	* sem.adb, sem_cat.adb, sem_ch10.adb, sem_ch12.adb, sem_ch3.adb,
	* sem_ch4.adb, sem_ch6.adb, sem_ch8.adb, sem_ch9.adb, sem_elab.adb,
	* sem_intr.adb, sem_res.adb, sem_util.adb, sem_warn.adb, sprint.adb:
	For efficiency, cache results of Is_Internal_File_Name and
	Is_Predefined_File_Name in the Units table. This avoids a lot
	of repeated text processing.

2017-04-27  Emmanuel Briot  <briot@adacore.com>

	* g-comlin.adb (Sort_Sections): remove useless test.

2017-04-27  Claire Dross  <dross@adacore.com>

	* a-cfhase.adb, a-cfhase.ads (=): Generic parameter removed to
	allow the use of regular equality over elements in contracts.
	(Formal_Model): Ghost package containing model functions that are
	used in subprogram contracts.
	(Current_To_Last): Removed, model functions should be used instead.
	(First_To_Previous): Removed, model functions should be used instead.
	(Strict_Equal): Removed, model functions should be used instead.
	(No_Overlap): Removed, model functions should be used instead.
	(Equivalent_Keys): Functions over cursors are removed. They were
	awkward with explicit container parameters.
	* a-cforse.adb, a-cforse.ads (=): Generic parameter removed to
	allow the use of regular equality over elements in contracts.
	(Formal_Model): Ghost package containing model functions that
	are used in subprogram contracts.
	(Current_To_Last): Removed, model functions should be used instead.
	(First_To_Previous): Removed, model functions should be used instead.
	(Strict_Equal): Removed, model functions should be used instead.
	(No_Overlap): Removed, model functions should be used instead.

2017-04-27  Yannick Moy  <moy@adacore.com>

	* gnat1drv.adb: Code cleanup.

2017-04-27  Ed Schonberg  <schonberg@adacore.com>

	* exp_util.adb (Replace_Entity): The prefix of a 'Result
	attribute reference in a post- condition is the subprogram to
	which the condition applies. If the condition is inherited
	by a type extension, the prefix becomes a reference to the
	inherited operation, but there is no need to create a wrapper
	for this operation, because 'Result is expanded independently
	when elaborating the postconditions.

2017-04-27  Bob Duff  <duff@adacore.com>

	* sinput.adb: Minor code cleanup.
	* namet.adb (Append): Create faster versions of
	Append(String) and Append(Name_Id) by using slice assignment
	instead of loops.
	* sem_util.adb (In_Instance): Speed this up by removing
	unnecessary tests; Is_Generic_Instance is defined for all
	entities.
	* sem_util.ads, sem_util.adb (In_Parameter_Specification):
	Remove unused function.
	* alloc.ads (Nodes_Initial): Use a much larger value, because
	the compiler was spending a lot of time copying the nodes table
	when it grows. This number was chosen in 1996, so is rather out
	of date with current memory sizes. Anyway, it's virtual memory.
	Get rid of Orig_Nodes_...; use Node_... instead.
	* atree.adb (Lock): Do not release the Nodes tables; it's a
	waste of time.
	Orig_Nodes_ ==> Nodes_
	* nlists.adb: Orig_Nodes_ ==> Nodes_
	* g-table.adb: Remove unused "with" clause.
	* g-table.ads, table.ads: Remove Big_Table_Type, which should
	not be used by clients.
	* g-dyntab.adb (Last_Allocated): New function
	to encapsulate T.P.Last_Allocated, which I'm thinking of changing.

2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_eval.adb (Subtypes_Statically_Compatible): Remove duplicated
	check.
	(Subtypes_Statically_Match): Remove duplicate check.
	* sem_prag.adb (Check_Arg_Is_External_Name): Remove duplicate check.

2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_aggr.adb (Replace_Type): Remove the special processing
	for selected components.
	* exp_attr.adb (Expand_N_Attribute_Reference): Merge the
	processing for attributes Fixed_Value and Integer_Value.
	* exp_util.adb (Side_Effect_Free): Merge the processing for
	qualified expressions, type conversions, and unchecked type
	conversions.
	* g-comlin.adb (Is_In_Config): Merge the processing for No_Space
	and Optional.
	* par-ch3.adb (P_Declarative_Items): Merge the processing for
	tokens function, not, overriding, and procedure.
	* sem_ch6.adb (Fully_Conformant_Expressions): Merge the processing
	for qualified expressions, type conversions, and unchecked
	type conversions.
	* sem_util.adb (Compile_Time_Constraint_Error): Merge the
	processing for Ada 83 and instances.
	(Object_Access_Level): Merge the processing for indexed components
	and selected components.
	* uname.adb (Add_Node_Name): Merge the processing for stubs.

2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb (Install_Primitive_Elaboration_Check):
	Do not generate the check when restriction No_Elaboration_Code
	is in effect.

2017-04-27  Ed Schonberg  <schonberg@adacore.com>

	* exp_disp.adb (Build_Class_Wide_Check): New subsidiary
	of Expand_Dispatching_Call. If the denoted subprogram has a
	class-wide precondition, this is the only precondition that
	applies to the call, rather that the class-wide preconditions
	that may apply to the body that is executed. (This is specified
	in AI12-0195).

2017-04-27  Yannick Moy  <moy@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): Issue
	a warning in GNATprove mode if the runtime library does not
	support IEEE-754 floats.

2017-04-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Inherit_Class_Wide_Pre): If the parent operation
	is itself inherited it does not carry any contract information,
	so examine its parent operation which is its Alias.

2017-04-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Analyze_Attribute, case 'Image): In Ada2012 the
	prefix can be an object reference in which case Obj'Image (X)
	can only be interpreted as an indexing of the parameterless
	version of the attribute.
	* par-ch4.adb (P_Name): An attribute reference can be the prefix of
	an indexing or a slice operation if the attribute does not require
	parameters. In Ada2012 'Image also belongs in this category,
	and A'Image (lo .. hi) is legal and must be parsed as a slice.

2017-04-27  Yannick Moy  <moy@adacore.com>

	* exp_ch4.adb: Minor reformatting.
	* gnat1drv.adb (Adjust_Global_Switches): When in GNATprove mode,
	disable the CodePeer and C generation modes. Similar to the
	opposite actions done in CodePeer mode.

2017-04-27  Yannick Moy  <moy@adacore.com>

	* sem_res.adb: Remove duplicate code.
	* sem_attr.adb: Delete duplicate code.

2017-04-27  Bob Duff  <duff@adacore.com>

	* g-dyntab.adb: Reduce the amount of copying in
	Release. No need to copy items past Last.

2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb Add with and use clauses for Sem_Disp.
	(Install_Primitive_Elaboration_Check): New routine.
	* checks.ads (Install_Primitive_Elaboration_Check): New routine.
	* exp_attr.adb (Expand_N_Attribute_Reference): Clean up the
	processing of 'Elaborated.
	* exp_ch6.adb (Expand_N_Subprogram_Body): Install a primitive
	elaboration check.

2017-04-27  Bob Duff  <duff@adacore.com>

	* g-dyntab.ads, g-dyntab.adb, g-table.ads: Remove incorrect assertion.
	If the table grows and then shrinks back to empty, we won't necessarily
	point back to the empty array. Code cleanups.
	* sinput.ads: Add 'Base to Size clause to match the declared
	component subtypes.

2017-04-27  Claire Dross  <dross@adacore.com>

	* a-cforma.adb, a-cforma.ads (=): Generic parameter removed to
	allow the use of regular equality over elements in contracts.
	(Formal_Model): Ghost package containing model functions that
	are used in subprogram contracts.
	(Current_To_Last): Removed, model functions should be used instead.
	(First_To_Previous): Removed, model functions should be used instead.
	(Strict_Equal): Removed, model functions should be used instead.
	(No_Overlap): Removed, model functions should be used instead.
	* a-cofuma.adb, a-cofuma.ads (Enable_Handling_Of_Equivalence)
	Boolean generic parameter to disable contracts for equivalence
	between keys.
	(Witness): Create a witness of a key that is used for handling of
	equivalence between keys.
	(Has_Witness): Check whether a witness is contained in a map.
	(W_Get): Get the element associated to a witness.
	(Lift_Equivalent_Keys): Removed, equivalence between keys is handled
	directly.
	* a-cofuse.adb, a-cofuse.ads (Enable_Handling_Of_Equivalence)
	Boolean generic parameter to disable contracts for equivalence
	between keys.
	* a-cfhama.adb, a-cfhama.ads (Formal_Model.P) Disable handling
	of equivalence on functional maps.
	* a-cfdlli.adb, a-cfdlli.ads (Formal_Model.P) Disable handling
	of equivalence on functional maps.

2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch9.adb (Expand_Entry_Barrier): Code
	cleanup. Do not perform the optimization which removes the
	declarations of the discriminant and component renamings when
	validity checks on operands and attributes are in effect.

2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_spark.adb, exp_util.adb, sem_ch7.adb, g-dyntab.adb, g-dyntab.ads,
	freeze.adb, a-cfinve.ads, a-cofuma.adb, a-cofuma.ads, a-cfhama.adb,
	a-cfhama.ads, a-cofove.ads: Minor reformatting.

2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* g-debpoo.adb (Dump_Gnatmem): Protect against a possible null
	pointer dereference.
	* g-spipat.adb (Dump): Code clean up. Protect against a possible
	null pointer dereference.

2017-04-27  Bob Duff  <duff@adacore.com>

	* g-dyntab.ads, g-dyntab.adb: Default for Table_Low_Bound.
	Rename Empty --> Empty_Table_Ptr, and don't duplicate code for it.
	Free renames Init, since they do the same thing.
	* g-table.ads: Default for Table_Low_Bound.
	* table.ads: Default for Table_Low_Bound, Table_Initial, and
	Table_Increment.

2017-04-27  Bob Duff  <duff@adacore.com>

	* g-dyntab.ads, g-dyntab.adb: Add assertions to subprograms that
	can reallocate.
	* atree.adb, elists.adb, fname-uf.adb, ghost.adb, inline.adb,
	* lib.adb, namet.adb, nlists.adb, sem.adb, sinput.adb, stringt.adb:
	Reorder code so that above assertions do not fail.
	* table.ads: Remove obsolete comment on Locked.

2017-04-27  Claire Dross  <dross@adacore.com>

	* a-cfdlli.ads: Code cleanup.

2017-04-27  Yannick Moy  <moy@adacore.com>

	* exp_spark.adb (Expand_SPARK_Freeze_Type): Build a DIC procedure
	when needed for proof.	(Expand_SPARK): Call the new procedure.
	* exp_util.ads Fix typo.

2017-04-27  Gary Dismukes  <dismukes@adacore.com>

	* a-cofuma.ads, a-cfhama.ads: Minor reformatting, grammar, and typo
	fixes.

2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_elab.adb Add new type Visited_Element
	and update the contents of table Elab_Visited.	Various code clean up.
	(Check_Elab_Call): Determine whether a prior call to
	the same subprogram was already examined within the same context.
	(Check_Internal_Call_Continue): Register the subprogram being
	called as examined within a particular context. Do not suppress
	elaboration warnings.

2017-04-27  Gary Dismukes  <dismukes@adacore.com>

	* xoscons.adb, osint.ads: Minor reformatting.

2017-04-27  Bob Duff  <duff@adacore.com>

	* g-dyntab.ads, g-dyntab.adb: Misc cleanup. Rename
	Table_Count_Type --> Table_Last_Type, because the name
	was confusing (a "count" usually starts at zero).  Add
	functionality supported or needed by other tables packages
	(Move, Release_Threshold).
	* g-table.ads, g-table.adb: This is now just a thin wrapper
	around g-dyntab.ads/g-dyntab.adb.  Add functionality supported
	or needed by other tables packages (Save, Restore).
	* table.ads, table.adb: This is now just a thin wrapper around
	* g-table.ads/g-table.adb.
	* namet.h, scos.h, uintp.h: These files are reaching into the
	private data of some instances of g-table, whose names changed,
	so the above change requires some adjustment here. It now uses
	public interfaces.

2017-04-27  Bob Duff  <duff@adacore.com>

	* namet.adb, namet.ads: Minor: remove unused procedures.

2017-04-27  Eric Botcazou  <ebotcazou@adacore.com>

	* checks.adb (Apply_Scalar_Range_Check): Initialize Ok variable too.
	(Minimize_Eliminate_Overflows): Initialize Llo and Lhi.
	Add pragma Warnings on Rtype variable in nested block.	*
	* exp_ch3.adb (Build_Init_Statements): Initialize VAR_LOC.
	* exp_ch4.adb (Expand_Concatenate): Initialize 3 variables.
	(Size_In_Storage_Elements): Add pragma Warnings on Res variable.
	* exp_ch7.adb (Build_Adjust_Statements): Initialize Bod_Stmts.
	(Process_Component_List_For_Finalize): Initialize Counter_Id.
	(Build_Finalize_Statements): Initialize Bod_Stmts.
	* exp_disp.adb (Expand_Dispatching_Call): Initialize SCIL_Node.

2017-04-27  Claire Dross  <dross@adacore.com>

	* a-cfhama.adb, a-cfhamai.ads (=): Generic parameter removed to
	allow the use of regular equality over elements in contracts.
	(Formal_Model): Ghost package containing model functions that are
	used in subprogram contracts.
	(Current_To_Last): Removed, model
	functions should be used instead.
	(First_To_Previous): Removed, model functions should be used instead.
	(Strict_Equal): Removed, model functions should be used instead.
	(No_Overlap): Removed, model functions should be used instead.
	(Equivalent_Keys): Functions over cursors are removed. They were
	awkward with explicit container parameters.
	* a-cofuma.adb, a-cofuma.ads (Lift_Equivalent_Keys): New lemma
	(proof only) procedure to help GNATprove when equivalence over
	keys is not equality.

2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb, a-cfdlli.adb, a-cfdlli.ads, exp_ch9.adb, g-dyntab.adb,
	sem_dim.adb, a-cfinve.adb, a-cfinve.ads, a-cofove.adb, a-cofove.ads:
	Minor reformatting and code cleanups.

2017-04-27  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Build_Inherited_Condition_Pragmas): New procedure,
	subsidiary of Check_Inherited_Conditions, to build pragmas for an
	operation whose ancestor has classwide pre/postconditions. This
	is used both to check the legality of the inheritance in Ada
	and in SPARK, and to determine whether a wrapper is needed for
	an inherited operation.
	* exp_util.adb (Build_Class_Wide_Expression, Replace_Entity):
	Improve placement of error message for inherited classwide
	conditions that become illegal on type derivation.

2017-04-27  Yannick Moy  <moy@adacore.com>

	* sem_ch12.adb (Analyze_Generic_Package_Declaration): Set
	SPARK_Mode from context on generic package.
	* sem_ch7.adb (Analyze_Package_Declaration): Simplify code to remove
	useless test.

2017-04-27  Claire Dross  <dross@adacore.com>

	* a-cofuve.ads (Range_Shifted): Rewrite precondition to avoid
	overflows in computations.
	* a-cofove.ads (Capacity_Range): Rewrite last bound to avoid
	overflows in computations.
	(Insert): Rewrite precondition to avoid overflows in computations.
	* a-cfinve.ads (Capacity_Range): Rewrite last bound to avoid
	overflows in computations.
	(Insert): Rewrite precondition to avoid overflows in computations.

2017-04-27  Steve Baird  <baird@adacore.com>

	* exp_ch9.adb (Expand_N_Asynchronous_Select): Initialize the Cancel
	flag when it is declared in order to avoid confusing CodePeer about
	the possibility of an uninitialized variable read.

2017-04-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_dim.adb (Analyze_Dimension_Object_Declaration): There is
	no dimensionality error if the subtype of the expression is
	identical to the nominal subtype in the declaration, even though
	the expression itself may have been constant-folded and lack a
	dimension vector.
	* sem_dim.ads: Add comments on setting of dimension vectors and
	its interaction with node rewritings and side-effect removal.

2017-04-27  Bob Duff  <duff@adacore.com>

	* debug.adb: Minor comment correction.
	* sem_dim.ads: Minor reformatting and typo fixes.

2017-04-27  Bob Duff  <duff@adacore.com>

	* g-table.adb, g-table.adsa, scos.h: From the C side, access First and
	Last of the tables via function calls, rather than relying on layout
	of data structures.

2017-04-27  Ed Schonberg  <schonberg@adacore.com>

	* exp_util.adb: No wrapper in GNATprove mode.

2017-04-27  Yannick Moy  <moy@adacore.com>

	* sem_res.adb (Resolve_Comparison_Op): Always
	evaluate comparisons between values of universal types.

2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_elab.adb (Check_Internal_Call_Continue): Do not generate
	an elaboration counter nor a check when in GNATprove mode.
	* sem_util.adb (Build_Elaboration_Entity): Do not create an
	elaboration counter when in GNATprove mode.

2017-04-27  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb: copy-paste typo.

2017-04-27  Yannick Moy  <moy@adacore.com>

	* sem_prag.adb (Analyze_Pre_Post_In_Decl_Part):
	Use correct test to detect call in GNATprove mode instead of
	compilation.

2017-04-27  Claire Dross  <dross@adacore.com>

	* a-cfdlli.adb, a-cfdlli.ads (Formal_Model.M_Elements_In_Union):
	New property function expressing that the element of a
	sequence are contained in the union of two sequences.
	(Formal_Model.M_Elements_Included): New property function
	expressing that the element of a sequence are another sequence.
	(Generic_Sorting): Use new property functions to state that
	elements are preserved by Sort and Merge.
	* a-cofove.adb, a-cofove.ads (=): Generic parameter removed to
	allow the use of regular equality over elements in contracts.
	(Formal_Model): Ghost package containing model functions
	that are used in subprogram contracts.	(Capacity):
	On unbounded containers, return the maximal capacity.
	(Current_To_Last): Removed, model functions should be used instead.
	(First_To_Previous): Removed, model functions should be used instead.
	(Append): Default parameter value replaced
	by new wrapper to allow more precise contracts.
	(Insert): Subprogram restored, it seems it was useful to users even if
	it is inefficient.
	(Delete): Subprogram restored, it seems it was useful to users even if
	it is inefficient.
	(Prepend): Subprogram restored, it seems it was useful to users even
	if it is inefficient.
	(Delete_First): Subprogram restored, it seems it
	was useful to users even if it is inefficient.	(Delete_Last):
	Default parameter value replaced by new wrapper to allow more
	precise contracts.
	(Generic_Sorting.Merge): Subprogram restored.
	* a-cfinve.adb, a-cfinve.ads (=): Generic parameter removed to
	allow the use of regular equality over elements in contracts.
	(Formal_Model): Ghost package containing model functions
	that are used in subprogram contracts.	(Capacity):
	On unbounded containers, return the maximal capacity.
	(Current_To_Last): Removed, model functions should be used
	instead.
	(First_To_Previous): Removed, model functions should be used instead.
	(Append): Default parameter value replaced
	by new wrapper to allow more precise contracts.
	(Insert): Subprogram restored, it seems it was useful to users even if
	it is inefficient.
	(Delete): Subprogram restored, it seems it was useful to users even if
	it is inefficient.
	(Prepend): Subprogram restored, it seems it was useful to users even
	if it is inefficient.
	(Delete_First): Subprogram restored, it seems it
	was useful to users even if it is inefficient.	(Delete_Last):
	Default parameter value replaced by new wrapper to allow more
	precise contracts.
	(Generic_Sorting.Merge): Subprogram restored.
	(Vector): Do not reuse formal vectors, as it is no longer possible
	to supply them with an equality function over elements.

2017-04-27  Bob Duff  <duff@adacore.com>

	* g-dyntab.adb (Release): When allocating the new
	table, use the correct slice of the old table to initialize it.

2017-04-27  Eric Botcazou  <ebotcazou@adacore.com>

	* einfo.ads: Minor fixes in comments.

2017-04-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb: disable clones in SPARK_Mode.

2017-04-27  Gary Dismukes  <dismukes@adacore.com>

	* sem_util.ads, contracts.adb: Minor reformatting.

2017-04-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb, sem_util.ads (Build_Class_Wide_Clone_Body):
	Build body of subprogram that has a class-wide condition that
	contains calls to other primitives.
	(Build_Class_Wide_Clone_Call); Build a call to the common
	class-wide clone of a subprogram with classwide conditions. The
	body of the subprogram becomes a wrapper for a call to the
	clone. The inherited operation becomes a similar wrapper to which
	modified conditions apply, and the call to the clone includes
	the proper conversion in a call the parent operation.
	(Build_Class_Wide_Clone_Decl (Spec_Id : Entity_Id): For a
	subprogram that has a classwide condition that contains calls to
	other primitives, build an internal subprogram that is invoked
	through a type-specific wrapper for all inherited subprograms
	that may have a modified condition.
	* sem_prag.adb (Check_References): If subprogram has a classwide
	condition, create entity for corresponding clone, to be invoked
	through wrapper subprograns.
	(Analyze_Pre_Post_Condition_In_Decl_Part): Do not emit error
	message about placement if pragma isi internally generated.
	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): If subprogram has
	a classwide clone, build body of clone as copy of original body,
	and rewrite original body as a wrapper as a wrapper for a call to
	the clone, so that it incorporates the original pre/postconditions
	of the subprogram.
	* freeze.adb (Check_Inherited_Conditions): For an inherited
	subprogram that inherits a classwide condition, build spec and
	body of corresponding wrapper so that call to inherited operation
	gets the modified conditions.
	* contracts.adb (Analyze_Contracts): If analysis of classwide
	condition has created a clone for a primitive operation, analyze
	declaration of clone.

2017-04-27  Steve Baird  <baird@adacore.com>

	* exp_util.adb (Build_Allocate_Deallocate_Proc):
	Add "Suppress => All_Checks" to avoid generating unnecessary
	checks.

2017-04-27  Yannick Moy  <moy@adacore.com>

	* debug.adb: Reserve debug flag 'm' for no inlining in GNATprove.
	* sem_ch6.adb (Anayze_Subprogram_Body_Helper): Skip creation of
	inlining body in GNATprove mode when switch -gnatdm used.
	* sem_res.adb (Resolve_Call): Skip detection of lack of inlining
	in GNATprove mode when switch -gnatdm used.

2017-04-27  Arnaud Charlet  <charlet@adacore.com>

	* sem_ch13.adb (Analyze_Attribute_Definition_Clause
	[Attribute_Address]): Call Set_Address_Taken when ignoring rep
	clauses, so that we keep an indication of the address clause
	before removing it from the tree.

2017-04-27  Yannick Moy  <moy@adacore.com>

	* exp_util.ads, exp_util.adb (Evaluate_Name): Force evaluation
	of expression being qualified, when not an object name, or else
	evaluate the underlying name.

2017-04-27  Jerome Lambourg  <lambourg@adacore.com>

	* bindusg.adb, bindgen.adb, gnatbind.adb, opt.ads: add -nognarl switch.

2017-04-27  Justin Squirek  <squirek@adacore.com>

	* exp_ch7.adb (Build_Finalize_Statements): Move Num_Comps to
	Process_Component_List_For_Finalization as a local variable.
	(Process_Component_For_Finalize): Add an extra parameter to avoid
	global references.
	(Process_Component_List_For_Finalization): Correct calls to
	Process_Component_For_Finalize to take Num_Comps as a parameter.

2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch8.adb (Find_Direct_Name): Account for the case where
	a use-visible entity is defined within a nested scope of an
	instance when giving priority to entities which were visible in
	the original generic.
	* sem_util.ads, sem_util.adb (Nearest_Enclosing_Instance): New routine.

2017-04-27  Tristan Gingold  <gingold@adacore.com>

	* raise-gcc.c: Don't use unwind.h while compiling
	for the frontend, but mimic host behavior.

2017-04-27  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Build_Discriminated_Subtype):
	Propagate Has_Pragma_Unreferenced_Objects to the built subtype.

2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Global_Item):
	Do not consider discriminants because they are not "entire
	objects". Remove the discriminant-related checks because they are
	obsolete.
	(Analyze_Input_Output): Do not consider discriminants
	because they are not "entire objects".

2017-04-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): Do not
	perform check if the current scope does not come from source,
	as is the case for a rewritten task body, because check has
	been performed already, and may not be doable because of changed
	visibility.

2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* a-cofuse.adb, a-cfdlli.adb, a-cofuse.ads, a-cfdlli.ads, a-cofuve.adb,
	a-cofuve.ads, a-cofuma.adb, a-cofuma.ads, sem_eval.adb, a-cofuba.adb:
	Minor reformatting.

2017-04-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Call): If the return type of a function
	is incomplete in an context in which the full view is available,
	replace the type of the call by the full view, to prevent spurious
	type errors.
	* exp_disp.adb (Check_Premature_Freezing): Disable check on an
	abstract subprogram so that compiler does not reject a parameter
	of a primitive operation of a tagged type being frozen, when
	the untagged type of that parameter cannot be frozen.

2017-04-27  Bob Duff  <duff@adacore.com>

	* sem_attr.adb (Compute_Type_Key): Don't walk
	representation items for irrelevant types, which could be in a
	different source file.

2017-04-27  Steve Baird  <baird@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference):
	Don't expand Image, Wide_Image, Wide_Wide_Image attributes
	for CodePeer.

2017-04-27  Yannick Moy  <moy@adacore.com>

	* exp_unst.ads: Fix typos in comments.

2017-04-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_eval.adb (Choice_Matches): Handle properly a real literal
	whose type has a defined static predicate.

2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb (Insert_Dereference_Action):
	Do not adjust the address of a controlled object when the
	associated access type is subject to pragma No_Heap_Finalization.
	Code reformatting.

2017-04-27  Pierre-Marie de Rodat  <derodat@adacore.com>

	* gcc-interface/utils.c (gnat_type_for_size): Set
        TYPE_ARTIFICIAL on created types.

2017-04-27  Claire Dross  <dross@adacore.com>

	* a-cfdlli.adb, a-cfdlli.ads (Formal_Model): Adapt to
	modifications in functional containers.
	* a-cofuba.ads, a-cofuma.ads, a-cofuse.ads, a-cofuve.ads Reformat
	to improve readablity. Subprograms are separated between basic
	operations, constructors and properties. Universally quantified
	formulas in contracts are factorized in independant functions
	with a name and a comment.  Names of parameters are improved.

2017-04-27  Gary Dismukes  <dismukes@adacore.com>

	* exp_spark.adb, sem_elab.adb: Minor reformatting and typo fix.

2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_res.adb (Resolve_Type_Conversion): Do not
	install a predicate check here since this is already done during
	the expansion phase. Verify whether the operand satisfies the
	static predicate (if any) of the target type.
	* sem_ch3.adb (Analyze_Object_Declaration): Do
	not install a predicate check if the object is initialized by
	means of a type conversion because the conversion is subjected
	to the same check.

2017-04-27  Tristan Gingold  <gingold@adacore.com>

	* raise.c (__gnat_builtin_longjmp): Remove.
	(__gnat_bracktrace):
	Add a dummy definition for the compiler (__gnat_eh_personality,
	__gnat_rcheck_04, __gnat_rcheck_10) (__gnat_rcheck_19,
	__gnat_rcheck_20, __gnat_rcheck_21) (__gnat_rcheck_30,
	__gnat_rcheck_31, __gnat_rcheck_32): Likewise.
	* a-exexpr.adb: Renamed from a-exexpr-gcc.adb
	* a-except.ads, a-except.adb: Renamed from a-except-2005.ads
	and a-except-2005.adb.
	* raise-gcc.c: Allow build in compiler, compiled as a C++
	file.
	(__gnat_Unwind_ForcedUnwind): Adjust prototype.
	(db): Constify msg_format.
	(get_call_site_action_for): Don't use void arithmetic.
	* system.ads (Frontend_Exceptions): Set to False.
	(ZCX_By_Default): Set to True.
	(GCC_ZC_Support): Set to True.
	* gcc-interface/Makefile.in: No more variants for a-exexpr.adb and
	a-except.ad[sb].
	* gcc-interface/Make-lang.in: Add support for backend zcx exceptions
	in gnat1 and gnatbind.
	* gnat1, gnatbind: link with raise-gcc.o, a-exctra.o, s-addima.o,
	s-excmac.o, s-imgint.o, s-traceb.o, s-trasym.o, s-wchstw.o
	* s-excmac.ads, s-excmac.adb: Copy of variants.
	* a-except.o: Adjust preequisites.
	Add handling of s-excmac-arm.adb and s-excmac-gcc.adb.

2017-04-27  Claire Dross  <dross@adacore.com>

	* a-cfdlli.adb, a-cfdlli.ads (Formal_Model): Adapt to
	modifications in functional containers.
	* a-cofuba.ads, a-cofuma.ads, a-cofuse.ads, a-cofuve.ads Reformat
	to improve readablity. Subprograms are separated between basic
	operations, constructors and properties. Universally quantified
	formulas in contracts are factorized in independant functions
	with a name and a comment.  Names of parameters are improved.

2017-04-27  Gary Dismukes  <dismukes@adacore.com>

	* exp_spark.adb, sem_elab.adb: Minor reformatting and typo fix.

2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_res.adb (Resolve_Type_Conversion): Do not
	install a predicate check here since this is already done during
	the expansion phase. Verify whether the operand satisfies the
	static predicate (if any) of the target type.
	* sem_ch3.adb (Analyze_Object_Declaration): Do
	not install a predicate check if the object is initialized by
	means of a type conversion because the conversion is subjected
	to the same check.

2017-04-27  Tristan Gingold  <gingold@adacore.com>

	* a-except.ads, a-except.adb, a-exexpr.adb: Removed (will be
	replaced by their variants).

2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_prag.adb, a-cofuse.adb, a-cofuse.ads, einfo.adb, sem_prag.adb,
	cstand.adb, par-prag.adb, a-cofuve.adb, a-cofuve.ads, a-cofuma.adb,
	a-cofuma.ads, a-cofuba.adb, a-cofuba.ads: Minor reformatting.

2017-04-27  Tristan Gingold  <gingold@adacore.com>

	* s-excmac-gcc.ads, s-excmac-gcc.adb,
	s-excmac-arm.ads, s-excmac-arm.adb (New_Occurrence): Rewrite it in
	Ada95.

2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Establish_Transient_Scope): Rewrite
	the loop which detects potential enclosing transient scopes. The
	loop now terminates much earlier as transient scopes are bounded
	by packages and subprograms.

2017-04-27  Claire Dross  <dross@adacore.com>

	* a-cfdlli.adb, a-cfdlli.ads (=): Generic parameter removed to
	allow the use of regular equality over elements in contracts.
	(Cursor): Type is now public so that it can be used in
	model functions.
	(Formal_Model): Ghost package containing
	model functions that are used in subprogram contracts.
	(Current_To_Last): Removed, model functions should be used
	instead.
	(First_To_Previous): Removed, model functions should
	be used instead.
	(Strict_Equal): Removed, model functions
	should be used instead.
	(Append): Default parameter value
	replaced by new wrapper to allow more precise contracts.
	(Insert): Default parameter value replaced by new wrapper to
	allow more precise contracts.
	(Delete): Default parameter
	value replaced by new wrapper to allow more precise contracts.
	(Prepend): Default parameter value replaced by new wrapper to
	allow more precise contracts.
	(Delete_First): Default parameter
	value replaced by new wrapper to allow more precise contracts.
	(Delete_Last): Default parameter value replaced by new wrapper
	to allow more precise contracts.

2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_spark.adb (Expand_SPARK): Perform specialized expansion
	for object declarations.
	(Expand_SPARK_N_Object_Declaration): New routine.
	* sem_elab.adb (Check_A_Call): Include calls to the
	Default_Initial_Condition procedure of a type under the SPARK
	elaboration checks umbrella.

2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem.adb (Analyze): Diagnose an illegal iterated component
	association.
	* sem_util.ads, sem_util.adb
	(Diagnose_Iterated_Component_Association): New routine.

2017-04-27  Bob Duff  <duff@adacore.com>

	* adaint.c (__gnat_get_current_dir): Return 0 in length if
	getcwd fails.
	* a-direct.adb, g-dirope.adb, osint.adb, s-os_lib.adb: Raise
	exception if getcwd failed.

2017-04-27  Yannick Moy  <moy@adacore.com>

	* exp_dbug.adb, exp_dbug.ads (Get_External_Name): Prefix ghost
	entities with special prefix.

2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* debug.adb Change the documentation of switch -gnatd.s.
	* exp_ch7.adb (Make_Transient_Block): Transient blocks do not need
	to manage the secondary stack when an enclosing scope already
	performs this functionality (aka relaxed management). Switch
	-gnatd.s may be used to force strict management in which case
	the block will manage the secondary stack unconditionally. Add
	a guard to stop the traversal when encountering a package or a
	subprogram scope.

2017-04-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Call): Refine further the handling of
	limited views of return types in function calls. If the function
	that returns a limited view appears in the current unit,
	we do not replace its type by the non-limited view because
	this transformation is performed int the back-end. However,
	the type of the call itself must be the non-limited view, to
	prevent spurious resolution errors.

2017-04-27  Ed Schonberg  <schonberg@adacore.com>

	* einfo,ads, einfo.adb (Class_Wide_Preconds, Class_Wide_Postconds):
	Removed, proposed implementation using generics for class-wide
	preconditions proved impractical.
	(Class_Wide_Clone): New attribute of subprogram. Designates
	subprogram created for primitive operations with class-wide
	pre/postconditions that contain calls to other primitives. The
	clone holds the body of the original primitive, but the
	pre/postonditions do not apply to it. The original body is
	rewritten as a wrapper for a call to the clone.
	(Is_Class_Wide_Clone): New flag to identify a Class_Wide_Clone. If
	the flag is set, no code for the corresponding pre/postconditions
	is inserted into its body.

2017-04-27  Bob Duff  <duff@adacore.com>

	* exp_prag.adb, par-prag.adb, sem_ch13.adb: Ignore
	Scalar_Storage_Order if -gnatI is given.
	* sem_prag.adb (Analyze_Pragma): Ignore
	Default_Scalar_Storage_Order if -gnatI is given.

2017-04-27  Claire Dross  <dross@adacore.com>

	* a-cofuba.ads (Add): Take as an additional input parameter
	the position where the element should be inserted.
	(Remove): New function that removes an element from the container.
	* a-cofuma.ads (Add): Adapt to the new API of Base.Add.
	* a-cofuse.ads (Add): Adapt to the new API of Base.Add.
	(Remove): New function that removes an element from a set.
	* a-cofuve.ads (Add): Adapt to the new API of Base.Add.
	(Remove): New function that removes an element from a sequence.
	(Insert): New function that adds anywhere in a sequence.

2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb (Generate_Range_Check): Revert previous change.

2017-04-27  Gary Dismukes  <dismukes@adacore.com>

	* sem_util.adb: Minor reformatting/rewording.

2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* lib-xref.adb (Generate_Reference): The use
	of attribute 'Result is not considered a violation of pragma
	Unreferenced.

2017-04-27  Justin Squirek  <squirek@adacore.com>

	* cstand.adb (Create_Standard): Correctly set
	Directly_Designated_Type for Any_Access.
	* sem_type.adb (Covers): Minor grammar fixes.

2017-04-27  Bob Duff  <duff@adacore.com>

	* sem_attr.adb: Minor cleanup.

2017-04-27  Claire Dross  <dross@adacore.com>

	* a-cofuba.ads, a-cofuba.adb (Ada.Containers.Functional_Base): New
	private child of Ada.Containers used to implement all functional
	containers.
	* a-cofuma.ads, a-cofuma.adb (Ada.Containers.Functional_Maps): New
	child of Ada.Containers. It provides functional indefinite unbounded
	maps which can be used as high level models for specification
	of data structures.
	* a-cofuse.ads, a-cofuse.adb (Ada.Containers.Functional_Sets): New
	child of Ada.Containers. It provides functional indefinite unbounded
	sets which can be used as high level models for specification
	of data structures.
	* a-cofuve.ads, a-cofuve.adb (Ada.Containers.Functional_Vectors): New
	child of Ada.Containers.  It provides functional indefinite unbounded
	vectors which can be used as high level models for specification
	of data structures.
	* Makefile.rtl: Add new packages.
	* impunit.adb: Add new packages.

2017-04-27  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch4.adb: Minor reformatting.

2017-04-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Analyze_Associations): minor reformatting.
	(Check_Fixed_Point_Actual): Do not emit a warning on a fixed
	point type actual that has user-defined arithmetic primitives,
	when there is a previous actual for a formal package that defines
	a fixed-point type with the parent user-defined operator.

2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb (Generate_Range_Check): Reinstate part of previous change.
	* sem_attr.adb (Resolve_Attribute): Generate a range check when
	the component type allows range checks.

2017-04-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_aux.adb (Is_Generic_Formal): Use original node to locate
	corresponding declaration, because formal derived types are
	rewritten as private extensions.

2017-04-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_dim.adb (Analyze_Dimension_Binary_Op): Do not check
	dimensions of operands if node has been analyzed already, because
	previous analysis and dimension checking will have removed the
	dimension information from the operands.

2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* debug.adb: Document the use of switch -gnatd.s.
	* einfo.ads Update the documentation on attribute
	Sec_Stack_Needed_For_Return and attribute Uses_Sec_Stack. Remove
	the uses of these attributes from certain entities.
	* exp_ch7.adb (Make_Transient_Block): Reimplement the circuitry
	which determines whether the block should continue to manage
	the secondary stack.
	(Manages_Sec_Stack): New routine.

2017-04-27  Bob Duff  <duff@adacore.com>

	* atree.ads: Minor edit.

2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* sinfo.ads: Update the section on Ghost mode. Add
	a section on SPARK mode. Update the placement of section on
	expression functions.

2017-04-27  Bob Duff  <duff@adacore.com>

	* sinput.adb (Get_Source_File_Index): Don't
	assert that S is in the right range in the case where this is
	a .dg file under construction.

2017-04-27  Yannick Moy  <moy@adacore.com>

	* sem_util.adb (Check_Result_And_Post_State):
	Handle more precisely each conjunct in expressions formed by
	and'ing sub-expressions.

2017-04-27  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch4.adb, sem_ch4.adb: Minor typo fix and reformatting.

2017-04-25  Arnaud Charlet  <charlet@adacore.com>

	* gnat_rm.texi, gnat_ugn.texi,
	doc/gnat_ugn/building_executable_programs_with_gnat.rst,
	doc/gnat_ugn/platform_specific_information.rst,
	doc/gnat_ugn/gnat_and_program_execution.rst,
	doc/gnat_ugn/gnat_utility_programs.rst,
	doc/gnat_ugn/the_gnat_compilation_model.rst,
	doc/gnat_rm/implementation_defined_attributes.rst,
	doc/gnat_rm/the_gnat_library.rst,
	doc/gnat_rm/implementation_defined_pragmas.rst,
	doc/gnat_rm/representation_clauses_and_pragmas.rst,
	doc/gnat_rm/implementation_of_specific_ada_features.rst,
	doc/gnat_rm/implementation_defined_aspects.rst,
	doc/gnat_rm/implementation_defined_characteristics.rst: Update
	documentation.

2017-04-25  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch4.adb (Expand_N_Case_Expression): Emit error message when
	generating C code on complex case expressions.

2017-04-25  Arnaud Charlet  <charlet@adacore.com>

	* sem_prag.adb (Analyze_Pragma): Generate a warning instead
	of silently ignoring pragma Ada_xxx in Latest_Ada_Only mode.
	* directio.ads, ioexcept.ads, sequenio.ads, text_io.ads: Use
	Ada_2012 instead of Ada_2005 to be compatible with the above
	change.
	* bindgen.adb: Silence new warning on pragma Ada_95.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb (Generate_Range_Check): Revert part of previous change.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Try_Container_Indexing): Handle properly a
	container indexing operation that appears as a an actual in a
	parameter association in a procedure call.

2017-04-25  Olivier Ramonat  <ramonat@adacore.com>

	* prj-proc.adb, sem_util.adb, s-stposu.adb, sem_attr.adb, prj-conf.ads:
	Fix spelling mistakes.

2017-04-25  Bob Duff  <duff@adacore.com>

	* types.ads, osint.adb, sinput-c.adb, sinput-d.adb, sinput-l.adb,
	* sinput-p.adb: Use regular fat pointers, with bounds checking,
	for source buffers.  Fix misc obscure bugs.
	* sinput.ads, sinput.adb: Use regular fat pointers, with bounds
	checking, for source buffers.  Modify representation clause for
	Source_File_Record as appropriate.  Move Source_File_Index_Table
	from spec to body, because it is not used outside the body.
	Move Set_Source_File_Index_Table into the private part, because
	it is used only in the body and in children.  Use trickery to
	modify the dope in the generic instantiation case.  It's ugly,
	but not as ugly as the previous method.  Fix documentation.
	Remove obsolete code.
	* fname-sf.adb, targparm.adb: Fix misc out-of-bounds
	indexing in source buffers.
	* fmap.adb: Avoid conversions from one string type to another.
	Remove a use of global name buffer.
	* osint.ads, sfn_scan.ads, sfn_scan.adb, sinput-c.ads: Comment
	fixes.

2017-04-25  Gary Dismukes  <dismukes@adacore.com>

	* exp_util.adb, exp_ch4.adb: Minor reformatting.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb: Code clean up in various routines.
	(Generate_Range_Check): Do not generate a range check when the
	expander is not active or when index/range checks are suppressed
	on the target type.
	(Insert_List_After_And_Analyze, Insert_List_Before_And_Analyze):
	Remove variants that include a Supress parameter. These routines
	are never used, and were introduced before the current scope-based
	check suppression method.

2017-04-25  Vasiliy Fofanov  <fofanov@adacore.com>

	* prj-part.adb, cstreams.c, osint.adb, osint.ads: Remove VMS specific
	code and some subprogram calls that are now noop.

2017-04-25  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch4.adb (Expand_N_Case_Expression): Take
	Minimize_Expression_With_Actions into account when possible.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb (Known_Non_Null): Moved to Sem_Util.
	(Known_Null): Moved to Sem_Util.
	* exp_util.ads (Known_Non_Null): Moved to Sem_Util.
	(Known_Null): Moved to Sem_Util.
	* sem_util.adb Add new enumeration type Null_Status_Kind.
	(Known_Non_Null): Moved from Exp_Util. Most of the logic in
	this routine is now carried out by Null_Status.
	(Known_Null): Moved from Exp_Util. Most of the logic in this routine
	is now carried out by Null_Status.
	(Null_Status): New routine.
	* sem_util.ads (Known_Non_Null): Moved from Exp_Util.
	(Known_Null): Moved from Exp_Util.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Expression_Function): Do not report an
	error on the return type of an expression function that is a
	completion, if the type is derived from a generic formal type.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_dim.adb (Dimensions_Of_Operand): The dimensions of a type
	conversion are those of the target type.

2017-04-25  Bob Duff  <duff@adacore.com>

	* a-clrefi.adb: Minor cleanup.

2017-04-25  Gary Dismukes  <dismukes@adacore.com>

	* exp_util.adb, exp_util.ads, types.ads: Minor reformatting.

2017-04-25  Bob Duff  <duff@adacore.com>

	* err_vars.ads, fmap.adb, fmap.ads, comperr.adb, fname-sf.adb,
	types.adb, types.ads, types.h, sinput-l.adb, targparm.adb,
	errout.adb, sinput.adb, sinput.ads, cstand.adb, scn.adb,
	scn.ads, gnatls.adb: Eliminate the vestigial Internal_Source_File and
	the Internal_Source buffer. This removes the incorrect call to "="
	the customer noticed.
	Wrap remaining calls to "=" in Null_Source_Buffer_Ptr. We
	eventually need to eliminate them altogether. Or else get rid
	of zero-origin addressing.

2017-04-25  Claire Dross  <dross@adacore.com>

	* exp_util.ads (Expression_Contains_Primitives_Calls_Of): New
	function used in GNATprove to know if an expression contains
	non-dispatching calls on primitives of a tagged type.

2017-04-25  Bob Duff  <duff@adacore.com>

	* rtsfind.adb (Initialize): Initialize
	First_Implicit_With. Building the compiler with Normalize_Scalars
	and validity checking finds this being used as an uninitialized
	variable.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* contracts.adb (Analyze_Entry_Or_Subprogram_Body_Contract):
	Add a warning about SPARK mode management. The routine now
	saves and restores both the mode and associated pragma.
	(Analyze_Entry_Or_Subprogram_Contract): Add a warning about
	SPARK mode management. The routine now saves and restores both
	the mode and associated pragma.
	(Analyze_Object_Contract):
	Add a warning about SPARK mode management. The routine
	now saves and restores both the mode and associated pragma.
	(Analyze_Package_Body_Contract): Add a warning about SPARK mode
	management.  The routine now saves and restores both the mode
	and associated pragma.	(Analyze_Package_Contract): Add a warning
	about SPARK mode management. The routine now saves and restores
	both the mode and associated pragma.
	(Analyze_Task_Contract):
	Add a warning about SPARK mode management. The routine now saves
	and restores both the mode and associated pragma.
	* expander.adb (Expand): Change the way the Ghost mode is saved
	and restored.
	* exp_ch3.adb (Freeze_Type): Change the way the Ghost mode is
	saved and restored.
	* exp_disp.adb (Make_DT): Change the way the Ghost mode is saved
	and restored.
	* exp_util.adb (Build_DIC_Procedure_Body):
	Change the way the Ghost mode is saved and restored.
	(Build_DIC_Procedure_Declaration): Change the way the Ghost
	mode is saved and restored.
	(Build_Invariant_Procedure_Body):
	Change the way the Ghost mode is saved and restored.
	(Build_Invariant_Procedure_Declaration): Change the way the Ghost
	mode is saved and restored.
	(Make_Predicate_Call): Change the
	way the Ghost mode is saved and restored.
	* freeze.adb (Freeze_Entity): Change the way the Ghost mode is
	saved and restored.
	* ghost.adb (Mark_And_Set_Ghost_Assignment): Remove parameter Mode
	and its assignment.
	(Mark_And_Set_Ghost_Body): Remove parameter
	Mode and its assignment.
	(Mark_And_Set_Ghost_Completion):
	Remove parameter Mode and its assignment.
	(Mark_And_Set_Ghost_Declaration): Remove parameter Mode and its
	assignment.
	(Mark_And_Set_Ghost_Instantiation): Remove parameter
	Mode and its assignment.
	(Mark_And_Set_Ghost_Procedure_Call):
	Remove parameter Mode and its assignment.
	(Set_Ghost_Mode):
	Remove parameter Mode and its assignment.
	* ghost.ads (Mark_And_Set_Ghost_Assignment): Remove parameter Mode
	and update the comment on usage.
	(Mark_And_Set_Ghost_Body):
	Remove parameter Mode and update the comment on usage.
	(Mark_And_Set_Ghost_Completion): Remove parameter Mode and
	update the comment on usage.
	(Mark_And_Set_Ghost_Declaration):
	Remove parameter Mode and update the comment on usage.
	(Mark_And_Set_Ghost_Instantiation): Remove parameter Mode and
	update the comment on usage.
	(Mark_And_Set_Ghost_Procedure_Call):
	Remove parameter Mode and update the comment on usage.
	(Set_Ghost_Mode): Remove parameter Mode and update the comment
	on usage.
	* lib.ads Remove obsolete fields SPARK_Mode_Pragma from various
	types.
	* lib-load.adb (Create_Dummy_Package_Unit): Remove the assignment
	of obsolete field SPARK_Mode_Pragma.
	(Load_Main_Source): Remove
	the assignment of obsolete field SPARK_Mode_Pragma.
	(Load_Unit): Remove the assignment of obsolete field SPARK_Mode_Pragma.
	* lib-writ.adb (Add_Preprocessing_Dependency): Remove
	the assignment of obsolete field SPARK_Mode_Pragma.
	(Ensure_System_Dependency): Remove the assignment of obsolete
	field SPARK_Mode_Pragma.
	* rtsfind.adb (Load_RTU): Add a warning about Ghost and SPARK
	mode management. Change the way Ghost and SPARK modes are saved
	and restored.
	* sem.adb (Analyze): Change the way the Ghost mode is saved
	and restored.
	* sem_ch3.adb (Analyze_Object_Declaration): Change the way the
	Ghost mode is saved and restored.
	(Process_Full_View): Change
	the way the Ghost mode is saved and restored.
	* sem_ch5.adb (Analyze_Assignment): Change the way the Ghost
	mode is saved and restored.
	* sem_ch6.adb (Analyze_Procedure_Call): Change the way the Ghost
	mode is saved and restored.
	(Analyze_Subprogram_Body_Helper):
	Change the way the Ghost mode is saved and restored.
	* sem_ch7.adb (Analyze_Package_Body_Helper): Change the way the
	Ghost mode is saved and restored.
	* sem_ch10.adb (Analyze_Subunit): Add a warning about SPARK mode
	management. Save the SPARK mode-related data prior to any changes
	to the scope stack and contexts. The mode is then reinstalled
	before the subunit is analyzed in order to restore the original
	view of the subunit.
	* sem_ch12.adb (Analyze_Package_Instantiation): Update the
	warning on region management.  Change the way the Ghost and
	SPARK modes are saved and restored.
	(Inline_Instance_Body):
	Add a warning about SPARK mode management. Code clean up.
	(Analyze_Subprogram_Instantiation): Update the warning on region
	management.  Change the way the Ghost and SPARK modes are saved
	and restored.
	(Instantiate_Package_Body): Update the warning
	on region management. Change the way the Ghost and SPARK modes
	are saved and restored.
	(Instantiate_Subprogram_Body): Update
	the warning on region management. Change the way the Ghost and
	SPARK modes are saved and restored.
	(Set_Instance_Env): Add a
	warning about SPARK mode management. Change the way SPARK mode
	is saved and restored.
	* sem_ch13.adb (Build_Predicate_Functions):
	Change the way the Ghost mode is saved and restored.
	(Build_Predicate_Function_Declaration): Change the way the Ghost
	mode is saved and restored.
	* sem_elab.adb (Check_Elab_Calls): Add a warning about SPARK
	mode management. Change the way SPARK mode is saved and restored.
	* sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part):
	Change the way the Ghost mode is saved and restored.
	(Analyze_Initial_Condition_In_Decl_Part): Change the way
	the Ghost mode is saved and restored.
	(Analyze_Pragma):
	Change the way the Ghost mode is saved and restored.
	(Analyze_Pre_Post_Condition_In_Decl_Part): Change the way the
	Ghost mode is saved and restored.
	* sem_util.adb (Install_SPARK_Mode): New routine.
	(Restore_SPARK_Mode): New routine.
	(Save_SPARK_Mode_And_Set): Removed.
	(Set_SPARK_Mode): New routine.
	* sem_util.ads (Install_SPARK_Mode): New routine.
	(Restore_SPARK_Mode): New routine.
	(Save_SPARK_Mode_And_Set): Removed.
	(Set_SPARK_Mode): New routine.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb, sem_util.ads (From_Nested_Package): New predicate
	to determine whether a type is declared in a local package that
	has not yet been frozen.
	* freeze.adb (Freeze_Before): Use new predicate to determine
	whether a local package must be installed on the scope stack
	in order to evaluate in the proper scope actions generated by
	aspect specifications, such as Predicate
	* sem_ch13.adb: Simplify code in Analyze_Aspects_At_Freeze_Point
	using new predicate.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_warn.adb (Warn_On_Constant_Valid_Condition): Do not consider
	comparisons between non- scalar expressions expressions because
	their values cannot be invalidated.
	* sem_warn.ads (Warn_On_Constant_Valid_Condition): Update the
	comment on usage.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* par_sco.adb: Minor reformatting.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Analyze_Aspects_At_Freeze_Point): If entity
	is a type from an unfrozen local package, install package to
	complete the analysis of delayed aspects of the type.

2017-04-25  Tristan Gingold  <gingold@adacore.com>

	* bingen.adb (System_Version_Control_Used): New variable.
	(Resolve_Binder_Options): Set the above variable.
	(Gen_Output_File_Ada): Conditionally call Gen_Versions.
	(Gen_Elab_Order): Emit blank line before.

2017-04-25  Justin Squirek  <squirek@adacore.com>

	* sem_cat.adb (Validate_RT_RAT_Component): Added
	an extra check to ignore incomplete types.

2017-04-25  Thomas Quinot  <quinot@adacore.com>

	* sem_prag.adb (Analyze_Pragma, case Pragma_Check): Remove
	bogus circuitry for the case where Name is Predicate.

2017-04-25  Thomas Quinot  <quinot@adacore.com>

	* par_sco.adb(Traverse_Declarations_Or_Statements.Traverse_Aspects):
	Create SCOs for Predicate aspects in disabled
	state initially, to be enabled later on by...
	* sem_ch13.adb (Build_Predicate_Functions.Add_Predicates): Mark
	SCO for predicate as enabled.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* comperr.adb (Compiler_Abort): Remove now obsolete pair of
	pragmas Warnings Off / On.
	* namet.adb (Finalize): Remove now obsolete pair of pragmas
	Warnings Off / On.
	* output.adb: Remove now obsolete pair of pragmas Warnings Off / On.
	* sem_warn.adb (Warn_On_Constant_Valid_Condition): Do not
	consider comparisons between static expressions because their
	values cannot be invalidated.
	* urealp.adb (Tree_Read): Remove now obsolete pair of pragmas
	Warnings Off / On.
	(Tree_Write): Remove now obsolete pair of pragmas Warnings Off / On.
	* usage.adb Remove now obsolete pair of pragmas Warnings Off / On.

2017-04-25  Bob Duff  <duff@adacore.com>

	* sem_elab.adb (In_Task_Activation): Trace internal calls in
	task bodies.

2017-04-25  Gary Dismukes  <dismukes@adacore.com>

	* sem_prag.adb, sem_warn.adb, sem_eval.adb: Minor reformatting and
	typo fixes.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* comperr.adb (Compiler_Abort): Add a pair of pragma Warnings
	On/Off to defend against a spurious warning in conditional
	compilation.
	* exp_ch4.adb (Rewrite_Comparison): Reimplemented.
	* namet.adb (Finalize): Add a pair of pragma Warnings On/Off to
	defend against a spurious warning in conditional compilation.
	* output.adb Add a pair of pragma Warnings On/Off to defend
	against a spurious warning in conditional compilation.
	* sem_eval.adb (Eval_Relational_Op): Major code clean up.
	(Fold_General_Op): New routine.
	(Fold_Static_Real_Op): New routine.
	(Test_Comparison): New routine.
	* sem_eval.ads (Test_Comparison): New routine.
	* sem_warn.adb (Is_Attribute_Constant_Comparison): New routine.
	(Warn_On_Constant_Valid_Condition): New routine.
	(Warn_On_Known_Condition): Use Is_Attribute_Constant_Comparison
	to detect a specific case.
	* sem_warn.adb (Warn_On_Constant_Valid_Condition): New routine.
	* urealp.adb (Tree_Read): Add a pair of pragma Warnings On/Off
	to defend against a spurious warning in conditional compilation.
	(Tree_Write): Add a pair of pragma Warnings On/Off to defend
	against a spurious warning in conditional compilation.
	* usage.adb Add a pair of pragma Warnings On/Off to defend
	against a spurious warning in conditional compilation.

2017-04-25  Arnaud Charlet  <charlet@adacore.com>

	* sinfo.ads, sem_ch13.adb: Update comment.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_util.adb (Is_Post_State): A reference to a
	generic in out parameter is considered a change in the post-state
	of a subprogram.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Load_Parent_Of_Generic); When retrieving the
	declaration of a subprogram instance within its wrapper package,
	skip over null statements that may result from the rewriting of
	ignored pragmas.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* exp_attr.adb (Expand_Attribute_Reference, case 'Read):
	If the type is an unchecked_union, replace the attribute with
	a Raise_Program_Error (rather than inserting such before the
	attribute reference) to handle properly the case where we are
	processing a component of a larger record, and we need to prevent
	further expansion for the unchecked union.
	(Expand_Attribute_Reference, case 'Write): If the type is
	an unchecked_union, check whether enclosing scope is a Write
	subprogram. Replace attribute with a Raise_Program_Error if the
	discriminants of the unchecked_union type have not default values
	because such a use is erroneous..

2017-04-25  Tristan Gingold  <gingold@adacore.com>

	* exp_ch9.adb (Expand_N_Task_Type_Declaration):
	Add relative_deadline to task record on edf profile.
	(Make_Initialize_Protection): Pass deadline_floor value on edf profile.
	(Make_Task_Create_Call): Pass relative_deadline value.
	* par-prag.adb (Prag): Handle Pragma_Deadline_Floor.
	* s-rident.ads (Profile_Name): Add GNAT_Ravenscar_EDF.
	(Profile_Info): Add info for GNAT_Ravenscar_EDF.
	* sem_prag.adb (Set_Ravenscar_Profile): Handle
	GNAT_Ravenscar_EDF (set scheduling policy).
	(Analyze_Pragma): Handle GNAT_Ravenscar_EDF profile and Deadline_Floor
	pragma.
	(Sig_Flags): Add choice for Pragma_Deadline_Floor.
	* snames.ads-tmpl (Name_Deadline_Floor, Name_Gnat_Ravenscar_EDF):
	New names.
	(Pragma_Deadline_Floor): New pragma.
	* targparm.adb (Get_Target_Parameters): Recognize
	GNAT_Ravenscar_EDF profile.

2017-04-25  Arnaud Charlet  <charlet@adacore.com trojanek>

	* gnatvsn.ads (Library_Version): Bump to 8. Update comment.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_aux.adb (Nearest_Ancestor): Use original node of type
	declaration to locate nearest ancestor, because derived
	type declarations for record types are rewritten as record
	declarations.
	* sem_ch13.adb (Add_Call): Use an unchecked conversion to handle
	properly derivations that are completions of private types.
	(Add_Predicates): If type is private, examine rep. items of full
	view, which may include inherited predicates.
	(Build_Predicate_Functions): Ditto.

2017-04-25  Javier Miranda  <miranda@adacore.com>

	* sem_util.adb (New_Copy_Tree.Visit_Entity): Extend previous change
	to generate new entities for subtype declarations located in
	Expression_With_Action nodes.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_elab.adb (Check_A_Call): Remove
	local variables Is_DIC_Proc and Issue_In_SPARK. Verify the
	need for Elaborate_All when SPARK elaboration checks are
	required. Update the checks for instances, variables, and calls
	to Default_Initial_Condition procedures.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* aspects.ads, aspects.adb: Make the GNAT-specific pragma No_Inline
	into a boolean aspect, in analogy with the Ada aspect No_Return.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch6.adb, sem_ch13.adb, sem_ch6.adb: Minor reformatting.

2017-04-25  Bob Duff  <duff@adacore.com>

	* sem_res.adb (Resolve_Actuals): Under -gnatd.q, reset
	Is_True_Constant for an array variable that is passed to a
	foreign function as an 'in' parameter.
	* debug.adb: Document -gnatd.q.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Expression_Function): If expression function
	is completion and return type is an access type do not freeze
	designated type: this will be done in the process of freezing
	the expression if needed.
	(Freeze_Expr_Types): Check whether type is complete before
	creating freeze node, to provide a better error message if
	reference is premature.
	* sem_ch13.adb (Check_Indexing_Functions): Ignore inherited
	functions created by type derivations.

2017-04-25  Pascal Obry  <obry@adacore.com>

	* g-sercom.ads: Add simple usage of GNAT.Serial_Communication.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_res.adb (Resolve_Type_Conversion):
	When resolving against any fixed type, set the type of the
	operand as universal real when the operand is a multiplication
	or a division where both operands are of any fixed type.
	(Unique_Fixed_Point_Type): Add local variable ErrN. Improve the
	placement of an error message by pointing to the operand of a
	type conversion rather than the conversion itself.

2017-04-25  Thomas Quinot  <quinot@adacore.com>

	* sem_ch13.adb (Build_Predicate_Function_Declaration): Set
	Needs_Debug_Info when producing SCOs.

2017-04-25  Thomas Quinot  <quinot@adacore.com>

	* exp_ch6.adb (Add_Finalization_Master_Actual_To_Build_In_Place_Call):
	Always pass a null finalization master for a library level named access
	type to which a pragme No_Heap_Finalization applies.

2017-04-25  Arnaud Charlet  <charlet@adacore.com trojanek>

	PR ada/78845

	* a-ngcoar.adb, a-ngrear.adb (Inverse): call Unit_Matrix with First_1
	set to A'First(2) and vice versa.

2017-04-25  Yannick Moy  <moy@adacore.com>

	* freeze.adb (Freeze_Record_Type): Remove obsolete
	rule on volatile tagged record restriction on SPARK code.

2017-04-25  Yannick Moy  <moy@adacore.com>

	* sem_prag.adb (minor) Fix SPARK RM reference.

2017-04-25  Yannick Moy  <moy@adacore.com>

	* sem_util.adb, sem_util.ads (Unique_Defining_Entity): Update
	comment to reflect which entity is chosen as unique entity.
	(Unique_Entity): Return full view instead of private spec for
	protected type or task type. Fix possible incorrect access when
	called on entry.

2017-04-25  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_res.adb (Set_Slice_Subtype): Treat specially bit-packed
	array types only instead of all packed array types.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Conforming_Types): If type of formal as a specified
	dimension system, verify that dimensions of both match.
	(Check_Conformance): Add error message in case of dimension
	mismatch.
	* sem_dim.ads, sem_dim.adb (Dimensions_Match): New utility
	predicate.

2017-04-25  Arnaud Charlet  <charlet@adacore.com trojanek>

	* gnatxref.adb, gnatfind.adb: Avoid using the term project file,
	confusing.

2017-04-25  Yannick Moy  <moy@adacore.com>

	* sem_util.adb: Minor refactoring.
	* freeze.adb (Freeze_Record_Type): Fix checking of SPARK RM 7.1.3(5).

2017-04-25  Claire Dross  <dross@adacore.com>

	* sem_prag.adb (Collect_Inherited_Class_Wide_Conditions): Go to
	ultimate alias when accessing overridden operation. Indeed, if the
	overridden operation is itself inherited, it won't have any explicit
	contract.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_warn.adb (Warn_On_Overlapping_Actuals): There can be no
	overlap if the two formals have different types, because formally
	the corresponding actuals cannot designate the same objects.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_dim.adb (Dimensions_Of_Operand): minot cleanups: a) If
	dimensions are present from context, use them.	b) If operand is
	a static constant rewritten as a literal, obtain the dimensions
	from the original declaration, otherwise use dimensions of type
	established from context.

2017-04-25  Yannick Moy  <moy@adacore.com>

	* sem_util.adb (Is_Effectively_Volatile): Protect against base type
	of array that is private.

2017-04-25  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch3.adb, exp_util.adb, sem_prag.adb, exp_ch4.adb: Minor
	reformatting.

2017-04-25  Yannick Moy  <moy@adacore.com>

	* a-ngelfu.adb, a-ngelfu.ads: Add SPARK_Mode On on spec, Off
	on body.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_disp.adb (Check_Dispatching_Context): Add guard to refine
	the check that recognizes a call to a private overridding and
	replaces the called subprogram with its alias.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb: Minor reformatting.

2017-04-25  Justin Squirek  <squirek@adacore.com>

	* exp_ch3.adb (Freeze_Type): Add condition to always treat
	interface types as a partial view of a private type for the
	generation of invariant procedure bodies.
	* exp_util.adb, exp_util.ads (Add_Inherited_Invariants):
	Add a condition to get the Corresponding_Record_Type for
	concurrent types, add condition to return in the absence of a
	class in the pragma, remove call to Replace_Type_References,
	and add call to Replace_References.
	(Add_Interface_Invariatns),
	(Add_Parent_Invariants): Modify call to Add_Inherited_Invariants
	to including the working type T.
	(Add_Own_Invariants): Remove
	legacy condition for separate units, remove dispatching for ASIS
	and save a copy of the expression in the pragma expression.
	(Build_Invariant_Procedure_Body): Default initalize vars,
	remove return condition on interfaces, always use the
	private type for interfaces, and move the processing of types
	until after the processing of invariants for the full view.
	(Build_Invariant_Procedure_Declaration): Remove condition
	to return if an interface type is encountered and add
	condition to convert the formal parameter to its class-wide
	counterpart if Work_Typ is abstract.
	(Replace_Type): Add call to Remove_Controlling_Arguments.
	(Replace_Type_Ref): Remove class-wide dispatching for the current
	instance of the type.
	(Replace_Type_References): Remove parameter "Derived"
	(Remove_Controlling_Arguments): Created in order to removing
	the controlliong argument from calls to primitives in the case
	of the formal parameter being an class-wide abstract type.
	* sem_ch3.adb (Build_Assertion_Bodies_For_Type): Almost identical
	to the change made to Freeze_Type in exp_ch3. Add a condition
	to treat interface types as a partial view.
	* sem_prag.adb (Analyze_Pragma): Modify parameters in the call
	to Build_Invariant_Procedure_Declaration to properly generate a
	"partial" invariant procedure when Typ is an interface.

2017-04-25  Bob Duff  <duff@adacore.com>

	* a-numeri.ads: Go back to using brackets encoding for the Greek
	letter pi.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Derive_Subprogram): Implement rule in RM 6.1.1
	(10-15): if derived type T with progenitors is abstract,
	and primitive P of this type inherits non-trivial classwide
	preconditions from both a parent operation and from an interface
	operation, then the inherited operation is abstract if the parent
	operation is not null.
	* sem_disp.ads, sem_disp.adb: replace function Covers_Some_Interface
	with Covered_Interface_Op to yield the actual interface operation
	that is implemented by a given inherited operation.

2017-04-25  Javier Miranda  <miranda@adacore.com>

	* exp_ch4.adb (Expand_N_Op_Expon): Relocate left
	and right operands after performing the validity checks. Required
	because validity checks may remove side effects from the operands.

2017-04-25  Javier Miranda  <miranda@adacore.com>

	* exp_attr.adb (Attribute_Unrestricted_Access):
	Do not disable implicit type conversion.  Required to generate
	code that displaces the pointer to reference the secondary
	dispatch table.

2017-04-25  Pascal Obry  <obry@adacore.com>

	* prj-attr.adb, snames.ads-tmpl: Add package Install's
	Required_Artifacts attribute.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Same_Value): String literals are compile-time
	values, and comparing them must use Expr_Value_S.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Complete_Object_Interpretation): If an explicit
	dereference is introduced for the object, and the object is
	overloaded, do not check whether it is aliased, because it may
	include an implicit dereference.
	* sem_type.adb (Disambiguate): If two interpretations are access
	attribute types with the same designated type keep either of
	them and do not report an ambiguity.  A true ambiguity will be
	reported elsewhere.

2017-04-25  Bob Duff  <duff@adacore.com>

	* a-numeri.ads: Change the encoding of Greek letter Pi from
	brackets encoding to UTF-8.  Use pragma Wide_Character_Encoding
	to indicate the encoding. We considered using a byte order mark
	(BOM), but that causes various trouble (misc software eats the
	BOM, if you have a patch with a BOM, then it's not at the start
	of the patch, so it's not a BOM, the BOM affects with-ing files,
	etc.).
	* scng.adb, s-wchcnv.adb: Minor.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch3.adb, sem_ch8.adb, sem_disp.adb: Minor reformatting.
2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Add_Internal_Interface_Entities): Move
	Has_Non_Trivial_Precondition to sem_util. for use elsewhere.
	Improve error message on operations that inherit non-conforming
	classwide preconditions from ancestor and progenitor.
	* sem_util.ads, sem_util.adb (Has_Non_Trivial_Precondition):
	moved here from sem_ch3.
	* sem_ch8.adb (Analyze_Subprogram_Renaming): Implement legality
	check given in RM 6.1.1 (17) concerning renamings of overriding
	operations that inherits class-wide preconditions from ancestor
	or progenitor.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Build_Adjust_Or_Finalize_Statements): Code cleanup.
	(Build_Adjust_Statements): Code cleanup.
	(Build_Finalizer): Update the initialization of
	Exceptions_OK.
	(Build_Finalize_Statements): Code cleanup.
	(Build_Initialize_Statements): Code cleanup.
	(Make_Deep_Array_Body): Update the initialization of
	Exceptions_OK.
	(Make_Deep_Record_Body): Update the initialization of Exceptions_OK.
	(Process_Object_Declaration): Generate a null exception handler only
	when exceptions are allowed.
	(Process_Transients_In_Scope): Update the initialization of
	Exceptions_OK.
	* exp_util.ads, exp_util.adb (Exceptions_In_Finalization_OK): New
	routine.
	* sem_ch11.adb (Analyze_Exception_Handlers): Do not check any
	restrictions when the handler is internally generated and the
	mode is warnings.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Has_Non_Trivial_Precondition): New predicate to
	enforce legality rule on classwide preconditions inherited from
	both an ancestor and a progenitor (RM 6.1.1 (10-13).
	* sem_disp.adb (Check_Dispatching_Context): A call to an abstract
	subprogram need not be dispatching if it appears in a precondition
	for an abstract or null subprogram.

2017-04-25  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch10.adb: Minor typo fix.

2017-04-25  Arnaud Charlet  <charlet@adacore.com>

	* gcc-interface/Makefile.in: Cleanup VxWorks targets.

2017-04-25  Eric Botcazou  <ebotcazou@adacore.com>

	* fname.adb (Is_Internal_File_Name): Arrange for the slices to
	have a length which is a power of 2.
	(Is_Predefined_File_Name): Likewise. Adjust comment.

2017-04-25  Bob Duff  <duff@adacore.com>

	* exp_aggr.adb (Component_Count): Protect the
	arithmetic from attempting to convert a value >= 2**31 to Int,
	which would otherwise raise Constraint_Error.

2017-04-25  Bob Duff  <duff@adacore.com>

	* opt.ads (Locking_Policy): Fix incorrect documentation. The
	first character of the policy name is not unique.

2017-04-25  Bob Duff  <duff@adacore.com>

	* s-fileio.adb (Name): Raise Use_Error if the file is a temp file.
	* s-ficobl.ads (Is_Temporary_File): Remove incorrect comment
	about this flag not being used. It was already used, and it is
	now used more.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb Flag301 is now known as Ignore_SPARK_Mode_Pragmas.
	(Ignore_SPARK_Mode_Pragmas): New routine.
	(Set_Ignore_SPARK_Mode_Pragmas): New routine.
	(Write_Entity_Flags): Add an entry for Ignore_SPARK_Mode_Pragmas.
	* einfo.ads Add new attribute Ignore_SPARK_Mode_Pragmas and update
	related entities.
	(Ignore_SPARK_Mode_Pragmas): New routine
	along with pragma Inline.
	(Set_Ignore_SPARK_Mode_Pragmas): New routine along with pragma Inline.
	* opt.ads Rename flag Ignore_Pragma_SPARK_Mode to
	Ignore_SPARK_Mode_Pragmas_In_Instance.
	* sem_ch6.adb (Analyze_Subprogram_Body_Helper):
	Save and restore the value of global flag
	Ignore_SPARK_Mode_Pragmas_In_Instance. Set or reinstate the value
	of global flag Ignore_SPARK_Mode_Pragmas_In_Instance when either
	the corresponding spec or the body must ignore all SPARK_Mode
	pragmas found within.
	(Analyze_Subprogram_Declaration): Mark
	the spec when it needs to ignore all SPARK_Mode pragmas found
	within to allow the body to infer this property in case it is
	instantiated or inlined later.
	* sem_ch7.adb (Analyze_Package_Body_Helper): Save and restore the
	value of global flag Ignore_SPARK_Mode_Pragmas_In_Instance. Set
	the value of global flag Ignore_SPARK_Mode_Pragmas_In_Instance
	when the corresponding spec also ignored all SPARK_Mode pragmas
	found within.
	(Analyze_Package_Declaration): Mark the spec when
	it needs to ignore all SPARK_Mode pragmas found within to allow
	the body to infer this property in case it is instantiated or
	inlined later.
	* sem_ch12.adb (Analyze_Formal_Package_Declaration):
	Save and restore the value of flag
	Ignore_SPARK_Mode_Pragmas_In_Instance. Mark the
	formal spec when it needs to ignore all SPARK_Mode
	pragmas found within to allow the body to infer this
	property in case it is instantiated or inlined later.
	(Analyze_Package_Instantiation): Save and restore the value
	of global flag Ignore_SPARK_Mode_Pragmas_In_Instance. Mark
	the instance spec when it needs to ignore all SPARK_Mode
	pragmas found within to allow the body to infer this
	property in case it is instantiated or inlined later.
	(Analyze_Subprogram_Instantiation): Save and restore the value
	of global flag Ignore_SPARK_Mode_Pragmas_In_Instance. Mark the
	instance spec and anonymous package when they need to ignore
	all SPARK_Mode pragmas found within to allow the body to infer
	this property in case it is instantiated or inlined later.
	(Instantiate_Package_Body): Save and restore the value of global
	flag Ignore_SPARK_Mode_Pragmas_In_Instance. Set the value of
	global flag Ignore_SPARK_Mode_Pragmas_In_Instance when the
	corresponding instance spec also ignored all SPARK_Mode pragmas
	found within.
	(Instantiate_Subprogram_Body): Save and restore the
	value of global flag Ignore_SPARK_Mode_Pragmas_In_Instance. Set
	the value of global flag Ignore_SPARK_Mode_Pragmas_In_Instance
	when the corresponding instance spec also ignored all SPARK_Mode
	pragmas found within.
	* sem_prag.adb (Analyze_Pragma): Update the reference to
	Ignore_Pragma_SPARK_Mode.
	* sem_util.adb (SPARK_Mode_Is_Off): A construct which ignored
	all SPARK_Mode pragmas defined within yields mode "off".

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* bindgen.adb, exp_dbug.adb, errout.adb, fname.adb: Minor reformatting.

2017-04-25  Bob Duff  <duff@adacore.com>

	* exp_atag.adb (Build_CW_Membership): Add "Suppress =>
	All_Checks" to avoid generating unnecessary checks.
	* exp_ch4.adb (Expand_N_In, Make_Tag_Check): Add "Suppress =>
	All_Checks".
	* sem.ads: Fix comment.
	* expander.ads: Fix comment.
	* exp_atag.ads: Fix comment: "Index = 0" should be
	"Index >= 0".

2017-04-25  Gary Dismukes  <dismukes@adacore.com>

	* s-taprop-linux.adb: Minor editorial fixes.

2017-04-25  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_util.adb (New_Copy_Tree): Put back the declarations of the
	hash tables at library level.  Reinstate the NCT_Hash_Tables_Used
	variable and set it to True whenever the main hash table is
	populated.  Short- circuit the Assoc function if it is false
	and add associated guards.

2017-04-25  Olivier Hainque  <hainque@adacore.com>

	* bindgen.adb (Gen_Elab_Calls): Also update counter of lone
	specs without elaboration code that have an elaboration counter
	nevertheless, e.g.  when compiled with -fpreserve-control-flow.
	* sem_ch10.adb (Analyze_Compilation_Unit):
	Set_Elaboration_Entity_Required when requested to preserve
	control flow, to ensure the unit elaboration is materialized at
	bind time, resulting in the inclusion of the unit object file
	in the executable closure at link time.

2017-04-25  Pierre-Marie de Rodat  <derodat@adacore.com>

	* exp_dbug.adb: In Debug_Renaming_Declaration,
	when dealing with indexed component, accept to produce a renaming
	symbol when the index is an IN parameter or when it is a name
	defined in an outer scope.

2017-04-25  Yannick Moy  <moy@adacore.com>

	* errout.adb (Error_Msg): Adapt continuation
	message in instantiations and inlined bodies for info messages.

2017-04-25  Eric Botcazou  <ebotcazou@adacore.com>

	* fname.adb (Has_Internal_Extension): Add pragma Inline.
	Use direct 4-character slice comparisons.
	(Has_Prefix): Add
	pragma Inline.	(Has_Suffix): Delete.
	(Is_Internal_File_Name):
	Test Is_Predefined_File_Name first.
	(Is_Predefined_File_Name):
	Use direct slice comparisons as much as possible and limit all
	comparisons to at most 8 characters.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb (Insert_Valid_Check): Code cleanup.
	* exp_ch6.adb (Add_Validation_Call_By_Copy_Code): New routine.
	(Expand_Actuals): Generate proper copy-back for a validation
	variable when it acts as the argument of a type conversion.
	* sem_util.adb (Is_Validation_Variable_Reference): Augment the
	predicate to operate on type qualifications.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb, exp_ch6.adb, binde.adb, sem_disp.adb, s-fileio.adb:
	Minor reformatting.

2017-04-25  Bob Duff  <duff@adacore.com>

	* sem_prag.adb (No_Return): Give an error if the pragma applies
	to a body. Specialize the error for the specless body case,
	as is done for (e.g.) pragma Convention.
	* debug.adb: Add switch -gnatd.J to disable the above legality
	checks. This is mainly for use in our test suite, to avoid
	rewriting a lot of illegal (but working) code.	It might also
	be useful to customers. Under this switch, if a pragma No_Return
	applies to a body, and the procedure raises an exception (as it
	should), the pragma has no effect. If the procedure does return,
	execution is erroneous.

2017-04-25  Bob Duff  <duff@adacore.com>

	* exp_ch6.adb (Expand_Actuals): This is the
	root of the problem. It took N as an 'in out' parameter, and in
	some cases, rewrote N, but then set N to Original_Node(N). So
	the node returned in N had no Parent. The caller continued
	processing of this orphaned node. In some cases that caused a
	crash (e.g. Remove_Side_Effects climbs up Parents in a loop,
	and trips over the Empty Parent). The solution is to make N an
	'in' parameter.  Instead of rewriting it, return the list of
	post-call actions, so the caller can do the rewriting later,
	after N has been fully processed.
	(Expand_Call_Helper): Move most of Expand_Call here. It has
	too many premature 'return' statements, and we want to do the
	rewriting on return.
	(Insert_Post_Call_Actions): New procedure to insert the post-call
	actions in the appropriate place. In the problematic case,
	that involves rewriting N as an Expression_With_Actions.
	(Expand_Call): Call the new procedures Expand_Call_Helper and
	Insert_Post_Call_Actions.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Inherits_Class_Wide_Pre): Cleanup code, handle
	properly type derived from generic formal types, to handle
	properly modified version of ACATS 4.1B B611017.

2017-04-25  Javier Miranda  <miranda@adacore.com>

	* exp_unst.adb (Subp_Index): Adding missing
	support for renamings and functions that return a constrained
	array type (i.e. functions for which the frontend built a
	procedure with an extra out parameter).

2017-04-25  Pascal Obry  <obry@adacore.com>

	* s-string.adb: Minor code clean-up.

2017-04-25  Bob Duff  <duff@adacore.com>

	* s-os_lib.ads, s-os_lib.adb (Non_Blocking_Wait_Process): New
	procedure.
	* adaint.h, adaint.c (__gnat_portable_no_block_wait): C support
	function for Non_Blocking_Wait_Process.

2017-04-25  Bob Duff  <duff@adacore.com>

	* prep.adb (Preprocess): Remove incorrect
	Assert. Current character can be ASCII.CR.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Set_Convention_From_Pragma): Cleanup code for
	convention Stdcall, which has a number of exceptions. Convention
	is legal on a component declaration whose type is an anonymous
	access to subprogram.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch4.adb: sem_ch4.adb Various reformattings.
	(Try_One_Prefix_Interpretation): Use the base type when dealing
	with a subtype created for purposes of constraining a private
	type with discriminants.

2017-04-25  Javier Miranda  <miranda@adacore.com>

	* einfo.ads, einfo.adb (Has_Private_Extension): new attribute.
	* warnsw.ads, warnsw.adb (All_Warnings): Set warning on late
	dispatching primitives (Restore_Warnings): Restore warning on
	late dispatching primitives (Save_Warnings): Save warning on late
	dispatching primitives (Do_Warning_Switch): Use -gnatw.j/-gnatw.J
	to enable/disable this warning.
	(WA_Warnings): Set warning on late dispatching primitives.
	* sem_ch3.adb (Analyze_Private_Extension_Declaration): Remember
	that its parent type has a private extension.
	* sem_disp.adb (Warn_On_Late_Primitive_After_Private_Extension):
	New subprogram.
	* usage.adb: Document -gnatw.j and -gnatw.J.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb, checks.adb, sem_prag.adb, eval_fat.adb: Minor
	reformatting.

2017-04-25  Bob Duff  <duff@adacore.com>

	* binde.adb (Validate): Do not pass dynamic strings
	to pragma Assert, because older compilers do not support that.

2017-04-25  Bob Duff  <duff@adacore.com>

	* s-fileio.adb (Close): When a temp file is
	closed, delete it and clean up its Temp_File_Record immediately,
	rather than waiting until later.
	(Temp_File_Record): Add File
	component, so Close can know which Temp_File_Record corresponds
	to the file being closed.
	(Delete): Don't delete temp files,
	because they are deleted by Close.
	(Open): Set the File component
	of Temp_File_Record. This requires moving the creation of the
	Temp_File_Record to the end, after the AFCB has been created.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb (Insert_Valid_Check): Do not generate
	a validity check when inside a generic.

2017-04-25  Yannick Moy  <moy@adacore.com>

	* sem_res.adb (Resolve_Type_Conversion): Fix bad logic.

2017-04-25  Arnaud Charlet  <charlet@adacore.com>

	* snames.ads-tmpl (Snames): More names for detecting predefined
	potentially blocking subprograms.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Analyze_Pre_Post_Condition): The rules
	concerning inheritance of class-wide preconditions do not apply
	to postconditions.

2017-04-25  Bob Duff  <duff@adacore.com>

	* s-ficobl.ads: Minor comment fix.

2017-04-25  Yannick Moy  <moy@adacore.com>

	* checks.adb (Apply_Scalar_Range_Check): Analyze precisely
	conversions from float to integer in GNATprove mode.
	(Apply_Type_Conversion_Checks): Make sure in GNATprove mode
	to call Apply_Type_Conversion_Checks, so that range checks
	are properly positioned when needed on conversions, including
	when converting from float to integer.	(Determine_Range): In
	GNATprove mode, take into account the possibility of conversion
	from float to integer.
	* sem_res.adb (Resolve_Type_Conversion): Only enforce range
	check on conversions from fixed-point to integer, not anymore
	on conversions from floating-point to integer, when in GNATprove
	mode.

2017-04-25  Yannick Moy  <moy@adacore.com>

	* checks.adb (Determine_Range_R): Special case type conversions
	from integer to float in order to get bounds in that case too.
	* eval_fat.adb (Machine): Avoid issuing warnings in GNATprove
	mode, for computations involved in interval checking.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb (Insert_Valid_Check): Partially reimplement validity
	checks.
	* einfo.adb Node36 is now used as Validated_Object.
	(Validated_Object): New routine.
	(Set_Validated_Object): New routine.
	(Write_Field36_Name): Add an entry for Validated_Object.
	* einfo.ads Add new attribute Validated_Object along with
	usage in entities.
	(Validated_Object): New routine along with pragma Inline.
	(Set_Validated_Object): New routine along with pragma Inline.
	* exp_attr.adb (Make_Range_Test): Add processing for validation
	variables to avoid extra reads and copies of the prefix.
	* exp_ch6.adb (Expand_Actuals): Add copy-back for validation
	variables in order to reflect any changes done in the variable
	back into the original object.
	* sem_util.adb (Is_Validation_Variable_Reference): New routine.
	* sem_util.ads (Is_Validation_Variable_Reference): New routine.

2017-04-25  Steve Baird  <baird@adacore.com>

	* exp_ch7.adb (Build_Array_Deep_Procs,
	Build_Record_Deep_Procs, Make_Finalize_Address_Body): Don't
	generate Finalize_Address routines for CodePeer.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Inherits_Class_Wide_Pre): subsidiary of
	Analyze_Pre_Post_Condition, to implement the legality checks
	mandated by AI12-0131: Pre'Class shall not be specified for an
	overriding primitive subprogram of a tagged type T unless the
	Pre'Class aspect is specified for the corresponding primitive
	subprogram of some ancestor of T.

2017-04-25  Bob Duff  <duff@adacore.com>

	* sem_ch8.adb (Use_One_Type): If a use_type_clause
	is redundant, set its Used_Operations to empty. This is only
	necessary for use clauses that appear in the parent of a generic
	child unit, because those use clauses get reanalyzed when we
	instantiate the generic, and we don't want the Used_Operations
	carried over from the original context (where it was probably
	not redundant).

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch6.adb: Minor reformatting.

2017-04-25  Bob Duff  <duff@adacore.com>

	* sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings):
	Use Source_Index (Current_Sem_Unit) to find the correct casing.
	* exp_prag.adb (Expand_Pragma_Check): Use Source_Index
	(Current_Sem_Unit) to find the correct casing.
	* par.adb (Par): Null out Current_Source_File, to ensure that
	the above bugs won't rear their ugly heads again.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Find_Type): For an attribute reference
	'Class, if prefix type is synchronized and previous errors
	have suppressed the creation of the corresponding record type,
	create a spurious class-wide for the synchonized type itself,
	to catch other misuses of the attribute

2017-04-25  Steve Baird  <baird@adacore.com>

	* exp_ch6.adb (Expand_Simple_Function_Return): if CodePeer_Mode
	is True, then don't generate the accessibility check for the
	tag of a tagged result.
	* exp_intr.adb (Expand_Dispatching_Constructor_Call):
	if CodePeer_Mode is True, then don't generate the
	tag checks for the result of call to an instance of
	Ada.Tags.Generic_Dispatching_Constructor (i.e., both the "is a
	descendant of" check and the accessibility check).

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb: Code cleanups.
	* a-strbou.ads: minor whitespace fix in Trim for bounded strings.
	* sem_ch8.ads: Minor comment fix.

2017-04-25  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch4.adb (Library_Level_Target): New function.
	(Expand_Concatenate): When optimization is enabled, also expand
	the operation out-of-line if the concatenation is present within
	the expression of the declaration of a library-level object and
	not only if it is the expression of the declaration.

2017-04-25  Bob Duff  <duff@adacore.com>

	* freeze.adb (Freeze_Object_Declaration): Do
	not Remove_Side_Effects if there is a pragma Linker_Section,
	because in that case we want static initialization in the
	appropriate section.

2017-04-25  Gary Dismukes  <dismukes@adacore.com>

	* exp_dbug.adb: Minor rewording and reformatting.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Statically_Denotes_Object): New predicate, to
	handle the proposed changes to rules concerning potentially
	unevaluated expressions, to include selected components that
	do not depend on discriminants, and indexed components with
	static indices.
	* sem_util.adb (Is_Potentially_Unevaluated): Add check for
	predicate in quantified expression, and fix bugs in the handling
	of case expressions and membership test.
	(Analyze_Attribute_Old_Result): use new predicate.
	(Analyze_Attribute, case Loop_Entry): ditto.

2017-04-25  Bob Duff  <duff@adacore.com>

	* s-secsta.adb (SS_Info): Add a comment
	explaining why we don't need to walk all the chunks in order to
	compute the total size.

2017-04-25  Bob Duff  <duff@adacore.com>

	* namet.ads, namet.adb (Global_Name_Buffer): Increase the length
	of the global name buffer to 4*Max_Line_Length.

2017-04-25  Javier Miranda  <miranda@adacore.com>

	* exp_ch8.adb (Expand_N_Object_Renaming_Declaration): When creating a
	renaming entity for debug information, mark the entity as needing debug
	info if it comes from sources.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Remove the
	restriction converning the use of 'Address where the prefix is
	of a controlled type.

2017-04-25  Pierre-Marie de Rodat  <derodat@adacore.com>

	* exp_dbug.adb: In Debug_Renaming_Declaration,
	skip slices that are made redundant by an indexed component
	access.
	* atree.h: New definition for Original_Node.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb, sem_prag.ads: Minor reformatting.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Check_Entry_Contract): Call
	Preanalyze_Spec_Expression so that resolution takes place as well.
	* sem_util.adb (Check_Internal_Protected_Use): Reject properly
	internal calls that appear in preconditions of protected
	operations, in default values for same, and in contract guards
	for contract cases in SPARK.

2017-04-25  Eric Botcazou  <ebotcazou@adacore.com>

	* a-numaux.ads: Fix description of a-numaux-darwin
	and a-numaux-x86.
	(Double): Define to Long_Float.
	* a-numaux-vxworks.ads (Double): Likewise.
	* a-numaux-darwin.ads
	(Double): Likewise.
	* a-numaux-libc-x86.ads (Double): Define to Long_Long_Float.
	* a-numaux-x86.ads: Fix package description.
	* a-numaux-x86.adb (Is_Nan): Minor tweak.
	(Reduce): Adjust and complete description. Call Is_Nan instead of
	testing manually. Use an integer temporary to hold rounded value.
	* a-numaux-darwin.adb (Reduce): Likewise.
	(Is_Nan): New function.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Selected_Component): Additional refinement
	on analysis of prefix whose type is a current instance of a
	synchronized type, but where the prefix itself is an entity that
	is an object.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Replace_Target): When rewriting the RHS, preserve
	the identity of callable entities therein, because they have been
	properly resolved, and prefixed calls may have been rewritten
	as normal calls.

2017-04-25  Patrick Bernardi  <bernardi@adacore.com>

	* exp_ch3.adb (Build_Init_Statements): Convert
	the expression of the pragma/aspect Secondary_Stack_Size to
	internal type System.Parameters.Size_Type before assigning
	it to the Secondary_Stack_Size component of the task type's
	corresponding record.

2017-04-25  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_eval.adb (Compile_Time_Compare): Reinstate the expr+literal
	(etc) optimizations when the type is modular and the offsets
	are equal.

2017-04-25  Eric Botcazou  <ebotcazou@adacore.com>

	* s-osinte-freebsd.ads: Minor comment tweaks

2017-04-25  Javier Miranda  <miranda@adacore.com>

	* urealp.adb (UR_Write): Reverse previous patch
	adding documentation on why we generate multiplications instead
	of divisions (needed to avoid expressions whose computation with
	large numbers may cause division by 0).

2017-04-25  Bob Duff  <duff@adacore.com>

	* erroutc.adb (Set_Specific_Warning_Off,
	Set_Warnings_Mode_Off): Use the correct source file for
	Stop. Was using Current_Source_File, which is only valid during
	parsing. Current_Source_File will have a leftover value from
	whatever file happened to be parsed last, because of a with_clause
	or something.

2017-04-25  Bob Duff  <duff@adacore.com>

	* lib.ads, lib.adb (In_Internal_Unit): New functions similar
	to In_Predefined_Unit, but including GNAT units.
	* sem_util.ads, sem_util.adb (Should_Ignore_Pragma): Replace
	with Should_Ignore_Pragma_Par and Should_Ignore_Pragma_Sem,
	because Should_Ignore_Pragma was not working reliably outside
	the parser, because Current_Source_File is not valid.
	* sem_prag.adb, exp_prag.adb: Call Should_Ignore_Pragma_Sem.
	* par-prag.adb: Call Should_Ignore_Pragma_Par.

2017-04-25  Arnaud Charlet  <charlet@adacore.com trojanek>

	* gnat1drv.adb (Gnat1Drv): Disable Generate_Processed_File in
	codepeer mode.

2017-04-25  Javier Miranda  <miranda@adacore.com>

	* urealp.adb (UR_Write): Fix output of constants with a base other
	that 10.

2017-04-25  Justin Squirek  <squirek@adacore.com>

	* sem_ch13.adb (Get_Interfacing_Aspects): Moved to sem_util.adb.
	* sem_prag.adb (Analyze_Pragma, Process_Import_Or_Interface):
	Add extra parameter for Process_Interface_Name.
	(Process_Interface_Name): Add parameter for pragma to analyze
	corresponding aspect.
	* sem_util.ads, sem_util.adb (Get_Interfacing_Aspects): Added
	from sem_ch13.adb

2017-04-25  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch7.adb, einfo.ads, sem_prag.adb: Minor reformatting and typo
	correction.

2017-04-25  Yannick Moy  <moy@adacore.com>

	* sem_res.adb (Resolve_Comparison_Op): Do not
	attempt evaluation of relational operations inside assertions.

2017-04-25  Justin Squirek  <squirek@adacore.com>

	* exp_util.adb (Add_Interface_Invariants):
	Restored, code moved back from Build_Invariant_Procedure_Body.
	(Add_Parent_Invariants): Restored, code moved back from
	Build_Invariant_Procedure_Body.
	(Build_Invariant_Procedure_Body):
	Remove refactored calls and integrated code from
	Add_Parent_Invariants and Add_Interface_Invariants.

2017-04-25  Johannes Kanig  <kanig@adacore.com>

	* errout.adb (Output_Messages): Adjust computation of total
	errors
	* erroutc.adb (Error_Msg): In statistics counts, deal
	correctly with informational messages that are not warnings.
	* errutil.adb (Finalize): adjust computation of total errors.

2017-04-25  Arnaud Charlet  <charlet@adacore.com trojanek>

	* terminals.c (__gnat_terminate_pid): New.
	* g-exptty.ads (Terminate_Process): New. Update comments.

2017-04-25  Arnaud Charlet  <charlet@adacore.com>

	* a-cfinve.ads, a-cofove.ads (Empty_Vector): add Global contract.

2017-04-25  Justin Squirek  <squirek@adacore.com>

	* sem_ch3.adb (Analyze_Declarations): Minor
	correction to comments, move out large conditional and scope
	traversal into a predicate.
	(Uses_Unseen_Lib_Unit_Priv): Predicate function made from extracted
	logic.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Selected_Component): Refine analysis
	of prefix whose type is a current instance of a synchronized
	type. If the prefix is an object this is an external call (or
	requeue) that can only access public operations of the object. The
	previous predicate was too restrictive, and did not allow public
	protected operations, only task entries.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch5.adb, fname.adb: Minor reformatting.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb (Is_Anonymous_Access_Type): New routine.
	* einfo.ads Update the placement of
	E_Anonymous_Access_Subprogram_Type along with all subtypes that
	mention the ekind.
	(Is_Anonymous_Access_Type): New routine.
	* exp_ch7.adb (Allows_Finalization_Master): Do not generate a
	master for an access type subject to pragma No_Heap_Finalization.
	* exp_util.adb (Build_Allocate_Deallocate_Proc): An object being
	allocated or deallocated does not finalization actions if the
	associated access type is subject to pragma No_Heap_Finalization.
	* opt.ads Add new global variable No_Heap_Finalization_Pragma.
	* par-prag.adb Pragma No_Heap_Finalization does not need special
	processing from the parser.
	* sem_ch6.adb (Check_Return_Subtype_Indication): Remove ancient
	??? comments. Use the new predicate Is_Anonymous_Access_Type.
	* sem_prag.adb Add an entry in table Sig_Flags for pragma
	No_Heap_Finalization.
	(Analyze_Pragma): Add processing for
	pragma No_Heap_Finalization. Update various error messages to
	use Duplication_Error.
	* sem_util.ads, sem_util.adb (No_Heap_Finalization): New routine.
	* snames.ads-tmpl: Add new predefined name No_Heap_Finalization
	and corresponding pragma id.

2017-04-25  Bob Duff  <duff@adacore.com>

	* freeze.adb (Freeze_Record_Type): Use the
	underlying type of the component type to determine whether it's
	elementary. For representation clause purposes, a private type
	should behave the same as its full type.
	* fname.ads, fname.adb (Is_Predefined_File_Name):
	Make sure things like "system.ali" are recognized as predefined.

2017-04-25  Javier Miranda  <miranda@adacore.com>

	* debug.adb: Update documentation of -gnatd.6.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Preanalyze_Range): Handle properly an Ada2012
	element iterator when the name is an overloaded function call,
	one of whose interpretations yields an array.

2017-04-25  Bob Duff  <duff@adacore.com>

	* uname.ads, uname.adb (Is_Predefined_Unit_Name,
	Is_Internal_Unit_Name): New functions for operating on unit
	names, as opposed to file names. There's some duplicated code
	with fname.adb, which is unfortunate, but it seems like we don't
	want to add dependencies here.
	* fname-uf.adb (Get_File_Name): Change Is_Predefined_File_Name
	to Is_Predefined_Unit_Name; the former was wrong, because Uname
	is not a file name at all.
	* fname.ads, fname.adb: Document the fact that
	Is_Predefined_File_Name and Is_Internal_File_Name can be called
	for ALI files, and fix the code so it works properly for ALI
	files. E.g. these should return True for "system.ali".

2017-04-25  Justin Squirek  <squirek@adacore.com>

	* exp_util.adb (Add_Invariant): Removed,
	code moved to Add_Invariant_Check, Add_Inherited_Invariant,
	and Add_Own_Invariant.	(Add_Invariant_Check): Used
	for adding runtime checks from any kind of invariant.
	(Add_Inherited_Invariant): Generates invariant checks for
	class-wide invariants (Add_Interface_Invariants): Removed, code
	moved to Build_Invariant_Procedure_Body (Add_Own_Invariant):
	Create a types own invariant procedure (Add_Parent_Invariants):
	Removed, code moved to Build_Invariant_Procedure_Body
	(Build_Invariant_Procedure_Body): Add refactored calls
	and integrated code from Add_Parent_Invariants and
	Add_Interface_Invariants.
	(Process_Type): Removed, the
	relavant code was inlined into both Add_Own_Invariant and
	Add_Inherited_Invariant.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* make.adb, par-ch2.adb, sem_util.adb, scans.ads, sem_ch8.adb,
	scn.adb, osint.adb, fname.adb: Minor reformatting.

2017-04-25  Pascal Obry  <obry@adacore.com>

	* s-taprop-mingw.adb: Do not check for CloseHandle in
	Finalize_TCB.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_util.adb (Check_Part_Of_Reference):
	Continue to examine the context if the reference appears within
	an expression function.

2017-04-25  Justin Squirek  <squirek@adacore.com>

	* exp_ch7.adb, exp_ch7.ads Remove Build_Invariant_Procedure_Body
	and Build_Invariant_Procedure_Declaration.
	* exp_util.ads, exp_util.adb Add Build_Invariant_Procedure_Body
	and Build_Invariant_Procedure_Declaration from exp_ch7
	and break-out Is_Untagged_Private_Derivation from
	Build_Invariant_Procedure_Body.
	(Replace_Type_References):
	Append an extra parameter to allow for dispatching replacements
	and add the corrasponding logic.
	(Type_Invariant): Remove
	Replace_Typ_Refs and replace its references with calls to
	Replace_Type_References.
	* sem_ch3.adb, sem_prag.adb: Remove with and use of exp_ch7.

2017-04-25  Bob Duff  <duff@adacore.com>

	* sem_util.ads, sem_util.adb (Should_Ignore_Pragma): New function
	that returns True when appropriate.
	* par-prag.adb, exp_prag.adb, sem_prag.adb: Do not ignore pragmas
	when compiling predefined files.
	* fname.ads, fname.adb (Is_Predefined_File_Name): Fix bug:
	"gnat.adc" should not be considered a predefined file name.
	That required (or at least encouraged) a lot of cleanup of global
	variable usage. We shouldn't be communicating information via
	the global name buffer.
	* bindgen.adb, errout.adb, fname-uf.adb, lib-load.adb, make.adb,
	* restrict.adb, sem_ch10.adb, sem_ch6.adb, sem_ch8.adb: Changes
	required by the above-mentioned cleanup.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* osint.adb (Find_File): Handle properly a request for a
	configuration file whose name is a directory.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_attr.adb, sem_ch5.adb: Minor reformatting.

2017-04-25  Bob Duff  <duff@adacore.com>

	* types.ads: Minor: Fix '???' comment.
	* sem_ch8.adb: Minor comment fix.

2017-04-25  Bob Duff  <duff@adacore.com>

	* sem_prag.adb: Remove suspicious uses of Name_Buf.
	* stringt.ads, stringt.adb, exp_dbug.adb, sem_dim.adb: Remove
	Add_String_To_Name_Buffer, to avoid using the global Name_Buf.
	Add String_To_Name with no side effects.

2017-04-25  Justin Squirek  <squirek@adacore.com>

	* sem_ch3.adb (Analyze_Declarations): Add
	additional condition for edge case.

2017-04-25  Bob Duff  <duff@adacore.com>

	* par-ch2.adb, scans.ads, scn.adb: Do not give an error for
	reserved words inside pragmas. This is necessary to allow the
	pragma name Interface to be used in pragma Ignore_Pragma.
	* par.adb: Minor comment fix.

2017-04-25  Javier Miranda  <miranda@adacore.com>

	* a-tags.ads, a-tags.adb (Type_Is_Abstract): Renamed as Is_Abstract.
	* rtsfind.ads (RE_Type_Is_Abstract): Renamed as Is_Abstract.
	* exp_disp.adb (Make_DT): Update occurrences of RE_Type_Is_Abstract.
	* exp_intr.adb (Expand_Dispatching_Constructor_Call): Update
	occurrences of RE_Type_Is_Abstract

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb (Build_Chain): Account for ancestor
	subtypes while traversing the derivation chain.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb: minor reformatting.

2017-04-25  Doug Rupp  <rupp@adacore.com>

	* sigtramp-vxworks-target.inc [PPC64]: Add a .localentry pseudo-op.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Assignment): Reset Full_Analysis flag on
	the first pass over an assignment statement with target names,
	to prevent the generation of subtypes (such as discriminated
	record components)that may carry the target name outside of the
	tree for the assignment. The subtypes will be generated when
	the assignment is reanalyzed in full.
	(Analyze_Target_Name): Handle properly class-wide types.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* elists.ads, elists.adb (Prepend_Unique_Elmt): New routine.
	* exp_ch3.adb (Freeze_Type): Signal the DIC body is created for
	the purposes of freezing.
	* exp_util.adb Update the documentation and structure of the
	type map used in class-wide semantics of assertion expressions.
	(Add_Inherited_Tagged_DIC): There is really no need to preanalyze
	and resolve the triaged expression because all substitutions
	refer to the proper entities.  Update the replacement of
	references.
	(Build_DIC_Procedure_Body): Add formal parameter
	For_Freeze. Add local variable Build_Body. Inherited DIC pragmas
	are now only processed when freezing occurs.  Build a body only
	when one is needed.
	(Entity_Hash): Removed.
	(Map_Types): New routine.
	(Replace_Object_And_Primitive_References): Removed.
	(Replace_References): New routine.
	(Replace_Type_References): Moved to the library level of Exp_Util.
	(Type_Map_Hash): New routine.
	(Update_Primitives_Mapping): Update the mapping call.
	(Update_Primitives_Mapping_Of_Types): Removed.
	* exp_util.ads (Build_DIC_Procedure_Body): Add formal
	parameter For_Freeze and update the comment on usage.
	(Map_Types): New routine.
	(Replace_References): New routine.
	(Replace_Type_References): Moved to the library level of Exp_Util.
	(Update_Primitives_Mapping_Of_Types): Removed.
	* sem_ch7.adb (Preserve_Full_Attributes): Propagate the DIC
	properties of the private type to the full view in case the full
	view derives from a parent type and inherits a DIC pragma.
	* sem_prag.adb (Analyze_Pragma): Guard against a case where a
	DIC pragma is placed at the top of a declarative region.

2017-04-25  Arnaud Charlet  <charlet@adacore.com trojanek>

	* a-tasatt.adb: Complete previous change and use an unsigned
	int to avoid overflow checks.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Analyze_Attribute, case 'Access): Specialize
	the error message when the attribute reference is an actual in
	a call to a subprogram inherited from a generic formal type with
	unknown discriminants, which makes the subprogram and its formal
	parameters intrinsic (see RM 6.3.1 (8) and (13)).

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_aggr.adb, inline.adb, einfo.adb, einfo.ads, scng.adb,
	sem_prag.adb: Minor reformatting.

2017-04-25  Bob Duff  <duff@adacore.com>

	* sem_attr.adb (Type_Key): Add code in the
	recursive Compute_Type_Key to protect against fetching the source
	code for Standard, in case a component of the type is declared
	in Standard. There was already code to do this for the original
	type, but not for its components.

2017-04-25  Javier Miranda  <miranda@adacore.com>

	* exp_ch3.adb (Build_Initialization_Call): Handle
	subtypes of private types when searching for the underlying full
	view of a private type.

2017-04-25  Javier Miranda  <miranda@adacore.com>

	* sem_res.adb (Set_Mixed_Mode_Operand): A universal
	real conditional expression can appear in a fixed-type context
	and must be resolved with that context to facilitate the code
	generation to the backend.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* einfo.adb, einfo.ads (Body_Needed_For_Inlining): New flag,
	to indicate whether during inline processing, when some unit U1
	appears in the context of a unit U2 compiled for instantiation
	or inlining purposes, the body of U1 needs to be compiled as well.
	* sem_prag.adb (Process_Inline): Set Body_Needed_For_Inlining if
	context is a package declaration.
	* sem_ch12.adb (Analyze_Generic_Subprogram_Declaration,
	Analyze_Generic_Package_Declaration): ditto.
	* inline.adb (Analyze_Inlined_Bodies): Check
	Body_Needed_For_Inlining.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* par.adb (Current_Assign_Node): Global variable use to record
	the presence of a target_name in the right hand side of the
	assignment being parsed.
	* par-ch4.adb (P_Name): If the name is a target_name, mark the
	enclosing assignment node accordingly.
	* par-ch5.adb (P_Assignment_Statement): Set Current_Assign_Node
	appropriately.
	* sem_ch5.adb (Analyze_Assignment): Disable expansion before
	analyzing RHS if the statement has target_names.
	* sem_aggr.adb (Resolve_Iterated_Component_Association): Handle
	properly choices that are subtype marks.
	* exp_ch5.adb: Code cleanup.

2017-04-25  Bob Duff  <duff@adacore.com>

	* s-memory.adb: Add a comment regarding efficiency.
	* atree.adb: Fix the assertion, and combine 2 assertions into one,
	"the source has an extension if and only if the destination does."
	* sem_ch3.adb, sem_ch13.adb: Address ??? comments.

2017-04-25  Arnaud Charlet  <charlet@adacore.com trojanek>

	* a-tasatt.adb (Set_Value): Fix handling of 32bits -> 64bits
	conversion.

2017-04-25  Doug Rupp  <rupp@adacore.com>

	* init.c (__gnat_error_handler) [vxworks]: Turn on sigtramp
	handling for ppc64-vx7.
	* sigtramp-vxworks-target.inc
	[SIGTRAMP_BODY]: Add section for ppc64-vx7.

2017-04-25  Arnaud Charlet  <charlet@adacore.com>

	* ada_get_targ.adb: New file.

2017-04-25  Bob Duff  <duff@adacore.com>

	* uintp.adb (Most_Sig_2_Digits): In case Direct (Right), fetch
	Direct_Val (Right), instead of the incorrect Direct_Val (Left).
	(UI_GCD): Remove ??? comment involving possible efficiency
	improvements. This just isn't important after all these years.
	Also minor cleanup.
	* uintp.ads: Minor cleanup.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb, exp_util.ads, sem_ch7.adb, sem_prag.adb, exp_ch3.adb:
	Revert previous changes.
	* scng.adb: Minor reformatting.
	* s-stratt.ads: Fix unbalanced parens in comment.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch3.adb, exp_util.adb, sem_prag.adb, freeze.adb, sem_util.adb:
	Minor reformatting.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* scng.adb (Scan): Handle '@' appropriately.
	* sem_ch5.adb: Code cleanup.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Check_Expression_Function): Do not check for the
	use of deferred constants if the freezing of the expression
	function is triggered by its generated body, rather than a
	premature use.

2017-04-25  Javier Miranda  <miranda@adacore.com>

	* exp_attr.adb (Rewrite_Stream_Proc_Call): Handle
	subtypes of private types when performing the view conversion.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch3.adb (Freeze_Type): Signal the DIC body is created for
	the purposes of freezing.
	* exp_util.adb Update the documentation and structure of the
	type map used in class-wide semantics of assertion expressions.
	(Add_Inherited_Tagged_DIC): There is really no need to preanalyze
	and resolve the triaged expression because all substitutions
	refer to the proper entities.  Update the replacement of
	references.
	(Build_DIC_Procedure_Body): Add formal parameter
	For_Freeze. Add local variable Build_Body. Inherited DIC pragmas
	are now only processed when freezing occurs.  Build a body only
	when one is needed.
	(Entity_Hash): Removed.
	(Map_Types): New routine.
	(Replace_Object_And_Primitive_References): Removed.
	(Replace_References): New routine.
	(Replace_Type_References): Moved to the library level of Exp_Util.
	(Type_Map_Hash): New routine.
	(Update_Primitives_Mapping): Update the mapping call.
	(Update_Primitives_Mapping_Of_Types): Removed.
	* exp_util.ads (Build_DIC_Procedure_Body): Add formal
	parameter For_Freeze and update the comment on usage.
	(Map_Types): New routine.
	(Replace_References): New routine.
	(Replace_Type_References): Moved to the library level of Exp_Util.
	(Update_Primitives_Mapping_Of_Types): Removed.
	* sem_ch7.adb (Preserve_Full_Attributes): Propagate the DIC
	properties of the private type to the full view in case the full
	view derives from a parent type and inherits a DIC pragma.
	* sem_prag.adb (Analyze_Pragma): Guard against a case where a
	DIC pragma is placed at the top of a declarative region.

2017-04-25  Tristan Gingold  <gingold@adacore.com>

	* s-mmap.ads (Data): Add pragma Inline.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb (Insert_Valid_Check): Do not use
	a renaming to alias a volatile name because this will lead to
	multiple evaluations of the volatile name. Use a constant to
	capture the value instead.

2017-04-25  Doug Rupp  <rupp@adacore.com>

	* init.c [VxWorks Section]: Disable sigtramp for ppc64-vx7.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* exp_util.adb, exp_util.ads (Build_Class_Wide_Expression):
	Add out parameter to indicate to caller that a wrapper must
	be constructed for an inherited primitive whose inherited
	pre/postcondition has called to overridden primitives.
	* freeze.adb (Check_Inherited_Conditions): Build wrapper body
	for inherited primitive that requires it.
	* sem_disp.adb (Check_Dispatching_Operation): Such wrappers are
	legal primitive operations and belong to the list of bodies
	generated after the freeze point of a type.
	* sem_prag.adb (Build_Pragma_Check_Equivalent): Use new signature
	of Build_Class_Wide_Expression.
	* sem_util.adb, sem_util.ads (Build_Overriding_Spec): New procedure
	to construct the specification of the wrapper subprogram created
	for an inherited operation.

2017-04-25  Bob Duff  <duff@adacore.com>

	* s-osinte-linux.ads (pthread_mutexattr_setprotocol,
	pthread_mutexattr_setprioceiling): Add new interfaces for these
	pthread operations.
	* s-taprop-linux.adb (Initialize_Lock, Initialize_TCB): Set
	protocols as appropriate for Locking_Policy 'C' and 'I'.
	* s-taprop-posix.adb: Minor reformatting to make it more similar
	to s-taprop-linux.adb.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Get_Discriminant_Value, Search_Derivation_Levels):
	Handle properly a multi- level derivation involving both renamed
	and constrained parent discriminants, when the type to be
	constrained has fewer discriminants that the ultimate ancestor.

2017-04-25  Bob Duff  <duff@adacore.com>

	* sem_util.adb (Is_Object_Reference): In the
	case of N_Explicit_Dereference, return False if it came from a
	conditional expression.

2017-04-25  Bob Duff  <duff@adacore.com>

	* par-ch4.adb (P_Case_Expression): If a semicolon
	is followed by "when", assume that ";" was meant to be ",".

2017-04-25  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch9.adb, sem_ch10.adb, sem_util.adb: Minor reformatting and typo
	fixes.

2017-04-25  Arnaud Charlet  <charlet@adacore.com>

	* rtsfind.ads (SPARK_Implicit_Load): New procedure for forced
	loading of an entity.
	* rtsfind.adb (SPARK_Implicit_Load): Body with a pattern
	previously repeated in the analysis.
	* sem_ch9.adb (Analyze_Protected_Type_Declaration): use new
	procedure SPARK_Implicit_Load.	(Analyze_Task_Type_Declaration):
	use new procedure SPARK_Implicit_Load.
	* sem_ch10.adb (Analyze_Compilation_Unit): Use new procedure
	SPARK_Implicit_Load.

2017-04-25  Javier Miranda  <miranda@adacore.com>

	* sem_util.adb (New_Copy_Tree): By default
	copying of defining identifiers is prohibited because
	this would introduce an entirely new entity into the
	tree. This patch introduces an exception to this general
	rule: the declaration of constants and variables located in
	Expression_With_Action nodes.
	(Copy_Itype_With_Replacement): Renamed as Copy_Entity_With_Replacement.
	(In_Map): New subprogram.
	(Visit_Entity): New subprogram.
	(Visit_Node): Handle EWA_Level,
	EWA_Inner_Scope_Level, and take care of defining entities defined
	in Expression_With_Action nodes.

2017-04-25  Thomas Quinot  <quinot@adacore.com>

	* exp_ch6.adb: minor comment edit.
	* sinfo.ads, sinfo.adb: New Null_Statement attribute for null
	procedure specifications that come from source.
	* par-ch6.adb (P_Subprogram, case of a null procedure): Set new
	Null_Statement attribute.
	* par_sco.adb (Traverse_Declarations_Or_Statements): For a null
	procedure, generate statement SCO for the generated NULL statement.
	* sem_ch6.adb (Analyze_Null_Procedure): Use null statement from
	parser, if available.

2017-04-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* system-linux-s390.ads: Use Long_Integer'Size to define
	Memory_Size.

2017-04-04  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch3.adb (Build_Derived_Record_Type): Fix long line.

2017-04-03  Jonathan Wakely  <jwakely@redhat.com>

	* doc/gnat_ugn/gnat_and_program_execution.rst: Fix typo.
	* g-socket.adb (To_Host_Entry): Fix typo in comment.
	* gnat_ugn.texi: Fix typo.
	* raise.c (_gnat_builtin_longjmp): Fix capitalization in comment.
	* s-stposu.adb (Allocate_Any_Controlled): Fix typo in comment.
	* sem_ch3.adb (Build_Derived_Record_Type): Likewise.
	* sem_util.adb (Mark_Coextensions): Likewise.
	* sem_util.ads (Available_Full_View_Of_Component): Likewise.

2017-03-28  Andreas Schwab  <schwab@suse.de>

	PR ada/80117
	* system-linux-aarch64-ilp32.ads: New file.
	* gcc-interface/Makefile.in (LIBGNAT_TARGET_PAIRS_COMMON): Rename
	from LIBGNAT_TARGET_PAIRS.
	(LIBGNAT_TARGET_PAIRS_32, LIBGNAT_TARGET_PAIRS_64): Define.
	(LIBGNAT_TARGET_PAIRS): Use LIBGNAT_TARGET_PAIRS_COMMON, and
	LIBGNAT_TARGET_PAIRS_64 or LIBGNAT_TARGET_PAIRS_32 for -mabi=lp64
	or -mabi=ilp32, resp.

2017-03-14  James Cowgill  <James.Cowgill@imgtec.com>

	* s-osinte-linux.ads (struct_sigaction): Use correct type for sa_flags.

2017-03-08  Thanassis Tsiodras  <ttsiodras@gmail.com>

	PR ada/79903
	* socket.c (__gnat_gethostbyaddr): Add missing test for __rtems__.

2017-03-08  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/79945
	* system-linux-ppc.ads (Default_Bit_Order): Use Standard's setting.

	* system-linux-arm.ads (Default_Bit_Order): Likewise.
	* system-linux-mips.ads (Default_Bit_Order): Likewise.
	* system-linux-armeb.ads: Delete.
	* system-linux-mipsel.ads: Likewise.
	* gcc-interface/Makefile.in (MIPS/Linux): Adjust.
	(ARM/Linux): Likewise.

2017-02-24  Jakub Jelinek  <jakub@redhat.com>

	PR c/79677
	* gcc-interface/misc.c (gnat_handle_option): Pass true to
	handle_generated_option GENERATED_P.

2017-02-24  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_field): Do not remove the wrapper
	around a justified modular type if it doesn't have the same scalar
	storage order as the enclosing record type.

2017-02-24  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (gnat_to_gnu): Do not apply special handling
	of boolean rvalues to function calls.

2017-02-24  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (fold_bit_position): New function.
	(rest_of_record_type_compilation): Call it instead of bit_position to
	compute the field position and remove the call to remove_conversions.
	(compute_related_constant): Factor out the multiplication in both
	operands, if any, and streamline the final test.

2017-02-24  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (return_value_ok_for_nrv_p): Add sanity check.

2017-02-24  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c: Include demangle.h.
	(is_cplusplus_method): Return again true for a primitive operation
	only if it is dispatching.  For a subprogram with an interface name,
	call the demangler to get the number of C++ parameters and compare it
	with the number of Ada parameters.

2017-02-24  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Handled_Sequence_Of_Statements_to_gnu): If
	there is no end label, put the location of the At_End procedure on
	the call to the procedure.

2017-02-24  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/misc.c (gnat_type_max_size): Try to return a meaningful
	value for array types with TYPE_INDEX_TYPE set on their domain type.
	* gcc-interface/utils.c (max_size): For operations and expressions, do
	not build a new node if the operands have not changed or are missing.

2017-02-24  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (max_size) <tcc_expression>: Flip the second
	argument when recursing on TRUTH_NOT_EXPR.

2017-02-12  John Marino  <gnugcc@marino.st>

	* system-freebsd-x86.ads: Rename into...
	* system-freebsd.ads: ...this.
	(Default_Bit_Order): Define using Standard'Default_Bit_Order.
	* gcc-interface/Makefile.in: Support aarch64-freebsd.
	(x86-64/FreeBSD): Adjust to above renaming.
	(i386/FreeBSD): Likewise.

2017-02-09  Gerald Pfeifer  <gerald@pfeifer.com>

	* comperr.adb: Update FSF bug reporting URL.

2017-02-01  Eric Botcazou  <ebotcazou@adacore.com>
            Jakub Jelinek  <jakub@redhat.com>

	PR ada/79309
	* adaint.c (__gnat_killprocesstree): Fix broken string handling.

2017-01-25  Maxim Ostapenko  <m.ostapenko@samsung.com>

	PR lto/79061
	* gcc-interface/utils.c (get_global_context): Pass main_input_filename
	to build_translation_unit_decl.

2017-01-23  Javier Miranda  <miranda@adacore.com>

	* sem_util.adb (New_Copy_Tree): Code cleanup:
	removal of the internal map (ie. variable Actual_Map, its
	associated local variables, and all the code handling it).
	* sem_ch9.adb (Analyze_Task_Type_Declaration): in GNATprove mode
	force loading of the System package when processing a task type.
	(Analyze_Protected_Type_Declaration): in GNATprove mode force
	loading of the System package when processing a protected type.
	* sem_ch10.adb (Analyze_Compilation_Unit): in GNATprove mode
	force loading of the System package when processing compilation
	unit with a main-like subprogram.
	* frontend.adb (Frontend): remove forced loading of the System
	package.

2017-01-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Default_Initial_Condition): If the desired type
	declaration is a derived type declaration with discriminants,
	it is rewritten as a private type declaration.
	* sem_ch13.adb (Replace_Type_References_Generic,
	Visible_Component): A discriminated private type with descriminnts
	has components that must be rewritten as selected components
	if they appear as identifiers in an aspect expression such as
	a Default_Initial_Condition.
	* sem_util.adb (Defining_Entity): support N_Iterator_Specification
	nodes.

2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* ghost.ads, ghost.adb (Is_Ignored_Ghost_Unit): New routine.
	* gnat1drv.adb Generate an empty object file for an ignored
	Ghost compilation unit.
	* inline.adb, sem_util.adb, sem_ch4.adb: Minor reformatting.

2017-01-23  Yannick Moy  <moy@adacore.com>

	* sem_ch4.adb (Analyze_Indexed_Component_Form):
	Adapt to inlined prefix with string literal subtype.
	* inline.adb (Expand_Inlined_Call): Keep unchecked
	conversion inside inlined call when formal type is constrained.

2017-01-23  Javier Miranda  <miranda@adacore.com>

	* sem_util.adb (New_Copy_Tree): Code cleanup:
	removal of global variables. All the global variables, global
	functions and tables of this subprogram are now declared locally.

2017-01-23  Gary Dismukes  <dismukes@adacore.com>

	* exp_strm.ads: Minor reformatting and typo fixes.

2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_aggr.adb, par_sco.adb, exp_util.adb, sem.adb, sem_ch4.adb,
	exp_aggr.adb: Minor reformatting.
	* g-diopit.adb: minor grammar/punctuation fix in comment.
	* g-byorma.ads: minor fix of unbalanced parens in comment.

2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* par.adb: Update the documentation of component Labl.
	* par-ch6.adb (P_Return_Statement): Set the expected label of
	an extended return statement to Error.

2017-01-23  Tristan Gingold  <gingold@adacore.com>

	* s-boustr.ads, s-boustr.adb (Is_Full): New function.

2017-01-23  Ed Schonberg  <schonberg@adacore.com>

	* expander.adb: Handle N_Delta_Aggregate.

2017-01-23  Javier Miranda  <miranda@adacore.com>

	* exp_ch6.adb (Expand_Call): Improve the code that
	checks if some formal of the called subprogram is a class-wide
	interface, to handle subtypes of class-wide interfaces.

2017-01-23  Javier Miranda  <miranda@adacore.com>

	* checks.adb (Apply_Parameter_Aliasing_Checks):
	Remove side effects of the actuals before generating the overlap
	check.

2017-01-23  Justin Squirek  <squirek@adacore.com>

	* exp_strm.ads, exp_strm.ads
	(Build_Record_Or_Elementary_Input_Function): Add an extra parameter so
	as to avoid getting the underlying type by default.
	* exp_attr.adb (Expand_N_Attribute_Reference): Remove use of
	underlying type in the Iiput and output attribute cases when
	building their respective functions.

2017-01-23  Gary Dismukes  <dismukes@adacore.com>

	* scng.adb: Minor reformatting of error message.

2017-01-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Expression_Function): Do not attempt
	to freeze the return type of an expression funxtion that is a
	completion, if the type is a limited view and the non-limited
	view is available.

2017-01-23  Ed Schonberg  <schonberg@adacore.com>

	* par-ch4.adb (P_Aggregate_Or_Parent_Expr): Recognize delta
	aggregate construct.
	(P_Record_Or_Array_Component_Association): An array aggregate
	can start with an Iterated_Component_Association.
	* scng.adb: Modify error message on improper use of @ in earlier
	versions of the language.
	* sinfo.ads: New node kind N_Delta_Aggregate.
	* sinfo.adb: An N_Delta_Aggregate has component associations and
	an expression.
	* sem_res.adb (Resolve): Call Resolve_Delta_Aggregate.
	* sem_aggr.ads, sem_aggr.adb (Resolve_Iterated_Component_Association):
	Create a new index for each one of the choices in the association,
	to prevent spurious homonyms in the scope.
	(Resolve_Delta_Aggregate): New.
	* sem.adb: An N_Delta_Aggregate is analyzed like an aggregate.
	* exp_util.adb (Insert_Actions): Take into account
	N_Delta_Aggregate.
	* exp_aggr.ads: New procedure Expand_N_Delta_Aggregate.
	* exp_aggr.adb: New procedure Expand_N_Delta_Aggregate,
	and local procedures Expand_Delta_Array_Aggregate and
	expand_Delta_Record_Aggregate.
	* sprint.adb: Handle N_Delta_Aggregate.

2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch11.adb (Expand_N_Exception_Declaration): Generate an
	empty name when the exception declaration is subject to pragma
	Discard_Names.
	(Null_String): New routine.

2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* par-ch9.adb (P_Protected_Definition): Parse
	any optional and potentially illegal pragmas which appear in
	a protected operation declaration list.
	(P_Task_Items): Parse
	any optional and potentially illegal pragmas which appear in a
	task item list.

2017-01-23  Pascal Obry  <obry@adacore.com>

	* s-taprop-mingw.adb (Enter_Task): Initialize the Thread handle which
	is needed when a foreign thread call a Win32 API using a thread handle
	like GetThreadTimes() for example.

2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Do not
	allow an 'Address clause to be specified on a prefix of a
	class-wide type.

2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb (Insert_Valid_Check): Ensure that the prefix of
	attribute 'Valid is a renaming of the original expression when
	the expression denotes a name. For all other kinds of expression,
	use a constant to capture the value.
	* exp_util.adb (Is_Name_Reference): Moved to Sem_Util.
	* sem_util.ads, sem_util.adb (Is_Name_Reference): Moved from Exp_Util.

2017-01-23  Justin Squirek  <squirek@adacore.com>

	* sem_eval.adb (Eval_Integer_Literal): Add special
	case to avoid optimizing out check if the literal appears in
	an if-expression.

2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Do not
	allow an 'Address clause to be specified on a prefix of a
	class-wide type.

2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb (Insert_Valid_Check): Ensure that the prefix of
	attribute 'Valid is a renaming of the original expression when
	the expression denotes a name. For all other kinds of expression,
	use a constant to capture the value.
	* exp_util.adb (Is_Name_Reference): Moved to Sem_Util.
	* sem_util.ads, sem_util.adb (Is_Name_Reference): Moved from Exp_Util.

2017-01-23  Justin Squirek  <squirek@adacore.com>

	* sem_eval.adb (Eval_Integer_Literal): Add special
	case to avoid optimizing out check if the literal appears in
	an if-expression.

2017-01-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Try_Primitive_Operations,
	Is_Valid_First_Argument_Of): argument is valid if it is a derived
	type with unknown discriminants that matches its underlying
	record view.
	* exp_util.adb (Expand_Subtype_From_Expr): Do not expand
	expression if its type is derived from a limited type with
	unknown discriminants, because the expansion (which is a call)
	must be expanded in the enclosing context to add the proper build-
	in-place parameters to the call.
	* lib.ads, exp_ch9.adb: Minor fixes in comments.

2017-01-23  Yannick Moy  <moy@adacore.com>

	* frontend.adb (Frontend): Do not load runtime
	unit for GNATprove when parsing failed.
	* exp_ch9.adb: minor removal of extra whitespace
	* exp_ch6.adb: minor typo in comment
	* sem_util.adb: Code cleanup.
	* exp_ch9.ads, par-ch2.adb: minor style fixes in whitespace and comment
	* a-ngcefu.adb: minor style fix in whitespace

2017-01-23  Thomas Quinot  <quinot@adacore.com>

	* scos.ads: Document usage of 'd' as default SCO kind for
	declarations.
	* par_sco.adb (Traverse_Declarations_Or_Statements.
	Traverse_Degenerate_Subprogram): New supporting routine for expression
	functions and null procedures.
	(Traverse_Declarations_Or_Statements.Traverse_One): Add
	N_Expression_Function to the subprogram case; add required
	support for null procedures and expression functions.

2017-01-23  Bob Duff  <duff@adacore.com>

	* namet.ads (Bounded_String): Decrease the size of type
	Bounded_String to avoid running out of stack space.
	* namet.ads (Append): Don't ignore buffer overflow; raise
	Program_Error instead.

2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch5.adb, freeze.adb, par-ch4.adb, scng.adb, sem_ch13.adb,
	sem_ch3.adb, sem_ch5.adb, sem_ch5.ads, sem_util.adb, sinfo.ads: Minor
	reformatting.
	* exp_ch9.adb: minor style fix in comment.

2017-01-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Allocator): Handle properly a type derived
	for a limited record extension with unknown discriminants whose
	full view has no discriminants.

2017-01-23  Yannick Moy  <moy@adacore.com>

	* exp_spark.adb: Alphabetize with clauses.

2017-01-23  Yannick Moy  <moy@adacore.com>

	* sem_util.adb (Has_Enabled_Property): Treat
	protected objects and variables differently from other variables.

2017-01-23  Thomas Quinot  <quinot@adacore.com>

	* sem_ch13.adb (Adjust_Record_For_Reverse_Bit_Order):
	Split original Ada 95 part off into new subprogram
	below. Call that subprogram (instead of proceeding with
	AI95-0133 behaviour) if debug switch -gnatd.p is in use.
	(Adjust_Record_For_Reverse_Bit_Order_Ada_95): ... new subprogram
	* debug.adb Document new switch -gnatd.p
	* freeze.adb (Freeze_Entity.Freeze_Record_Type): Do not adjust
	record for reverse bit order if an error has already been posted
	on the record type.  This avoids generating extraneous "info:"
	messages for illegal code.

2017-01-23  Justin Squirek  <squirek@adacore.com>

	* sem_ch3.adb (Analyze_Declarations): Correct comments
	* freeze.adb (Find_Constant): Add detection of deferred constants
	so they are not incorrectly flagged as premature.

2017-01-23  Ed Schonberg  <schonberg@adacore.com>

	* scans.ads: New token At_Sign. Remove '@' from list of illegal
	characters for future version of the language. '@' is legal name.
	* scng.ads, scng.adb (Scan):  Handle '@' appropriately.
	* scn.adb (Scan_Reserved_Identifier): An occurrence of '@'
	denotes a Target_Name.
	* par-ch4.adb (P_Name, P_Primary): Handle Target_Name.
	* sinfo.ads, sinfo.adb (N_Target_Name): New non-terminal node.
	(Has_Target_Names): New flag on N_Assignment_Statement, to
	indicate that RHS has occurrences of N_Target_Name.
	* sem.adb: Call Analyze_Target_Name.
	* sem_ch5.ads, sem_ch5.adb (Analyze_Target_Name): New subpogram.
	(urrent_LHS): Global variable that denotes LHS of assignment,
	used in the analysis of Target_Name nodes.
	* sem_res.adb (Resolve_Target_Name): New procedure.
	* exp_ch5.adb (Expand_Assign_With_Target_Names): (AI12-0125):
	N is an assignment statement whose RHS contains occurences of @
	that designate the value of the LHS of the assignment. If the
	LHS is side-effect free the target names can be replaced with
	a copy of the LHS; otherwise the semantics of the assignment
	is described in terms of a procedure with an in-out parameter,
	and expanded as such.
	(Expand_N_Assignment_Statement): Call
	Expand_Assign_With_Target_Names when needed.
	* exp_util.adb (Insert_Actions): Take into account N_Target_Name.
	* sprint.adb: Handle N_Target_Name.

2017-01-23  Eric Botcazou  <ebotcazou@adacore.com>

	* checks.adb: Minor fix in comment.

2017-01-23  Philippe Gil  <gil@adacore.com>

	* g-debpoo.adb (Do_Report) remove freed chunks from chunks
	count in Sort = Memory_Usage or Allocations_Count

2017-01-23  Justin Squirek  <squirek@adacore.com>

	* sem_ch3.adb: Code cleanup.

2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Refined_Depends_In_Decl_Part): Move all global
	variables to the local variable section. Update the profile
	of various nested routine that previously had visibility
	of those globals. One the matching phase has completed,
	remove certain classes of clauses which are considered noise.
	(Check_Dependency_Clause): Properly detect a match between two
	'Result attributes. Update the various post-match cases to use
	Is_Already_Matched as this routine now automatically recognizes
	a previously matched 'Result attribute.
	(Is_Already_Matched): New routine.
	(Remove_Extra_Clauses): New routine.
	(Report_Extra_Clauses): Remove the detection of ... => null
	clauses as this is now done in Remove_Extra_Clauses.

2017-01-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_aggr.adb (Resolve_Array_Aggregate): In ASIS mode do not
	report on spurious overlaps between values involving a subtype
	with a static predicate, because the expansion of such a subtype
	into individual ranges in inhibited in ASIS mode.

2017-01-23  Justin Squirek  <squirek@adacore.com>

	* sem_ch3.adb (Analyze_Declarations): Add detection
	of an edge case and delay freezing if it is present.

2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch3.adb, exp_spark.adb, exp_attr.adb, sem_ch9.adb, sem_prag.adb,
	sem_util.adb, sem_warn.adb, exp_ch3.adb: Minor reformatting.

2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* freeze.adb (Freeze_Subprogram): Ensure that all anonymous
	access-to-subprogram types inherit the convention of the
	associated subprogram.	(Set_Profile_Convention): New routine.
	* sem_ch6.adb (Check_Conformance): Do not compare the conventions
	of the two entities directly, use Conventions_Match to account
	for anonymous access-to-subprogram and subprogram types.
	(Conventions_Match): New routine.

2017-01-23  Claire Dross  <dross@adacore.com>

	* exp_spark.adb (Expand_SPARK_Attribute_Reference): For attributes
	which return Universal_Integer, force the overflow check flag for
	Length and Range_Length for types as big as Long_Long_Integer.

2017-01-23  Claire Dross  <dross@adacore.com>

	* exp_spark.adb (Expand_SPARK_Attribute_Reference):  For
	attributes which return Universal_Integer, introduce a conversion
	to the expected type with the appropriate check flags set.
	* sem_res.adb (Resolve_Range): The higher bound can be in Typ's
	base type if the range is null. It may still be invalid if it
	is higher than the lower bound. This is checked later in the
	context in which the range appears.

2017-01-23  Pierre-Marie de Rodat  <derodat@adacore.com>

	* scos.ads: Introduce a constant to represent ignored
	dependencies in SCO_Unit_Table_Entry.

2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch9.adb (Expand_N_Protected_Type_Declaration): Remove extra
	spaces from error messages.

2017-01-23  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch3.adb (Check_Large_Modular_Array): New procedure,
	subsidiary to Expand_N_Object_ Declaration, to compute a guard on
	an object declaration for an array type with a modular index type
	with the size of Long_Long_Integer. Special processing is needed
	in this case to compute reliably the size of the object, and
	eventually  to raise Storage_Error, when wrap-around arithmetic
	might compute a meangingless size for the object.

2017-01-23  Justin Squirek  <squirek@adacore.com>

	* a-wtenau.adb, par-endh.adb, sem_prag.adb,
	sem_type.adb: Code cleanups.

2017-01-23  Bob Duff  <duff@adacore.com>

	* sem_res.adb (Resolve_Call): In the part of the code where
	it is deciding whether to turn the call into an indexed
	component, avoid doing so if the call is to an instance of
	Unchecked_Conversion. Otherwise, the compiler turns it into an
	indexed component, and resolution of that turns it back into a
	function call, and so on, resulting in infinite recursion.
	* sem_util.adb (Needs_One_Actual): If the first formal has a
	default, then return False.

2017-01-21  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_eval.adb (Compile_Time_Compare): Reinstate the expr+literal (etc)
	optimizations when the type is modular and the offsets are equal.

2017-01-20  Thomas Quinot  <quinot@adacore.com>

	* sem_warn.adb (Warn_On_Useless_Assignment): Adjust wording of warning
	message.

2017-01-20  Nicolas Roche  <roche@adacore.com>

	* terminals.c: Ignore failures on setpgid and tcsetpgrp commands.

2017-01-20  Bob Duff  <duff@adacore.com>

	* sem_eval.adb (Compile_Time_Compare): Disable the expr+literal
	(etc) optimizations when the type is modular.

2017-01-20  Yannick Moy  <moy@adacore.com>

	* sem_ch6.adb (Move_Pragmas): move some pragmas,
	but copy the SPARK_Mode pragma instead of moving it.
	(Build_Subprogram_Declaration): Ensure that the generated spec
	and original body share the same SPARK_Pragma aspect/pragma.
	* sem_util.adb, sem_util.ads (Copy_SPARK_Mode_Aspect): New
	procedure to copy SPARK_Mode aspect.

2017-01-20  Bob Duff  <duff@adacore.com>

	* sem_ch3.adb (Analyze_Declarations): Disable Resolve_Aspects
	even in ASIS mode.
	* sem_ch13.adb (Resolve_Name): Enable setting the entity to
	Empty even in ASIS mode.

2017-01-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch9.adb: minor style fixes in comments.
	* sem_ch9.adb (Analyze_Delay_Relative): in GNATprove mode a delay
	relative statement introduces an implicit dependency on
	Ada.Real_Time.Clock_Time.
	* sem_util.adb: Minor reformatting.

2017-01-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications): Aspect Alignment
	must be treated as delayed aspect even if the expression is
	a literal, because the aspect affects the freezing and the
	elaboration of the object to which it applies.

2017-01-20  Tristan Gingold  <gingold@adacore.com>

	* s-osinte-vxworks.ads (Interrup_Range): New subtype.

2017-01-20  Ed Schonberg  <schonberg@adacore.com>

	* lib-xref.adb (Generate_Reference): Do not warn about the
	presence of a pragma Unreferenced if the entity appears as the
	actual in a procedure call that does not come from source.

2017-01-20  Pascal Obry  <obry@adacore.com>

	* expect.c, terminals.c: Fix some warnings about unused variables.
	* gsocket.h, adaint.c, adaint.h: Fix some more warnings in the C part
	of the runtime.

2017-01-20  Bob Duff  <duff@adacore.com>

	* exp_attr.adb (Constrained): Apply an access check (check that
	the prefix is not null) when the prefix denotes an object of an
	access type; that is, when there is an implicit dereference.

2017-01-20  Gary Dismukes  <dismukes@adacore.com>

	* s-rident.ads (constant Profile_Info): Remove
	No_Calendar from GNAT_Extended_Ravenscar restrictions.

2017-01-20  Tristan Gingold  <gingold@adacore.com>

	*  s-maccod.ads: Add pragma No_Elaboration_Code_All

2017-01-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* ghost.adb (Mark_Ghost_Clause): New routine.
	(Prune_Node): Do not prune compilation unit nodes.
	(Remove_Ignored_Ghost_Code): Prune the compilation unit node directly.
	This does not touch the node itself, but does prune all its fields.
	* ghost.ads (Mark_Ghost_Clause): New routine.
	* sem_ch8.adb (Analyze_Use_Package): Emit an error when a use
	package clause mentions Ghost and non-Ghost packages. Mark a
	use package clause as Ghost when it mentions a Ghost package.
	(Analyze_Use_Type): Emit an error when a use type clause mentions
	Ghost and non-Ghost types. Mark a use type clause as Ghost when
	it mentions a Ghost type.
	* sem_ch10.adb (Analyze_With_Clause): Mark a with clause as
	Ghost when it withs a Ghost unit.

2017-01-20  Javier Miranda  <miranda@adacore.com>

	* sem_res.adb (Resolve_Call): If a function call
	returns a limited view of a type and at the point of the call the
	function is not declared in the extended main unit then replace
	it with the non-limited view, which must be available. If the
	called function is in the extended main unit then no action is
	needed since the back-end handles this case.

2017-01-20  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch7.adb (Contains_Subp_Or_Const_Refs): Rename into...
	(Contains_Subprograms_Refs): ...this.  Adjust comment
	for constants.	(Is_Subp_Or_Const_Ref): Rename into...
	(Is_Subprogram_Ref): ...this.
	(Has_Referencer): Rename Has_Non_Subp_Const_Referencer variable into
	Has_Non_Subprograms_Referencer and adjust comment.  Remove
	incorrect shortcut for package declarations and bodies.

2017-01-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Complete_Private_Subtype): If the scope of the
	base type differs from that of the completion and the private
	subtype is an itype (created for a constraint on an access
	type e.g.), set Delayed_Freeze on both to prevent out-of-scope
	anomalies in gigi.

2017-01-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper):
	When inheriting the SPARK_Mode of a prior expression function,
	look at the properly resolved entity rather than the initial
	candidate which may denote a homonym.

2017-01-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Rewrite_Assertion_Kind): If the name is
	Precondition or Postcondition, and the context is pragma
	Check_Policy, indicate that this Pre-Ada2012 usage is deprecated
	and suggest the standard names Assertion_Policy /Pre /Post
	instead.

2017-01-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch10.adb, sem_cat.adb: Minor reformatting.

2017-01-20  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Access_Type_Declaration): Protect access to the
	Entity attribute.
	* sem_ch10.adb (Install_Siblings): Skip processing malformed trees.
	* sem_cat.adb (Validate_Categoriztion_Dependency): Skip processing
	malformed trees.

2017-01-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specification, case
	Dynamic_Predicate): If the entity E is a subtype that inherits
	a static predicate for its parent P,, the inherited and the
	new predicate combine in the generated predicate function,
	and E only has a dynamic predicate.

2017-01-20  Tristan Gingold  <gingold@adacore.com>

	* s-boustr.ads, s-boustr.adb: New package.
	* Makefile.rtl: Add s-boustr.

2017-01-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* inline.adb (Process_Formals): Qualify the
	expression of a return statement when it yields a universal type.

2017-01-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* freeze.adb (Freeze_All): Freeze the default
	expressions of all eligible formal parameters that appear in
	entries, entry families, and protected subprograms.

2017-01-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Check_Nonoverridable_Aspects); Refine check
	for illegal inherited Implicit_Dereference aspects with renamed
	discriminants.

2017-01-20  Javier Miranda  <miranda@adacore.com>

	* debug.adb (switch d.6): do not avoid declaring unreferenced itypes.
	* nlists.ads (Lock_Lists, Unlock_Lists): New subprograms.
	* nlists.adb (Lock_Lists, Unlock_Lists): New subprograms.
	(Set_First, Set_Last, Set_List_Link, Set_Next, Set_Parent,
	Set_Prev, Tree_Read): Adding assertion.
	* atree.ads (Lock_Nodes, Unlock_Nodes): New subprograms.
	* atree.adb (Lock_Nodes, Unlock_Nodes): New subprograms.
	(Set_Analyzed, Set_Check_Actuals, Set_Comes_From_Source,
	Set_Ekind, Set_Error_Posted, Set_Has_Aspects,
	Set_Is_Ignored_Ghost_Node, Set_Original_Node, Set_Paren_Count,
	Set_Parent, Set_Sloc, Set_Nkind, Set_FieldNN, Set_NodeNN,
	Set_ListNN, Set_ElistNN, Set_NameN, Set_StrN, Set_UintNN,
	Set_UrealNN, Set_FlagNNN, Set_NodeN_With_Parent,
	Set_ListN_With_Parent): Adding assertion.

2017-01-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Process_Convention): Diagnose properly a pragma
	import that applies to several homograph subprograms. when one
	of them is declared by a subprogram body.

2017-01-20  Justin Squirek  <squirek@adacore.com>

	* exp_ch6.adb (Expand_Call): Remove optimization
	that nulls out calls to null procedures.

2017-01-20  Yannick Moy  <moy@adacore.com>

	* inline.adb (Expand_Inlined_Call): Keep more
	precise type of actual for inlining whenever possible. In
	particular, do not switch to the formal type in GNATprove mode in
	some case where the GNAT backend might require it for visibility.

2017-01-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Check_Non_Overridable_Aspects): An inherited
	aspect Implicit_Dereference can be inherited by a full view if
	the partial view has no discriminants, because there is no way
	to apply the aspect to the partial view.
	(Build_Derived_Record_Type): If derived type renames discriminants
	of the parent, the new discriminant inherits the aspect from
	the old one.
	* sem_ch4.adb (Analyze_Call): Handle properly a parameterless
	call through an access discriminant designating a subprogram.
	* sem_ch5.adb (Analyze_Assignment): (Analyze_Call): Handle
	properly a parameterless call through an access discriminant on
	the left-hand side of an assignment.
	* sem_res.adb (resolve): If an interpreation involves a
	discriminant with an implicit dereference and the expression is an
	entity, resolution takes place later in the appropriate routine.
	* sem_ch13.adb (Analyze_Aspect_Implicit_Dereference): Recognize
	access discriminants that designate a subprogram type.

2017-01-20  Pascal Obry  <obry@adacore.com>

	* a-locale.adb, a-locale.ads: Update Ada.Locales for RM 2012 COR:1:2016

2017-01-20  Yannick Moy  <moy@adacore.com>

	* sem_ch10.adb (Check_No_Elab_Code_All): Do not issue an error
	on implicitly with'ed units in GNATprove mode.
	* sinfo.ads (Implicit_With): Document use of flag for implicitly
	with'ed units in GNATprove mode.

2017-01-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_cat.adb (Validate_Static_Object_Name): In a preelaborated
	unit Do not report an error on a non-static entity that appears
	in the context of a spec expression, such as an aspect expression.

2017-01-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb: Flag298 now denotes Is_Underlying_Full_View.
	(Is_Underlying_Full_View): New routine.
	(Set_Is_Underlying_Full_View): New routine.
	(Write_Entity_Flags): Add an entry for Is_Underlying_Full_View.
	* einfo.ads Add new attribute Is_Underlying_Full_View.
	(Is_Underlying_Full_View): New routine along with pragma Inline.
	(Set_Is_Underlying_Full_View): New routine along with pragma Inline.
	* exp_util.adb (Build_DIC_Procedure_Body): Do not consider
	class-wide types and underlying full views. The first subtype
	is used as the working type for all Itypes, not just array base types.
	(Build_DIC_Procedure_Declaration): Do not consider
	class-wide types and underlying full views. The first subtype
	is used as the working type for all Itypes, not just array
	base types.
	* freeze.adb (Freeze_Entity): Inherit the freeze node of a full
	view or an underlying full view without clobbering the attributes
	of a previous freeze node.
	(Inherit_Freeze_Node): New routine.
	* sem_ch3.adb (Build_Derived_Private_Type): Mark an underlying
	full view as such.
	(Build_Underlying_Full_View): Mark an underlying full view as such.
	* sem_ch7.adb (Install_Private_Declarations): Mark an underlying
	full view as such.

2017-01-20  Yannick Moy  <moy@adacore.com>

	* sinfo.ads: Document lack of Do_Division_Check flag
	on float exponentiation.

2017-01-19  Javier Miranda  <miranda@adacore.com>

	* ghost.adb (Propagate_Ignored_Ghost_Code): Protect access to the
	identifier attribute of a block-statement node. Required to avoid
	assertion failure when building the new containers library.

2017-01-19  Bob Duff  <duff@adacore.com>

	* exp_ch3.adb: Update comment.

2017-01-19  Vincent Celier  <celier@adacore.com>

	* gprep.adb (Gnatprep): Parse the definition file without
	"replace in comments" even when switch -C is used.

2017-01-19  Justin Squirek  <squirek@adacore.com>

	* exp_ch9.adb (Is_Pure_Barrier): Create function
	Is_Count_Attribute to identify an expansion of the 'Count
	attribute.

2017-01-19  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Loop_Statement): In GNATprove mode the
	statements within an element iterator loop are only analyzed
	agter the loop is rewritten. Within a generic the analysis must
	be performed in any case to complete name capture.

2017-01-19  Bob Duff  <duff@adacore.com>

	* sem_prag.adb (Analyze_Pragma): Check for ignored pragmas first,
	before checking for unrecognized pragmas.
	Initialize Pname on its declarations; that's always good style.

2017-01-19  Claire Dross  <dross@adacore.com>

	* exp_ch7.adb (Build_Invariant_Procedure_Body): Semi-insert the
	body into the tree for GNATprove by setting its Parent field. The
	components invariants of composite types are not checked by
	the composite type's invariant procedure in GNATprove mode.
	(Build_Invariant_Procedure_Declaration): Semi-insert the
	declaration into the tree for GNATprove by setting its Parent
	field.
	* freeze.adb (Freeze_Arry_Type):In GNATprove mode, do not add
	the component invariants to the array type  invariant procedure
	so that the procedure can be used to  check the array type
	invariants if any.
	(Freeze_Record_Type): In GNATprove mode, do
	not add the component invariants to the record type  invariant
	procedure so that the procedure can be used to	check the record
	type invariants if any.

2017-01-19  Hristian Kirtchev  <kirtchev@adacore.com>

	* lib-xref-spark_specific.adb: Minor reformatting.
	* exp_ch7.adb (Add_Parent_Invariants): Do not process array types.

2017-01-19  Javier Miranda  <miranda@adacore.com>

	* exp_aggr.adb (Pass_Aggregate_To_Back_End): Renamed as
	Build_Back_End_Aggregate.
	(Generate_Aggregate_For_Derived_Type): Code cleanup.
	(Prepend_Stored_Values): Code cleanup.

2017-01-19  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Expression_Function): Check for an
	incomplete return type after attempting to freeze it, so that
	other freeze actiona are generated in the proper order.

2017-01-19  Ed Schonberg  <schonberg@adacore.com>

	* sem_aggr.adb (Resolve_Aggregate): If the type is a string
	type, ie. a type whose component is a character type, and the
	aggregate is positional, do not convert into a string literal
	if the index type is not an integer type, because the original
	type may be required in an enclosing operation.

2017-01-19  Bob Duff  <duff@adacore.com>

	* binde.adb, debug.adb: Enable new elaboration order algorithm
	by default. -dp switch reverts to the old algorithm.

2017-01-19  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch3.adb Add with and use clauses for Exp_Ch7.
	(Analyze_Declarations): Create the DIC and Invariant
	procedure bodies s after all freezing has taken place.
	(Build_Assertion_Bodies): New routine.
	* sem_ch7.adb Remove the with and use clauses for Exp_Ch7
	and Exp_Util.
	(Analyze_Package_Specification): Remove the
	generation of the DIC and Invariant procedure bodies. This is
	now done by Analyze_Declarations.
	* sem_disp.adb (Check_Dispatching_Operation): DIC and Invariant
	procedures are never treated as primitives.

2017-01-19  Yannick Moy  <moy@adacore.com>

	* frontend.adb: Analyze inlined bodies and check elaboration
	rules in GNATprove mode too.
	* sem_elab.adb (Delay_Element): Add Boolean component to save
	indication that call is in SPARK code.	(Check_Elab_Calls):
	Check elaboration rules in GNATprove mode, and correctly set
	the current value of SPARK_Mode.
	* lib-xref-spark_specific.adb
	(Add_SPARK_Xrefs): Simplify iteration over dereferences.

2017-01-19  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch4.adb (Expand_Concatenate): Do no enable overflow
	checks on the expression for the high bound of concatenation
	when checks are disabled, to suppress warnings about potential
	constraint errors in restricted runtimes.

2017-01-19  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch3.adb (Expand_Freeze_Enumeration_Type): Mark the
	representation-to-position function as inlined.
	* sem_cat.adb (Set_Categorization_From_Scope): Do not modify
	the purity of an internally generated entity if it has been
	explicitly marked as pure for optimization purposes.
	* exp_aggr.adb: Minor reformatting.

2017-01-19  Javier Miranda  <miranda@adacore.com>

	* exp_ch6.adb (Expand_Call): Remove side effects on
	actuals that are allocators with qualified expression since the
	initialization of the object is performed by means of individual
	statements (and hence it must be done before the call).

2017-01-19  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Analyze_Declarations): Minor reformatting.
	(Build_Derived_Enumeration_Type): If the derived type inherits a
	dynamic predicate from its parent, the bounds of the type must
	freeze because an explicit constraint is constructed for the
	type and the corresponding range is elaborated now.

2017-01-19  Arnaud Charlet  <charlet@adacore.com>

	* sem_attr.ads: minor fix of inconsistent casing in comment
	* lib-writ.ads: minor align comments in columns
	* sem_ch3.adb: Minor reformatting.
	* spark_xrefs.ads: minor fix typo in SPARK-related comment
	* table.ads: minor style fix in comment
	* lib-xref-spark_specific.adb
	(Add_SPARK_Xrefs): simplify processing of SPARK cross-references.
	* sem_ch12.adb: minor whitespace fix
	* freeze.adb: Add comment.
	* sem_util.adb (Unique_Name): for instances of
	generic subprograms ignore the name of the wrapper package.

2017-01-19  Javier Miranda  <miranda@adacore.com>

	* exp_aggr.adb (Resolve_Record_Aggregate):
	Factorize code needed for aggregates of limited and unlimited
	types in a new routine.
	(Pass_Aggregate_To_Back_End): New subprogram.

2017-01-19  Yannick Moy  <moy@adacore.com>

	* sinfo.adb (Pragma_Name): Only access up to Last_Pair of Pragma_Map.

2017-01-19  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.ads, sem_ch4.adb (Try_Object_Operation): Make subprogram
	public, for use elsewhere.
	* sem_ch6.adb (Analyze_Procedure_Call): In SPARK_Mode and within
	an Inlined_body, recognize a call that uses object notation
	and has not been rewritten as a regular call because regular
	expansion has not taken place.

2017-01-19  Bob Duff  <duff@adacore.com>

	* checks.adb (Apply_Type_Conversion_Checks): Disable small optimization
	in case of generic formal discrete types, because it causes crashes in
	the compiler when built with assertions on.

2017-01-19  Hristian Kirtchev  <kirtchev@adacore.com>

	* lib-xref-spark_specific.adb, sem_util.adb, sem_util.ads,
	sem_ch4.adb, sem_ch8.adb, lib-xref.ads: Minor reformatting.

2017-01-19  Bob Duff  <duff@adacore.com>

	* bcheck.adb (Check_Consistent_Dynamic_Elaboration_Checking):
	Increment Warnings_Detected.  It was decrementing, which is
	wrong since we just issued a warning message.
	* binderr.ads (Errors_Detected, Warnings_Detected): Declare
	these variables to be of subtype Nat instead of Int, because
	they should never be negative.

2017-01-19  Javier Miranda  <miranda@adacore.com>

	* contracts.adb (Build_Postconditions_Procedure): Replace
	Generate_C_Code by Modify_Tree_For_C.
	* exp_aggr.adb (Build_Record_Aggr_Code, Expand_Array_Aggregate):
	Replace Generate_C_Code by Modify_Tree_For_C.
	* exp_attr.adb (Float_Valid, Is_GCC_Target): Replace Generate_C_Code by
	Modify_Tree_For_C.
	* exp_ch11.adb (Expand_N_Exception_Declaration): Replace
	Generate_C_Code by Modify_Tree_For_C.
	* exp_ch4.adb (Expand_Allocator_Expression): Replace
	Generate_C_Code by Modify_Tree_For_C.
	* exp_dbug.adb (Qualify_Entity_Name): Replace Generate_C_Code
	by Modify_Tree_For_C.
	* exp_util.adb (Remove_Side_Effects, Side_Effect_Free): Replace
	Generate_C_Code by Modify_Tree_For_C.
	* sem_res.adb (Resolve_Type_Conversion): Replace Generate_C_Code
	by Modify_Tree_For_C.
	* sinfo.ads (Modify_Tree_For_C): Adding documentation.

2017-01-19  Javier Miranda  <miranda@adacore.com>

	* sem_util.ads, sem_util.adb (Expression_Of_Expression_Function): New
	subprogram.
	(Is_Inlinable_Expression_Function): New subprogram.
	* exp_ch6.ads, exp_ch6.adb (Expression_Of_Expression_Function): Moved
	to Sem_Util.
	(Is_Inlinable_Expression_Function): Moved to Sem_Util.

2017-01-19  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Diagnose_Call): Improve error message when a
	selected component has a prefix that might be interpreted
	as a parameterless function call, but none of the candidate
	interpretations is parameterless, and there is a hidden homonym
	of the prefix that is a package.
	* sem_ch8.adb (Find_Selected_Component): If the prefix might be
	interpreted as a parameterless function call and its analysis
	fails, do not call Analyze_Selected_Component.

2017-01-19  Steve Baird  <baird@adacore.com>

	* sem_util.ads: Add new Use_Full_View Boolean parameter to
	Get_Index_Bounds.
	* sem_util.adb (Get_Index_Bounds): replace calls to Scalar_Range with
	calls to a newly-defined Scalar_Range_Of_Right_View function.

2017-01-19  Arnaud Charlet  <charlet@adacore.com>

	* gnat1drv.adb: minor fix of unbalanced parens in comment
	* lib-xref.ads (Traverse_Compilation_Unit): declaration moved
	to visible part of the package to allow re-use in GNATprove.
	* lib-xref-spark_specific.adb (Traverse_Stub): routine refactored
	from repeated code of Traverse_Compilation_Unit.
	(Traverse_Declaration_Or_Statement): fixed detection of
	generic subprograms and packages; also, iteration over case
	statement alternatives rewritten to avoid testing if the first
	alternative is present (since it must be present due to Ada
	syntax restrictions).

2017-01-19  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch6.adb (Expand_N_Subprogram_Body): Mark the spec as
	returning by reference not just for subprogram body stubs,
	but for all subprogram cases.
	* sem_util.adb: Code reformatting.
	(Requires_Transient_Scope): Update the call to Results_Differ.
	(Results_Differ): Update the parameter profile and the associated
	comment on usage.

2017-01-19  Ed Schonberg  <schonberg@adacore.com>

	* sem_dim.adb (Analyze_Dimension): Analyze object declaration and
	identifier nodes that do not come from source, to handle properly
	dimensionality check within an inlined body which inclddes both
	original operands and rewritten operands. This removes spurious
	dimensionality errors in the presence of front-end inlining,
	as well as in SPARK mode.

2017-01-16  Jakub Jelinek  <jakub@redhat.com>

	PR driver/49726
	* gcc-interface/lang.opt (gant, gnatO, gnat): Add Driver flag.

2017-01-13  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* gcc-interface/Makefile.in (SPARC/Solaris): Fix typo.

2017-01-13  Arnaud Charlet  <charlet@adacore.com>

	* doc/gnat_ugn/getting_started_with_gnat.rst,
	doc/gnat_ugn/inline_assembler.rst,
	doc/gnat_ugn/building_executable_programs_with_gnat.rst,
	doc/gnat_ugn/elaboration_order_handling_in_gnat.rst,
	doc/gnat_ugn/about_this_guide.rst,
	doc/gnat_ugn/platform_specific_information.rst,
	doc/gnat_ugn/example_of_binder_output.rst,
	doc/gnat_ugn/gnat_and_program_execution.rst,
	doc/gnat_ugn/gnat_utility_programs.rst,
	doc/gnat_ugn/the_gnat_compilation_model.rst,
	doc/gnat_rm/implementation_defined_attributes.rst,
	doc/gnat_rm/compatibility_and_porting_guide.rst,
	doc/gnat_rm/standard_library_routines.rst,
	doc/gnat_rm/standard_and_implementation_defined_restrictions.rst,
	doc/gnat_rm/implementation_defined_pragmas.rst,
	doc/gnat_rm/the_gnat_library.rst,
	doc/gnat_rm/obsolescent_features.rst,
	doc/gnat_rm/about_this_guide.rst,
	doc/gnat_rm/the_implementation_of_standard_i_o.rst,
	doc/gnat_rm/implementation_of_ada_2012_features.rst,
	doc/gnat_rm/interfacing_to_other_languages.rst,
	doc/gnat_rm/implementation_defined_aspects.rst,
	doc/gnat_rm.rst: Update documentation.
	* gnat_rm.texi, gnat_ugn.texi: Regenerated.

2017-01-13  Ed Schonberg  <schonberg@adacore.com>

	* einfo.ads: minor grammar fixes in comment of Normalized_Position_Max.
	* scil_ll.adb: Minor style fix in comment.
	* sem_ch8.adb (Analyze_Expanded_Name): Perform dimension analysis
	even if entity is already set, because the node may be renalyzed
	after inlining transformations.

2017-01-13  Javier Miranda  <miranda@adacore.com>

	* sem_res.adb (Resolve_Call): Do not establish a transient scope
	for a call to inlinable expression function (since the call will
	be replaced by its returned object).
	* exp_ch6.ads (Is_Inlinable_Expression_Function): New subprogram.
	* exp_ch6.adb (Expression_Of_Expression_Function): New subprogram.
	(Expand_Call): For inlinable expression function call replace the
	call by its returned object.
	(Is_Inlinable_Expression_Function): New subprogram.

2017-01-13  Gary Dismukes  <dismukes@adacore.com>

	* checks.adb: Minor typo fix and reformatting.

2017-01-13  Javier Miranda  <miranda@adacore.com>

	* contracts.adb (Contract_Only_Subprograms): Remove formal.
	(Copy_Original_Specification): Removed.
	(Skip_Contract_Only_Subprogram): Move here checks previously
	located in the caller of this routine (to leave the code more clean).
	(Build_Contract_Only_Subprogram): Code cleanup.
	* scil_ll.ads, scil_ll.adb (Get_Contract_Only_Body_Name): Removed.
	(Get_Contract_Only_Missing_Body_Name): Removed.

2017-01-13  Javier Miranda  <miranda@adacore.com>

	* sem_ch6.adb (Cloned_Expression): New subprogram.
	(Freeze_Expr_Types): Complete previous patch since the expression
	of an expression-function may have iterators and loops with
	defining identifiers which, as part of the preanalysis of the
	expression, may be left decorated with itypes that will not be
	available in the tree passed to the backend.

2017-01-13  Ed Schonberg  <schonberg@adacore.com>

	* checks.adb (Apply_Type_Conversion_Checks): Optimize a type
	conversion to Integer of an expression that is an attribute
	reference 'Pos on an enumeration type.

2017-01-13  Bob Duff  <duff@adacore.com>

	* atree.ads: Minor comment fix.

2017-01-13  Justin Squirek  <squirek@adacore.com>

	* sem_ch6.adb (Check_Aggregate_Accessibility): Ignore function
	calls in accessibility check on return statement.

2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper):
	Ensure that the input body is a subprogram body before trying to
	determine whether it denoted an expression function.  Note that
	subprogram body stubs cannot denote expression functions.

2017-01-13  Gary Dismukes  <dismukes@adacore.com>

	* bindgen.adb, sem_ch6.adb, binde.adb, exp_ch3.adb: Minor reformatting
	and typo fixes.

2017-01-13  Javier Miranda  <miranda@adacore.com>

	* einfo.ads (Component_Bit_Offset): Fix documentation.
	* sem_ch13.adb (Check_Record_Representation_Clause): Skip check
	on record holes for components with unknown compile-time offsets.

2017-01-13  Bob Duff  <duff@adacore.com>

	* ali.ads, ali.adb (Static_Elaboration_Model_Used): Remove unused flag.
	* g-locfil.ads: Minor comment fix.

2017-01-13  Bob Duff  <duff@adacore.com>

	* binde.adb (Elab_New): New elaboration order algorithm
	that is expected to cause fewer ABE issues. This is a work in
	progress. The new algorithm is currently disabled, and can be
	enable by the -dp switch, or by modifying the Do_Old and Do_New
	etc. flags and rebuilding. Experimental code is included to
	compare the results of the old and new algorithms.
	* binde.ads: Use GNAT.Dynamic_Tables instead of Table, so we
	can have multiple of these tables, so the old and new algorithms
	can coexist.
	* bindgen.ads (Gen_Output_File): Pass Elab_Order as an 'in'
	parameter of type array. This avoids the global variable, and
	allows bounds checking (which is normally defeated by the tables
	packages). It also ensures that the Elab_Order is read-only
	to Bindgen.
	* bindgen.adb: Pass Elab_Order as an 'in' parameter to all
	subprograms that need it, as above.
	* debug.adb: Document new -dp switch. Modify doc of old -do
	switch.
	* gnatbind.adb (Gnatbind): Make use of new interfaces to Binde
	and Bindgen.  Move writing of closure (-R and -Ra switches)
	to Binde; that's more convenient.

2017-01-13  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Expression_Function): If the expression
	function is a completion, all entities referenced in the
	expression are frozen. As a consequence, a reference to an
	uncompleted private type from an enclosing scope is illegal.

2017-01-13  Javier Miranda  <miranda@adacore.com>

	* sem_ch6.adb (Freeze_Expr_Types): New subprogram.
	(Analyze_Subprogram_Body_Helper): At the occurrence of an
	expression function declaration that is a completion, its
	expression causes freezing (AI12-0103).

2017-01-13  Vadim Godunko  <godunko@adacore.com>

	* a-coinho-shared.adb: Fix memory leaks in Constant_Reference and
	Reference functions of Ada.Containers.Indefinite_Holders.

2017-01-13  Bob Duff  <duff@adacore.com>

	* s-os_lib.ads: Minor comment fixes.

2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch3.adb (Default_Initialize_Object): Do not default
	initialize an object when it is of a task type and restriction
	No_Tasking is in effect because the initialization is obsolete.
	* exp_ch9.adb (Build_Master_Entity): Do not generate a master when
	restriction No_Tasking is in effect.
	(Build_Master_Renaming): Do not rename a master when restriction
	No_Tasking is in effect.

2017-01-13  Ed Schonberg  <schonberg@adacore.com>

	* sem_aggr.adb (Resolve_Array_Aggregate): The code that verifies
	the legality of An others clause applies as well to a choice in
	an Iterated_component_ association.
	(Resolve_Iterated_Component_Association): An others choice
	is legal.
	* exp_aggr.adb (Aggr_Assignment_OK_For_Backend): An
	Iterated_Component_Association is not static.

2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch3.adb (Freeze_Type): Mark the Ghost mode as set in case
	control is passed to the expresion handler before the new mode
	is set.
	* sem_ch12.adb (Analyze_Package_Instantiation,
	Analyze_Subprogram_Instantiation): Mark the Ghost mode as set
	in case control is passed to the expresion handler before the
	new mode is set.

2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_aggr.adb, sem_ch3.adb, inline.adb, sem_util.adb, exp_ch4.adb,
	exp_aggr.adb: Minor reformatting.

2017-01-13  Gary Dismukes  <dismukes@adacore.com>

	* inline.adb: Minor reformatting and typo fix.

2017-01-13  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.ads, sem_util.adb (Choice_List): Move function here
	from sem_aggr.adb, for use elsewhere.
	* sem_ch3.adb (Analyze_Object_Declaration): Use Choice_List.
	* sem_aggr.adb (Resolve_Array_Aggregate): Remove
	Iterated_Component_Present.
	* exp_aggr.adb: Use Choice_List throughout, to handle
	Iterated_Component_Associations.
	(Gen_Loop): Generate proper loop for an
	Iterated_Component_Association: loop variable has the identifier
	of the original association. Generate a loop even for a single
	component choice, in order to make loop parameter visible in
	expression.
	(Flatten): An Iterated_Component_Association is not static.

2017-01-13  Yannick Moy  <moy@adacore.com>

	* exp_ch4.adb (Expand_N_Op_Expon): Ensure that the value of
	float exponentiation for statically known small negative values
	is the reciprocal of the exponentiation for the opposite value
	of the exponent.
	* s-exnllf.adb (Exn_Float, Exn_Long_Float, Exn_Long_Long_Float):
	Ensure that the value of float exponentiation for negative values
	is the reciprocal of the exponentiation for the opposite value
	of the exponent.
	* inline.adb (Expand_Inlined_Call): Fix the count
	for the number of generated gotos.

2017-01-13  Yannick Moy  <moy@adacore.com>

	* inline.adb: Code cleanup.
	* sem_util.adb (Is_OK_Volatile_Context): Add
	expression in delay statement as OK for volatile context.

2017-01-13  Ed Schonberg  <schonberg@adacore.com>

	* sem_aggr.adb (Resolve_Array_Aggregate): In normal compilation
	mode a choice that is a subtype with a static predicate is
	replaced by the values it covers. This transformation must not
	be performed in ASIS mode, to preserve the source for analysis.

2017-01-13  Justin Squirek  <squirek@adacore.com>

	* nlists.ads: Correct minor typo.

2017-01-13  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch13.adb: Minor reformatting and typo fix.

2017-01-13  Ed Schonberg  <schonberg@adacore.com>

	* par-ch4.adb (P_Aggregate_Or_Parent_Expr): An
	Iterated_Component_Association is a named association in an
	array aggregate.
	* sem_aggr.adb (Resolve_Iterated_Component_Association): New
	procedure, subsidiary of Resolve_Array_Aggregate, to analyze
	and resolve the discrete choices and the expression of the
	new construct.
	* sinfo.adb, sinfo.ads: In analogy with N_Component_Association,
	Loop_Actions and Box_Present are attributes of
	N_Iterated_Component_Association nodes. Box_Present is always
	False in this case.
	* sprint.adb (Sprint_Node): An Iterated_Component_Association
	has a Discrete_Choices list, as specified in the RM. A
	Component_Association for aggregate uses instead a Choices list.
	We have to live with this small inconsistency because the new
	construct also has a defining identifier, and there is no way
	to merge the two node structures.

2017-01-13  Yannick Moy  <moy@adacore.com>

	* inline.adb (Remove_Aspects_And_Pragmas): Add Unused to the
	list of pragmas to remove.  Remove pragmas from the list of
	statements in the body to inline.
	* namet.adb, namet.ads (Nam_In): New version with 12 parameters.

2017-01-13  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Resolve_Aspects): New procedure, subsidiary of
	Analyze_Declarations, to analyze and resolve the expressions of
	aspect specifications in the current declarative list, so that
	the expressions have proper entity and type info.  This is needed
	for ASIS when there is no subsequent expansion to generate this
	semantic information.
	* sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): Use Etype of
	original expression, to suppress cascaded errors when expression
	has been constant-folded.
	(Resolve_Aspect_Expressions, Resolve_Name): Preserve entities in
	ASIS mode, because there is no subsequent expansion to decorate
	the tree.

2017-01-13  Yannick Moy  <moy@adacore.com>

	* inline.adb, inline.ads (Call_Can_Be_Inlined_In_GNATprove_Mode):
	New function to detect when a call may be inlined or not in
	GNATprove mode.
	(Expand_Inlined_Call): Ensure that a temporary
	is always created in the cases where a type conversion may be
	needed on an input parameter in GNATprove mode, so that GNATprove
	sees the check to perform.
	* sem_res.adb (Resolve_Call): In GNATprove mode, skip inlining
	when not applicable due to actual requiring type conversion
	with possible check but no temporary value can be copied for
	GNATprove to see the check.

2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_aggr.adb, par_sco.adb, s-osprim-mingw.adb, exp_ch5.adb,
	exp_prag.adb, sem_ch3.adb, xr_tabls.adb, lib-xref-spark_specific.adb,
	layout.adb, sem_dist.adb, exp_spark.adb, exp_ch7.adb, gnatcmd.adb,
	exp_util.adb, prj-proc.adb, sem_aux.adb, comperr.adb, g-memdum.adb,
	exp_attr.adb, s-intman-solaris.adb, exp_ch9.adb, make.adb, live.adb,
	g-sercom-linux.adb, sem_dim.adb, mlib-prj.adb, s-intman-posix.adb,
	sem_ch9.adb, sem_ch10.adb, prep.adb, einfo.adb, scng.adb, checks.adb,
	prj-strt.adb, sem_prag.adb, eval_fat.adb, sem_ch12.adb, sem.adb,
	a-numaux-x86.adb, a-stwifi.adb, i-cobol.adb, prj.adb,
	get_spark_xrefs.adb, s-tasini.adb, rtsfind.adb, freeze.adb,
	g-arrspl.adb, par-ch4.adb, sem_util.adb, sem_res.adb, expander.adb,
	sem_attr.adb, exp_dbug.adb, prj-pp.adb, a-stzfix.adb, s-interr.adb,
	s-wchcnv.adb, switch-m.adb, gnat1drv.adb, sinput-l.adb, stylesw.adb,
	contracts.adb, s-intman-android.adb, g-expect.adb, exp_ch4.adb,
	g-comlin.adb, errout.adb, sinput.adb, s-exctra.adb, repinfo.adb,
	g-spipat.adb, g-debpoo.adb, exp_ch6.adb, sem_ch4.adb, exp_ch13.adb,
	a-wtedit.adb, validsw.adb, pprint.adb, widechar.adb, makeutl.adb,
	ali.adb, set_targ.adb, sem_mech.adb, sem_ch6.adb, gnatdll.adb,
	get_scos.adb, g-pehage.adb, s-tratas-default.adb, gnatbind.adb,
	prj-dect.adb, g-socthi-mingw.adb, par-prag.adb, prj-nmsc.adb,
	exp_disp.adb, par-ch12.adb, binde.adb, sem_ch8.adb,
	s-tfsetr-default.adb, s-regexp.adb, gprep.adb, s-tpobop.adb,
	a-teioed.adb, sem_warn.adb, sem_eval.adb, g-awk.adb, s-io.adb,
	a-ztedit.adb, xoscons.adb, exp_intr.adb, sem_cat.adb, sprint.adb,
	g-socket.adb, exp_dist.adb, sem_ch13.adb, s-tfsetr-vxworks.adb,
	par-ch3.adb, treepr.adb, g-forstr.adb, g-catiio.adb, par-ch5.adb,
	uname.adb, osint.adb, exp_ch3.adb, prj-env.adb, a-strfix.adb,
	a-stzsup.adb, prj-tree.adb, s-fileio.adb: Update all eligible case
	statements to reflect the new style for case alternatives. Various
	code clean up and reformatting.

2017-01-13  Gary Dismukes  <dismukes@adacore.com>

	* exp_util.adb: Minor reformatting.

2017-01-13  Yannick Moy  <moy@adacore.com>

	* exp_spark.adb: Code cleanup.
	* sem_ch9.adb (Analyze_Delay_Until): Resolve
	expression so that calls are identified as such inside delay
	until.

2017-01-13  Ed Schonberg  <schonberg@adacore.com>

	* exp_util.adb (Insert_Actions): Handle Iterated_Component_Association.
	* par-ch3.adb (P_Discrete_Choice_List): An
	Iterated_Component_Association is an array aggregate component.
	* par-ch4.adb (P_Iterated_Component_Association): New procedure.
	(Is_Quantified_Expression): New function that performs a lookahead
	to distinguish quantified expressions from iterated component
	associations.
	(P_Aggregate_Or_Paren_Expr): Recognize iterated component
	associations.
	(P_Unparen_Cond_Case_Quant_Expression, P_Primary): Ditto.
	* sem.adb (Analyze): Handle Iterated_Component_Association.
	* sem_aggr.adb (Resolve_Array_Aggregate): Dummy handling of iterated
	component associations.
	* sinfo.ads, sinfo.adb: Entries for for
	N_Iterated_Component_Association and its fields.
	* sprint.adb (Sprint_Node_Actual): Handle
	N_Iterated_Component_Association.

2017-01-13  Justin Squirek  <squirek@adacore.com>

	* sem_ch12.adb (Analyze_Package_Instantiation): Move disabiling
	of the style check until after preanalysis of acutals.

2017-01-13  Yannick Moy  <moy@adacore.com>

	* sem_ch13.adb: Minor reformatting.
	* par-ch11.adb: minor style fix in whitespace
	* gnatbind.adb (Gnatbind): Scope of Std_Lib_File
	reduced to Add_Artificial_ALI_File; style fix in declaration of
	Text; grammar fix in comment.
	* osint-c.adb (Read_Library_Info): strip trailing NUL from result.
	* freeze.adb: Cleanup to pass pragma instead of
	expression to call.
	* exp_spark.adb (Expand_SPARK_Attribute_Reference): New procedure to
	replace System'To_Address by equivalent call.

2017-01-13  Arnaud Charlet  <charlet@adacore.com>

	* bindusg.adb: Improve usage output for -f switch.

2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>

	* frontend.adb, freeze.adb, sem_res.adb, sem_attr.adb, sem_ch8.adb:
	Minor reformatting.

2017-01-13  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Is_Predicate_Static): Following the intent of the RM,
	treat comparisons on strings as legal in a Static_Predicate.
	(Is_Predicate_Static, Is_Type_Ref): Predicate also returns true on
	a function call that is the expansion of a string comparison.The
	function call is built when compiling the corresponding predicate
	function, but the expression has been found legal as a static
	predicate during earlier analysis.
	* sem_eval.adb (Real_Or_String_Static_Predicate_Matches): Handle
	properly a function call that is the expansion of a string
	comparison operation, in order to recover the Static_Predicate
	expression and apply it to a static argument when needed.

2017-01-13  Tristan Gingold  <gingold@adacore.com>

	* s-mmap.adb, s-mmap.ads (Open_Read_No_Exception): New function.
	(Open_Read): Re-implement using Open_Read_No_Exception.
	(Open_Write): Raise exception in case of error.
	* s-mmosin-mingw.adb (Open_Common): Do not raise exception.
	* s-mmosin-unix.adb (Open_Read, Open_Write): Do not
	reaise exception.
	* s-mmosin-mingw.ads, s-mmosin-unix.ads (Open_Read): Adjust comment.

2017-01-13  Yannick Moy  <moy@adacore.com>

	* checks.adb: Code cleanup.

2017-01-13  Yannick Moy  <moy@adacore.com>

	* freeze.adb (Check_Inherited_Conditions): Use analyzed pragma
	expression instead of unanalyzed aspect expression for checking
	the validity of inheriting an operation. Also copy the expression
	being passing it to Build_Class_Wide_Expression, as this call
	modifies its argument.
	* sem_util.ads Fix comment to reference correct function name
	New_Copy_Tree.

2017-01-13  Javier Miranda  <miranda@adacore.com>

	* sem_res.adb (Resolve_Generalized_Indexing): Compiling in ASIS mode,
	when we propagate information about the indexes back to the original
	indexing mode and the prefix of the index is a function call, do not
	remove any parameter from such call.

2017-01-13  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch6.ads (Needs_BIP_Finalization_Master): Update comment.
	* exp_ch6.adb (Needs_BIP_Finalization_Master): Return True for
	a build-in-place function whose result type is tagged.

2017-01-13  Yannick Moy  <moy@adacore.com>

	* sem_ch8.adb (Analyze_Subprogram_Renaming.Build_Class_Wide_Wrapper):
	Do not generate a wrapper when the only candidate is a class-wide
	subprogram.
	(Analyze_Subprogram_Renaming): Do not freeze the renaming or renamed
	inside a generic context.

2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb (Add_Inherited_Tagged_DIC):
	Pass the object parameters of both the parent and the derived
	type DIC procedure to the reference replacement circuitry.
	(Find_DIC_Type): Modify the circuitry to present the partial
	view of a private type in case the private type defines its own
	DIC pragma.
	(Replace_Object_And_Primitive_References): Add two
	optional formal parameters.  Update the comment on usage. Update
	the replacement of references to object parameters.

2017-01-13  Gary Dismukes  <dismukes@adacore.com>

	* einfo.adb, sem_ch6.adb, atree.adb: Minor reformatting and typo fix.

2017-01-13  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Actuals): Apply Scalar_Range_Check to
	an out parameter that is a type conversion, independently of th
	range check that may apply to the expression of the conversion,
	for use in GNATProve.

2017-01-13  Yannick Moy  <moy@adacore.com>

	* gnat1drv.adb (Gnat1drv): Move the implicit with for System in
	GNATprove_Mode here to Frontend.
	* frontend.adb (Frontend): Move the implicit with for System
	in GNATprove_Mode here as it ismore correct this way; the old
	place only worked by chance, since there were no overloaded names.
	* rtsfind.ads (RE_Id, RE_Unit_Table): Add RE_Tasking_State.
	* sem_attr.adb (Analyze_Attribute): In GNATprove_Mode, for the
	four attributes identified in SRM 9(18), add an implicit with
	to Ada.Task_Identification.
	* sem_ch8.adb (Analyze_Subprogram_Renaming.Build_Class_Wide_Wrapper):
	Deal specially with the wrapper introduced for AI05-0071 in GNATprove
	mode.
	* checks.adb (Apply_Discriminant_Check,
	Apply_Selected_Length_Checks, Apply_Selected_Range_Checks):
	In GNATprove mode, we do not apply the checks, but we still
	analyze the expression to possibly issue errors on SPARK
	code when a run-time error can be detected at compile time.
	(Selected_Length_Checks, Selected_Range_Checks): Perform analysis
	in GNATprove mode.

2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>

	* expander.adb (Expand): Add a warning about using return
	statements in Ghost management code.
	* exp_ch3.adb (Freeze_Type): Add a warning about using return
	statements in Ghost management code.
	* exp_ch7.adb (Build_Invariant_Procedure_Body,
	Build_Invariant_Procedure_Declaration): Add a warning about
	using return statements in Ghost management code.
	* exp_disp.adb (Make_DT): Add a warning about using return
	statements in Ghost management code.
	* exp_util.adb (Build_DIC_Procedure_Body,
	Build_DIC_Procedure_Declaration, Make_Predicated_Call): Add a
	warning about using return statements in Ghost management code.
	* freeze.adb (Freeze_Entity): Add a warning about using return
	statements in Ghost management code.
	* sem.adb (Analyze, Do_Analyze): Add a warning about using return
	statements in Ghost management code.
	* sem_ch3.adb (Analyze_Object_Declaration, Process_Full_View): Add
	a warning about using return statements in Ghost management code.
	* sem_ch5.adb (Analyze_Assignment): Add a warning about using
	return statements in Ghost management code.
	* sem_ch6.adb (Analyze_Procedure_Call,
	Analyze_Subprogram_Body_Helper): Add a warning about using return
	statements in Ghost management code.
	* sem_ch7.adb (Analyze_Package_Body_Helper): Add a warning about
	using return statements in Ghost management code.
	* sem_ch12.adb (Analyze_Package_Instantiation,
	Analyze_Subprogram_Instantiation, Instantiate_Package_Body,
	Instantiate_Subprogram_Body): Add a warning about using return
	statements in Ghost management code.
	* sem_ch13.adb (Build_Predicate_Functions,
	Build_Predicate_Function_Declarations): Add a warning about
	using return statements in Ghost management code.
	* sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part,
	Analyze_Initial_Condition_In_Decl_Part, Analyze_Pragma,
	Analyze_Pre_Post_Condition_In_Decl_Part):  Add a warning about
	using return statements in Ghost management code.

2017-01-13  Tristan Gingold  <gingold@adacore.com>

	* s-mmosin-mingw.adb: Fix pragma import.

2017-01-13  Arnaud Charlet  <charlet@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): Ignore -gnateE in
	codepeer mode.

2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>

	* atree.adb (Allocate_Initialize_Node): A newly created node is
	no longer marked as Ghost at this level.
	(Mark_New_Ghost_Node): New routine.
	(New_Copy): Mark the copy as Ghost.
	(New_Entity): Mark the entity as Ghost.
	(New_Node): Mark the node as Ghost.
	* einfo.adb (Is_Checked_Ghost_Entity): This attribute can now
	apply to unanalyzed entities.
	(Is_Ignored_Ghost_Entity): This attribute can now apply to unanalyzed
	entities.
	(Set_Is_Checked_Ghost_Entity): This attribute now
	applies to all entities as well as unanalyzed entities.
	(Set_Is_Ignored_Ghost_Entity): This attribute now applies to
	all entities as well as unanalyzed entities.
	* expander.adb Add with and use clauses for Ghost.
	(Expand): Install and revert the Ghost region associated with the node
	being expanded.
	* exp_ch3.adb (Expand_Freeze_Array_Type): Remove all Ghost-related code.
	(Expand_Freeze_Class_Wide_Type): Remoe all Ghost-related code.
	(Expand_Freeze_Enumeration_Type): Remove all Ghost-related code.
	(Expand_Freeze_Record_Type): Remove all Ghost-related code.
	(Freeze_Type): Install and revert the Ghost region associated
	with the type being frozen.
	* exp_ch5.adb Remove with and use clauses for Ghost.
	(Expand_N_Assignment_Statement): Remove all Ghost-related code.
	* exp_ch6.adb Remove with and use clauses for Ghost.
	(Expand_N_Procedure_Call_Statement): Remove all Ghost-relatd code.
	(Expand_N_Subprogram_Body): Remove all Ghost-related code.
	* exp_ch7.adb (Build_Invariant_Procedure_Body): Install and revert the
	Ghost region of the working type.
	(Build_Invariant_Procedure_Declaration): Install and revert
	the Ghost region of the working type.
	(Expand_N_Package_Body): Remove all Ghost-related code.
	* exp_ch8.adb Remove with and use clauses for Ghost.
	(Expand_N_Exception_Renaming_Declaration): Remove all Ghost-related
	code.
	(Expand_N_Object_Renaming_Declaration): Remove all Ghost-related code.
	(Expand_N_Package_Renaming_Declaration): Remove all Ghost-related code.
	(Expand_N_Subprogram_Renaming_Declaration): Remove all Ghost-related
	code.
	* exp_ch13.adb Remove with and use clauses for Ghost.
	(Expand_N_Freeze_Entity): Remove all Ghost-related code.
	* exp_disp.adb (Make_DT): Install and revert the Ghost region of
	the tagged type. Move the generation of various entities within
	the Ghost region of the type.
	* exp_prag.adb Remove with and use clauses for Ghost.
	(Expand_Pragma_Check): Remove all Ghost-related code.
	(Expand_Pragma_Contract_Cases): Remove all Ghost-related code.
	(Expand_Pragma_Initial_Condition): Remove all Ghost-related code.
	(Expand_Pragma_Loop_Variant): Remove all Ghost-related code.
	* exp_util.adb (Build_DIC_Procedure_Body): Install
	and revert the Ghost region of the working types.
	(Build_DIC_Procedure_Declaration): Install and revert the
	Ghost region of the working type.
	(Make_Invariant_Call): Install and revert the Ghost region of the
	associated type.
	(Make_Predicate_Call): Reimplemented. Install and revert the
	Ghost region of the associated type.
	* freeze.adb (Freeze_Entity): Install and revert the Ghost region
	of the entity being frozen.
	(New_Freeze_Node): Removed.
	* ghost.adb Remove with and use clauses for Opt.
	(Check_Ghost_Completion): Update the parameter profile
	and all references to formal parameters.
	(Ghost_Entity): Update the comment on usage.
	(Install_Ghost_Mode): New routines.
	(Is_Ghost_Assignment): New routine.
	(Is_Ghost_Declaration): New routine.
	(Is_Ghost_Pragma): New routine.
	(Is_Ghost_Procedure_Call): New routine.
	(Is_Ghost_Renaming): Removed.
	(Is_OK_Declaration): Reimplemented.
	(Is_OK_Pragma): Reimplemented.
	(Is_OK_Statement): Reimplemented.
	(Is_Subject_To_Ghost): Update the comment on usage.
	(Mark_And_Set_Ghost_Assignment): New routine.
	(Mark_And_Set_Ghost_Body): New routine.
	(Mark_And_Set_Ghost_Completion): New routine.
	(Mark_And_Set_Ghost_Declaration): New routine.
	(Mark_And_Set_Ghost_Instantiation): New routine.
	(Mark_And_Set_Ghost_Procedure_Call): New routine.
	(Mark_Full_View_As_Ghost): Removed.
	(Mark_Ghost_Declaration_Or_Body): New routine.
	(Mark_Ghost_Pragma): New routine.
	(Mark_Ghost_Renaming): New routine.
	(Mark_Pragma_As_Ghost): Removed.
	(Mark_Renaming_As_Ghost): Removed.
	(Propagate_Ignored_Ghost_Code): Update the comment on usage.
	(Prune_Node): Freeze nodes no longer need special pruning, they
	are processed by the general ignored Ghost code mechanism.
	(Restore_Ghost_Mode): New routine.
	(Set_Ghost_Mode): Reimplemented.
	(Set_Ghost_Mode_From_Entity): Removed.
	* ghost.ads Add with and use clauses for Ghost.
	(Check_Ghost_Completion): Update the parameter profile
	along with the comment on usage.
	(Install_Ghost_Mode): New routine.
	(Is_Ghost_Assignment): New routine.
	(Is_Ghost_Declaration): New routine.
	(Is_Ghost_Pragma): New routine.
	(Is_Ghost_Procedure_Call): New routine.
	(Mark_And_Set_Ghost_Assignment): New routine.
	(Mark_And_Set_Ghost_Body): New routine.
	(Mark_And_Set_Ghost_Completion): New routine.
	(Mark_And_Set_Ghost_Declaration): New routine.
	(Mark_And_Set_Ghost_Instantiation): New routine.
	(Mark_And_Set_Ghost_Procedure_Call): New routine.
	(Mark_Full_View_As_Ghost): Removed.
	(Mark_Ghost_Pragma): New routine.
	(Mark_Ghost_Renaming): New routine.
	(Mark_Pragma_As_Ghost): Removed.
	(Mark_Renaming_As_Ghost): Removed.
	(Restore_Ghost_Mode): New routine.
	(Set_Ghost_Mode): Redefined.
	(Set_Ghost_Mode_From_Entity): Removed.
	* sem.adb (Analyze): Install and revert the Ghost region of the
	node being analyzed.
	(Do_Analyze): Change the way a clean Ghost
	region is installed and reverted.
	* sem_ch3.adb (Analyze_Full_Type_Declaration): Remove
	all Ghost-related code.
	(Analyze_Incomplete_Type_Decl): Remove all Ghost-related code.
	(Analyze_Number_Declaration): Remove all Ghost-related code.
	(Analyze_Object_Declaration): Install and revert the Ghost region of
	a deferred object declaration's completion.
	(Array_Type_Declaration): Remove all Ghost-related code.
	(Build_Derived_Type): Update the comment on
	the propagation of Ghost attributes from a parent to a derived type.
	(Derive_Subprogram): Remove all Ghost-related code.
	(Make_Class_Wide_Type): Remove all Ghost-related code.
	(Make_Implicit_Base): Remove all Ghost-related code.
	(Process_Full_View): Install and revert the Ghost region of
	the partial view.  There is no longer need to check the Ghost
	completion here.
	* sem_ch5.adb (Analyze_Assignment): Install and revert the Ghost
	region of the left hand side.
	* sem_ch6.adb (Analyze_Abstract_Subprogram_Declaration): Remove
	all Ghost-related code.
	(Analyze_Expression_Function): Remove all Ghost-related code.
	(Analyze_Generic_Subprogram_Body): Remove all Ghost-related code.
	(Analyze_Procedure_Call): Install and revert the Ghost region of
	the procedure being called.
	(Analyze_Subprogram_Body_Helper): Install and revert the Ghost
	region of the spec or body.
	(Analyze_Subprogram_Declaration): Remove all Ghost-related code.
	(Build_Subprogram_Declaration): Remove all Ghost-related code.
	(Find_Corresponding_Spec): Remove all Ghost-related code.
	(Process_Formals): Remove all Ghost-related code.
	* sem_ch7.adb (Analyze_Package_Body_Helper): Install and revert
	the Ghost region of the spec.
	(Analyze_Package_Declaration): Remove all Ghost-related code.
	* sem_ch8.adb (Analyze_Exception_Renaming): Mark a renaming as
	Ghost when it aliases a Ghost entity.
	(Analyze_Generic_Renaming): Mark a renaming as Ghost when it aliases
	a Ghost entity.
	(Analyze_Object_Renaming): Mark a renaming as Ghost when
	it aliases a Ghost entity.
	(Analyze_Package_Renaming): Mark a renaming as Ghost when it aliases
	a Ghost entity.
	(Analyze_Subprogram_Renaming): Mark a renaming as Ghost when it
	aliases a Ghost entity.
	* sem_ch11.adb Remove with and use clauses for Ghost.
	(Analyze_Exception_Declaration): Remove all Ghost-related code.
	* sem_ch12.adb (Analyze_Generic_Package_Declaration): Remove all
	Ghost-related code.
	(Analyze_Generic_Subprogram_Declaration): Remove all Ghost-related
	code.
	(Analyze_Package_Instantiation): Install and revert the Ghost region
	of the package instantiation.
	(Analyze_Subprogram_Instantiation): Install
	and revert the Ghost region of the subprogram instantiation.
	(Instantiate_Package_Body): Code clean up. Install and revert the
	Ghost region of the package body.
	(Instantiate_Subprogram_Body): Code clean up. Install and revert the
	Ghost region of the subprogram body.
	* sem_ch13.adb (Build_Predicate_Functions): Install
	and revert the Ghost region of the related type.
	(Build_Predicate_Function_Declaration): Code clean up. Install
	and rever the Ghost region of the related type.
	* sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part):
	Install and revert the Ghost region of the pragma.
	(Analyze_Initial_Condition_In_Decl_Part): Install and revert the
	Ghost region of the pragma.
	(Analyze_Pragma): Install and revert the Ghost region of various
	pragmas.  Mark a pragma as Ghost when it is related to a Ghost entity
	or encloses a Ghost entity.
	(Analyze_Pre_Post_Condition): Install and revert the Ghost
	region of the pragma.
	(Analyze_Pre_Post_Condition_In_Decl_Part): Install and revert the
	Ghost region of the pragma.
	* sem_res.adb (Resolve): Remove all Ghost-related code.
	* sem_util.adb (Is_Declaration): Reimplemented.
	(Is_Declaration_Other_Than_Renaming): New routine.
	* sem_util.ads (Is_Declaration_Other_Than_Renaming): New routine.
	* sinfo.adb (Is_Checked_Ghost_Pragma): New routine.
	(Is_Ghost_Pragma): Removed.
	(Is_Ignored_Ghost_Pragma): New routine.
	(Set_Is_Checked_Ghost_Pragma): New routine.
	(Set_Is_Ghost_Pragma): Removed.
	(Set_Is_Ignored_Ghost_Pragma): New routine.
	* sinfo.ads: Update the documentation on Ghost mode and
	Ghost regions.	New attributes Is_Checked_Ghost_Pragma
	and Is_Ignored_Ghost_Pragma along with usages in nodes.
	Remove attribute Is_Ghost_Pragma along with usages in nodes.
	(Is_Checked_Ghost_Pragma): New routine along with pragma Inline.
	(Is_Ghost_Pragma): Removed along with pragma Inline.
	(Is_Ignored_Ghost_Pragma): New routine along with pragma Inline.
	(Set_Is_Checked_Ghost_Pragma): New routine along with pragma Inline.
	(Set_Is_Ghost_Pragma): Removed along with pragma Inline.
	(Set_Is_Ignored_Ghost_Pragma): New routine along with pragma Inline.

2017-01-12  Tristan Gingold  <gingold@adacore.com>

	* s-mmap.ads, s-mmap.adb, s-mmosin-unix.ads, s-mmosin-unix.adb,
	s-mmauni-long.ads, s-mmosin-mingw.ads, s-mmosin-mingw.adb: New files.

2017-01-12  Yannick Moy  <moy@adacore.com>

	* errout.adb, errout.ads (Initialize): Factor common treatment
	in Reset_Warnings.
	(Reset_Warnings): New procedure to reset counts related to warnings.
	(Record_Compilation_Errors): New variable to store the presence of an
	error, used in gnat2why to allow changing the Warning_Mode.
	(Compilation_Errors): Use new variable Record_Compilation_Errors to
	store the presence of an error.

2017-01-12  Javier Miranda  <miranda@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications):
	For Interrupt_Handler and Attach_ Handler aspects, decorate the
	internally built reference to the protected procedure as coming
	from sources and force its analysis.

2017-01-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Build_Derived_Type): For a scalar derived type,
	inherit predicates if any from the first_subtype of the parent,
	not from the anonymous parent type.
	* sem_eval.adb (Is_Static_Subtype): A type that inherits a dynamic
	predicate is not a static subtype.

2017-01-12  Gary Dismukes  <dismukes@adacore.com>

	* freeze.adb (Check_Suspicious_Convention): New procedure
	performing a warning check on discriminated record types with
	convention C or C++. Factored out of procedure Freeze_Record_Type,
	and changed to only apply to base types (to avoid spurious
	warnings on subtypes). Minor improvement of warning messages
	to refer to discriminated rather than variant record types.
	(Freeze_Record_Type): Remove code for performing a suspicious
	convention check.
	(Freeze_Entity): Only call Freeze_Record_Type
	on types that aren't declared within any enclosing generic units
	(rather than just excluding the type when the innermost scope
	is generic). Call Check_Suspicious_Convention whether or not
	the type is declared within a generic unit.
	* sem_ch8.adb (In_Generic_Scope): Move this function to Sem_Util.
	* sem_util.ads, sem_util.adb (In_Generic_Scope): New function (moved
	from Sem_Ch8).

2017-01-12  Tristan Gingold  <gingold@adacore.com>

	* sysdep.c, adaint.c, rtinit.c, ming32.h:
	(__gnat_current_codepage): Renamed from CurrentCodePage
	(__gnat_current_ccs_encoding): Renamed from CurrentCCSEncoding

2017-01-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Fully_Conformant_Expressions): Handle properly
	quantified expressions, following AI12-050: the loop parameters
	of two quantified expressions are conformant if they have the
	same identifier.

2017-01-12  Arnaud Charlet  <charlet@adacore.com>

	* gcc-interface/Makefile.in: Clean up VxWorks targets.

2017-01-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Analyze_Attribute_Reference, case Loop_Entry):
	Hnadle properly the attribute reference when it appears as part
	of an expression in another loop aspect.

2017-01-12  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch3.adb (Check_Predicated_Discriminant): New procedure,
	subsidiary of Build_Initialization_Call, to complete generation
	of predicate checks on discriminants whose (sub)types have
	predicates, and to add checks on variants that do not have an
	others clause.
	* sem_util.adb (Gather_Components): A missing Others alternative is
	not an error when the type of the discriminant is a static predicate
	(and coverage has been checked when analyzing the case statement). A
	runtime check is generated to verify that a given discriminant
	satisfies the predicate (RM 3.8.1. (21.1/2)).

2017-01-12  Yannick Moy  <moy@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): Only
	perform checking of exception mechanism when generating code.

2017-01-12  Justin Squirek  <squirek@adacore.com>

	* exp_ch7.adb (Add_Type_Invariants, Process_Array_Component):
	Remove handling of access component with invariant.
	(Build_Invariant_Procedure_Declaration): Remove return on class
	wide type.
	* freeze.adb (Freeze_Array_Type, Freeze_Record_Type): Remove
	conditional exception for component or array so Has_Own_Invariants
	flag is not falsly set.
	* sem_ch3.adb (Make_Class_Wide_Type): Initialize copy of class
	wide type to have no invariant flags.

2017-01-12  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch9.adb, sem_prag.adb, s-tassta.adb, sem_util.adb, s-tarest.adb,
	sem_ch13.adb: Minor reformatting.

2017-01-12  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_aggr.adb (Build_Record_Aggr_Code): Guard against a missing
	adjustment primitive when the ancestor type was not properly frozen.
	(Gen_Assign): Guard against a missing initialization
	primitive when the component type was not properly frozen.
	(Initialize_Array_Component): Guard against a missing adjustment
	primitive when the component type was not properly frozen.
	(Initialize_Record_Component): Guard against a missing adjustment
	primitive when the component type was not properly frozen.
	(Process_Transient_Component_Completion): The transient object may
	not be finalized when its associated type was not properly frozen.
	* exp_ch3.adb (Build_Assignment): Guard against a missing
	adjustment primitive when the component type was not properly frozen.
	(Build_Initialization_Call): Guard against a missing
	initialization primitive when the associated type was not properly
	frozen.
	(Expand_N_Object_Declaration): Guard against a missing
	adjustment primitive when the base type was not properly frozen.
	(Predefined_Primitive_Bodies): Create an empty Deep_Adjust
	body when there is no adjustment primitive available. Create an
	empty Deep_Finalize body when there is no finalization primitive
	available.
	* exp_ch4.adb (Apply_Accessibility_Check): Guard against a
	missing finalization primitive when the designated type was
	not properly frozen.
	(Expand_N_Allocator): Guard against a missing initialization primitive
	when the designated type was not properly frozen.
	* exp_ch5.adb (Make_Tag_Ctrl_Assignment): Add the adjustment call
	only when the corresponding adjustment primitive is available.
	* exp_ch7.adb (Build_Adjust_Or_Finalize_Statements): Generate the
	adjustment/finalization statements only when there is an available
	primitive to carry out the action.
	(Build_Initialize_Statements): Generate the initialization/finalization
	statements only when there is an available primitive to carry out the
	action.
	(Make_Adjust_Call): Do not generate a call when the underlying
	type is not present due to a possible missing full view.
	(Make_Final_Call): Do not generate a call when the underlying
	type is not present due to a possible missing full view.
	(Make_Finalize_Address_Stmts): Generate an empty body when the
	designated type lacks a finalization primitive.
	(Make_Init_Call): Do not generate a call when the underlying type is
	not present due to a possible missing full view.
	(Process_Component_For_Adjust): Add the adjustment call only when the
	corresponding adjustment primitive is available.
	(Process_Component_For_Finalize): Add the finalization call only when
	the corresponding finalization primitive is available.
	(Process_Object_Declaration): Use a null statement to emulate a
	missing call to the finalization primitive of the object type.
	* exp_ch7.ads (Make_Adjust_Call): Update the comment on usage.
	(Make_Final_Call): Update the comment on usage.
	(Make_Init_Call): Update the comment on usage.
	* exp_util.adb (Build_Transient_Object_Statements): Code reformatting.

2017-01-12  Arnaud Charlet  <charlet@adacore.com>

	* einfo.ads: Update documentation of Address_Taken.
	* sem_attr.adb (Analyze_Access_Attribute, Resolve_Attribute
	[Access_Attribute]): Only consider 'Access/'Unchecked_Access
	for subprograms when setting Address_Taken flag.

2017-01-12  Patrick Bernardi  <bernardi@adacore.com>

	* sem_ch10.adb (Analyze_With_Clause): Removed code that turned
	Configurable_Run_Time_Mode off when analysing with'ed predefined
	libraries.

2017-01-12  Gary Dismukes  <dismukes@adacore.com>

	* sem_prag.adb: Minor reformatting.
	* sem_util.adb (Unique_Entity): fix result for
	bodies of entry families.

2017-01-12  Justin Squirek  <squirek@adacore.com>

	* sem_prag.adb (Analyze_Pragma): Add appropriate calls to
	Resolve_Suppressible in the pragma Assertion_Policy case.
	(Resolve_Suppressible): Created this function to factor out
	common code used to resolve Suppress to either Ignore or Check
	* snames.ads-tmpl: Add name for Suppressible.

2017-01-12  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch9.adb, s-secsta.adb, snames.ads-tmpl, exp_ch3.adb: Minor
	reformatting.
	* debug.adb: Minor comment fixes.

2017-01-12  Arnaud Charlet  <charlet@adacore.com>

	* sem_util.adb (Unique_Entity): For concurrent
	bodies that are defined with stubs and complete a declaration
	of a single concurrent object return the entity of an implicit
	concurrent type, not the entity of the anonymous concurrent
	object.
	* debug.adb: -gnatd.J is no longer used.
	* make.adb (Globalize): Removed, no longer used.
	* sem_ch9.adb: minor typo in comment for entry index

2017-01-12  Patrick Bernardi  <bernardi@adacore.com>

	* aspect.adb, aspect.ads: Added new aspect Secondary_Stack_Size.
	* exp_ch3.adb (Build_Init_Statements): As part of initialising
	the value record of a task, set its _Secondary_Stack_Size field
	if present.
	* exp_ch9.adb (Expand_N_Task_Type_Declaration): Create
	a _Secondary_Stack_Size field in the value record of
	the task if a Secondary_Stack_Size rep item is present.
	(Make_Task_Create_Call): Include secondary stack size
	parameter. If No_Secondary_Stack restriction is in place, passes
	stack size of 0.
	* par-prag.adb, sem_prag.adb, sem_prag.ads: Added new pragma
	Secondary_Stack_Size.
	* s-secsta.adb, s-secsta.ads (Minimum_Secondary_Stack_Size): New
	function to define the overhead of the secondary stack.
	* s-tarest.adb (Create_Restricted_Task,
	Create_Restricted_Task_Sequential): Functions now include
	Secondary_Stack_Size parameter to pass to Initialize_ATCB.
	* s-tarest.adb (Create_Restricted_Task,
	Create_Restricted_Task_Sequential): Calls to Initialize_ATCB now
	include Secondary_Stack_Size parameter.
	(Task_Wrapper): Secondary stack now allocated to the size specified by
	the Secondary_Stack_Size parameter in the task's ATCB.
	* s-taskin.adb, s-taskin.adb (Common_ATCB, Initialize_ATCB): New
	Secondary_Stack_Size component.
	* s-tassta.adb, s-tassta.ads (Create_Restricted_Task,
	Create_Restricted_Task_Sequential): Function now include
	Secondary_Stack_Size parameter.
	(Task_Wrapper): Secondary stack now allocated to the size
	specified by the Secondary_Stack_Size parameter in the task's
	ATCB.
	* s-tproft.adb (Register_Foreign_Thread): Amended Initialize_ATCB call
	to include Secondary_Stack_Size parameter.
	* sem_ch13.adb (Analyze_Aspect_Specification): Add support for
	Secondary_Stack_Size aspect, turning the aspect into its corresponding
	internal attribute.
	(Analyze_Attribute_Definition): Process Secondary_Stack_Size attribute.
	* snames.adb-tmpl, snames.ads-tmpl: Added names
	Name_Secondary_Stack_Size, Name_uSecondary_Stack_Size,
	Attribute_Secondary_Stack_Size and Pragma_Secondary_Stack_Size.

2017-01-12  Yannick Moy  <moy@adacore.com>

	* exp_spark.adb (Expand_SPARK_Potential_Renaming): Fix sloc of copied
	subtree.

2017-01-12  Justin Squirek  <squirek@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference):
	Fix Finalization_Size case by properly resolving the type after
	rewritting the node.

2017-01-12  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb (Build_DIC_Procedure_Body): Semi-insert the body into
	the tree.
	(Build_DIC_Procedure_Declaration): Semi-insert the body into the tree.
	* binde.adb, exp_ch5.adb, sem_type.adb, sem.ads, sem_res.adb,
	exp_sel.ads: Minor reformatting.

2017-01-12  Justin Squirek  <squirek@adacore.com>

	* exp_ch6.adb (Expand_Call): Add guard to prevent
	invariant checks from being created for internally generated
	subprograms.

2017-01-12  Bob Duff  <duff@adacore.com>

	* lib-writ.ads: Remove incorrect comment.

2017-01-12  Javier Miranda  <miranda@adacore.com>

	* debug.adb (-gnatd.K): Enable generation of contract-only
	procedures in CodePeer mode.
	* contracts.adb (Build_And_Analyze_Contract_Only_Subprograms):
	New subprogram.
	(Analyze_Contracts): Generate contract-only procedures if -gnatdK is
	set.
	* scil_ll.ads, scil_ll.adb (Get_Contract_Only_Body_Name): New
	subprogram.
	(Get_Contract_Only_Missing_Body_Name): New subprogram.
	(Get_Contract_Only_Body): New subprogram.
	(Set_Contract_Only_Body): New subprogram.
	(Is_Contract_Only_Body): New subprogram.
	(Set_Is_Contract_Only_Body): New subprogram.
	(SCIL_Nodes): Replace table by hash-table.

2017-01-12  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch6.adb: Minor reformatting.
	* spark_xrefs.ads: minor cleanup of comments for SPARK xrefs

2017-01-12  Bob Duff  <duff@adacore.com>

	* binde.adb (Forced): New reason for a dependence.
	(Force_Elab_Order): Implementation of the new switch.
	* binde.ads: Minor comment fixes.
	* bindusg.adb: Add -f switch. Apparently, there was an -f switch
	long ago that is no longer supported; removed comment about that.
	* opt.ads (Force_Elab_Order_File): Name of file specified for
	-f switch.
	* switch-b.adb: Parse -f switch.

2017-01-12  Justin Squirek  <squirek@adacore.com>

	* exp_ch6.adb (Check_View_Conversion): Created this function
	to properly chain calls to check type invariants that may be
	present in a subprogram call after the subprogram.
	(Expand_Call): Add a conditional to identify when a view conversion
	needs to be checked.
	* nlists.adb, nlists.ads (Prepend_New): New routine.
	(Prepend_New_To): New routine.

2017-01-12  Hristian Kirtchev  <kirtchev@adacore.com>

	* sinfo.ads: Minor reformatting.

2017-01-12  Gary Dismukes  <dismukes@adacore.com>

	* exp_util.adb, exp_util.ads, einfo.ads: Minor typo fixes and
	reformatting.

2017-01-12  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch6.adb (Make_Build_In_Place_Call_In_Anonymous_Context): Add new
	variable Definite. Create a local object and pass its 'Access to the
	BIP function when the result type is either definite or it does not
	require any finalization or secondary stack management.

2017-01-12  Bob Duff  <duff@adacore.com>

	* contracts.adb, einfo.adb, errout.adb, exp_attr.adb,
	exp_ch3.adb, exp_ch7.adb, exp_ch9.adb, exp_prag.adb, freeze.adb,
	frontend.adb, ghost.adb, inline.adb, lib-writ.adb, lib-xref.adb,
	par.adb, par-ch10.adb, par-ch2.adb, par-prag.adb, par_sco.adb,
	sem_attr.adb, sem_aux.adb, sem_ch10.adb, sem_ch12.adb,
	sem_ch13.adb, sem_ch6.adb, sem_ch8.adb, sem_ch9.adb, sem_elab.adb,
	sem_prag.adb, sem_res.adb, sem_util.adb, sem_util.ads,
	sem_warn.adb, sinfo.adb, sinfo.ads, sprint.adb (Pragma_Name):
	Change name to Pragma_Name_Unmapped.
	(Pragma_Name_Mapped): Change name to Pragma_Name.
	This is because the "mapped" version should be the usual case.

2017-01-09  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.ads, einfo.adb: Remove uses of flags Has_Default_Init_Cond,
	Is_Default_Init_Cond_Procedure, and
	Has_Inherited_Default_Init_Cond.  Add uses of flags
	Has_Own_DIC, Is_DIC_Procedure, and Has_Inherited_DIC.
	(Default_Init_Cond_Procedure): Removed.
	(DIC_Procedure): New routine.
	(Has_Default_Init_Cond): Removed.
	(Has_DIC): New routine.
	(Has_Inheritable_Invariants): The attribute applies to the base type.
	(Has_Inherited_Default_Init_Cond): Removed.
	(Has_Inherited_DIC): New routine.
	(Has_Inherited_Invariants): The attribute applies to the base type.
	(Has_Own_DIC): New routine.
	(Has_Own_Invariants): The attribute applies to the base type.
	(Is_Default_Init_Cond_Procedure): Removed.
	(Is_DIC_Procedure): New routine.
	(Set_Default_Init_Cond_Procedure): Removed.
	(Set_DIC_Procedure): New routine.
	(Set_Has_Default_Init_Cond): Removed.
	(Set_Has_Inheritable_Invariants): The attribute applies
	to the base type.
	(Set_Has_Inherited_Default_Init_Cond): Removed.
	(Set_Has_Inherited_DIC): New routine.
	(Set_Has_Inherited_Invariants): The attribute applies to the base type.
	(Set_Has_Own_DIC): New routine.
	(Set_Has_Own_Invariants): The attribute applies to the base type.
	(Set_Is_Default_Init_Cond_Procedure): Removed.
	(Set_Is_DIC_Procedure): New routine.
	(Write_Entity_Flags): Update the output of all flags related to
	default initial condition.
	* exp_ch3.adb (Expand_N_Object_Declaration): Update the generation
	of the call to the DIC procedure.
	(Freeze_Type): Generate the body of the DIC procedure.
	* exp_ch7.adb (Build_Invariant_Procedure_Body): Replace
	all occurrences of Create_Append with Append_New_To. Do
	not generate an invariant procedure for a class-wide type.
	The generated body acts as a freeze action of the working type.
	(Build_Invariant_Procedure_Declaration): Do not generate an
	invariant procedure for a class-wide type.
	(Create_Append): Removed.
	* exp_util.adb: Add with and use clauses for Sem_Ch3, sem_ch6,
	sem_Ch12, Sem_Disp, and GNAT.HTable. Move the handling of
	class-wide pre/postcondition description and data structures from
	Sem_Prag.
	(Build_Class_Wide_Expression): Moved from Sem_Prag.
	(Build_DIC_Call): New routine.
	(Build_DIC_Procedure_Body): New routine.
	(Build_DIC_Procedure_Declaration): New routine.
	(Entity_Hash): Moved from Sem_Prag.
	(Find_DIC_Type): New routine.
	(Update_Primitives_Mapping): Reimplemented.
	(Update_Primitives_Mapping_Of_Types): New routine.
	* exp_util.ads (Build_Class_Wide_Expression): Moved from Sem_Prag.
	(Build_DIC_Call): New routine.
	(Build_DIC_Procedure_Body): New routine.
	(Build_DIC_Procedure_Declaration): New routine.
	(Update_Primitives_Mapping): Moved from Sem_Prag.
	(Update_Primitives_Mapping_Of_Types): New routine.
	* nlists.adb (Append_New): New routine.
	(Append_New_To): New routine.
	* nlists.ads (Append_New): New routine.
	(Append_New_To): New routine.
	* sem_ch3.adb (Analyze_Declarations): Do not generate the bodies
	of DIC procedures here. This is now done at the end of the
	visible declarations, private declarations, and at the freeze
	point of a type.
	(Analyze_Private_Extension_Declaration):
	A private extension inherits the DIC pragma of a parent type.
	(Analyze_Subtype_Declaration): No need to propagate invariant
	attributes to a subtype as those apply to the base type.
	(Build_Derived_Record_Type): No need to inherit invariants here
	as this is now done in Build_Derived_Type.
	(Build_Derived_Type): Inherit both the DIC pragma and invariants from
	a parent type.
	(Process_Full_View): Update the propagation of DIC attributes.
	(Propagate_Default_Init_Cond_Attributes): Removed.
	* sem_ch7.adb Add with and use clauses for Exp_Util.
	(Analyze_Package_Specification): Create the body of the DIC
	procedure at the end of the visible and private declarations.
	(Preserve_Full_Attributes): Propagate DIC attributes.
	* sem_ch9.adb (Analyze_Protected_Type_Declaration): Propagate
	DIC attributes.
	(Analyze_Task_Type_Declaration): Propagate DIC attributes.
	* sem_elab.adb (Check_A_Call): Update the call to
	Is_Nontrivial_Default_Init_Cond_Procedure.
	* sem_prag.adb Remove the with and use clauses for
	GNAT.HTable. Move the handling of class- wide pre/postcondition
	description and data structures to Exp_Util.
	(Analyze_Pragma): Create the declaration of the DIC procedure. There
	is no need to propagate invariant-related attributes at this point
	as this is done in Build_Invariant_Procedure_Declaration.
	(Build_Class_Wide_Expression): Moved to Exp_Util.
	(Entity_Hash): Moved to Exp_Util.
	(Update_Primitives_Mapping): Moved to Exp_Util.
	* sem_prag.ads (Build_Class_Wide_Expression): Moved to Exp_Util.
	(Update_Primitives_Mapping): Moved to Exp_Util.
	* sem_util.adb: Remove with and use clauses for Ghost
	and Sem_Ch13.
	(Build_Default_Init_Cond_Call): Removed.
	(Build_Default_Init_Cond_Procedure_Bodies): Removed.
	(Build_Default_Init_Cond_Procedure_Declaration): Removed.
	(Get_Views): Reimplemented.
	(Has_Full_Default_Initialization): Reimplement the section on DIC.
	(Inherit_Default_Init_Cond_Procedure): Removed.
	(Is_Nontrivial_Default_Init_Cond_Procedure): Removed.
	(Is_Nontrivial_DIC_Procedure): New routine.
	(Is_Verifiable_DIC_Pragma): New routine.
	(Propagate_DIC_Attributes): New routine.
	* sem_util.ads (Build_Default_Init_Cond_Call): Removed.
	(Build_Default_Init_Cond_Procedure_Bodies): Removed.
	(Build_Default_Init_Cond_Procedure_Declaration): Removed.
	(Inherit_Default_Init_Cond_Procedure): Removed.
	(Is_Nontrivial_Default_Init_Cond_Procedure): Removed.
	(Is_Nontrivial_DIC_Procedure): New routine.
	(Is_Verifiable_DIC_Pragma): New routine.
	(Propagate_DIC_Attributes): New routine.
	* sem_warn.adb (Is_OK_Fully_Initialized): Reimplement the section
	on DIC.
	* sinfo.ads, sinfo.adb: Add new attribute Expression_Copy along with
	usage in nodes.
	(Expression_Copy): New routine along with pragma Inline.
	(Set_Expression_Copy): New routine along with pragma Inline.

2017-01-06  Bob Duff  <duff@adacore.com>

	* bindgen.adb (Gen_Adainit, Gen_Adafinal): Change
	"Bind_Main_Program" to "not Bind_For_Library", because otherwise
	we won't generate the call to s_stalib_adafinal when the main
	is not written in Ada.

2017-01-06  Bob Duff  <duff@adacore.com>

	* sem_prag.adb: Minor: remove pragma Warnings.

2017-01-06  Tristan Gingold  <gingold@adacore.com>

	* Makefile.rtl: Do not compile s-stchop by default.

2017-01-06  Patrick Bernardi  <bernardi@adacore.com>

	* aspects.adb, aspects.ads, exp_ch3.adb, exp_ch9.adb, par-prag.adb,
	sem_ch13.adb, sem_prag.adb, sem_prag.ads, snames.adb-tmpl,
	snames.ads-tmpl, s-secsta.adb, s-secsta.ads, s-tarest.adb,
	s-tarest.ads, s-taskin.adb, s-taskin.ads, s-tassta.adb, s-tassta.ads:
	Reverted previous change for now.

2017-01-06  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch3.adb (Build_Initialization_Call): Apply predicate
	check to default discriminant value if checks are enabled.
	(Build_Assignment): If type of component has static predicate,
	apply check to its default value, if any.

2017-01-06  Patrick Bernardi  <bernardi@adacore.com>

	* aspect.adb, aspect.ads: Added new aspect Secondary_Stack_Size.
	* exp_ch3.adb (Build_Init_Statements): As part of initialising
	the value record of a task, set its _Secondary_Stack_Size field
	if present.
	* exp_ch9.adb (Expand_N_Task_Type_Declaration): Create
	a _Secondary_Stack_Size field in the value record of
	the task if a Secondary_Stack_Size rep item is present.
	(Make_Task_Create_Call): Include secondary stack size
	parameter. If No_Secondary_Stack restriction is in place, passes
	stack size of 0.
	* par-prag.adb, sem_prag.adb, sem_prag.ads: Added new pragma
	Secondary_Stack_Size.
	* s-secsta.adb, s-secsta.ads (Minimum_Secondary_Stack_Size): New
	function to define the overhead of the secondary stack.
	* s-tarest.adb (Create_Restricted_Task,
	Create_Restricted_Task_Sequential): Functions now include
	Secondary_Stack_Size parameter to pass to Initialize_ATCB.
	* s-tarest.adb (Create_Restricted_Task,
	Create_Restricted_Task_Sequential): Calls to Initialize_ATCB
	now include Secondary_Stack_Size parameter.
	(Task_Wrapper):
	Secondary stack now allocated to the size specified by the
	Secondary_Stack_Size parameter in the task's ATCB.
	* s-taskin.adb, s-taskin.adb (Common_ATCB, Initialise_ATCB): New
	Secondary_Stack_Size component.
	* s-tassta.adb, s-tassta.ads (Create_Restricted_Task,
	Create_Restricted_Task_Sequential): Function now include
	Secondary_Stack_Size parameter.
	(Task_Wrapper): Secondary stack
	now allocated to the size specified by the Secondary_Stack_Size
	parameter in the task's ATCB.
	* sem_ch13.adb (Analyze_Aspect_Specification): Add support
	for Secondary_Stack_Size aspect, turning the aspect into its
	corresponding internal attribute.
	(Analyze_Attribute_Definition):
	Process Secondary_Stack_Size attribute.
	* snames.adb-tmpl, snames.ads-tmpl: Added names
	Name_Secondary_Stack_Size, Name_uSecondary_Stack_Size,
	Attribute_Secondary_Stack_Size and Pragma_Secondary_Stack_Size.

2017-01-06  Pascal Obry  <obry@adacore.com>

	* a-direio.adb, a-direio.ads, a-sequio.adb, a-sequio.ads: Add Flush to
	Sequential_IO and Direct_IO.

2017-01-06  Bob Duff  <duff@adacore.com>

	* snames.ads-tmpl (Renamed): New name for the pragma argument.
	* par-ch2.adb: Allow the new pragma (with analysis deferred
	to Sem_Prag).
	* sinfo.ads, sinfo.adb (Map_Pragma_Name, Pragma_Name_Mapped):
	Keep a mapping from new pragma names to old names.
	* sem_prag.adb: Check legality of pragma Rename_Pragma, and
	implement it by calling Map_Pragma_Name.
	* checks.adb, contracts.adb, einfo.adb, errout.adb,
	* exp_attr.adb, exp_ch3.adb, exp_ch6.adb, exp_ch7.adb, exp_ch9.adb,
	* exp_prag.adb, exp_util.adb, freeze.adb, frontend.adb, ghost.adb,
	* inline.adb, lib-writ.adb, scans.adb, scans.ads, sem_attr.adb,
	* sem_aux.adb, sem_ch10.adb, sem_ch13.adb, sem_ch6.adb, sem_ch9.adb,
	* sem_elab.adb, sem_res.adb, sem_util.adb, sem_util.ads,
	* sem_warn.adb: Call Pragma_Name_Mapped instead of Pragma_Name
	as appropriate.

2017-01-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch9.adb: Minor reformatting.

2017-01-06  Tristan Gingold  <gingold@adacore.com>

	* exp_ch9.ads, exp_ch9.adb (Build_Entry_Names): Remove (unused).
	* rtsfind.ads (RE_Task_Entry_Names_Array, RO_ST_Set_Entry_Names)
	(RE_Protected_Entry_Names_Array, RO_PE_Set_Entry_Names): Remove
	(unused).
	* s-taskin.ads, s-taskin.adb (Set_Entry_Names,
	Task_Entry_Names_Array, Task_Entry_Names_Access): Remove.
	* s-tpoben.ads, s-tpoben.adb (Set_Entry_Names,
	Protected_Entry_Names_Array, Protected_Entry_Names_Access): Remove.

2017-01-06  Bob Duff  <duff@adacore.com>

	* sinfo.ads, sinfo.adb (Map_Pragma_Name): Preparation work,
	dummy implementation of Map_Pragma_Name.

2017-01-06  Tristan Gingold  <gingold@adacore.com>

	* exp_ch9.adb (Expand_N_Protected_Type_Declaration): Make the
	entry_body variable constant.
	* s-taprob.ads (Entry_Body_Access): Move to s-tposen.
	* s-tpoben.ads (Protected_Entry_Body_Access): Now access
	to constant.
	* s-tposen.ads (Entry_Body_Access): Moved from s-taprob,
	now access to constant.

2017-01-06  Gary Dismukes  <dismukes@adacore.com>

	* einfo.ads, sem_res.adb, sem_attr.adb, sem_ch6.adb: Minor
	reformatting and typo fixes.

2017-01-06  Bob Duff  <duff@adacore.com>

	* snames.ads-tmpl: New names for pragma renaming.
	* snames.adb-tmpl (Is_Configuration_Pragma_Name): Minor cleanup.
	* par-prag.adb: Add new pragma name to case statement.
	* sem_prag.adb (Rename_Pragma): Initial cut at semantic analysis
	of the pragma.
	* sinfo.ads, sinfo.adb (Pragma_Name_Mapped): Preparation work,
	Dummy implementation of Pragma_Name_Mapped.

2017-01-06  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Expand_Protected_Subprogram_Call): Add guard to
	better detect call within an entry_wrapper.
	* sem_res.adb (Resolve_Call): A protected call within an
	entity_wrapper is analyzed in the context of the protected
	object but corresponds to a pre-analysis and is not an access
	before elaboration.
	* sem_attr.adb: Minor reformatting.

2017-01-06  Justin Squirek  <squirek@adacore.com>

	* sem_attr.adb (Analyze_Attribute): Modify semantic checks for
	Finalization_Size to allow a prefix of any non-class-wide type.
	* sem_attr.ads Modify comment for Finalization_Size to include
	definite type use case.

2017-01-06  Ed Schonberg  <schonberg@adacore.com>

	* einfo.ads, einfo.adb (Is_Entry_Wrapper): New flag, defined
	on procedures that are wrappers created for entries that have
	preconditions.
	* sem_ch6.adb (Analyze_Subrogram_Body_Helper): If the subprogram
	body is an entry_wrapper, compile it in the context of the
	synchronized type, because a precondition may refer to funtions
	of the type.
	* exp_ch9.adb (Build_Contract_Wrapper): Set Is_Entry_Wrapper on
	body entity.
	* exp_ch6.adb (Expand_Protected_Subprogram_Call): if the call is
	within an Entry_Wrapper this is an external call whose target
	is the synchronized object that is the actual in the call to
	the wrapper.

2017-01-06  Yannick Moy  <moy@adacore.com>

	* sem_attr.adb (Analyze_Attribute/Attribute_Loop_Entry): Analyze node
	in tree, which means not analyzing the previous prefix if the node has
	been rewritten into its prefix.

2017-01-06  Gary Dismukes  <dismukes@adacore.com>

	* s-tpobop.adb: Minor reformatting.

2017-01-06  Ed Schonberg  <schonberg@adacore.com>

	* checks.adb (Ensure_Valid): Do not generate a validity check
	within a generated predicate function, validity checks will have
	been applied earlier when required.

2017-01-06  Tristan Gingold  <gingold@adacore.com>

	* s-tpoben.ads (Protection_Entries): Add comment and reorder
	components for performances.
	* s-tpobop.adb (PO_Do_Or_Queue): Implement Max_Queue_Length runtime
	semantic.

2017-01-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_eval.adb (Check_Expression_Against_Static_Predicate):
	If expression is compile-time known and obeys a static predicate
	it must be labelled as static, to prevent spurious warnings and
	run-time errors, e.g. in case statements. This is relevant when
	the expression is the result of constant-folding a type conversion
	whose expression is a variable with a known static value.

2017-01-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_attr.adb, sem_attr.ads: Minor reformatting.

2017-01-06  Justin Squirek  <squirek@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference): Add entry for
	expansion of Finalization_Size attribute.
	* sem_attr.adb (Analyze_Attribute): Add entry to check the
	semantics of Finalization_Size.
	(Eval_Attribute): Add null entry for Finalization_Size.
	* sem_attr.ads: Add Finalization_Size to the implementation
	dependent attribute list.
	* snames.ads-tmpl: Add name entry for Finalization_Size attribute.

2017-01-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Loop_Statement): If the loop includes an
	iterator specification with a serious syntactic error, transform
	construct into an infinite loop in order to continue analysis
	and prevent a compiler abort.

2017-01-06  Tristan Gingold  <gingold@adacore.com>

	* exp_ch9.adb (Expand_N_Protected_Type_Declaration): Do not generate
	max_queue_lengths_array if unused.

2017-01-06  Bob Duff  <duff@adacore.com>

	* errout.adb (Set_Msg_Text): Protect against out-of-bounds
	array access, in case "\" is at the end of Text.
	* stylesw.adb (Set_Style_Check_Options): Don't include input
	characters in the error message template, because they could
	be control characters such as "\", which Errout will try to
	interpret.

2017-01-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Find_Indexing_Operations, Inspect_Declarations):
	For a private type examine the visible declarations that follow
	the partial view, not just the private declarations that follow
	the full view.

2017-01-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch5.adb, sem_ch3.adb, checks.adb: Minor reformatting and
	code cleanup.

2017-01-06  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Get_Default_Iterator): For a derived type, the
	alias of the inherited op is the parent iterator, no need to
	examine dispatch table positions which might not be established
	yet if type is not frozen.
	* sem_disp.adb (Check_Controlling_Formals): The formal of a
	predicate function may be a subtype of a tagged type.
	* sem_ch3.adb (Complete_Private_Subtype): Adjust inheritance
	of representation items for the completion of a type extension
	where a predicate applies to the partial view.
	* checks.ads, checks.adb (Apply_Predicate_Check): Add optional
	parameter that designates function whose actual receives a
	predicate check, to improve warning message when the check will
	lead to infinite recursion.
	* sem_res.adb (Resolve_Actuals): Pass additional parameter to
	Apply_Predicate_Check.

2017-01-06  Tristan Gingold  <gingold@adacore.com>

	* s-rident.ads (Profile_Info): Remove No_Entry_Queue from
	Gnat_Extended_Ravenscar.
	* exp_ch9.adb, s-tpoben.adb, s-tpoben.ads: Fix spelling.

2017-01-06  Gary Dismukes  <dismukes@adacore.com>

	* sem_util.ads: Minor typo fix and reformatting.

2017-01-06  Yannick Moy  <moy@adacore.com>

	* ghost.adb Minor fixing of references to SPARK RM.
	(Check_Ghost_Context): Check whether reference is to a lvalue
	before issuing an error about violation of SPARK RM 6.9(13)
	when declaration has Ghost policy Check and reference has Ghost
	policy Ignore.
	* sem_util.adb Minor indentation.
	* sem_ch10.adb (Analyze_Package_Body_Stub, Analyze_Protected_Body_Stub,
	Analyze_Task_Body_Stub): Set Ekind of the defining identifier.
	* sem_util.ads (Unique_Defining_Entity): Document the result
	for package body stubs.

2017-01-06  Tristan Gingold  <gingold@adacore.com>

	* raise-gcc.c (abort): Macro to call Abort_Propagation.
	* s-tpoben.ads (Protected_Entry_Queue_Max_Access): Make it access
	constant.
	* exp_ch9.adb (Expand_N_Protected_Type_Declaration):
	Do not generate the Entry_Max_Queue_Lengths_Array if all default
	values.
	* exp_util.adb (Corresponding_Runtime_Package): Consider
	Max_Queue_Length pragma.

2017-01-06  Justin Squirek  <squirek@adacore.com>

	* exp_ch9.adb (Expand_N_Protected_Type_Declaration):
	Remove declaration generation in the case of
	System_Tasking_Protected_Objects_Single_Entry being used,
	and add a warning message when this is detected to occur.
	(Make_Initialize_Protection): Remove reference pass in the case
	of System_Tasking_Protected_Objects_Single_Entry.
	* rtsfind.ads: Remove RE_Protected_Entry_Queue_Max
	* s-tposen.adb (Initialize_Protection_Entry): Remove
	Entry_Queue_Max parameter.
	* s-tposen.ads: Remove the types use to store the entry queue
	maximum.
	* sem_prag.adb (Analyze_Pragma): Remove entry families restriction

2017-01-06  Yannick Moy  <moy@adacore.com>

	* sem_util.adb, sem_util.ads (Get_Enum_Lit_From_Pos): Strengthen
	behavior of function, to also accept out of range positions
	and raise Constraint_Error in such case, and to copy sloc from
	literal if No_Location passed as location.
	* uintp.adb, uintp.ads (UI_To_Int, UI_To_CC): Strengthen behavior
	of functions to raise Constraint_Error in case of value not in
	appropriate range.

2017-01-06  Tristan Gingold  <gingold@adacore.com>

	* sem_util.adb, s-taprop-linux.adb (Finalize_TCB): Remove call to
	Invalidate_Stack_Cache.

2017-01-06  Eric Botcazou  <ebotcazou@adacore.com>

	* s-os_lib.adb: Minor fix to the signature of Readlink.

2017-01-06  Javier Miranda  <miranda@adacore.com>

	* sem_ch6.adb (Conforming_Types): Handle another
	confusion between views in a nested instance with an actual
	private type whose full view is not in scope.

2017-01-06  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch5.adb (Expand_N_If_Statement): Obey existing comment and
	mark a rewritten if statement as explicit (Comes_From_Source).

2017-01-06  Gary Dismukes  <dismukes@adacore.com>

	* sem_prag.adb, rtsfind.adb, sem_util.adb: Minor typo fixes.

2017-01-06  Tristan Gingold  <gingold@adacore.com>

	* ada.ads, a-unccon.ads: Add pragma No_Elaboration_Code_All.

2017-01-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_case.adb: Minor reformatting.

2017-01-06  Thomas Quinot  <quinot@adacore.com>

	* g-socthi-mingw.adb: Remove now extraneous USE TYPE clause

2017-01-06  Justin Squirek  <squirek@adacore.com>

	* aspects.adb: Register aspect in Canonical_Aspect.
	* aspects.ads: Associate qualities of Aspect_Max_Queue_Length
	into respective tables.
	* einfo.ads, einfo.adb: Add a new attribute for
	handling the parameters for Pragma_Max_Entry_Queue
	(Entry_Max_Queue_Lengths_Array) in E_Protected_Type. Subprograms
	for accessing and setting were added as well.
	* par-prag.adb (Prag): Register Pramga_Max_Entry_Queue.
	* exp_ch9.adb (Expand_N_Protected_Type_Declaration): Emit
	declaration for pramga arguments and store them in the protected
	type node.
	(Make_Initialize_Protection): Pass a reference to
	the Entry_Max_Queue_Lengths_Array in the protected type node to
	the runtime.
	* rtsfind.adb: Minor grammar fix.
	* rtsfind.ads: Register new types taken from the
	runtime libraries RE_Protected_Entry_Queue_Max and
	RE_Protected_Entry_Queue_Max_Array
	* s-tposen.adb, s-tpoben.adb
	(Initialize_Protection_Entry/Initialize_Protection_Entries):
	Add extra parameter and add assignment to local object.
	* s-tposen.ads, s-tpoben.ads: Add new types to
	store entry queue maximums and a field to the entry object record.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Add case statement
	for Aspect_Max_Queue_Length.
	(Check_Aspect_At_Freeze_Point):
	Add aspect to list of aspects that don't require delayed analysis.
	* sem_prag.adb (Analyze_Pragma): Add case statement for
	Pragma_Max_Queue_Length, check semantics, and register arugments
	in the respective entry nodes.
	* sem_util.adb, sem_util.ads Add functions Get_Max_Queue_Length
	and Has_Max_Queue_Length
	* snames.ads-tmpl: Add constant for the new aspect-name
	Name_Max_Queue_Length and corrasponding pragma.

2017-01-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb (Is_Controlled_Function_Call):
	Reimplemented. Consider any node which has an entity as the
	function call may appear in various ways.

2017-01-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_attr.adb (Rewrite_Stream_Proc_Call): Use
	an unchecked type conversion when performing a view conversion
	to/from a private type. In all other cases use a regular type
	conversion to ensure that any relevant checks are properly
	installed.

2017-01-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb, sem_ch8.adb: Minor reformatting.

2017-01-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_case.adb (Explain_Non_Static_Bound): Suppress cascaded
	error on case expression that is an entity, when coverage is
	incomplete and entity has a static value obtained by local
	propagation.
	(Handle_Static_Predicate): New procedure, subsidiary of
	Check_Choices, to handle case alternatives that are either
	subtype names or subtype indications involving subtypes that
	have static predicates.

2017-01-06  Thomas Quinot  <quinot@adacore.com>

	* s-oscons-tmplt.c, g-socket.adb, g-socket.ads, g-sothco.ads:
	(GNAT.Socket): Add support for Busy_Polling and Generic_Option

2017-01-06  Bob Duff  <duff@adacore.com>

	* sem_elab.adb (Activate_Elaborate_All_Desirable): Don't add
	Elaborate_All(P) to P itself. That could happen in obscure cases,
	and always introduced a cycle (P body must be elaborated before
	P body).
	* lib-writ.ads: Comment clarification.
	* ali-util.ads: Minor comment fix.
	* ali.adb: Minor reformatting.

2017-01-06  Tristan Gingold  <gingold@adacore.com>

	* a-exexpr-gcc.adb: Improve comment.

2017-01-03  James Cowgill  <James.Cowgill@imgtec.com>

	* s-linux-mips.ads: Use correct signal and errno constants.
	(sa_handler_pos, sa_mask_pos): Fix offsets for 64-bit MIPS.

2017-01-03  James Cowgill  <James.Cowgill@imgtec.com>

	* s-linux-mips.ads: Rename from s-linux-mipsel.ads.
	* gcc-interface/Makefile.in (MIPS/Linux): Merge mips and mipsel
	sections.

2017-01-01  Eric Botcazou  <ebotcazou@adacore.com>

	* gnatvsn.ads: Bump copyright year.

2017-01-01  Jakub Jelinek  <jakub@redhat.com>

	* gnat_ugn.texi: Bump @copying's copyright year.
	* gnat_rm.texi: Likewise.

Copyright (C) 2017 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.
